diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-05-22 08:45:35 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2010-06-01 11:19:45 +0200 |
commit | 24027dd9f2877a591ee659ae4db285e094f61813 (patch) | |
tree | 43c9bddc3d390479634cb392671b43066a878abb | |
parent | 7028ba1ff51119414933372a2432fa70c64cf878 (diff) |
vp8dec: Set decoder deadline from the QoS information
-rw-r--r-- | ext/vp8/gstvp8dec.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/ext/vp8/gstvp8dec.c b/ext/vp8/gstvp8dec.c index 87e2b18ff..4a570f0a3 100644 --- a/ext/vp8/gstvp8dec.c +++ b/ext/vp8/gstvp8dec.c @@ -424,6 +424,7 @@ gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder, GstVideoFrame * frame, vpx_codec_err_t status; vpx_codec_iter_t iter = NULL; vpx_image_t *img; + long decoder_deadline = 0; GST_DEBUG_OBJECT (decoder, "handle_frame"); @@ -508,9 +509,17 @@ gst_vp8_dec_handle_frame (GstBaseVideoDecoder * decoder, GstVideoFrame * frame, } #endif + if (deadline < 0) { + decoder_deadline = 1; + } else if (deadline == G_MAXINT64) { + decoder_deadline = 0; + } else { + decoder_deadline = MAX (1, deadline / GST_MSECOND); + } + status = vpx_codec_decode (&dec->decoder, GST_BUFFER_DATA (frame->sink_buffer), - GST_BUFFER_SIZE (frame->sink_buffer), NULL, 0); + GST_BUFFER_SIZE (frame->sink_buffer), NULL, decoder_deadline); if (status) { GST_ELEMENT_ERROR (decoder, LIBRARY, ENCODE, ("Failed to decode frame"), ("%s", gst_vpx_error_name (status))); |