1. 31 Oct, 2021 1 commit
  2. 31 Oct, 2020 1 commit
    • Jan Schmidt's avatar
      webrtc: Fix a race on shutdown. · f14d3906
      Jan Schmidt authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      The main context can disappear in gst_webrtc_bin_enqueue_task()
      between checking the is_closed flag and enqueueing a source on the
      main context. Protect the main context with the object lock instead
      of the PC lock, and hold a ref briefly to make sure it stays alive.
      
      Part-of: <!1746>
      f14d3906
  3. 20 Jul, 2020 1 commit
  4. 30 Jun, 2020 1 commit
  5. 22 Jun, 2020 2 commits
  6. 05 Jun, 2020 1 commit
  7. 04 Jun, 2020 1 commit
  8. 02 Jun, 2020 1 commit
  9. 28 May, 2020 1 commit
  10. 11 May, 2020 3 commits
    • Chris Ayoup's avatar
      webrtc: move filtering properties to webrtcice · 9937101e
      Chris Ayoup authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      We want webrtcbin to only expose properties that are defined in JSEP, so
      these additional properties should be moved out.  In order to access
      them, the webrtcice instance is exposed from webrtcbin.
      
      Part-of: <!1223>
      9937101e
    • Chris Ayoup's avatar
      webrtc: allow setting local IP addresses · ca754245
      Chris Ayoup authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      If a local IP address is specified, ICE gathering can be much faster
      in environments where there are multiple IP addreses but only some are
      usable (for example, if you are running docker on the machine).
      
      Part-of: <!1223>
      ca754245
    • Chris Ayoup's avatar
      webrtc: Allow toggling TCP and UDP candidates · 3fc88188
      Chris Ayoup authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      Add some properties to allow TCP and UDP candidates to be toggled.  This
      is useful in cases where someone is using this element in an environment
      where it is known in advance whether a given transport will work or not
      and will prevent wasting time generating and checking candidate pairs
      that will not succeed.
      
      Part-of: <!1223>
      3fc88188
  11. 06 May, 2020 5 commits
  12. 01 May, 2020 2 commits
    • Matthew Waters's avatar
      webrtcbin: also mark data channel transports as active · b2666520
      Matthew Waters authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      Fixes negotiation of a bundled sdp with only a data channel.
      
      Without marking the transport as active, we would never unblock the
      transportreceivebin and thus no data would ever reach us.
      
      Part-of: <!1231>
      b2666520
    • Matthew Waters's avatar
      webrtcbin: fix bundle none case with remote offer bundling · ce9b41f5
      Matthew Waters authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      If the remote is bundling, but we are not and remote is offering.
      we cannot put the remote media sections into a bundled transport as that
      is not how we are going to respond.
      
      This specific failure case was that the remote ICE credentials were
      never set on the ice stream and so ice connectivity would fail.
      
      Technically, this whole bunde-policy=none handling should be removed
      eventually when we implement bundle-policy=balanced.  Until such time,
      we have this workaround.
      
      Part-of: <!1231>
      ce9b41f5
  13. 30 Apr, 2020 1 commit
    • Matthew Waters's avatar
      webrtcbin: only start gathering on local descriptions · 80ede091
      Matthew Waters authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      If we are in a state where we are answering, we would start gathering
      when the offer is set which is incorrect for at least two reasons.
      
      1. Sending ICE candidates before sending an answer is a hard error in
         all of the major browsers and will fail the negotiation.
      2. If libnice ever adds the username fragment to the candidate for
         ice-restart hardening, the ice username and fragment would be
         incorrect.
      
      JSEP also hints that the right call flow is to only start gathering when
      a local description is set in 4.1.9 setLocalDescription
      
      "This API indirectly controls the candidate gathering process."
      
      as well as hints throughout other sections.
      
      Part-of: <!1226>
      80ede091
  14. 25 Mar, 2020 1 commit
    • Matthew Waters's avatar
      webrtc: mark streams as active on renegotiation as well. · 319a5e57
      Matthew Waters authored
      Otherwise when bundling, only the changed streams would be considered as
      to whether the bundled transport needs to be blocked as all streams are
      inactive.
      
      Scenario is one transceiver changes direction to inactive and as that is
      the only change in transciever direction, the entire bundled transport would
      be blocked even if there are other active transceivers inside the same bundled
      transport that are still active.
      
      Fix by always checking the activeness of a stream regardless of if the
      transceiverr has changed direction.
      319a5e57
  15. 09 Mar, 2020 3 commits
  16. 04 Mar, 2020 3 commits
  17. 17 Feb, 2020 1 commit
  18. 11 Feb, 2020 2 commits
    • Sebastian Dröge's avatar
      webrtc: In all blocking pad probes except for sink pads also handle serialized events · 4ffa6350
      Sebastian Dröge authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      Otherwise it can happen that e.g. the stream-start event is tried to be
      sent as part of pushing the first buffer. Downstream might not be in
      PAUSED/PLAYING yet, so the event is rejected with GST_FLOW_FLUSHING and
      because it's an event would not cause the blocking pad probe to trigger
      first. This would then return GST_FLOW_FLUSHING for the buffer and shut
      down all of upstream.
      
      To solve this we return GST_PAD_PROBE_DROP for all events. In case of
      sticky events they would be resent again later once we unblocked after
      blocking on the buffer and everything works fine.
      
      Don't handle events specifically in sink pad blocking pad probes as here
      downstream is not linked yet and we are actually waiting for the
      following CAPS event before unblocking can happen.
      
      Fixes #1172
      4ffa6350
    • Sebastian Dröge's avatar
      webrtcbin: Add a blocking pad probe for the receivebin -> sctpdec connection · c16d4d2c
      Sebastian Dröge authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      Without this it might happen that received data from the DTLS transport
      is already passed to sctpdec before its state was set to PLAYING. This
      would cause the data to be dropped, GST_FLOW_FLUSHING to be returned and
      the whole DTLS transport to shut down.
      
      Fixes #1172
      among other things.
      c16d4d2c
  19. 21 Jan, 2020 1 commit
  20. 19 Jan, 2020 8 commits