Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 09:37

    paullouisageneau on master

    rtc add pcma/pcmu codec Update src/description.cpp Co-… Merge pull request #766 from Dw… (compare)

  • 09:37
    paullouisageneau closed #766
  • 08:58
    paullouisageneau edited #766
  • 08:13
    Fung-blog commented #760
  • 06:59
    Fung-blog commented #760
  • Dec 02 14:01
    Dw9 commented #766
  • Dec 02 13:57
    Dw9 synchronize #766
  • Dec 02 10:44

    paullouisageneau on master

    Fixed std::move instead of std:… (compare)

  • Dec 02 10:40
    Nemirtingas commented #765
  • Dec 02 10:40
    Nemirtingas commented #765
  • Dec 02 10:20
    paullouisageneau commented #765
  • Dec 02 10:19
    paullouisageneau synchronize #765
  • Dec 02 10:19

    paullouisageneau on fix-export

    Fix C++ export define for Windo… (compare)

  • Dec 02 10:07
    paullouisageneau commented #766
  • Dec 01 17:17
    Nemirtingas commented #765
  • Dec 01 17:16
    Nemirtingas commented #765
  • Dec 01 10:51
    Dw9 opened #766
  • Nov 30 23:40
    paullouisageneau opened #765
  • Nov 30 23:34

    paullouisageneau on fix-export

    Fix export define for Windows (compare)

  • Nov 29 22:52

    paullouisageneau on master

    The make_certificate task must … Promoted WebSocket unknown opco… (compare)

jonesv_
@jonesv:matrix.org
[m]
Starting to feel like I'm not adding the track correctly. But also I'm a bit confused: what is a track that does not have audio or video? Isn't it the point of a track to use RTP, as opposed to a DataChannel that is for other data?
nemirtingas
@nemirtingas:matrix.org
[m]
It might not have audio or video stream because of some incorrect header but the channel is still tagged as media.
Still, I think that there is something strange, callbacks or api should have some exception or error, this track shouldn't be null
jonesv_
@jonesv:matrix.org
[m]
Well it is not null. It just calls onOpen with isOpen() == false and isClosed() == null 😅
Because it does not create the right transport, because it does not have audio or video
nemirtingas
@nemirtingas:matrix.org
[m]
But its a DtlsTransport not DtlsSrtpTransport, the srtp callback shouldn't trigger
jonesv_
@jonesv:matrix.org
[m]
Which sounds like maybe it should throw an exception of !local->hadAudioOrVideo(). It's a bit weird to silently convert a Track into a DataChannel, isn't it?
s/of/if
nemirtingas
@nemirtingas:matrix.org
[m]
Well, its not a datachannel, its still a track
jonesv_
@jonesv:matrix.org
[m]
But what is a track without RTP? Does that even exist?
nemirtingas
@nemirtingas:matrix.org
[m]
A track..tor ?
jonesv_
@jonesv:matrix.org
[m]
😅
And then am I creating the track wrongly? I really just do peer_connection->addTrack(media); with the media defined in my issue description
I would expect libdatachannel to then negociate the track and call onOpen when it is ready, and then I should be able to track->send() stuff. Maybe that's a bit naive, though
nemirtingas
@nemirtingas:matrix.org
[m]
You didn't set any SSRC ?
jonesv_
@jonesv:matrix.org
[m]
hmm I guess I tried a bit of both 😅. The thing is that I addTrack from the receiver side in this example, and my understanding was that the receiver side should not have to set the SSRC
And then on the other side I receive the track with pc->onTrack()
nemirtingas
@nemirtingas:matrix.org
[m]
Yep, ssrc on sender
Does the examples work ?
jonesv_
@jonesv:matrix.org
[m]
I meant, my sample code here. It does not work, it crashes with the issue I reported 😅. I tried the libdatachannel examples (media-sender and media-receiver), and those work
But those kind of do the SDP negociation out of band, which I don't do for the track (I do it for the peerconnection before)
nemirtingas
@nemirtingas:matrix.org
[m]
Ah, so you definitly did something wrong x)
jonesv_
@jonesv:matrix.org
[m]
Yeah but if I set the SSRC on the side that calls addTrack, then on the other side, when the Track arrives in pc->onTrack(), it does not contain that SSRC
nemirtingas
@nemirtingas:matrix.org
[m]
keep a copy of your buggy sources, they might be used to reproduce the bug
jonesv_
@jonesv:matrix.org
[m]
Also if the side calling pc->addTrack() sets the mode to RecvOnly or SendOnly, that does not get reflected on the other side when it "arrives" in onTrack()
So I'm really confused about this "negociation", which does not seem to negociate much
nemirtingas
@nemirtingas:matrix.org
[m]
So what changed between the example and your test ?
That might sound stupid but try to make the example app work with yours
jonesv_
@jonesv:matrix.org
[m]
Yeah but that's not what I want: the example does the SDP negociation out of band at the same time as it sets the track. In my case I already have a working PeerConnection where I can add DataChannels and exchange stuff, I don't want to send an SDP out of band to add a track, right?
In other words, once the PeerConnection is established, I have a direct link between the two partners. Why would I send an SDP over an external websocket so that they can open a track correctly?
And that's where I am confused, really. I thought that the negotiation of the track would be automated. If libdatachannel can send a message saying "beware, I will open a track" and the other side can say "ok, I'm ready", why would I have to do some manual negotiation on top of it?
nemirtingas
@nemirtingas:matrix.org
[m]
You shouldn't need any manual negotiation
jonesv_
@jonesv:matrix.org
[m]
But then if I set a media and do addTrack(media), the other side should receive the relevant info (e.g. SSRC and type::RecvOnly), right?
I do something like this
But even rtc::Description::Direction::RecvOnly does not go through
nemirtingas
@nemirtingas:matrix.org
[m]
In onTrack, do you have a media handler ?
Also, do you take ownership of the onTrack track pointer ?
jonesv_
@jonesv:matrix.org
[m]
I don't use a media handler, my guess was that it was for RTCP and at first I wanted to try without RTCP 😇. Is that a bad idea?
I receive a const std::shared_ptr<rtc::Track>& in onTrack, and I save it in a member, so I'm pretty sure it does not get destructed 👍️
nemirtingas
@nemirtingas:matrix.org
[m]
I guess we'll have to wait for paullouisageneau then, I don't know how rtc works :s
jonesv_
@jonesv:matrix.org
[m]
I'm trying a new example from scratch, but this time in javascript in the browser. Just to use a different lib and hopefully learn on the way :)
But I'd love to get insights from paullouisageneau, my end goal is to use libdatachannel in C++ obviously :D
Thanks a lot for the help, btw
jonesv_
@jonesv:matrix.org
[m]
Does @paullouisageneau come here from time to time? I am really curious about the difference between a datachannel and a track :-). Because in a track I send() and onMessage() RTP packets, but I could do that in a DataChannel. My guess is that a Track is a specialized DataChannel that does more stuff, like RTCP (with the MediaHandler), but does it do more than that?
Or is a Track rather a group of DataChannels (e.g. video, audio, RTCP, etc)?
nemirtingas
@nemirtingas:matrix.org
[m]
He was comming here before, but my guess is that he is either on Discord or he doesn't have the time to come back here.
jonesv_
@jonesv:matrix.org
[m]
Argh, why is everyone moving to Discord? 😅
Is that a WebRTC Discord channel? I have been trying to find a WebRTC chat somewhere to discuss those questions but haven't found any. There used to be IRC channels but they seem abandonned.
nemirtingas
@nemirtingas:matrix.org
[m]