summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2013-03-19 12:55:09 +0100
committerJosep Torra <n770galaxy@gmail.com>2013-03-22 10:35:48 +0100
commit80fabe6ae3bb1604a299a381289fb7d109b61b40 (patch)
tree54a497778a76cfc8cd8e9f7646525020f223aac4
parentb5abf3443dd2564515cc824c45631d4714371fc8 (diff)
downloadgst-omx-80fabe6ae3bb1604a299a381289fb7d109b61b40.tar.gz
omxvideodec: Set ENDOFFRAME flag for the end of frames
Conflicts: omx/gstomxvideodec.c
-rw-r--r--omx/gstomxvideodec.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
index e0ba41a..9d0f660 100644
--- a/omx/gstomxvideodec.c
+++ b/omx/gstomxvideodec.c
@@ -1591,9 +1591,16 @@ gst_omx_video_dec_handle_frame (GstVideoDecoder * decoder,
}
buf->omx_buf->nFlags |= OMX_BUFFERFLAG_CODECCONFIG;
+ buf->omx_buf->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME;
buf->omx_buf->nFilledLen = GST_BUFFER_SIZE (codec_data);
memcpy (buf->omx_buf->pBuffer + buf->omx_buf->nOffset,
GST_BUFFER_DATA (codec_data), buf->omx_buf->nFilledLen);
+ if (GST_CLOCK_TIME_IS_VALID (timestamp))
+ buf->omx_buf->nTimeStamp =
+ gst_util_uint64_scale (timestamp, OMX_TICKS_PER_SECOND, GST_SECOND);
+ else
+ buf->omx_buf->nTimeStamp = 0;
+ buf->omx_buf->nTickCount = 0;
self->started = TRUE;
err = gst_omx_port_release_buffer (port, buf);
@@ -1645,10 +1652,13 @@ gst_omx_video_dec_handle_frame (GstVideoDecoder * decoder,
/* TODO: Set flags
* - OMX_BUFFERFLAG_DECODEONLY for buffers that are outside
* the segment
- * - OMX_BUFFERFLAG_ENDOFFRAME for parsed input
*/
offset += buf->omx_buf->nFilledLen;
+
+ if (offset == size)
+ buf->omx_buf->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME;
+
self->started = TRUE;
err = gst_omx_port_release_buffer (port, buf);
if (err != OMX_ErrorNone)