From 517f50f54f02c746c95c47c8683e2a0d61cfc8d3 Mon Sep 17 00:00:00 2001 From: William Manley Date: Sat, 29 Mar 2014 17:21:17 -0400 Subject: [PATCH] v4l2src: Fix support for mpegts streams It seems that GStreamer's mpegts elements (tsdemux, tsparse) require caps `video/mpegts,systemstream=true`. As far as I can see the significance of systemstream is to indicate that this is a container format rather than an elementary stream. As this is the case (and I can't understand how it could not be the case with mpegts) I add systemstream=true to v4l2src's caps. This allows v4l2src to be linked with tsdemux for playback from my Hauppauge HD-PVR with the pipeline: v4l2src ! queue ! tsdemux ! video/x-h264 ! decodebin ! xvimagesink In combination with the next commit this fixes using Hauppauge HD-PVR with GStreamer 1.0+. --- sys/v4l2/gstv4l2object.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index a43c94455b..c7f21386b4 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -1232,7 +1232,8 @@ gst_v4l2_object_v4l2fourcc_to_structure (guint32 fourcc) NULL); break; case V4L2_PIX_FMT_MPEG: /* MPEG */ - structure = gst_structure_new_empty ("video/mpegts"); + structure = gst_structure_new ("video/mpegts", + "systemstream", G_TYPE_BOOLEAN, TRUE, NULL); break; case V4L2_PIX_FMT_WNVA: /* Winnov hw compres */ break;