You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am streaming video between a browser and libdatachannel in a scenario where multiple video feeds may exist on both sides and I am having trouble identifying incoming video tracks.
Scenario:
Libdatachannel side calls addTrack() with a video track with SSRC: 42, MSID: "foo"
Negotiation happens and browser gets onTrack event
Browser sees MSID: "foo" and can know which of the feeds available on the libdatachannel side this is.
Some time later, the browser calls addTrack() with a video track with SSRC: 24, MSID: "bar"
Negotiation happens, the browser reuses the m= section from the existing track
onTrack is not triggered on libdatachannel side, existing rtc::Track simply starts receiving RTP data (in addition to the RTCP from its own track). The existing rtc::Track does not seem to provide me any insights into the SSRC added by the browser or its msid. This means the libdatachannel side cannot identify that it is the "bar" feed the browser is sending.
Questions*
rtc::Track seems to act like Transceivers do in the browser in that it seems to represent an entire m= section in the SDP. The onMessage callback receives data from both video tracks. It also kind of acts like a browser MediaStreamTrack in that you can use it with an existing mid with addTrack() to add an SSRC to an existing m= section.
Is there no clear distinction between tracks and transceivers in libdatachannel?
It seems like onTrack should be triggered when the browser adds its track or am I missing something?
If onTrack should be triggered, would it be invoked with another rtc::Track instance representing the received feed(meaning the contained SSRCs would be those of the browser)?
When adding the browser track, how can i get the msid of the browser track on the libdatachannel side?
Calling addSSRC(42, "foo", "bar", "baz") will produce an offer with ssrc: 42, cname: "foo", msid: "bar baz" as I would expect. This makes me believe cname and msid is handled properly by libdatachannel. Is this only true when sending tracks, not when receiving?
Side notes
When browser feeds are created, the browser picks the msid randomly. I am conveying its meaning separately allowing me to assign meaning to the MSID "bar" value from the scenario.
The text was updated successfully, but these errors were encountered:
I am streaming video between a browser and libdatachannel in a scenario where multiple video feeds may exist on both sides and I am having trouble identifying incoming video tracks.
Scenario:
addTrack()
with a video track with SSRC: 42, MSID: "foo"onTrack
eventaddTrack()
with a video track with SSRC: 24, MSID: "bar"m=
section from the existing trackrtc::Track
simply starts receiving RTP data (in addition to the RTCP from its own track). The existingrtc::Track
does not seem to provide me any insights into the SSRC added by the browser or its msid. This means the libdatachannel side cannot identify that it is the "bar" feed the browser is sending.Questions*
rtc::Track
seems to act like Transceivers do in the browser in that it seems to represent an entirem=
section in the SDP. TheonMessage
callback receives data from both video tracks. It also kind of acts like a browserMediaStreamTrack
in that you can use it with an existing mid withaddTrack()
to add an SSRC to an existingm=
section.onTrack
should be triggered when the browser adds its track or am I missing something?onTrack
should be triggered, would it be invoked with anotherrtc::Track
instance representing the received feed(meaning the contained SSRCs would be those of the browser)?addSSRC(42, "foo", "bar", "baz")
will produce an offer with ssrc: 42, cname: "foo", msid: "bar baz" as I would expect. This makes me believe cname and msid is handled properly by libdatachannel. Is this only true when sending tracks, not when receiving?Side notes
When browser feeds are created, the browser picks the msid randomly. I am conveying its meaning separately allowing me to assign meaning to the MSID "bar" value from the scenario.
The text was updated successfully, but these errors were encountered: