summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2010-05-22 08:45:35 +0200
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2010-06-01 11:19:45 +0200
commit24027dd9f2877a591ee659ae4db285e094f61813 (patch)
tree43c9bddc3d390479634cb392671b43066a878abb
parent7028ba1ff51119414933372a2432fa70c64cf878 (diff)
vp8dec: Set decoder deadline from the QoS information
-rw-r--r--ext/vp8/gstvp8dec.c11
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)));