theoradec: move some code

The parsing of the headers consists of negotiating the format and then setting
up the decoder so split this in two parts.
This commit is contained in:
Wim Taymans 2012-03-02 10:37:00 +01:00
parent f89c85485d
commit 271939d118

View file

@ -915,26 +915,6 @@ theora_handle_type_packet (GstTheoraDec * dec, ogg_packet * packet)
dec->need_cropping = FALSE; dec->need_cropping = FALSE;
} }
/* done */
dec->decoder = th_decode_alloc (&dec->info, dec->setup);
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_MV,
&dec->telemetry_mv, sizeof (dec->telemetry_mv)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable MV visualisation");
}
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_MBMODE,
&dec->telemetry_mbmode, sizeof (dec->telemetry_mbmode)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable MB mode visualisation");
}
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_QI,
&dec->telemetry_qi, sizeof (dec->telemetry_qi)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable QI mode visualisation");
}
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_BITS,
&dec->telemetry_bits, sizeof (dec->telemetry_bits)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable BITS mode visualisation");
}
/* our info contains the dimensions for the coded picture before cropping */ /* our info contains the dimensions for the coded picture before cropping */
gst_video_info_set_format (&dec->vinfo, format, dec->info.frame_width, gst_video_info_set_format (&dec->vinfo, format, dec->info.frame_width,
dec->info.frame_height); dec->info.frame_height);
@ -966,6 +946,26 @@ theora_handle_type_packet (GstTheoraDec * dec, ogg_packet * packet)
theora_negotiate_pool (dec); theora_negotiate_pool (dec);
/* done */
dec->decoder = th_decode_alloc (&dec->info, dec->setup);
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_MV,
&dec->telemetry_mv, sizeof (dec->telemetry_mv)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable MV visualisation");
}
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_MBMODE,
&dec->telemetry_mbmode, sizeof (dec->telemetry_mbmode)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable MB mode visualisation");
}
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_QI,
&dec->telemetry_qi, sizeof (dec->telemetry_qi)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable QI mode visualisation");
}
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_BITS,
&dec->telemetry_bits, sizeof (dec->telemetry_bits)) != TH_EIMPL) {
GST_WARNING_OBJECT (dec, "Could not enable BITS mode visualisation");
}
dec->have_header = TRUE; dec->have_header = TRUE;
if (dec->pendingevents) { if (dec->pendingevents) {