Commit f41e50f6 authored by Zebediah Figura's avatar Zebediah Figura

theoradec: Set telemetry options only if they are nonzero

Setting telemetry options, even to zero, causes libtheora to enable an expensive code path. For large enough videos (e.g. 1920x1080) this can increase the time to decode each frame by 30-40 ms, which can be enough to cause noticeable stutter.
parent 6af87dee
Pipeline #216688 waiting for manual action with stages
in 49 seconds
......@@ -471,19 +471,23 @@ theora_handle_type_packet (GstTheoraDec * dec)
/* done */
dec->decoder = th_decode_alloc (&dec->info, dec->setup);
if (th_decode_ctl (dec->decoder, TH_DECCTL_SET_TELEMETRY_MV,
if (dec->telemetry_mv &&
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,
if (dec->telemetry_mbmode &&
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,
if (dec->telemetry_qi &&
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,
if (dec->telemetry_bits &&
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");
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment