summaryrefslogtreecommitdiff
path: root/omx/gstomxvideodec.c
diff options
context:
space:
mode:
Diffstat (limited to 'omx/gstomxvideodec.c')
-rw-r--r--omx/gstomxvideodec.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/omx/gstomxvideodec.c b/omx/gstomxvideodec.c
index d4ce85a..a3ea2f4 100644
--- a/omx/gstomxvideodec.c
+++ b/omx/gstomxvideodec.c
@@ -2185,7 +2185,7 @@ gst_omx_video_dec_handle_frame (GstVideoDecoder * decoder,
GstOMXBuffer *buf;
GstBuffer *codec_data = NULL;
guint offset = 0, size;
- GstClockTime timestamp, duration, timestamp_offset = 0;
+ GstClockTime timestamp, duration;
OMX_ERRORTYPE err;
self = GST_OMX_VIDEO_DEC (decoder);
@@ -2347,22 +2347,20 @@ gst_omx_video_dec_handle_frame (GstVideoDecoder * decoder,
buf->omx_buf->pBuffer + buf->omx_buf->nOffset,
buf->omx_buf->nFilledLen);
- /* Interpolate timestamps if we're passing the buffer
- * in multiple chunks */
- if (offset != 0 && duration != GST_CLOCK_TIME_NONE) {
- timestamp_offset = gst_util_uint64_scale (offset, duration, size);
- }
-
if (timestamp != GST_CLOCK_TIME_NONE) {
buf->omx_buf->nTimeStamp =
- gst_util_uint64_scale (timestamp + timestamp_offset,
- OMX_TICKS_PER_SECOND, GST_SECOND);
- self->last_upstream_ts = timestamp + timestamp_offset;
+ gst_util_uint64_scale (timestamp, OMX_TICKS_PER_SECOND, GST_SECOND);
+ self->last_upstream_ts = timestamp;
+ } else {
+ buf->omx_buf->nTimeStamp = 0;
}
- if (duration != GST_CLOCK_TIME_NONE) {
+
+ if (duration != GST_CLOCK_TIME_NONE && offset == 0) {
buf->omx_buf->nTickCount =
gst_util_uint64_scale (buf->omx_buf->nFilledLen, duration, size);
self->last_upstream_ts += duration;
+ } else {
+ buf->omx_buf->nTickCount = 0;
}
if (offset == 0) {