summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYouness Alaoui <youness.alaoui@collabora.co.uk>2012-07-17 16:23:02 -0400
committerOlivier CrĂȘte <olivier.crete@collabora.com>2012-09-10 12:31:20 -0400
commit6b8c6fa4c70835c4b30490efd69b70bd11eb7be5 (patch)
tree9ee093eac4752bc9f9f55b47586d1d40b1909b08
parenta90d06328583f45db8988efa60a12c9ff7a85808 (diff)
uvch264: do not use the auxialiary stream's delay to shift the timestamp
-rw-r--r--sys/uvch264/gstuvch264_mjpgdemux.c17
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;