Internal data stream error

Marianna Smidth Buschle msb at qtec.com
Wed Feb 22 07:28:44 UTC 2023


Hi,


I'm afraid I can't give you a straight answer there.

I have tried different pipelines but can't really reproduce yours as my 
src doesn't have the same CAPS.

And in the different tests I did I saw both CAPS with and without 
colorimetry on the input of 'x264enc'.


However I would say it sounds strange if the pipeline would be failing 
because the colorimetry is there and it doesn't want it.

I would expect it to just ignore it.

What I have seen in some situations was elements failing because of 
missing or unsupported colorimetry.

Fx: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1448


So my best guess is that you need the 'videoconvert' because the 
colorimetry your source provides is incompatible with the colorimetry 
'x264enc' expects.

Which is annoying since the docs of 'x264enc' don't mention anything 
about required colorimetry.

But neither did the docs of 'v4l2sink' in the issue I mentioned above.

I had to figure it out by looking at the source code of 'v4l2sink'.


In all my tests I seem to end up with a colorimetry of 2:4:7:1 for the 
Y42B format so you can try to see if you can force your source to that:

gst-launch-1.0 v4l2src ! video/x-raw, format=Y42B, colorimetry=2:4:7:1 ! 
fakesink --gst-debug=*:3,GST_CAPS:5


The tests I did:


- gst-launch-1.0 videotestsrc ! video/x-raw, format=Y42B ! x264enc ! 
fakesink -v --gst-debug=*:3


/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = 
video/x-raw, format=(string)Y42B, width=(int)320, height=(int)240, 
framerate=(fraction)30/1, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = 
video/x-raw, format=(string)Y42B, width=(int)320, height=(int)240, 
framerate=(fraction)30/1, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
Redistribute latency...
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = 
video/x-raw, format=(string)Y42B, width=(int)320, height=(int)240, 
framerate=(fraction)30/1, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = 
video/x-raw, format=(string)Y42B, width=(int)320, height=(int)240, 
framerate=(fraction)30/1, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive


- gst-launch-1.0 videotestsrc !  x264enc ! fakesink -v --gst-debug=*:3


/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = 
video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, 
format=(string)Y444, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
Redistribute latency...
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = 
video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, 
format=(string)Y444, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive


- gst-launch-1.0 v4l2src device=/dev/qtec/video0 ! videoconvert ! 
video/x-raw, format=Y42B !  x264enc ! fakesink -v --gst-debug=*:3


/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, format=(string)BGRx, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, 
colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, pixel-aspect-ratio=(fraction)1/1, 
interlace-mode=(string)progressive, format=(string)Y42B, 
colorimetry=(string)2:4:7:1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, pixel-aspect-ratio=(fraction)1/1, 
interlace-mode=(string)progressive, format=(string)Y42B, 
colorimetry=(string)2:4:7:1
Redistribute latency...
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, pixel-aspect-ratio=(fraction)1/1, 
interlace-mode=(string)progressive, format=(string)Y42B, 
colorimetry=(string)2:4:7:1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, pixel-aspect-ratio=(fraction)1/1, 
interlace-mode=(string)progressive, format=(string)Y42B, 
colorimetry=(string)2:4:7:1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, format=(string)BGRx, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, 
colorimetry=(string)sRGB


- gst-launch-1.0 v4l2src device=/dev/qtec/video0 ! videoconvert !  
x264enc ! fakesink -v --gst-debug=*:3


/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, format=(string)BGRx, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, 
colorimetry=(string)sRGB
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, format=(string)Y444, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, 
colorimetry=(string)2:4:7:1
Redistribute latency...
/GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, format=(string)Y444, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, 
colorimetry=(string)2:4:7:1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = 
video/x-raw, width=(int)1024, height=(int)544, 
framerate=(fraction)120/1, format=(string)BGRx, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, 
colorimetry=(string)sRGB


On 19.02.2023 17.10, Nick Kitchel wrote:
> Subject:
> Re: Internal data stream error
> From:
> Nick Kitchel <nkitchel at ihmc.org>
> Date:
> 19.02.2023 17.10
>
> To:
> Marianna Smidth Buschle <msb at qtec.com>
>
>
> Ok so when I'm using this pipeline: *gst-launch-1.0 v4l2src ! 
> videoconvert ! x264enc ! fakesink v --gst-debug=*:3,GST_CAPS:5*
> *
> *
> The returned caps for the first three elements are as follows:
>
> 4l2src0.GstPad:src: caps = video/x-raw, width=(int)1280, 
> height=(int)720, framerate=(fraction)10/1, format=(string)YUY2, 
> pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)2:4:5:1, 
> interlace-mode=(string)progressive
>
> videoconvert0.GstPad:sink: caps = video/x-raw, width=(int)1280, 
> height=(int)720, framerate=(fraction)10/1, format=(string)YUY2, 
> pixel-aspect-ratio=(fraction)1/1, colorimetry=(string)2:4:5:1, 
> interlace-mode=(string)progressive
>
> videoconvert0.GstPad:src: caps = video/x-raw, width=(int)1280, 
> height=(int)720, framerate=(fraction)10/1, format=(string)Y42B, 
> pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
>
> x264enc0.GstPad:sink: caps = video/x-raw, width=(int)1280, 
> height=(int)720, framerate=(fraction)10/1, format=(string)Y42B, 
> pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
>
> These caps work great and everything things to run fine. But if I 
> don't use the videoconvert  element the pipeline fails. Even though I 
> can set the v4l2src to use the correct formant that goes with x264enc 
> it won't work. Is this because the src and sink caps all have to match 
> on both sides? v4l2src has a *colorimetry *and x264enc doesn't. Will 
> that cause the failure if a src element has a cap setting that the 
> sink doesn't have? Because when going through videoconvert it works 
> but without it the pipeline fails. This seems to have to be that fact 
> that videoconvert can use *colorimetry*?
>
> Please let me know thanks.
>
> Nick
> ------------------------------------------------------------------------
> *From:* Marianna Smidth Buschle <msb at qtec.com>
> *Sent:* Monday, February 13, 2023 10:44 AM
> *To:* Nick Kitchel <nkitchel at ihmc.org>
> *Subject:* Re: Internal data stream error
> Yes
>
> x264enc.src needs to able to provide one of the formats that 
> mp4mux.sink accepts.
>
> That is how the CAPS negotiation works.
> All elements tell what they can provide and what they can accept and 
> common formats are then found.
>
> mp4mux.sink accepts fx
> video/x-h264:
>   stream-format: { (string)avc, (string)avc3 }
>       alignment: au
>           width: [ 16, 2147483647 ]
>          height: [ 16, 2147483647 ]
>
> And x264enc.sink can provide fx
> video/x-h264:
>       framerate: [ 0/1, 2147483647/1 ]
>           width: [ 1, 2147483647 ]
>          height: [ 1, 2147483647 ]
>   stream-format: { (string)avc, (string)byte-stream }
>       alignment: au
>
> On Mon, 13 Feb 2023, 16:23 Nick Kitchel, <nkitchel at ihmc.org> wrote:
>
>     Ok thats helpful to look into. Is it true that for each element in
>     the middle that the src -> sink needs to match??
>
>     So the x264enc.src -> mp4mux.sink needs to match?
>
>     I wanted to confirm this because I'm struggling to figure this out.
>
>     Let me know,
>
>     Thanks,
>     Nick
>     ------------------------------------------------------------------------
>     *From:* Marianna Smidth Buschle <msb at qtec.com>
>     *Sent:* Thursday, February 9, 2023 12:26 AM
>     *To:* gstreamer-devel at lists.freedesktop.org
>     <gstreamer-devel at lists.freedesktop.org>
>     *Cc:* Nick Kitchel <nkitchel at ihmc.org>
>     *Subject:* Re: Internal data stream error
>     > streaming stopped, reason not-negotiated (-4)
>
>     Means incompatible CAPS.
>
>     You can try debugging by adding '--gst-debug=*:3,GST_CAPS:5'
>
>     This should hopefully give you more information on the offered and
>     accepted CAPS.
>
>     Otherwise it is always a good idea to simplify the pipeline in
>     order to
>     test where the problem is.
>     Fx use a 'fakesink' or 'videotestsrc' to replace parts of your
>     pipeline.
>
>     gst-launch-1.0 decklinkvideosrc connection=sdi ! fakesink -v
>     --gst-debug=*:3,GST_CAPS:5
>
>     gst-launch-1.0 decklinkvideosrc connection=sdi ! video/x-raw,
>     width=720, height=486, framerate=30000/1001 ! fakesink -v
>     --gst-debug=*:3,GST_CAPS:5
>
>     gst-launch-1.0 decklinkvideosrc connection=sdi ! videoconvert !
>     x264enc ! fakesink -v --gst-debug=*:3,GST_CAPS:5
>
>     gst-launch-1.0 decklinkvideosrc connection=sdi ! video/x-raw,
>     width=720, height=486, framerate=30000/1001
>       ! videoconvert ! x264enc ! fakesink -v --gst-debug=*:3,GST_CAPS:5
>
>     gst-launch-1.0 videtestsrc ! videoconvert ! x264enc !
>     video/x-h264, width=720, height=486, framerate=30000/1001 !
>     fakesink -v --gst-debug=*:3,GST_CAPS:5
>
>     And so on...
>
>     Best Regards
>     Marianna
>
>     On 08.02.2023 20.59, gstreamer-devel-request at lists.freedesktop.org
>     wrote:
>     > Message: 1
>     > Date: Wed, 8 Feb 2023 19:44:19 +0000
>     > From: Nick Kitchel<nkitchel at ihmc.org>
>     > To:"gstreamer-devel at lists.freedesktop.org"
>     >        <gstreamer-devel at lists.freedesktop.org>
>     > Subject: Internal data stream error
>     > Message-ID:
>     >       
>     <BL3PR04MB8089ECD025787FBF89F1B497BBD89 at BL3PR04MB8089.namprd04.prod.outlook.com>
>     >
>     > Content-Type: text/plain; charset="iso-8859-1"
>     >
>     > Hello,
>     >
>     > I'm trying to get decklinkvideosrc to work with x264enc and
>     mp4mux but seem to be getting stuck. I've been messing around with
>     the caps but can't get it working correctly.
>     >
>     > When I run this command line: gst-launch-1.0 decklinkvideosrc
>     connection=sdi ! videoconvert ! x264enc ! video/x-h264, width=720,
>     height=486, framerate=30000/1001 ! mp4mux ! filesink
>     location=decklinkCapture.mov -v
>     >
>     > I get this output :
>     >
>     > Setting pipeline to PAUSED ...
>     > Pipeline is live and does not need PREROLL ...
>     > /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
>     hw-serial-number =
>     > Setting pipeline to PLAYING ...
>     > New clock: GstSystemClock
>     >
>     /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0.GstPad:src:
>     caps = video/x-raw, width=(int)720, height=(int)486,
>     pixel-aspect-ratio=(fraction)10/11,
>     interlace-mode=(string)interleaved,
>     framerate=(fraction)30000/1001,
>     field-order=(string)bottom-field-first, format=(string)UYVY,
>     colorimetry=(string)bt601, chroma-site=(string)mpeg2
>     > /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src:
>     caps = video/x-raw, width=(int)720, height=(int)486,
>     framerate=(fraction)30000/1001, format=(string)Y42B,
>     pixel-aspect-ratio=(fraction)10/11,
>     interlace-mode=(string)interleaved,
>     field-order=(string)bottom-field-first
>     > Redistribute latency...
>     > /GstPipeline:pipeline0/GstX264Enc:x264enc0.GstPad:sink: caps =
>     video/x-raw, width=(int)720, height=(int)486,
>     framerate=(fraction)30000/1001, format=(string)Y42B,
>     pixel-aspect-ratio=(fraction)10/11,
>     interlace-mode=(string)interleaved,
>     field-order=(string)bottom-field-first
>     >
>     /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink:
>     caps = video/x-raw, width=(int)720, height=(int)486,
>     pixel-aspect-ratio=(fraction)10/11,
>     interlace-mode=(string)interleaved,
>     framerate=(fraction)30000/1001,
>     field-order=(string)bottom-field-first, format=(string)UYVY,
>     colorimetry=(string)bt601, chroma-site=(string)mpeg2
>     > Redistribute latency...
>     > /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
>     signal = false
>     > WARNING: from element
>     /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0: No
>     signal
>     > Additional debug info:
>     > gstdecklinkvideosrc.cpp(1118): gst_decklink_video_src_create ():
>     /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
>     > No input source was detected - video frames invalid
>     >
>     /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0.GstPad:src:
>     caps = video/x-raw, width=(int)1280, height=(int)720,
>     pixel-aspect-ratio=(fraction)1/1,
>     interlace-mode=(string)progressive,
>     framerate=(fraction)60000/1001, format=(string)UYVY,
>     colorimetry=(string)bt709, chroma-site=(string)mpeg2
>     > Redistribute latency...
>     > /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
>     signal = true
>     > INFO:
>     > gstdecklinkvideosrc.cpp(1125): gst_decklink_video_src_create ():
>     /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
>     > Input source detected
>     > ERROR: from element
>     /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
>     Internal data stream error.
>     > Additional debug info:
>     > gstbasesrc.c(3072): gst_base_src_loop ():
>     /GstPipeline:pipeline0/GstDecklinkVideoSrc:decklinkvideosrc0:
>     > streaming stopped, reason not-negotiated (-4)
>     > Execution ended after 0:00:00.145124701
>     > Setting pipeline to NULL ...
>     > Freeing pipeline ...
>     >
>     > I'm not sure where the caps are going wrong. Any help would be
>     appreciated. Also is there any place where I can see what encoders
>     go with specific muxers? It seems I just have to google the
>     element and hope the results is good enough to show me what else I
>     can use with it.
>     >
>     > Thanks,
>     > Nick
>
>     -- 
>     Best regards / Med venlig hilsen
>     “Marianna Smidth Buschle”
>
-- 
Best regards / Med venlig hilsen
“Marianna Smidth Buschle”
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20230222/34579e95/attachment-0001.htm>


More information about the gstreamer-devel mailing list