diff --git a/sys/winks/gstksvideodevice.c b/sys/winks/gstksvideodevice.c index 0e2aa089d5..d00b6a756d 100644 --- a/sys/winks/gstksvideodevice.c +++ b/sys/winks/gstksvideodevice.c @@ -1224,3 +1224,11 @@ gst_ks_video_device_cancel_stop (GstKsVideoDevice * self) ResetEvent (priv->cancel_event); } + +gboolean +gst_ks_video_device_stream_is_muxed (GstKsVideoDevice * self) +{ + GstKsVideoDevicePrivate *priv = GST_KS_VIDEO_DEVICE_GET_PRIVATE (self); + + return priv->is_muxed; +} diff --git a/sys/winks/gstksvideodevice.h b/sys/winks/gstksvideodevice.h index 105b79da3a..649faaa663 100644 --- a/sys/winks/gstksvideodevice.h +++ b/sys/winks/gstksvideodevice.h @@ -81,6 +81,8 @@ gboolean gst_ks_video_device_postprocess_frame (GstKsVideoDevice * self, GstBuff void gst_ks_video_device_cancel (GstKsVideoDevice * self); void gst_ks_video_device_cancel_stop (GstKsVideoDevice * self); +gboolean gst_ks_video_device_stream_is_muxed (GstKsVideoDevice * self); + G_END_DECLS #endif /* __GST_KS_VIDEO_DEVICE_H__ */ diff --git a/sys/winks/gstksvideosrc.c b/sys/winks/gstksvideosrc.c index 859699af9a..79cbb7a2f1 100644 --- a/sys/winks/gstksvideosrc.c +++ b/sys/winks/gstksvideosrc.c @@ -815,6 +815,13 @@ gst_ks_video_src_timestamp_buffer (GstKsVideoSrc * self, GstBuffer * buf, GstClock *clock; GstClockTime timestamp; + /* Don't timestamp muxed strams */ + if (!gst_ks_video_device_stream_is_muxed (priv->device)) { + duration = timestamp = GST_CLOCK_TIME_NONE; + priv->offset++; + goto timestamp; + } + duration = gst_ks_video_device_get_duration (priv->device); GST_OBJECT_LOCK (self); @@ -900,6 +907,7 @@ gst_ks_video_src_timestamp_buffer (GstKsVideoSrc * self, GstBuffer * buf, priv->prev_ts = timestamp; } +timestamp: GST_BUFFER_OFFSET (buf) = priv->offset; GST_BUFFER_OFFSET_END (buf) = GST_BUFFER_OFFSET (buf) + 1; GST_BUFFER_PTS (buf) = timestamp;