Add sink pad to compositor while playing

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Add sink pad to compositor while playing

Weber, Holger

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Add sink pad to compositor while playing

Mathieu Duponchelle
Hi,

What do you mean exactly by "stop the pipeline"? I assume you mean the state doesn't actually change,
but compositor simply stops producing buffers?

If you are not using the compositor in "live" mode, ie none of the sources you plug in are live, then compositor
will wait for all pads to have data before mixing the output buffer, this might be the problem you are observing,
either your new source does not push any buffers, or the buffers it does push do not have the expected
timestamps and are simply getting dropped, in which case you might want to set an offset on the pad.

Using GST_DEBUG=*aggregator*:6 should give you more information regarding this issue.

On 04/10/2018 06:23 PM, Weber, Holger wrote:

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards



_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

AW: Add sink pad to compositor while playing

Weber, Holger

Hi,

 

with “don’t stop the pipeline” I mean, there is a running pipeline (Video playback) and from another thread I call gst_element_get_request_pad(compositor”,”sink_%u”).

After that I add a pad_probe for that pad. The cb gets called an I do the following things:

-          Create elements for the stream I want to add (filesrc, dmuexers etc.)

-          Add elements to the pipeline

-          Link elements

-          Add callback for a needed “pad-added”

-          Return GST_PAD_PROBE_REMOVE

 

If I activate the debugging output I can see:

aggregator gstaggregator.c:667:gst_aggregator_wait_and_check:<mixer> Waiting for src on thread 0d9e70e

 

So I guess it’s the problem you described. I need to get the new elements in state play, but I don’t know how to do that.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Mathieu Duponchelle
Gesendet: Dienstag, 10. April 2018 18:41
An: [hidden email]
Betreff: Re: Add sink pad to compositor while playing

 

Hi,

What do you mean exactly by "stop the pipeline"? I assume you mean the state doesn't actually change,
but compositor simply stops producing buffers?

If you are not using the compositor in "live" mode, ie none of the sources you plug in are live, then compositor
will wait for all pads to have data before mixing the output buffer, this might be the problem you are observing,
either your new source does not push any buffers, or the buffers it does push do not have the expected
timestamps and are simply getting dropped, in which case you might want to set an offset on the pad.

Using GST_DEBUG=*aggregator*:6 should give you more information regarding this issue.

On 04/10/2018 06:23 PM, Weber, Holger wrote:

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards




_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

AW: Add sink pad to compositor while playing

Weber, Holger

Hi,

 

I did some more testing and the strem I added seems to start, but than there is a poroblem with pad negotiation.

After adding the new pipeline part and connecting it to the compositor I get the following errors.

 

0:00:03.953236964  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953341177  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953698368  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953821082  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953939643  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.954044610  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

Error: Internal data stream error.

Returned, stopping playback

0:00:03.954949672  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

 

The added stream has the same format than the already running streams. I didn’t set any caps or added videoconverter elements – so I’m not sure if that’s the issue.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 09:15
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

with “don’t stop the pipeline” I mean, there is a running pipeline (Video playback) and from another thread I call gst_element_get_request_pad(compositor”,”sink_%u”).

After that I add a pad_probe for that pad. The cb gets called an I do the following things:

-          Create elements for the stream I want to add (filesrc, dmuexers etc.)

-          Add elements to the pipeline

-          Link elements

-          Add callback for a needed “pad-added”

-          Return GST_PAD_PROBE_REMOVE

 

If I activate the debugging output I can see:

aggregator gstaggregator.c:667:gst_aggregator_wait_and_check:<mixer> Waiting for src on thread 0d9e70e

 

So I guess it’s the problem you described. I need to get the new elements in state play, but I don’t know how to do that.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Mathieu Duponchelle
Gesendet: Dienstag, 10. April 2018 18:41
An: [hidden email]
Betreff: Re: Add sink pad to compositor while playing

 

Hi,

What do you mean exactly by "stop the pipeline"? I assume you mean the state doesn't actually change,
but compositor simply stops producing buffers?

If you are not using the compositor in "live" mode, ie none of the sources you plug in are live, then compositor
will wait for all pads to have data before mixing the output buffer, this might be the problem you are observing,
either your new source does not push any buffers, or the buffers it does push do not have the expected
timestamps and are simply getting dropped, in which case you might want to set an offset on the pad.

Using GST_DEBUG=*aggregator*:6 should give you more information regarding this issue.

On 04/10/2018 06:23 PM, Weber, Holger wrote:

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards



_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

AW: Add sink pad to compositor while playing

Weber, Holger

Hi,

 

I can’t fix that issue. I have no idea how to solve that. The only thing I found was something depending a “problem” with the pixel-aspect-ratio.

http://gstreamer-bugs.narkive.com/OilCXCh8/bug-754291-new-compositor-fails-with-reason-not-negotiated-when-changing-the-pixel-aspect-ratio

 

One solution seems to be to fix the ratio to 1/1 but I don’t know how to do that. Any ideas?

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 14:33
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

I did some more testing and the strem I added seems to start, but than there is a poroblem with pad negotiation.

After adding the new pipeline part and connecting it to the compositor I get the following errors.

 

0:00:03.953236964  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953341177  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953698368  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953821082  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953939643  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.954044610  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

Error: Internal data stream error.

Returned, stopping playback

0:00:03.954949672  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

 

The added stream has the same format than the already running streams. I didn’t set any caps or added videoconverter elements – so I’m not sure if that’s the issue.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 09:15
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

with “don’t stop the pipeline” I mean, there is a running pipeline (Video playback) and from another thread I call gst_element_get_request_pad(compositor”,”sink_%u”).

After that I add a pad_probe for that pad. The cb gets called an I do the following things:

-          Create elements for the stream I want to add (filesrc, dmuexers etc.)

-          Add elements to the pipeline

-          Link elements

-          Add callback for a needed “pad-added”

-          Return GST_PAD_PROBE_REMOVE

 

If I activate the debugging output I can see:

aggregator gstaggregator.c:667:gst_aggregator_wait_and_check:<mixer> Waiting for src on thread 0d9e70e

 

So I guess it’s the problem you described. I need to get the new elements in state play, but I don’t know how to do that.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Mathieu Duponchelle
Gesendet: Dienstag, 10. April 2018 18:41
An: [hidden email]
Betreff: Re: Add sink pad to compositor while playing

 

Hi,

What do you mean exactly by "stop the pipeline"? I assume you mean the state doesn't actually change,
but compositor simply stops producing buffers?

If you are not using the compositor in "live" mode, ie none of the sources you plug in are live, then compositor
will wait for all pads to have data before mixing the output buffer, this might be the problem you are observing,
either your new source does not push any buffers, or the buffers it does push do not have the expected
timestamps and are simply getting dropped, in which case you might want to set an offset on the pad.

Using GST_DEBUG=*aggregator*:6 should give you more information regarding this issue.

On 04/10/2018 06:23 PM, Weber, Holger wrote:

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards

 

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

RE: Add sink pad to compositor while playing

Shishir Pokharel

I am not an expert of compositor element – but If I would have to try , I would have converted incoming videos to raw -> composite it to single video (picture in picture) and convert it to required format.

 

/Shishir

 

From: gstreamer-devel <[hidden email]> On Behalf Of Weber, Holger
Sent: Thursday, April 12, 2018 12:26 AM
To: Discussion of the development of and with GStreamer <[hidden email]>
Subject: AW: Add sink pad to compositor while playing

 

Hi,

 

I can’t fix that issue. I have no idea how to solve that. The only thing I found was something depending a “problem” with the pixel-aspect-ratio.

http://gstreamer-bugs.narkive.com/OilCXCh8/bug-754291-new-compositor-fails-with-reason-not-negotiated-when-changing-the-pixel-aspect-ratio

 

One solution seems to be to fix the ratio to 1/1 but I don’t know how to do that. Any ideas?

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 14:33
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

I did some more testing and the strem I added seems to start, but than there is a poroblem with pad negotiation.

After adding the new pipeline part and connecting it to the compositor I get the following errors.

 

0:00:03.953236964  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953341177  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953698368  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953821082  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953939643  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.954044610  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

Error: Internal data stream error.

Returned, stopping playback

0:00:03.954949672  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

 

The added stream has the same format than the already running streams. I didn’t set any caps or added videoconverter elements – so I’m not sure if that’s the issue.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 09:15
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

with “don’t stop the pipeline” I mean, there is a running pipeline (Video playback) and from another thread I call gst_element_get_request_pad(compositor”,”sink_%u”).

After that I add a pad_probe for that pad. The cb gets called an I do the following things:

  • Create elements for the stream I want to add (filesrc, dmuexers etc.)
  • Add elements to the pipeline
  • Link elements
  • Add callback for a needed “pad-added”
  • Return GST_PAD_PROBE_REMOVE

 

If I activate the debugging output I can see:

aggregator gstaggregator.c:667:gst_aggregator_wait_and_check:<mixer> Waiting for src on thread 0d9e70e

 

So I guess it’s the problem you described. I need to get the new elements in state play, but I don’t know how to do that.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Mathieu Duponchelle
Gesendet: Dienstag, 10. April 2018 18:41
An: [hidden email]
Betreff: Re: Add sink pad to compositor while playing

 

Hi,

What do you mean exactly by "stop the pipeline"? I assume you mean the state doesn't actually change,
but compositor simply stops producing buffers?

If you are not using the compositor in "live" mode, ie none of the sources you plug in are live, then compositor
will wait for all pads to have data before mixing the output buffer, this might be the problem you are observing,
either your new source does not push any buffers, or the buffers it does push do not have the expected
timestamps and are simply getting dropped, in which case you might want to set an offset on the pad.

Using GST_DEBUG=*aggregator*:6 should give you more information regarding this issue.

On 04/10/2018 06:23 PM, Weber, Holger wrote:

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards

 

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

AW: Add sink pad to compositor while playing

Weber, Holger

Can you give me an hint what you mean with raw?
As far as I know I have to change different things:

-          Video format

-          Pixel-aspect-ratio

-          Framerate

Is there an element which can do all of that stuff or do I need multiple elements?

 

Also in the output I can only see that the pixel-aspect-ratio is different. Is it possible to “ignore” this cap?

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Shishir Pokharel
Gesendet: Dienstag, 17. April 2018 05:23
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: RE: Add sink pad to compositor while playing

 

I am not an expert of compositor element – but If I would have to try , I would have converted incoming videos to raw -> composite it to single video (picture in picture) and convert it to required format.

 

/Shishir

 

From: gstreamer-devel <[hidden email]> On Behalf Of Weber, Holger
Sent: Thursday, April 12, 2018 12:26 AM
To: Discussion of the development of and with GStreamer <[hidden email]>
Subject: AW: Add sink pad to compositor while playing

 

Hi,

 

I can’t fix that issue. I have no idea how to solve that. The only thing I found was something depending a “problem” with the pixel-aspect-ratio.

http://gstreamer-bugs.narkive.com/OilCXCh8/bug-754291-new-compositor-fails-with-reason-not-negotiated-when-changing-the-pixel-aspect-ratio

 

One solution seems to be to fix the ratio to 1/1 but I don’t know how to do that. Any ideas?

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 14:33
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

I did some more testing and the strem I added seems to start, but than there is a poroblem with pad negotiation.

After adding the new pipeline part and connecting it to the compositor I get the following errors.

 

0:00:03.953236964  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953341177  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953698368  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953821082  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953939643  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.954044610  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

Error: Internal data stream error.

Returned, stopping playback

0:00:03.954949672  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

 

The added stream has the same format than the already running streams. I didn’t set any caps or added videoconverter elements – so I’m not sure if that’s the issue.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 09:15
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

with “don’t stop the pipeline” I mean, there is a running pipeline (Video playback) and from another thread I call gst_element_get_request_pad(compositor”,”sink_%u”).

After that I add a pad_probe for that pad. The cb gets called an I do the following things:

-          Create elements for the stream I want to add (filesrc, dmuexers etc.)

-          Add elements to the pipeline

-          Link elements

-          Add callback for a needed “pad-added”

-          Return GST_PAD_PROBE_REMOVE

 

If I activate the debugging output I can see:

aggregator gstaggregator.c:667:gst_aggregator_wait_and_check:<mixer> Waiting for src on thread 0d9e70e

 

So I guess it’s the problem you described. I need to get the new elements in state play, but I don’t know how to do that.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Mathieu Duponchelle
Gesendet: Dienstag, 10. April 2018 18:41
An: [hidden email]
Betreff: Re: Add sink pad to compositor while playing

 

Hi,

What do you mean exactly by "stop the pipeline"? I assume you mean the state doesn't actually change,
but compositor simply stops producing buffers?

If you are not using the compositor in "live" mode, ie none of the sources you plug in are live, then compositor
will wait for all pads to have data before mixing the output buffer, this might be the problem you are observing,
either your new source does not push any buffers, or the buffers it does push do not have the expected
timestamps and are simply getting dropped, in which case you might want to set an offset on the pad.

Using GST_DEBUG=*aggregator*:6 should give you more information regarding this issue.

On 04/10/2018 06:23 PM, Weber, Holger wrote:

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards

 

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

AW: Add sink pad to compositor while playing

Weber, Holger

It turned out, that adding a deinterlace element in front of the mixer solved the issue.

I don’t know if that is a bug, because elements that are added before the pipline switches to PLAY are handled without
a deinterlace element. Only if I add a stream some time later  (while pipeline is running) I need this element.

Should I report this as a bug?

 

There is another thing I don’t know how to handle. If I add a new stream, the whole mixer is waiting till the
new stream has the same time than the old ones. I “solved” this by setting an offset to the new created pad with
gst_pad_set_offset. As offset I use the running time of the first added element. That seems to work more or less..

 

Is there an option for the mixer that it just mixes the sources as they arrive and don’t try to keep them in sync?

Or is that the right way to do that?

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Dienstag, 17. April 2018 11:49
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Can you give me an hint what you mean with raw?
As far as I know I have to change different things:

-          Video format

-          Pixel-aspect-ratio

-          Framerate

Is there an element which can do all of that stuff or do I need multiple elements?

 

Also in the output I can only see that the pixel-aspect-ratio is different. Is it possible to “ignore” this cap?

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Shishir Pokharel
Gesendet: Dienstag, 17. April 2018 05:23
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: RE: Add sink pad to compositor while playing

 

I am not an expert of compositor element – but If I would have to try , I would have converted incoming videos to raw -> composite it to single video (picture in picture) and convert it to required format.

 

/Shishir

 

From: gstreamer-devel <[hidden email]> On Behalf Of Weber, Holger
Sent: Thursday, April 12, 2018 12:26 AM
To: Discussion of the development of and with GStreamer <[hidden email]>
Subject: AW: Add sink pad to compositor while playing

 

Hi,

 

I can’t fix that issue. I have no idea how to solve that. The only thing I found was something depending a “problem” with the pixel-aspect-ratio.

http://gstreamer-bugs.narkive.com/OilCXCh8/bug-754291-new-compositor-fails-with-reason-not-negotiated-when-changing-the-pixel-aspect-ratio

 

One solution seems to be to fix the ratio to 1/1 but I don’t know how to do that. Any ideas?

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 14:33
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

I did some more testing and the strem I added seems to start, but than there is a poroblem with pad negotiation.

After adding the new pipeline part and connecting it to the compositor I get the following errors.

 

0:00:03.953236964  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953341177  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953698368  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953821082  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.953939643  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

0:00:03.954044610  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

Error: Internal data stream error.

Returned, stopping playback

0:00:03.954949672  4232    da11480 ERROR        videoaggregator gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer:sink_2> got input caps video/x-raw, format=(string)I420, width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2, colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps are video/x-raw, format=(string)I420, width=(int)785, height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2

 

The added stream has the same format than the already running streams. I didn’t set any caps or added videoconverter elements – so I’m not sure if that’s the issue.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Weber, Holger
Gesendet: Mittwoch, 11. April 2018 09:15
An: Discussion of the development of and with GStreamer <[hidden email]>
Betreff: AW: Add sink pad to compositor while playing

 

Hi,

 

with “don’t stop the pipeline” I mean, there is a running pipeline (Video playback) and from another thread I call gst_element_get_request_pad(compositor”,”sink_%u”).

After that I add a pad_probe for that pad. The cb gets called an I do the following things:

-          Create elements for the stream I want to add (filesrc, dmuexers etc.)

-          Add elements to the pipeline

-          Link elements

-          Add callback for a needed “pad-added”

-          Return GST_PAD_PROBE_REMOVE

 

If I activate the debugging output I can see:

aggregator gstaggregator.c:667:gst_aggregator_wait_and_check:<mixer> Waiting for src on thread 0d9e70e

 

So I guess it’s the problem you described. I need to get the new elements in state play, but I don’t know how to do that.

 

Kind Regards,

 

Von: gstreamer-devel <[hidden email]> Im Auftrag von Mathieu Duponchelle
Gesendet: Dienstag, 10. April 2018 18:41
An: [hidden email]
Betreff: Re: Add sink pad to compositor while playing

 

Hi,

What do you mean exactly by "stop the pipeline"? I assume you mean the state doesn't actually change,
but compositor simply stops producing buffers?

If you are not using the compositor in "live" mode, ie none of the sources you plug in are live, then compositor
will wait for all pads to have data before mixing the output buffer, this might be the problem you are observing,
either your new source does not push any buffers, or the buffers it does push do not have the expected
timestamps and are simply getting dropped, in which case you might want to set an offset on the pad.

Using GST_DEBUG=*aggregator*:6 should give you more information regarding this issue.

On 04/10/2018 06:23 PM, Weber, Holger wrote:

Hi,

I want to mix multiple video streams into one picture.

Therefore I use the compositor element. I can mix two videos and it seems to work fine (written in C).

 

One requirement is, to mix only one to up to four (quad view) videos.
Just for a quick test I only added one video source, started the pipeline and later, while the video was running,  I called gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which leads to stop the pipeline.

Can that be done this way or do I need to add all four sink pads with fake sources to the compositor before starting and replacing them later?

 

Kind Regards

 

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

 


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: AW: Add sink pad to compositor while playing

Nicolas Dufresne-5
Le jeudi 19 avril 2018 à 08:12 +0000, Weber, Holger a écrit :
> It turned out, that adding a deinterlace element in front of the
> mixer solved the issue.
> I don’t know if that is a bug, because elements that are added before
> the pipline switches to PLAY are handled without
> a deinterlace element. Only if I add a stream some time later  (while
> pipeline is running) I need this element.
> Should I report this as a bug?

Maybe it's worth a bug yes. Mainly, the problem is that some element
will fail negotiation, other will just ignore that it's interlaced, and
finally others really handle interlacing.

In general, discussions have lead us to think that we should just fail
negotiation when interlacing is not support, but then if we apply that
to displays sink, some applications will start failing. I believe it's
this way because deinterlacing in software is slow, and then some
people preferred to watch a smooth video with visual issues, then a
slide show.

>  
> There is another thing I don’t know how to handle. If I add a new
> stream, the whole mixer is waiting till the
> new stream has the same time than the old ones. I “solved” this by
> setting an offset to the new created pad with
> gst_pad_set_offset. As offset I use the running time of the first
> added element. That seems to work more or less..
>  
> Is there an option for the mixer that it just mixes the sources as
> they arrive and don’t try to keep them in sync?
> Or is that the right way to do that?
>  
> Von: gstreamer-devel <[hidden email]>
> Im Auftrag von Weber, Holger
> Gesendet: Dienstag, 17. April 2018 11:49
> An: Discussion of the development of and with GStreamer <gstreamer-de
> [hidden email]>
> Betreff: AW: Add sink pad to compositor while playing
>  
> Can you give me an hint what you mean with raw?
> As far as I know I have to change different things:
> -          Video format
> -          Pixel-aspect-ratio
> -          Framerate
> Is there an element which can do all of that stuff or do I need
> multiple elements?
>  
> Also in the output I can only see that the pixel-aspect-ratio is
> different. Is it possible to “ignore” this cap?
>  
> Von: gstreamer-devel <[hidden email]>
> Im Auftrag von Shishir Pokharel
> Gesendet: Dienstag, 17. April 2018 05:23
> An: Discussion of the development of and with GStreamer <gstreamer-de
> [hidden email]>
> Betreff: RE: Add sink pad to compositor while playing
>  
> I am not an expert of compositor element – but If I would have to try
> , I would have converted incoming videos to raw -> composite it to
> single video (picture in picture) and convert it to required format.
>  
> /Shishir
>  
> From: gstreamer-devel <[hidden email]>
> On Behalf Of Weber, Holger
> Sent: Thursday, April 12, 2018 12:26 AM
> To: Discussion of the development of and with GStreamer <gstreamer-de
> [hidden email]>
> Subject: AW: Add sink pad to compositor while playing
>  
> Hi,
>  
> I can’t fix that issue. I have no idea how to solve that. The only
> thing I found was something depending a “problem” with the pixel-
> aspect-ratio.
>
> http://gstreamer-bugs.narkive.com/OilCXCh8/bug-754291-new-compositor-
> fails-with-reason-not-negotiated-when-changing-the-pixel-aspect-ratio
>  
> One solution seems to be to fix the ratio to 1/1 but I don’t know how
> to do that. Any ideas?
>  
> Von: gstreamer-devel <[hidden email]>
> Im Auftrag von Weber, Holger
> Gesendet: Mittwoch, 11. April 2018 14:33
> An: Discussion of the development of and with GStreamer <gstreamer-de
> [hidden email]>
> Betreff: AW: Add sink pad to compositor while playing
>  
> Hi,
>  
> I did some more testing and the strem I added seems to start, but
> than there is a poroblem with pad negotiation.
> After adding the new pipeline part and connecting it to the
> compositor I get the following errors.
>  
> 0:00:03.953236964  4232    da11480 ERROR        videoaggregator
> gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer
> :sink_2> got input caps video/x-raw, format=(string)I420,
> width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-
> aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2,
> colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps
> are video/x-raw, format=(string)I420, width=(int)785,
> height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2
> 0:00:03.953341177  4232    da11480 ERROR        videoaggregator
> gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer
> :sink_2> got input caps video/x-raw, format=(string)I420,
> width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-
> aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2,
> colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps
> are video/x-raw, format=(string)I420, width=(int)785,
> height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2
> 0:00:03.953698368  4232    da11480 ERROR        videoaggregator
> gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer
> :sink_2> got input caps video/x-raw, format=(string)I420,
> width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-
> aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2,
> colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps
> are video/x-raw, format=(string)I420, width=(int)785,
> height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2
> 0:00:03.953821082  4232    da11480 ERROR        videoaggregator
> gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer
> :sink_2> got input caps video/x-raw, format=(string)I420,
> width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-
> aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2,
> colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps
> are video/x-raw, format=(string)I420, width=(int)785,
> height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2
> 0:00:03.953939643  4232    da11480 ERROR        videoaggregator
> gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer
> :sink_2> got input caps video/x-raw, format=(string)I420,
> width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-
> aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2,
> colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps
> are video/x-raw, format=(string)I420, width=(int)785,
> height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2
> 0:00:03.954044610  4232    da11480 ERROR        videoaggregator
> gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer
> :sink_2> got input caps video/x-raw, format=(string)I420,
> width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-
> aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2,
> colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps
> are video/x-raw, format=(string)I420, width=(int)785,
> height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2
> Error: Internal data stream error.
> Returned, stopping playback
> 0:00:03.954949672  4232    da11480 ERROR        videoaggregator
> gstvideoaggregator.c:882:gst_video_aggregator_pad_sink_setcaps:<mixer
> :sink_2> got input caps video/x-raw, format=(string)I420,
> width=(int)720, height=(int)576, interlace-mode=(string)mixed, pixel-
> aspect-ratio=(fraction)12/11, chroma-site=(string)mpeg2,
> colorimetry=(string)bt601, framerate=(fraction)25/1, but current caps
> are video/x-raw, format=(string)I420, width=(int)785,
> height=(int)576, framerate=(fraction)25/1, chroma-site=(string)mpeg2
>  
> The added stream has the same format than the already running
> streams. I didn’t set any caps or added videoconverter elements – so
> I’m not sure if that’s the issue.
>  
> Kind Regards,
>  
> Von: gstreamer-devel <[hidden email]>
> Im Auftrag von Weber, Holger
> Gesendet: Mittwoch, 11. April 2018 09:15
> An: Discussion of the development of and with GStreamer <gstreamer-de
> [hidden email]>
> Betreff: AW: Add sink pad to compositor while playing
>  
> Hi,
>  
> with “don’t stop the pipeline” I mean, there is a running pipeline
> (Video playback) and from another thread I call
> gst_element_get_request_pad(compositor”,”sink_%u”).
> After that I add a pad_probe for that pad. The cb gets called an I do
> the following things:
> -          Create elements for the stream I want to add (filesrc,
> dmuexers etc.)
> -          Add elements to the pipeline
> -          Link elements
> -          Add callback for a needed “pad-added”
> -          Return GST_PAD_PROBE_REMOVE
>  
> If I activate the debugging output I can see:
> aggregator gstaggregator.c:667:gst_aggregator_wait_and_check:<mixer>
> Waiting for src on thread 0d9e70e
>  
> So I guess it’s the problem you described. I need to get the new
> elements in state play, but I don’t know how to do that.
>  
> Kind Regards,
>  
> Von: gstreamer-devel <[hidden email]>
> Im Auftrag von Mathieu Duponchelle
> Gesendet: Dienstag, 10. April 2018 18:41
> An: [hidden email]
> Betreff: Re: Add sink pad to compositor while playing
>  
> Hi,
>
> What do you mean exactly by "stop the pipeline"? I assume you mean
> the state doesn't actually change,
> but compositor simply stops producing buffers?
>
> If you are not using the compositor in "live" mode, ie none of the
> sources you plug in are live, then compositor
> will wait for all pads to have data before mixing the output buffer,
> this might be the problem you are observing,
> either your new source does not push any buffers, or the buffers it
> does push do not have the expected
> timestamps and are simply getting dropped, in which case you might
> want to set an offset on the pad.
>
> Using GST_DEBUG=*aggregator*:6 should give you more information
> regarding this issue.
>
> On 04/10/2018 06:23 PM, Weber, Holger wrote:
> > Hi,
> > I want to mix multiple video streams into one picture.
> > Therefore I use the compositor element. I can mix two videos and it
> > seems to work fine (written in C).
> >  
> > One requirement is, to mix only one to up to four (quad view)
> > videos.
> > Just for a quick test I only added one video source, started the
> > pipeline and later, while the video was running,  I called
> > gst_element_get_request_pad(pData->m_pElMixer, "sink_%u");  which
> > leads to stop the pipeline.
> > Can that be done this way or do I need to add all four sink pads
> > with fake sources to the compositor before starting and replacing
> > them later?
> >  
> > Kind Regards
> >  
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > [hidden email]
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>  
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (201 bytes) Download Attachment