Hello community,

here is the log from the commit of package gstreamer-rtsp-server for 
openSUSE:Factory checked in at 2020-11-29 12:25:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-rtsp-server (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.5913 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-rtsp-server"

Sun Nov 29 12:25:40 2020 rev:26 rq:846456 version:1.18.1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-rtsp-server/gstreamer-rtsp-server.changes  
    2020-10-27 18:59:05.762749836 +0100
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.5913/gstreamer-rtsp-server.changes
    2020-11-29 12:25:57.985852780 +0100
@@ -1,0 +2,14 @@
+Wed Oct 28 10:34:58 UTC 2020 - Antonio Larrosa <[email protected]>
+
+- Update to 1.18.1:
+  + Highlighted bugfixes in 1.18.1
+    - important security fixes
+    - bug fixes and memory leak fixes
+    - various stability and reliability improvements
+  + gst-rtsp-server changes:
+    - rtsp-stream: collect rtp info when blocking
+    - rtsp-media: set a 0 storage size for TCP receivers
+    - rtsp-stream: preroll on gap events
+    - rtsp-media: do not unblock on unsuspend
+
+-------------------------------------------------------------------

Old:
----
  gst-rtsp-server-1.18.0.tar.xz

New:
----
  gst-rtsp-server-1.18.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gstreamer-rtsp-server.spec ++++++
--- /var/tmp/diff_new_pack.X03H2K/_old  2020-11-29 12:25:58.597853399 +0100
+++ /var/tmp/diff_new_pack.X03H2K/_new  2020-11-29 12:25:58.601853403 +0100
@@ -19,7 +19,7 @@
 %define gstreamer_req_version %(echo %{version} | sed -e "s/+.*//")
 %define _name gst-rtsp-server
 Name:           gstreamer-rtsp-server
-Version:        1.18.0
+Version:        1.18.1
 Release:        0
 Summary:        GStreamer-based RTSP server library
 License:        LGPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.X03H2K/_old  2020-11-29 12:25:58.625853427 +0100
+++ /var/tmp/diff_new_pack.X03H2K/_new  2020-11-29 12:25:58.629853431 +0100
@@ -4,7 +4,7 @@
     <param name="filename">gst-rtsp-server</param>
     <!--<param name="versionformat">@PARENT_TAG@+git%cd.%h</param>-->
     <param name="versionformat">@PARENT_TAG@</param>
-    <param name="revision">1.18.0</param>
+    <param name="revision">1.18.1</param>
     <param name="scm">git</param>
   </service>
   <service name="recompress" mode="disabled">

++++++ gst-rtsp-server-1.18.0.tar.xz -> gst-rtsp-server-1.18.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/ChangeLog 
new/gst-rtsp-server-1.18.1/ChangeLog
--- old/gst-rtsp-server-1.18.0/ChangeLog        2020-09-08 01:08:29.998949500 
+0200
+++ new/gst-rtsp-server-1.18.1/ChangeLog        2020-10-26 12:15:28.844300300 
+0100
@@ -1,10 +1,86 @@
+=== release 1.18.1 ===
+
+2020-10-26 11:15:28 +0000  Tim-Philipp Müller <[email protected]>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * gst-rtsp-server.doap:
+       * meson.build:
+         Release 1.18.1
+
+2020-10-08 22:17:16 +0200  Mathieu Duponchelle <[email protected]>
+
+       * gst/rtsp-server/rtsp-stream.c:
+         rtsp-stream: make use of blocked_running_time in query_position
+         When blocking, the sink element will not have received a buffer
+         yet and the position query will fail. Instead, we make use of
+         the running time of the buffer we blocked on.
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/163>
+
+2020-10-06 00:04:17 +0200  Mathieu Duponchelle <[email protected]>
+
+       * gst/rtsp-server/rtsp-stream.c:
+         rtsp-stream: collect rtp info when blocking
+         We don't unblock the stream anymore before replying to the
+         play request (883ddc72bb5bc57c95a9e167814d1ac53fe1b443),
+         so the sinks don't have a last-sample after potentially flush
+         seeking. seek_trickmode waits for preroll however, which means
+         the stream will block and wait for a first buffer. Subsequent
+         calls to get_rtpinfo() can thus make use of the information.
+         See 
https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/issues/115
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/163>
+
+2020-09-05 00:30:42 +0200  Mathieu Duponchelle <[email protected]>
+
+       * gst/rtsp-server/rtsp-media.c:
+       * gst/rtsp-server/rtsp-server-internal.h:
+       * gst/rtsp-server/rtsp-stream.c:
+         rtsp-media: set a 0 storage size for TCP receivers
+         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: 
<https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/158>
+
+2020-08-21 03:02:40 +0200  Mathieu Duponchelle <[email protected]>
+
+       * gst/rtsp-server/rtsp-stream.c:
+         rtsp-stream: preroll on gap events
+         This allows negotiating a SDP with all streams present, but only
+         start sending packets at some later point in time
+         Part-of: 
<https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/157>
+
+2020-08-25 16:10:36 +0200  Mathieu Duponchelle <[email protected]>
+
+       * gst/rtsp-server/rtsp-media.c:
+         rtsp-media: do not unblock on unsuspend
+         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: 
<https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/156>
+
+2020-09-08 17:44:37 +0100  Tim-Philipp Müller <[email protected]>
+
+       * docs/gst_plugins_cache.json:
+       * meson.build:
+         Back to development
+
 === release 1.18.0 ===
 
 2020-09-08 00:08:29 +0100  Tim-Philipp Müller <[email protected]>
 
+       * .gitlab-ci.yml:
        * ChangeLog:
        * NEWS:
        * RELEASE:
+       * docs/gst_plugins_cache.json:
        * gst-rtsp-server.doap:
        * meson.build:
          Release 1.18.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/NEWS 
new/gst-rtsp-server-1.18.1/NEWS
--- old/gst-rtsp-server-1.18.0/NEWS     2020-09-08 01:08:29.998949500 +0200
+++ new/gst-rtsp-server-1.18.1/NEWS     2020-10-26 12:15:28.844300300 +0100
@@ -1,11 +1,14 @@
 GStreamer 1.18 Release Notes
 
-GStreamer 1.18.0 was originally released on 7 September 2020.
+GStreamer 1.18.0 was originally released on 8 September 2020.
+
+The latest bug-fix release in the 1.18 series is 1.18.1 and was released
+on 26 October 2020.
 
 See https://gstreamer.freedesktop.org/releases/1.18/ for the latest
 version of this document.
 
-Last updated: Monday 7 September 2020, 10:30 UTC (log)
+Last updated: Monday 26 October 2020, 11:00 UTC (log)
 
 Introduction
 
@@ -28,7 +31,8 @@
 
 -   Active Format Description (AFD) and Bar Data support
 
--   ONVIF trick modes support in both GStreamer RTSP server and client
+-   RTSP server and client implementations gained ONVIF trick modes
+    support
 
 -   Hardware-accelerated video decoding on Windows via DXVA2 /
     Direct3D11
@@ -39,24 +43,25 @@
 -   qmlgloverlay: New overlay element that renders a QtQuick scene over
     the top of an input video stream
 
--   New imagesequencesrc element to easily create a video stream from a
+-   imagesequencesrc: New element to easily create a video stream from a
     sequence of jpeg or png images
 
--   dashsink: Add new sink to produce DASH content
+-   dashsink: New sink to produce DASH content
 
--   dvbsubenc: DVB Subtitle encoder element
+-   dvbsubenc: New DVB Subtitle encoder element
 
--   TV broadcast compliant MPEG-TS muxing with constant bitrate muxing
-    and SCTE-35 support
+-   MPEG-TS muxing now also supports TV broadcast compliant muxing with
+    constant bitrate muxing and SCTE-35 support
 
--   rtmp2: new RTMP client source and sink element implementation
+-   rtmp2: New RTMP client source and sink element from-scratch
+    implementation
 
--   svthevcenc: new SVT-HEVC-based H.265 video encoder
+-   svthevcenc: New SVT-HEVC-based H.265 video encoder
 
--   vaapioverlay compositor element using VA-API
+-   vaapioverlay: New compositor element using VA-API
 
--   rtpmanager support for Google’s Transport-Wide Congestion Control
-    (twcc) RTP extension
+-   rtpmanager gained support for Google’s Transport-Wide Congestion
+    Control (twcc) RTP extension
 
 -   splitmuxsink and splitmuxsrc gained support for auxiliary video
     streams
@@ -64,18 +69,18 @@
 -   webrtcbin now contains some initial support for renegotiation
     involving stream addition and removal
 
--   New RTP source and sink elements to easily set up RTP streaming via
-    rtp:// URIs
+-   RTP support was enhanced with new RTP source and sink elements to
+    easily set up RTP streaming via rtp:// URIs
 
--   New Audio Video Transport Protocol (AVTP) plugin for Time-Sensitive
-    Applications
+-   avtp: New Audio Video Transport Protocol (AVTP) plugin for
+    Time-Sensitive Applications
 
 -   Support for the Video Services Forum’s Reliable Internet Stream
     Transport (RIST) TR-06-1 Simple Profile
 
 -   Universal Windows Platform (UWP) support
 
--   rpicamsrc element for capturing from the Raspberry Pi camera
+-   rpicamsrc: New element for capturing from the Raspberry Pi camera
 
 -   RTSP Server TCP interleaved backpressure handling improvements as
     well as support for Scale/Speed headers
@@ -2179,7 +2184,208 @@
 
 1.18.0
 
-1.18.0 was released on 7 September 2020.
+1.18.0 was released on 8 September 2020.
+
+1.18.1
+
+The first 1.18 bug-fix release (1.18.1) was released on 26 October 2020.
+
+This release only contains bugfixes and it should be safe to update from
+1.18.0.
+
+Highlighted bugfixes in 1.18.1
+
+-   important security fixes
+-   bug fixes and memory leak fixes
+-   various stability and reliability improvements
+
+gstreamer
+
+-   aggregator: make peek() has() pop() drop() buffer API threadsafe
+-   gstvalue: don’t write to const char *
+-   meson: Disallow DbgHelp for UWP build
+-   info: Fix build on Windows ARM64 device
+-   build: use cpu_family for arch checks
+-   basetransform: Fix in/outbuf confusion of _default_transform_meta
+-   Fix documentation
+-   info: Load DbgHelp.dll using g_module_open()
+-   padtemplate: mark documentation caps as may be leaked
+-   gstmeta: intern registered impl string
+-   aggregator: Hold SRC_LOCK while unblocking via SRC_BROADCAST()
+-   ptp_helper_post_install.sh: deal with none
+-   skip elements/leak.c if tracer is not available
+-   aggregator: Wake up source pad in PAUSED<->PLAYING transitions
+-   input-selector: Wake up blocking pads when releasing them
+-   ptp: Also handle gnu/kfreebsd
+
+gst-plugins-base
+
+-   theoradec: Set telemetry options only if they are nonzero
+-   glslstage: delete shader on finalize of stage
+-   urisourcebin: Fix crash caused by use after free
+-   decodebin3: Store stream-start event on output pad before exposing
+    it
+-   Add some missing nullable annotations
+-   typefind/xdgmime: Validate mimetypes to be valid GstStructure names
+    before using them
+-   uridecodebin3: Forward upstream events to decodebin3 directly
+-   video-converter: Add fast paths from v210 to I420/YV12, Y42B, UYVY
+    and YUY2
+-   videoaggregator: Limit accepted caps by template caps
+-   gstrtpbuffer: fix header extension length validation
+-   decodebin3: only force streams-selected seqnum after a
+    select-streams
+-   videodecoder: don’t copy interlace-mode from reference state
+-   enable abi checks
+-   multihandlesink: Don’t pass NULL caps to gst_caps_is_equal
+-   audio: video: Fix in/outbuf confusion of transform_meta
+-   meson: Always wrap “prefix” option with join_paths() to make Windows
+    happy
+-   videoaggregator: ensure peek_next_sample() uses the correct caps
+-   meson: Actually build gstgl without implicit include dirs
+-   videoaggregator: Don’t require any pads to be configured for
+    negotiating source pad caps
+-   gst-libs: gl: Fix documentation typo and clarify
+    gl_memory_texsubimage
+-   audioaggregator: Reset offset if the output rate is renegotiated
+-   video-anc: Implement transform functions for AFD/Bar metas
+-   appsrc: Wake up the create() function on caps changes
+-   rtpbasepayload: do not forget delayed segment when forwarding gaps
+
+gst-plugins-good
+
+-   v4l2object: Only offer inactive pools and if needed
+-   vpx: Fix the check to unfixed/unknown framerate to set bitrate
+-   qmlglsink: fix crash when created/destroyed in quick succession
+-   rtputils: Count metas with an empty tag list for copying/keeping
+-   rtpbin: Remove the rtpjitterbuffer with the stream
+-   rtph26*depay: drop FU’s without a corresponding start bit
+-   imagefreeze: Response caps query from srcpad
+-   rtpmp4gdepay: Allow lower-case “aac-hbr” instead of correct
+    “AAC-hbr”
+-   rtspsrc: Fix push-backchannel-buffer parameter mismatch
+-   jpegdec: check buffer size before dereferencing
+-   flvmux: Move stream skipping to GstAggregatorPadClass.skip_buffer
+-   v4l2object: plug memory leak
+-   splitmuxsink: fix sink pad release while PLAYING
+
+gst-plugins-bad
+
+-   codecparsers: h264parser: guard against ref_pic_markings overflow
+-   v4l2codecs: Various fixes
+-   h265parse: Don’t enable passthrough by default
+-   srt: Fix “Fix timestamping”
+-   srt: Fixes for 1.4.2
+-   dtlsconnection: Ignore OpenSSL system call errors
+-   h265parse: set interlace-mode=interleaved on interlaced content
+-   Replace GPL v2 with LGPL v2 in COPYING file
+-   srt: Consume the error from gst_srt_object_write
+-   srt: Check socket state before retrieving payload size
+-   x265enc: fix deadlock on reconfig
+-   webrtc: Require gstreamer-sdp in the pkg-config file
+-   srtsrc: Fix timestamping
+-   mfvideosrc: Use only the first video stream per device
+-   srtobject: typecast SRTO_LINGER to linger
+-   decklink: Correctly order the different dependent mode tables
+-   wasapisrc: Make sure that wasapisrc produces data in loopback mode
+-   wpesrc: fix some caps leaks using the non-GL output
+-   smoothstreaming: clear live adapter on seek
+-   vtdec/vulkan: use Shared storage mode for IOSurface textures
+-   wpe: Move webview load waiting to WPEView
+-   wpe: Use proper callback for TLS errors signal handling
+-   kmssink: Do not source using padded width/height
+-   avtp: avtpaafdepay: fix crash when building caps
+-   opencv: set opencv_dep when option is disabled to fix the build
+-   line21encoder: miscellaneous enhancements
+-   Hls youtube issues with urisourcebin/queue2
+-   rtmp2: Replace stats queue with stats lock
+-   rtmp2sink: support EOS event for graceful connection shutdown
+-   mpegtsmux: Make handling of sinkpads thread-safe
+-   hlssink2: Actually release splitmuxsink’s pads
+-   mpegtsmux: Don’t create streams with reserved PID
+
+gst-plugins-ugly
+
+-   no changes
+
+gst-libav
+
+-   avaudenc/avvidenc: Reopen encoding session if it’s required
+-   avauddec/audenc/videnc: Don’t return GST_FLOW_EOS when draining
+-   avauddec/avviddec: Avoid dropping non-OK flow return
+-   avcodecmap: Enable 24 bit WMA Lossless decoding
+
+gst-rtsp-server
+
+-   rtsp-stream: collect rtp info when blocking
+-   rtsp-media: set a 0 storage size for TCP receivers
+-   rtsp-stream: preroll on gap events
+-   rtsp-media: do not unblock on unsuspend
+
+gstreamer-vaapi
+
+-   decoder: don’t reply src caps query with allowed if pad is fixed
+-   plugins: decode: fix a DMA caps typo in ensure_allowed_srcpad_caps
+
+gstreamer-sharp
+
+-   Add bindings for some missing 1.18 API
+
+gst-omx
+
+-   omxvideodec: support interlace-mode=interleaved input
+
+gst-python
+
+-   no changes
+
+gst-editing-services
+
+-   ges: Do not recreate auto-transitions when changing clip assets
+-   ges: Fix a copy/paste mistake in meson file
+
+gst-integration-testsuites
+
+-   medias: Update for h265parse passthrough behavior change
+-   update validate.test.h265parse.alternate test
+
+gst-build
+
+-   windows: Detect Strawberry Perl and error out early
+-   {pygobject,pycairo}.wrap: point to stable refs
+
+Cerbero build tool and packaging changes in 1.18.1
+
+-   Add macOS Big Sur support
+-   gst-plugins-bad: Ship rtpmanagerbad plugin
+-   gstreamer-1.0: Don’t enable DbgHelp for UWP build
+-   pango: fix font corruption on windows
+-   cairo: use thread local storage to grant one windows HDC per thread
+-   small fixes for Xcode 12
+-   cerbero: Re-add alsa-devel to bootstrap on Linux
+-   FreeType: update to 2.10.4 to fix security vulnerability
+
+Contributors to 1.18.1
+
+Aaron Boxer, Adam Williamson, Andrew Wesie, Arun Raghavan, Bastien
+Reboulet, Brent Gardner, Edward Hervey, François Laignel, Guillaume
+Desmottes, Havard Graff, He Junyan, Hosang Lee, Jacek Tomaszewski, Jakub
+Adam, Jan Alexander Steffens (heftig), Jan Schmidt, Jérôme Laheurte,
+Jordan Petridis, Marc Leeman, Marian Cichy, Marijn Suijten, Mathieu
+Duponchelle, Matthew Waters, Michael Tretter, Nazar Mokrynskyi, Nicolas
+Dufresne, Niklas Hambüchen, Nirbheek Chauhan, Olivier Crête, Philippe
+Normand, raghavendra, Ricky Tang, Sebastian Dröge, Seungha Yang,
+sohwan.park, Stéphane Cerveau, Thibault Saunier, Tim-Philipp Müller, Tom
+Schoonjans, Víctor Manuel Jáquez Leal, Will Miller, Xavier Claessens, Xℹ
+Ruoyao, Zebediah Figura,
+
+… and many others who have contributed bug reports, translations, sent
+suggestions or helped testing. Thank you all!
+
+List of merge requests and issues fixed in 1.18.1
+
+-   List of Merge Requests applied in 1.18.1
+-   List of Issues fixed in 1.18.1
 
 Schedule for 1.20
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/RELEASE 
new/gst-rtsp-server-1.18.1/RELEASE
--- old/gst-rtsp-server-1.18.0/RELEASE  2020-09-08 01:08:29.998949500 +0200
+++ new/gst-rtsp-server-1.18.1/RELEASE  2020-10-26 12:15:28.844300300 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-rtsp-server 1.18.0.
+This is GStreamer gst-rtsp-server 1.18.1.
 
 The GStreamer team is thrilled to announce a new major feature release
 of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/docs/gst_plugins_cache.json 
new/gst-rtsp-server-1.18.1/docs/gst_plugins_cache.json
--- old/gst-rtsp-server-1.18.0/docs/gst_plugins_cache.json      2020-09-08 
01:08:29.998949500 +0200
+++ new/gst-rtsp-server-1.18.1/docs/gst_plugins_cache.json      2020-10-26 
12:15:28.844300300 +0100
@@ -321,7 +321,7 @@
                         "construct": false,
                         "construct-only": false,
                         "controllable": false,
-                        "default": "GStreamer/1.18.0",
+                        "default": "GStreamer/1.18.1",
                         "mutable": "null",
                         "readable": true,
                         "type": "gchararray",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/gst/rtsp-server/rtsp-media.c 
new/gst-rtsp-server-1.18.1/gst/rtsp-server/rtsp-media.c
--- old/gst-rtsp-server-1.18.0/gst/rtsp-server/rtsp-media.c     2020-09-08 
01:08:30.002949700 +0200
+++ new/gst-rtsp-server-1.18.1/gst/rtsp-server/rtsp-media.c     2020-10-26 
12:15:28.848300200 +0100
@@ -84,6 +84,7 @@
 #define HMAC_80_KEY_LEN 10
 
 #include "rtsp-media.h"
+#include "rtsp-server-internal.h"
 
 struct _GstRTSPMediaPrivate
 {
@@ -1645,6 +1646,25 @@
   return res;
 }
 
+static void
+update_stream_storage_size (GstRTSPMedia * media, GstRTSPStream * stream,
+    guint sessid)
+{
+  GObject *storage = NULL;
+
+  g_signal_emit_by_name (G_OBJECT (media->priv->rtpbin), "get-storage",
+      sessid, &storage);
+
+  if (storage) {
+    guint size_time = 0;
+
+    if (!gst_rtsp_stream_is_tcp_receiver (stream))
+      size_time = (media->priv->latency + 50) * GST_MSECOND;
+
+    g_object_set (storage, "size-time", size_time, NULL);
+  }
+}
+
 /**
  * gst_rtsp_media_set_latency:
  * @media: a #GstRTSPMedia
@@ -1670,13 +1690,8 @@
     g_object_set (priv->rtpbin, "latency", latency, NULL);
 
     for (i = 0; i < media->priv->streams->len; i++) {
-      GObject *storage = NULL;
-
-      g_signal_emit_by_name (G_OBJECT (media->priv->rtpbin), "get-storage",
-          i, &storage);
-      if (storage)
-        g_object_set (storage, "size-time",
-            (media->priv->latency + 50) * GST_MSECOND, NULL);
+      GstRTSPStream *stream = g_ptr_array_index (media->priv->streams, i);
+      update_stream_storage_size (media, stream, i);
     }
   }
 
@@ -3617,14 +3632,6 @@
   return res;
 }
 
-static void
-new_storage_cb (GstElement * rtpbin, GObject * storage, guint sessid,
-    GstRTSPMedia * media)
-{
-  g_object_set (storage, "size-time", (media->priv->latency + 50) * 
GST_MSECOND,
-      NULL);
-}
-
 static gboolean
 start_prepare (GstRTSPMedia * media)
 {
@@ -3636,8 +3643,6 @@
   if (priv->status != GST_RTSP_MEDIA_STATUS_PREPARING)
     goto no_longer_preparing;
 
-  g_signal_connect (priv->rtpbin, "new-storage", G_CALLBACK (new_storage_cb),
-      media);
   g_signal_connect (priv->rtpbin, "request-fec-decoder",
       G_CALLBACK (request_fec_decoder), media);
 
@@ -4582,21 +4587,14 @@
       if (gst_rtsp_media_is_receive_only (media))
         break;
       if (media_streams_blocking (media)) {
-        gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_PREPARING);
-        /* at this point the media pipeline has been updated and contain all
-         * specific transport parts: all active streams contain at least one 
sink
-         * element and it's safe to unblock all blocked streams */
-        media_streams_set_blocked (media, FALSE);
-      } else {
-        /* streams are not blocked and media is suspended from PAUSED */
-        gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_PREPARED);
-      }
-      g_rec_mutex_unlock (&priv->state_lock);
-      if (gst_rtsp_media_get_status (media) == GST_RTSP_MEDIA_STATUS_ERROR) {
+        g_rec_mutex_unlock (&priv->state_lock);
+        if (gst_rtsp_media_get_status (media) == GST_RTSP_MEDIA_STATUS_ERROR) {
+          g_rec_mutex_lock (&priv->state_lock);
+          goto preroll_failed;
+        }
         g_rec_mutex_lock (&priv->state_lock);
-        goto preroll_failed;
       }
-      g_rec_mutex_lock (&priv->state_lock);
+      gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_PREPARED);
       break;
     case GST_RTSP_SUSPEND_MODE_PAUSE:
       gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_PREPARED);
@@ -5017,6 +5015,8 @@
       g_mutex_unlock (&priv->lock);
       return FALSE;
     }
+
+    update_stream_storage_size (media, stream, i);
   }
 
   priv->complete = TRUE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-rtsp-server-1.18.0/gst/rtsp-server/rtsp-server-internal.h 
new/gst-rtsp-server-1.18.1/gst/rtsp-server/rtsp-server-internal.h
--- old/gst-rtsp-server-1.18.0/gst/rtsp-server/rtsp-server-internal.h   
2020-09-08 01:08:30.002949700 +0200
+++ new/gst-rtsp-server-1.18.1/gst/rtsp-server/rtsp-server-internal.h   
2020-10-26 12:15:28.848300200 +0100
@@ -56,6 +56,8 @@
 gboolean                 gst_rtsp_stream_transport_check_back_pressure 
(GstRTSPStreamTransport *trans,
                                                                   gboolean 
is_rtp);
 
+gboolean                 gst_rtsp_stream_is_tcp_receiver (GstRTSPStream * 
stream);
+
 G_END_DECLS
 
 #endif /* __GST_RTSP_SERVER_INTERNAL_H__ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/gst/rtsp-server/rtsp-stream.c 
new/gst-rtsp-server-1.18.1/gst/rtsp-server/rtsp-stream.c
--- old/gst-rtsp-server-1.18.0/gst/rtsp-server/rtsp-stream.c    2020-09-08 
01:08:30.006949700 +0200
+++ new/gst-rtsp-server-1.18.1/gst/rtsp-server/rtsp-stream.c    2020-10-26 
12:15:28.852300200 +0100
@@ -214,7 +214,12 @@
 
   GstRTSPPublishClockMode publish_clock_mode;
   GThreadPool *send_pool;
-  guint32 last_seqnum;
+
+  /* Used to provide accurate rtpinfo when the stream is blocking */
+  gboolean blocked_buffer;
+  guint32 blocked_seqnum;
+  guint32 blocked_rtptime;
+  GstClockTime blocked_running_time;
 };
 
 #define DEFAULT_CONTROL         NULL
@@ -3790,6 +3795,20 @@
   return ret;
 }
 
+gboolean
+gst_rtsp_stream_is_tcp_receiver (GstRTSPStream * stream)
+{
+  GstRTSPStreamPrivate *priv;
+  gboolean ret = FALSE;
+
+  priv = stream->priv;
+  g_mutex_lock (&priv->lock);
+  ret = (priv->sinkpad != NULL && priv->appsrc[0] != NULL);
+  g_mutex_unlock (&priv->lock);
+
+  return ret;
+}
+
 static gboolean
 check_mcast_client_addr (GstRTSPStream * stream, const GstRTSPTransport * tr)
 {
@@ -4271,6 +4290,25 @@
       } else {
         gst_sample_unref (last_sample);
       }
+    } else if (priv->blocking) {
+      if (seq) {
+        if (!priv->blocked_buffer)
+          goto stats;
+        *seq = priv->blocked_seqnum;
+      }
+
+      if (rtptime) {
+        if (!priv->blocked_buffer)
+          goto stats;
+        *rtptime = priv->blocked_rtptime;
+      }
+
+      if (running_time) {
+        if (!GST_CLOCK_TIME_IS_VALID (priv->blocked_running_time))
+          goto stats;
+        *running_time = priv->blocked_running_time;
+      }
+      goto done;
     }
   }
 
@@ -5179,35 +5217,74 @@
   GstRTSPStreamPrivate *priv;
   GstRTSPStream *stream;
   GstBuffer *buffer = NULL;
+  GstPadProbeReturn ret = GST_PAD_PROBE_OK;
+  GstEvent *event;
 
   stream = user_data;
   priv = stream->priv;
 
-  GST_DEBUG_OBJECT (pad, "now blocking");
-
   g_mutex_lock (&priv->lock);
-  priv->blocking = TRUE;
 
   if ((info->type & GST_PAD_PROBE_TYPE_BUFFER)) {
+    GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
+
     buffer = gst_pad_probe_info_get_buffer (info);
+    if (gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtp)) {
+      priv->blocked_buffer = TRUE;
+      priv->blocked_seqnum = gst_rtp_buffer_get_seq (&rtp);
+      priv->blocked_rtptime = gst_rtp_buffer_get_timestamp (&rtp);
+      gst_rtp_buffer_unmap (&rtp);
+    }
+    priv->position = GST_BUFFER_TIMESTAMP (buffer);
   } else if ((info->type & GST_PAD_PROBE_TYPE_BUFFER_LIST)) {
+    GstRTPBuffer rtp = GST_RTP_BUFFER_INIT;
+
     GstBufferList *list = gst_pad_probe_info_get_buffer_list (info);
     buffer = gst_buffer_list_get (list, 0);
+    if (gst_rtp_buffer_map (buffer, GST_MAP_READ, &rtp)) {
+      priv->blocked_buffer = TRUE;
+      priv->blocked_seqnum = gst_rtp_buffer_get_seq (&rtp);
+      priv->blocked_rtptime = gst_rtp_buffer_get_timestamp (&rtp);
+      gst_rtp_buffer_unmap (&rtp);
+    }
+    priv->position = GST_BUFFER_TIMESTAMP (buffer);
+  } else if ((info->type & GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM)) {
+    if (GST_EVENT_TYPE (info->data) == GST_EVENT_GAP) {
+      gst_event_parse_gap (info->data, &priv->position, NULL);
+    } else {
+      ret = GST_PAD_PROBE_PASS;
+      g_mutex_unlock (&priv->lock);
+      goto done;
+    }
   } else {
     g_assert_not_reached ();
   }
 
-  g_assert (buffer);
-  priv->position = GST_BUFFER_TIMESTAMP (buffer);
-  GST_DEBUG_OBJECT (stream, "buffer position: %" GST_TIME_FORMAT,
-      GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
+  event = gst_pad_get_sticky_event (pad, GST_EVENT_SEGMENT, 0);
+  if (event) {
+    const GstSegment *segment;
+
+    gst_event_parse_segment (event, &segment);
+    priv->blocked_running_time =
+        gst_segment_to_stream_time (segment, GST_FORMAT_TIME, priv->position);
+    gst_event_unref (event);
+  }
+
+  priv->blocking = TRUE;
+
+  GST_DEBUG_OBJECT (pad, "Now blocking");
+
+  GST_DEBUG_OBJECT (stream, "position: %" GST_TIME_FORMAT,
+      GST_TIME_ARGS (priv->position));
+
   g_mutex_unlock (&priv->lock);
 
   gst_element_post_message (priv->payloader,
       gst_message_new_element (GST_OBJECT_CAST (priv->payloader),
           gst_structure_new_empty ("GstRTSPStreamBlocking")));
 
-  return GST_PAD_PROBE_OK;
+done:
+  return ret;
 }
 
 static void
@@ -5231,9 +5308,12 @@
         continue;
       if (priv->send_src[i]) {
         priv->blocking = FALSE;
+        priv->blocked_buffer = FALSE;
+        priv->blocked_running_time = GST_CLOCK_TIME_NONE;
         priv->blocked_id[i] = gst_pad_add_probe (priv->send_src[i],
             GST_PAD_PROBE_TYPE_BLOCK | GST_PAD_PROBE_TYPE_BUFFER |
-            GST_PAD_PROBE_TYPE_BUFFER_LIST, pad_blocking,
+            GST_PAD_PROBE_TYPE_BUFFER_LIST |
+            GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM, pad_blocking,
             g_object_ref (stream), g_object_unref);
       }
     }
@@ -5348,6 +5428,13 @@
   priv = stream->priv;
 
   g_mutex_lock (&priv->lock);
+
+  if (priv->blocking && GST_CLOCK_TIME_IS_VALID (priv->blocked_running_time)) {
+    *position = priv->blocked_running_time;
+    g_mutex_unlock (&priv->lock);
+    return TRUE;
+  }
+
   /* depending on the transport type, it should query corresponding sink */
   if (priv->configured_protocols & GST_RTSP_LOWER_TRANS_UDP)
     sink = priv->udpsink[0];
@@ -6119,8 +6206,8 @@
   if (stream->priv->appsink[0])
     g_object_set (stream->priv->appsink[0], "sync", enabled, NULL);
   if (stream->priv->payloader
-      && g_object_class_find_property (G_OBJECT_GET_CLASS (stream->priv->
-              payloader), "onvif-no-rate-control"))
+      && g_object_class_find_property (G_OBJECT_GET_CLASS (stream->
+              priv->payloader), "onvif-no-rate-control"))
     g_object_set (stream->priv->payloader, "onvif-no-rate-control", !enabled,
         NULL);
   if (stream->priv->session) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/gst-rtsp-server.doap 
new/gst-rtsp-server-1.18.1/gst-rtsp-server.doap
--- old/gst-rtsp-server-1.18.0/gst-rtsp-server.doap     2020-09-08 
01:08:29.998949500 +0200
+++ new/gst-rtsp-server-1.18.1/gst-rtsp-server.doap     2020-10-26 
12:15:28.844300300 +0100
@@ -32,6 +32,16 @@
 
  <release>
   <Version>
+   <revision>1.18.1</revision>
+   <branch>1.18</branch>
+   <name></name>
+   <created>2020-10-26</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.18.1.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.18.0</revision>
    <branch>master</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.18.0/meson.build 
new/gst-rtsp-server-1.18.1/meson.build
--- old/gst-rtsp-server-1.18.0/meson.build      2020-09-08 01:08:30.006949700 
+0200
+++ new/gst-rtsp-server-1.18.1/meson.build      2020-10-26 12:15:28.852300200 
+0100
@@ -1,5 +1,5 @@
 project('gst-rtsp-server', 'c',
-  version : '1.18.0',
+  version : '1.18.1',
   meson_version : '>= 0.48',
   default_options : ['warning_level=1', 'buildtype=debugoptimized'])
 
_______________________________________________
openSUSE Commits mailing list -- [email protected]
To unsubscribe, email [email protected]
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/[email protected]

Reply via email to