[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gstreamer-cvs
Subject:    [1.2] gst-plugins-good: v4l2src: Fix support for mpegts streams
From:       nicolasd () kemper ! freedesktop ! org (Nicolas Dufresne)
Date:       2014-03-29 21:24:27
Message-ID: 20140329212427.4B421762DB () kemper ! freedesktop ! org
[Download RAW message or body]

Module: gst-plugins-good
Branch: 1.2
Commit: a403256039799c9b8b0b9b4c9fe3f011d301ad1c
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=a403256039799c9b8b0b9b4c9fe3f011d301ad1c


Author: William Manley <will@williammanley.net>
Date:   Thu Mar  6 19:52:36 2014 +0000

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 |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c
index c3ed422..28462ba 100644
--- a/sys/v4l2/gstv4l2object.c
+++ b/sys/v4l2/gstv4l2object.c
@@ -1422,7 +1422,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;
@@ -1935,7 +1936,8 @@ gst_v4l2_object_probe_caps_for_format (GstV4l2Object * \
v4l2object,  guint32 w, h;
 
   if (pixelformat == GST_MAKE_FOURCC ('M', 'P', 'E', 'G'))
-    return gst_caps_new_empty_simple ("video/mpegts");
+    return gst_caps_new_simple ("video/mpegts",
+        "systemstream", G_TYPE_BOOLEAN, TRUE, NULL);
 
   memset (&size, 0, sizeof (struct v4l2_frmsizeenum));
   size.index = 0;

_______________________________________________
gstreamer-commits mailing list
gstreamer-commits@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/gstreamer-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic