wbertcbin: end of remote candidates

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

wbertcbin: end of remote candidates

Bizarre Days
When Firefox browser wants to send candidates to the webrtcbin peer, it calls a custom js method passing an "event" argument to it. The custom method must send this information to the peer. The event has a single field "event.candidate" with a value as:

event.candidate = { "sdpMLineIndex":0,"
  "candidate":"candidate:8 2 TCP 847249918 88.6.179.119 9 typ srflx raddr 192.168.1.12 rport 9 tcptype active"}

At the end, to inform there are no more candidates, Firefox does another call to the same method with event.candidate=undefined

In the other side, webrtcbin (Java API) offers the method "WebRTCBin.addIceCandiate( int sdpM. String candidate ) to inform the plugin about the remote candidates. In the normal case is easy map firefox event.candidate information to these arguments. However, no idea of to handle the end one.

A call WebRTCBin.addIceCandidate(0, null) produces an assertion failed in libnice (when its trace is active).

How to handle in WebRTCBin (Java API) the case of final remote candidate ?

Thanks,






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

Re: wbertcbin: end of remote candidates

Olivier Crête-3
Hi,

See inline.

On Wed, 2020-03-25 at 22:08 +0100, Bizarre Days wrote:
When Firefox browser wants to send candidates to the webrtcbin peer, it calls a custom js method passing an "event" argument to it. The custom method must send this information to the peer. The event has a single field "event.candidate" with a value as:

event.candidate = { "sdpMLineIndex":0,"
  "candidate":"candidate:8 2 TCP 847249918 88.6.179.119 9 typ srflx raddr 192.168.1.12 rport 9 tcptype active"}

At the end, to inform there are no more candidates, Firefox does another call to the same method with event.candidate=undefined

In the other side, webrtcbin (Java API) offers the method "WebRTCBin.addIceCandiate( int sdpM. String candidate ) to inform the plugin about the remote candidates. In the normal case is easy map firefox event.candidate information to these arguments. However, no idea of to handle the end one.

A call WebRTCBin.addIceCandidate(0, null) produces an assertion failed in libnice (when its trace is active).

How to handle in WebRTCBin (Java API) the case of final remote candidate ?

The only use for this is to avoid declaring the call failed before the last candidate has been produced. So if webrtcbin's ice-connection-state goes to "failed" before the last candidate has been received, you can just ignore the failed and feed more candidates (making it go back to the "checking" state). libnice, the library used by webrtcbin to do ICE actually supports this end of candidate since version 0.1.16, but nobody has taken the time to add the relevant API to webrtcbin.

-- 
Olivier Crête [hidden email]

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

Re: wbertcbin: end of remote candidates

Olivier Crête-3
Hi,

I just submitted an MR to implement that

Olivier

On Wed, 2020-03-25 at 20:12 -0400, Olivier Crête wrote:
Hi,

See inline.

On Wed, 2020-03-25 at 22:08 +0100, Bizarre Days wrote:
When Firefox browser wants to send candidates to the webrtcbin peer, it calls a custom js method passing an "event" argument to it. The custom method must send this information to the peer. The event has a single field "event.candidate" with a value as:

event.candidate = { "sdpMLineIndex":0,"
  "candidate":"candidate:8 2 TCP 847249918 88.6.179.119 9 typ srflx raddr 192.168.1.12 rport 9 tcptype active"}

At the end, to inform there are no more candidates, Firefox does another call to the same method with event.candidate=undefined

In the other side, webrtcbin (Java API) offers the method "WebRTCBin.addIceCandiate( int sdpM. String candidate ) to inform the plugin about the remote candidates. In the normal case is easy map firefox event.candidate information to these arguments. However, no idea of to handle the end one.

A call WebRTCBin.addIceCandidate(0, null) produces an assertion failed in libnice (when its trace is active).

How to handle in WebRTCBin (Java API) the case of final remote candidate ?

The only use for this is to avoid declaring the call failed before the last candidate has been produced. So if webrtcbin's ice-connection-state goes to "failed" before the last candidate has been received, you can just ignore the failed and feed more candidates (making it go back to the "checking" state). libnice, the library used by webrtcbin to do ICE actually supports this end of candidate since version 0.1.16, but nobody has taken the time to add the relevant API to webrtcbin.

-- 

Olivier Crête
[hidden email]
_______________________________________________
gstreamer-devel mailing list
[hidden email]

https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

-- 
Olivier Crête [hidden email]

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