1. 08 Sep, 2021 1 commit
  2. 06 May, 2021 2 commits
  3. 30 Apr, 2021 1 commit
  4. 23 Apr, 2021 2 commits
  5. 15 Mar, 2021 2 commits
  6. 16 Feb, 2021 4 commits
  7. 03 Feb, 2021 1 commit
    • Branko Subasic's avatar
      rtsp-stream: avoid deadlock in send_func · 9b9784ab
      Branko Subasic authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      Currently the send_func() runs in a thread of its own which is started
      the first time we enter handle_new_sample(). It runs in an outer loop
      until priv->continue_sending is FALSE, which happens when a TEARDOWN
      request is received. We use a local variable, cont, which is initialized
      to TRUE, meaning that we will always enter the outer loop, and at the
      end of the outer loop we assign it the value of priv->continue_sending.
      
      Within the outer loop there is an inner loop, where we wait to be
      signaled when there is more data to send. The inner loop is exited when
      priv->send_cookie has changed value, which it does when more data is
      available or when a TEARDOWN has been received.
      
      But if we get a TEARDOWN before send_func() is entered we will get stuck
      in the inner loop because no one will increase priv->session_cookie
      anymore.
      
      By not entering the outer loop in send_func() if priv->continue_sending
      is FALSE we make sure that we do not get stuck in send_func()'s inner
      loop should we receive a TEARDOWN before the send thread has started.
      
      Change-Id: I7338a0ea60ea435bb685f875965f5165839afa20
      Part-of: <!188>
      9b9784ab
  8. 27 Jan, 2021 1 commit
    • Branko Subasic's avatar
      rtsp-client: cleanup transports during TEARDOWN · 175cb932
      Branko Subasic authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      When tunneling RTP over RTSP the stream transports are stored in a hash
      table in the GstRTSPClientPrivate struct. They are used for, among other
      things, mapping channel id to stream transports when receiving data from
      the client. The stream tranports are created and added to the hash table
      in handle_setup_request(), but unfortuately they are not removed in
      handle_teardown_request(). This means that if the client sends data on
      the RTSP connection after it has sent the TEARDOWN, which is often the
      case when audio backchannel is enabled, handle_data() will still be able
      to map the channel to a session transport and pass the data along to it.
      Which eventually leads to a failing assert in gst_rtsp_stream_recv_rtp()
      because the stream is no longer joined to a bin.
      We avoid this by removing the stream transports from the hash table when
      we handle the TEARDOWN request.
      
      Part-of: <!186>
      175cb932
  9. 14 Jan, 2021 1 commit
  10. 13 Jan, 2021 1 commit
  11. 23 Dec, 2020 1 commit
  12. 15 Dec, 2020 1 commit
  13. 06 Dec, 2020 2 commits
  14. 23 Nov, 2020 1 commit
  15. 16 Nov, 2020 5 commits
  16. 27 Oct, 2020 1 commit
  17. 26 Oct, 2020 1 commit
  18. 10 Oct, 2020 2 commits
  19. 30 Sep, 2020 3 commits
    • Mathieu Duponchelle's avatar
      rtsp-media: set a 0 storage size for TCP receivers · 233d387a
      Mathieu Duponchelle authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      ulpfec correction is obviously useless when receiving a stream
      over TCP, and in TCP modes the rtp storage receives non
      timestamped buffers, causing it to queue buffers indefinitely,
      until the queue grows so large that sanity checks kick in and
      warnings start to get emitted.
      
      Part-of: <!158>
      233d387a
    • Mathieu Duponchelle's avatar
      rtsp-stream: preroll on gap events · b4fa0912
      Mathieu Duponchelle authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      This allows negotiating a SDP with all streams present, but only
      start sending packets at some later point in time
      
      Part-of: <!157>
      b4fa0912
    • Mathieu Duponchelle's avatar
      rtsp-media: do not unblock on unsuspend · 018c1aed
      Mathieu Duponchelle authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      rtsp_media_unsuspend() is called from handle_play_request()
      before sending the play response. Unblocking the streams here
      was causing data to be sent out before the client was ready
      to handle it, with obvious side effects such as initial packets
      getting discarded, causing decoding errors.
      
      Instead we can simply let the media streams be unblocked when
      the state of the media is set to PLAYING, which occurs after
      sending the play response.
      
      Part-of: <!156>
      018c1aed
  20. 08 Sep, 2020 1 commit
  21. 07 Sep, 2020 1 commit
  22. 20 Aug, 2020 1 commit
  23. 03 Aug, 2020 2 commits
    • Jordan Petridіs's avatar
      rtsp-thread-pool.c: fix clang 10 warning · e3e946c0
      Jordan Petridіs authored
      clang 10 is complaining about incompatible types due to the
      glib typesystem.
      
      ```
      ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-thread-pool.c:534:10: error: incompatible pointer types passing 'typeof ((((void *)0))) *' (aka 'void **') to parameter of type 'GThreadPool **' (aka 'struct _GThreadPool **') [-Werror,-Wincompatible-pointer-types]
      ```
      
      Part-of: <!145>
      e3e946c0
    • Jordan Petridіs's avatar
      rtsp-thread-pool.c: fix clang 10 warning · 3254b992
      Jordan Petridіs authored
      clang 10 is complaining about incompatible types due to the
      glib typesystem.
      
      ```
      ../subprojects/gst-rtsp-server/gst/rtsp-server/rtsp-thread-pool.c:534:10: error: incompatible pointer types passing 'typeof ((((void *)0))) *' (aka 'void **') to parameter of type 'GThreadPool **' (aka 'struct _GThreadPool **') [-Werror,-Wincompatible-pointer-types]
      ```
      
      Part-of: <!145>
      3254b992
  24. 15 Jul, 2020 1 commit
  25. 08 Jul, 2020 1 commit