diff options
author | Youness Alaoui <youness.alaoui@collabora.co.uk> | 2012-07-17 16:23:02 -0400 |
---|---|---|
committer | Olivier CrĂȘte <olivier.crete@collabora.com> | 2012-09-10 12:31:20 -0400 |
commit | 6b8c6fa4c70835c4b30490efd69b70bd11eb7be5 (patch) | |
tree | 9ee093eac4752bc9f9f55b47586d1d40b1909b08 | |
parent | a90d06328583f45db8988efa60a12c9ff7a85808 (diff) |
uvch264: do not use the auxialiary stream's delay to shift the timestamp
-rw-r--r-- | sys/uvch264/gstuvch264_mjpgdemux.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/sys/uvch264/gstuvch264_mjpgdemux.c b/sys/uvch264/gstuvch264_mjpgdemux.c index dfe199071..b72742af3 100644 --- a/sys/uvch264/gstuvch264_mjpgdemux.c +++ b/sys/uvch264/gstuvch264_mjpgdemux.c @@ -409,7 +409,7 @@ _pts_to_timestamp (GstUvcH264MjpgDemux * self, GstBuffer * buf, guint32 pts) GstClockTime ts; GstClockTime base_time = gst_element_get_base_time (GST_ELEMENT (self)); - if (priv->clock_samples == NULL) + if (self->priv->device_fd == -1 || priv->clock_samples == NULL) return FALSE; if (-1 == ioctl (priv->device_fd, UVCIOC_GET_LAST_SCR, &sample)) { @@ -683,23 +683,14 @@ gst_uvc_h264_mjpg_demux_chain (GstPad * pad, GstBuffer * buf) } if (segment_size > 0) { - gboolean pts_valid = FALSE; - sub_buffer = gst_buffer_create_sub (buf, i, segment_size); GST_BUFFER_DURATION (sub_buffer) = aux_header.frame_interval * 100 * GST_NSECOND; gst_buffer_copy_metadata (sub_buffer, buf, GST_BUFFER_COPY_TIMESTAMPS); gst_buffer_set_caps (sub_buffer, *aux_caps); - if (self->priv->device_fd != -1) - pts_valid = _pts_to_timestamp (self, sub_buffer, aux_header.pts); - - if (!pts_valid && - aux_header.type == GST_MAKE_FOURCC ('H', '2', '6', '4')) { - /* Encoded stream has an extra delay that needs to be removed */ - GST_DEBUG_OBJECT (self, "H264 stream has delay of %d ms", - aux_header.delay); - GST_BUFFER_TIMESTAMP (sub_buffer) -= aux_header.delay * GST_MSECOND; - } + + _pts_to_timestamp (self, sub_buffer, aux_header.pts); + gst_buffer_list_iterator_add (aux_it, sub_buffer); aux_size -= segment_size; |