Using v4l2sink with mpegtsmux, issue with CAPS change for headers?

Michael Williamson michael.williamson at criticallink.com
Mon Oct 15 10:34:55 PDT 2012


Hello,

I am trying to develop and test a linux V4L2 device that accepts MPEG transport
stream data.  The device will decode the stream for local display or route it
to a remote recording device.

I am using the following pipeline to test it, and am getting errors when the
mpegtsmux element tries to alter the CAPS to insert stream headers (see the
debug output, also posted).  I am using gst-0.10.

gst-launch --gst-debug=v4l2sink:5 \
  videotestsrc ! \
  x264enc ! \
  mpegtsmux ! \
  v4l2sink device=/dev/video1

I'm trying to sort out if this is a problem with my driver or with the
configuration of the pipeline.  So far, it seems that the issue is
between the mpegtsmux and the v4l2sink elements, and not the v4l2sink
element and the driver.  Any insight into this would be greatly
appreciated.

Thanks.

-Mike

Debug Output:
#######################################################################

Setting pipeline to PAUSED ...
0:00:00.085794895  4236  0x91052a0 DEBUG               v4l2sink gstv4l2sink.c
:608:gst_v4l2sink_change_state:<v4l2sink0> 1 -> 2
0:00:00.089983908  4236  0x91052a0 DEBUG               v4l2sink gstv4l2sink.c
:608:gst_v4l2sink_change_state:<v4l2sink0> 2 -> 3
Pipeline is PREROLLING ...
0:00:00.280443960  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:715:gst_v4l2sink_set_caps:<v4l2sink0> caps: video/mpegts, systemstream=
(boolean)true, packetsize=(int)188
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
0:00:00.281733612  4236  0x91052a0 DEBUG               v4l2sink gstv4l2sink.c
:608:gst_v4l2sink_change_state:<v4l2sink0> 3 -> 4
New clock: GstSystemClock
0:00:00.283204510  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:844:gst_v4l2sink_show_frame:<v4l2sink0> render buffer: 0xb5296410
0:00:00.283439314  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:873:gst_v4l2sink_show_frame:<v4l2sink0> slow-path.. I got a GstBuffer so I
need to memcpy
0:00:00.283607404  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:715:gst_v4l2sink_set_caps:<v4l2sink0> caps: video/mpegts, systemstream=
(boolean)true, packetsize=(int)188
0:00:00.283842451  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:723:gst_v4l2sink_set_caps:<v4l2sink0> already have caps set.. are they equal?
0:00:00.284011460  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:724:gst_v4l2sink_set_caps:<v4l2sink0> v4l2sink->current_caps: video/mpegts,
systemstream=(boolean)true, packetsize=(int)188
0:00:00.284271976  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:726:gst_v4l2sink_set_caps:<v4l2sink0> yes they are!
0:00:00.290838613  4236  0x90f9660 INFO                v4l2sink gstv4l2sink.c
:812:gst_v4l2sink_buffer_alloc:<v4l2sink0> outputting buffers via mmap()
0:00:00.294643928  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:823:gst_v4l2sink_buffer_alloc:<v4l2sink0> allocated buffer: 0xb6c07000
0:00:00.294720699  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:889:gst_v4l2sink_show_frame:<v4l2sink0> render copied buffer: 0xb6c07000
0:00:00.294995524  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:844:gst_v4l2sink_show_frame:<v4l2sink0> render buffer: 0xb52964d0
0:00:00.295262873  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:873:gst_v4l2sink_show_frame:<v4l2sink0> slow-path.. I got a GstBuffer so I
need to memcpy
0:00:00.295320685  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:823:gst_v4l2sink_buffer_alloc:<v4l2sink0> allocated buffer: 0xb6c070a8
0:00:00.295356828  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:889:gst_v4l2sink_show_frame:<v4l2sink0> render copied buffer: 0xb6c070a8
0:00:00.295619184  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:715:gst_v4l2sink_set_caps:<v4l2sink0> caps: video/mpegts, systemstream=
(boolean)true, packetsize=(int)188, streamheader=(buffer)< 1803c0b61803c0b6f
046c0b6f046c0b6aa91919191919191919191919191919191919191919191919191919191919
19191919191919191919191919191916a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6
a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a51515151515151515151515151515
1515151515151515151515151515151515151515151515151515151515151512929292929292
9292929292929292929292929292929292929292929292929292929, 7802c0b67802c0b6f84
bc0b6f84bc0b691919191e90300004000c0b64000c0b60000000000000000919191919191919
19191919191916a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6
a6a6a6a6a6a6a6a6a6a6a6a6a6a6a990300004000c0b64000c0b600000000000000005151515
1515151515151515151515151515151515151515151512929292929292929292929292929292
92929292929292929292929292929292929292929292929292929 >
0:00:00.296062295  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:723:gst_v4l2sink_set_caps:<v4l2sink0> already have caps set.. are they equal?
0:00:00.296332874  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:724:gst_v4l2sink_set_caps:<v4l2sink0> v4l2sink->current_caps: video/mpegts,
systemstream=(boolean)true, packetsize=(int)188
0:00:00.296517260  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:729:gst_v4l2sink_set_caps:<v4l2sink0> no they aren't!
0:00:00.296676643  4236  0x90f9660 DEBUG               v4l2sink gstv4l2sink.c
:740:gst_v4l2sink_set_caps:<v4l2sink0> warning, changing caps not supported yet
ERROR: from element /GstPipeline:pipeline0/MpegTsMux:mpegtsmux0: Failed
writing output data to stream 00e0
Additional debug info:
mpegtsmux.c(964): mpegtsmux_collected (): /GstPipeline:pipeline0/MpegTsMux
:mpegtsmux0
Execution ended after 18363411 ns.

#######################################################################



More information about the gstreamer-devel mailing list