Webrtc wit appsrc

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

Webrtc wit appsrc

Toshick
Hello all.

I have a pipe:
appsrc->rtph264pay->webrtcbin.sink

But, when I setting up everything, and pipeline is not running yet, I received an error: 
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: NULL => READY
LOG                webrtcbin gstwebrtcbin.c:1341:_check_if_negotiation_is_needed:<sendonly> checking if negotiation is needed
LOG                webrtcbin gstwebrtcbin.c:1346:_check_if_negotiation_is_needed:<sendonly> no negotiation possible until caps have been received on all sink pads

After that, I'm starting pipeline and it working fine, no issues:

 DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: READY => PAUSED
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: PAUSED => PLAYING

And that's all. No more on-negotiation-needed callback. Nothing.

How to proceed further with webrtc connection? How to re-init it after the pipeline is running to make it call on-negotiation-needed callback?

Thank you in advance,
Best regards,
Anton.

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

Re: Webrtc wit appsrc

Matthew Waters
Are you providing caps to your appsrc?  I can't remember if appsrc will delay the caps event until the first buffer or not so that may be a reason.

On 5/8/20 5:55 am, Anton Pryima wrote:
Hello all.

I have a pipe:
appsrc->rtph264pay->webrtcbin.sink

But, when I setting up everything, and pipeline is not running yet, I received an error: 
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: NULL => READY
LOG                webrtcbin gstwebrtcbin.c:1341:_check_if_negotiation_is_needed:<sendonly> checking if negotiation is needed
LOG                webrtcbin gstwebrtcbin.c:1346:_check_if_negotiation_is_needed:<sendonly> no negotiation possible until caps have been received on all sink pads

After that, I'm starting pipeline and it working fine, no issues:

 DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: READY => PAUSED
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: PAUSED => PLAYING

And that's all. No more on-negotiation-needed callback. Nothing.

How to proceed further with webrtc connection? How to re-init it after the pipeline is running to make it call on-negotiation-needed callback?

Thank you in advance,
Best regards,
Anton.

_______________________________________________
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 (499 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Webrtc wit appsrc

Toshick
Hello Matthew,

Thanks for quick reply,
Basically, I don't provide caps. But I'm pushing samples to the appsrc - so it has caps by default. But I was trying to set caps explicitly - with no success.
BTW, I should set caps on webrtcbin or on appsrc sinkpad? Basically, I was able to proceed, with dirty hack - calling on_negotiation_needed(webrtcbin, userdata) callback function manually, right after I configure a transceiver.

But what is the correct way?

Best regards,
Anton.

On Wed, Aug 5, 2020 at 8:20 AM Matthew Waters <[hidden email]> wrote:
Are you providing caps to your appsrc?  I can't remember if appsrc will delay the caps event until the first buffer or not so that may be a reason.

On 5/8/20 5:55 am, Anton Pryima wrote:
Hello all.

I have a pipe:
appsrc->rtph264pay->webrtcbin.sink

But, when I setting up everything, and pipeline is not running yet, I received an error: 
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: NULL => READY
LOG                webrtcbin gstwebrtcbin.c:1341:_check_if_negotiation_is_needed:<sendonly> checking if negotiation is needed
LOG                webrtcbin gstwebrtcbin.c:1346:_check_if_negotiation_is_needed:<sendonly> no negotiation possible until caps have been received on all sink pads

After that, I'm starting pipeline and it working fine, no issues:

 DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: READY => PAUSED
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: PAUSED => PLAYING

And that's all. No more on-negotiation-needed callback. Nothing.

How to proceed further with webrtc connection? How to re-init it after the pipeline is running to make it call on-negotiation-needed callback?

Thank you in advance,
Best regards,
Anton.

_______________________________________________
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: Webrtc wit appsrc

Matthew Waters
I'm not sure on the correct way, I have never done appsrc into webrtcbin.  I only know that webrtcbin needs the caps event on all of its sink pads before a coherent sdp can be generated.  How that occurs, you would need to debug, or ask someone who can, help you debug.

Cheers
-Matt

On 5/8/20 8:41 pm, Anton Pryima wrote:
Hello Matthew,

Thanks for quick reply,
Basically, I don't provide caps. But I'm pushing samples to the appsrc - so it has caps by default. But I was trying to set caps explicitly - with no success.
BTW, I should set caps on webrtcbin or on appsrc sinkpad? Basically, I was able to proceed, with dirty hack - calling on_negotiation_needed(webrtcbin, userdata) callback function manually, right after I configure a transceiver.

But what is the correct way?

Best regards,
Anton.

On Wed, Aug 5, 2020 at 8:20 AM Matthew Waters <[hidden email]> wrote:
Are you providing caps to your appsrc?  I can't remember if appsrc will delay the caps event until the first buffer or not so that may be a reason.

On 5/8/20 5:55 am, Anton Pryima wrote:
Hello all.

I have a pipe:
appsrc->rtph264pay->webrtcbin.sink

But, when I setting up everything, and pipeline is not running yet, I received an error: 
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: NULL => READY
LOG                webrtcbin gstwebrtcbin.c:1341:_check_if_negotiation_is_needed:<sendonly> checking if negotiation is needed
LOG                webrtcbin gstwebrtcbin.c:1346:_check_if_negotiation_is_needed:<sendonly> no negotiation possible until caps have been received on all sink pads

After that, I'm starting pipeline and it working fine, no issues:

 DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: READY => PAUSED
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: PAUSED => PLAYING

And that's all. No more on-negotiation-needed callback. Nothing.

How to proceed further with webrtc connection? How to re-init it after the pipeline is running to make it call on-negotiation-needed callback?

Thank you in advance,
Best regards,
Anton.

_______________________________________________
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 (499 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Webrtc wit appsrc

Matthew Waters
It does, but codec-preferences has only been tested for receive only streams. i.e. configuring which media format to receive.

On 5/8/20 9:40 pm, Anton Pryima wrote:
So, setting caps on the transceiver is not enough? It does not influent SDP generation?

On Wed, Aug 5, 2020 at 2:04 PM Matthew Waters <[hidden email]> wrote:
I'm not sure on the correct way, I have never done appsrc into webrtcbin.  I only know that webrtcbin needs the caps event on all of its sink pads before a coherent sdp can be generated.  How that occurs, you would need to debug, or ask someone who can, help you debug.

Cheers
-Matt

On 5/8/20 8:41 pm, Anton Pryima wrote:
Hello Matthew,

Thanks for quick reply,
Basically, I don't provide caps. But I'm pushing samples to the appsrc - so it has caps by default. But I was trying to set caps explicitly - with no success.
BTW, I should set caps on webrtcbin or on appsrc sinkpad? Basically, I was able to proceed, with dirty hack - calling on_negotiation_needed(webrtcbin, userdata) callback function manually, right after I configure a transceiver.

But what is the correct way?

Best regards,
Anton.

On Wed, Aug 5, 2020 at 8:20 AM Matthew Waters <[hidden email]> wrote:
Are you providing caps to your appsrc?  I can't remember if appsrc will delay the caps event until the first buffer or not so that may be a reason.

On 5/8/20 5:55 am, Anton Pryima wrote:
Hello all.

I have a pipe:
appsrc->rtph264pay->webrtcbin.sink

But, when I setting up everything, and pipeline is not running yet, I received an error: 
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: NULL => READY
LOG                webrtcbin gstwebrtcbin.c:1341:_check_if_negotiation_is_needed:<sendonly> checking if negotiation is needed
LOG                webrtcbin gstwebrtcbin.c:1346:_check_if_negotiation_is_needed:<sendonly> no negotiation possible until caps have been received on all sink pads

After that, I'm starting pipeline and it working fine, no issues:

 DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: READY => PAUSED
DEBUG              webrtcbin gstwebrtcbin.c:5722:gst_webrtc_bin_change_state: changing state: PAUSED => PLAYING

And that's all. No more on-negotiation-needed callback. Nothing.

How to proceed further with webrtc connection? How to re-init it after the pipeline is running to make it call on-negotiation-needed callback?

Thank you in advance,
Best regards,
Anton.

_______________________________________________
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 (499 bytes) Download Attachment