From: Sebastian Dröge Date: Tue, 8 Nov 2011 08:09:28 +0000 (+0100) Subject: omxvideodec: Implement dropping of too late frames via QoS X-Git-Tag: 1.19.3~501^2~864 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b10c2cfc72da5ea7bea2c5e2977e995c082a5a80;p=platform%2Fupstream%2Fgstreamer.git omxvideodec: Implement dropping of too late frames via QoS --- diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c index c18c487..9e7da44 100644 --- a/omx/gstomxvideodec.c +++ b/omx/gstomxvideodec.c @@ -699,7 +699,17 @@ gst_omx_video_dec_loop (GstOMXVideoDec * self) GST_BASE_VIDEO_CODEC_STREAM_LOCK (self); frame = _find_nearest_frame (self, buf); - if (!frame && buf->omx_buf->nFilledLen > 0) { + + if (frame + && + gst_base_video_decoder_get_max_decode_time (GST_BASE_VIDEO_DECODER (self), + frame) < 0) { + GST_WARNING_OBJECT (self, "Frame is too late, dropping"); + gst_omx_port_release_buffer (self->out_port, buf); + flow_ret = + gst_base_video_decoder_finish_frame (GST_BASE_VIDEO_DECODER (self), + frame); + } else if (!frame && buf->omx_buf->nFilledLen > 0) { GstBuffer *outbuf; /* This sometimes happens at EOS or if the input is not properly framed,