Hello community,

here is the log from the commit of package gstreamer-rtsp-server for 
openSUSE:Factory checked in at 2019-12-12 23:17:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gstreamer-rtsp-server (Old)
 and      /work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.4691 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gstreamer-rtsp-server"

Thu Dec 12 23:17:07 2019 rev:23 rq:754309 version:1.16.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/gstreamer-rtsp-server/gstreamer-rtsp-server.changes  
    2019-10-11 15:14:25.752579933 +0200
+++ 
/work/SRC/openSUSE:Factory/.gstreamer-rtsp-server.new.4691/gstreamer-rtsp-server.changes
    2019-12-12 23:17:11.522218712 +0100
@@ -1,0 +2,10 @@
+Wed Dec  4 13:21:03 UTC 2019 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 1.16.2:
+  + rtsp-media: Use lock in gst_rtsp_media_is_receive_only
+  + rtsp-client:
+    - RTP Info when completed_sender
+    - Fix location uri-format by getting uri directly from context
+      instead
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ gstreamer-rtsp-server.spec ++++++
--- /var/tmp/diff_new_pack.ZsBW4p/_old  2019-12-12 23:17:12.150218655 +0100
+++ /var/tmp/diff_new_pack.ZsBW4p/_new  2019-12-12 23:17:12.158218654 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package gstreamer-rtsp-server
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 %define _name gst-rtsp-server
 Name:           gstreamer-rtsp-server
-Version:        1.16.1
+Version:        1.16.2
 Release:        0
 Summary:        GStreamer-based RTSP server library
 License:        LGPL-2.0-or-later

++++++ gst-rtsp-server-1.16.1.tar.xz -> gst-rtsp-server-1.16.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/ChangeLog 
new/gst-rtsp-server-1.16.2/ChangeLog
--- old/gst-rtsp-server-1.16.1/ChangeLog        2019-09-23 12:17:42.000000000 
+0200
+++ new/gst-rtsp-server-1.16.2/ChangeLog        2019-12-03 12:16:06.000000000 
+0100
@@ -1,3 +1,51 @@
+=== release 1.16.2 ===
+
+2019-12-03 11:16:06 +0000  Tim-Philipp Müller <t...@centricular.com>
+
+       * ChangeLog:
+       * NEWS:
+       * RELEASE:
+       * configure.ac:
+       * gst-rtsp-server.doap:
+       * meson.build:
+         Release 1.16.2
+
+2019-09-17 13:45:57 +0200  Adam x Nilsson <ada...@axis.com>
+
+       * gst/rtsp-server/rtsp-media.c:
+         rtsp-media: Use lock in gst_rtsp_media_is_receive_only
+         (cherry picked from commit f1d2a0cae9a791ce07c753faaf82a6cdefecd373)
+
+2019-11-04 12:56:13 +0100  Kristofer Bjorkstrom <kristofer.bjorkst...@axis.com>
+
+       * gst/rtsp-server/rtsp-client.c:
+       * gst/rtsp-server/rtsp-media.c:
+       * tests/check/gst/client.c:
+         rtsp-client: RTP Info when completed_sender
+         Change condition that should be fulfilled regarding RTPInfo.
+         Replace !gst_rtsp_media_is_receive_only with
+         gst_rtsp_media_has_completed_sender. It is more correct to actually 
look
+         for a sender pipeline that is complete. Only then a RTPInfo should
+         exist.
+         gst_rtsp_media_is_receive_only gives different answears depending on
+         state of server.
+         If Describe is called wth URL+options for backchannel SDP will give 
only
+         audio and only backchannel a=sendonly
+         If Describe is called on URL+options that gives both audio and video
+         direction from server to client, pipelines are created. Thus
+         receive_only will return false, even though Setup only would setup
+         backchannel.
+         RTP-Info is only for outgoing streams. Thus one should look if 
outgoing
+         streams are complete.
+
+2019-10-17 12:15:42 +0200  Muhammet Ilendemli <m...@tailored-apps.com>
+
+       * gst/rtsp-server/rtsp-client.c:
+         rtsp-client: Generate correct URI for MIKEY in ANNOUNCE responses
+         Instead of hardcoding the URI, take the actual URI (and especially 
the correct port)
+         from the RTSP context.
+         Fixes #84
+
 === release 1.16.1 ===
 
 2019-09-23 11:17:41 +0100  Tim-Philipp Müller <t...@centricular.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/NEWS 
new/gst-rtsp-server-1.16.2/NEWS
--- old/gst-rtsp-server-1.16.1/NEWS     2019-09-23 12:17:41.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/NEWS     2019-12-03 12:16:06.000000000 +0100
@@ -5,13 +5,13 @@
 
 GStreamer 1.16.0 was originally released on 19 April 2019.
 
-The latest bug-fix release in the 1.16 series is 1.16.1 and was released
-on 23 September 2019.
+The latest bug-fix release in the 1.16 series is 1.16.2 and was released
+on 3 December 2019.
 
 See https://gstreamer.freedesktop.org/releases/1.16/ for the latest
 version of this document.
 
-_Last updated: Sunday 22 September 2019, 21:00 UTC (log)_
+_Last updated: Tuesday 03 December 2019, 08:00 UTC (log)_
 
 
 Introduction
@@ -142,9 +142,9 @@
 
 Raw audio samples are usually passed around in interleaved form in
 GStreamer, which means that if there are multiple audio channels the
-samples for each channel are interleaved in memory, e.g.
-|LEFT|RIGHT|LEFT|RIGHT|LEFT|RIGHT| for stereo audio. A non-interleaved
-or planar arrangement in memory would look like
+samples for each channel are interleaved in memory,
+e.g. |LEFT|RIGHT|LEFT|RIGHT|LEFT|RIGHT| for stereo audio. A
+non-interleaved or planar arrangement in memory would look like
 |LEFT|LEFT|LEFT|RIGHT|RIGHT|RIGHT| instead, possibly with
 |LEFT|LEFT|LEFT| and |RIGHT|RIGHT|RIGHT| residing in separate memory
 chunks or separated by some padding.
@@ -243,7 +243,7 @@
     GstVideoOverlayCompositions on a stream. The element will emit the
     "draw" signal for each video buffer, and the application then
     generates an overlay for that frame (or not). This is much more
-    performant than e.g. cairooverlay for many use cases, e.g. because
+    performant than e.g. cairooverlay for many use cases, e.g. because
     pixel format conversions can be avoided or the blitting of the
     overlay can be delegated to downstream elements (such as
     gloverlaycompositor). It’s particularly useful for cases where only
@@ -336,7 +336,7 @@
 
     -   "reset-muxer" property: when unset, the muxer is reset using
         flush events instead of setting its state to NULL and back. This
-        means the muxer can keep state across resets, e.g. mpegtsmux
+        means the muxer can keep state across resets, e.g. mpegtsmux
         will keep the continuity counter continuous across segments as
         required by hlssink2.
 
@@ -700,9 +700,9 @@
 -   There is now a GDB PRETTY PRINTER FOR VARIOUS GSTREAMER TYPES: For
     GstObject pointers the type and name is added, e.g.
     0x5555557e4110 [GstDecodeBin|decodebin0]. For GstMiniObject pointers
-    the object type is added, e.g. 0x7fffe001fc50 [GstBuffer]. For
+    the object type is added, e.g. 0x7fffe001fc50 [GstBuffer]. For
     GstClockTime and GstClockTimeDiff the time is also printed in human
-    readable form, e.g. 150116219955 [+0:02:30.116219955].
+    readable form, e.g. 150116219955 [+0:02:30.116219955].
 
 -   GDB EXTENSION WITH TWO CUSTOM GDB COMMANDS gst-dot AND gst-print:
 
@@ -1044,7 +1044,7 @@
 -   Rust 1.31 is the minimum supported Rust version now
 -   Update to latest gir code generator and glib bindings
 
--   Functions returning e.g. gst::FlowReturn or other “combined” enums
+-   Functions returning e.g. gst::FlowReturn or other “combined” enums
     were changed to return split enums like
     Result<gst::FlowSuccess, gst::FlowError> to allow usage of the
     standard Rust error handling.
@@ -1388,7 +1388,8 @@
 -   decklinkaudiosink: Drop late buffers
 -   openh264enc: Fix compilation with openh264 v2.0
 -   wasapisrc: fix segtotal value being always 2
--   Fix issues on Android Q
+-   android: Fix gnutls issue causing a FORTIFY crash on Android Q
+-   windows: Fix two crashes due to cross-CRT free when using MSVC
 
 gstreamer core
 
@@ -1698,6 +1699,182 @@
 -   List of Merge Requests applied in 1.16
 -   List of Issues fixed in 1.16.1
 
+1.16.2
+
+The second 1.16 bug-fix release (1.16.2) was released on 03 December
+2019.
+
+This release only contains bugfixes and it _should_ be safe to update
+from 1.16.1.
+
+Highlighted bugfixes in 1.16.2
+
+-   Interlaced video scaling fixes
+-   CineForm video support in AVI
+-   audioresample: avoid glitches due to rounding errors after changing
+    rate
+-   Command line tool output printing improvements on Windows
+-   various performance improvements, memory leak fixes and security
+    fixes
+-   VP9 decoding fixes
+-   avfvideosrc: Explicitly request video permission on macOS 10.14+
+-   wasapi: bug fixes and stability improvements
+-   webrtc-audio-processing: fix segmentation fault on 32-bit windows
+-   tsdemux: improved handling of certain discontinuities
+-   vaapi h265 decoder: wait for I-frame before trying to decode
+
+gstreamer
+
+-   gst-launch: Fix ugly stdout on Windows
+-   tee: Make sure to actually deactivate pads that are released
+-   bin: Drop need-context messages without source instead of crashing
+-   gst: Don’t pass miniobjects to GST_DEBUG_OBJECT() and similar macros
+-   tracers: Don’t leak temporary GstStructure
+
+gst-plugins-base
+
+-   xvimagepool: Update size, stride, and offset with allocated XvImage
+-   video-converter: Fix RGB-XYZ-RGB conversion
+-   audiorate: Update next_offset on rate change
+-   audioringbuffer: Reset reorder flag before check
+-   audio-buffer: Don’t fail to map buffers with zero samples
+-   videorate: Fix max-duplication-time handling
+-   gl/gbm: ensure we call the resize callback before attempting to draw
+-   video-converter: Various fixes for interlaced scaling
+-   gstrtspconnection: messages_bytes not decreased
+-   check: Don’t use real audio devices for tests
+-   riff: add CineForm mapping
+-   glfilters: Don’t use static variables for storing per-element state
+-   glupload: Add VideoMetas and GLSyncMeta to the raw uploaded buffers
+-   streamsynchronizer: avoid pad release race during logging.
+-   gst-play: Use gst_print* to avoid broken stdout string on Windows
+
+gst-plugins-good
+
+-   vp9dec: Fix broken 4:4:4 8bits decoding
+-   rtpsession: add locking for clear-pt-map
+-   rtpL16depay: don’t crash if data is not modulo channels*width
+-   wavparse: Fix push mode ignoring audio with a size smaller than
+    segment buffer
+-   wavparse: Fix push mode ignoring last audio payload chunk
+-   aacparse: fix wrong offset of the channel number in adts header
+-   jpegdec: Fix incorrect logic in EOI tag detection
+-   videocrop: Also update the coordinate when in-place
+-   jpegdec: don’t overwrite the last valid line
+-   vpx: Error out if enabled and no features found
+-   v4l2videodec: ensure pool exists before orphaning it
+-   v4l2videoenc: fix type conversion errors
+-   v4l2bufferpool: Queue number of allocated buffers to capture
+-   v4l2object: fix mpegversion number typo
+-   v4l2object: Work around bad TRY_FMT colorimetry implementations
+
+gst-plugins-bad
+
+-   avfvideosrc: Explicitly request video permission on macOS 10.14+
+-   wasapi: Various fixes and a workaround for a specific driver bug
+-   wasapi: Move to CoInitializeEx for COM initialization
+-   wasapi: Fix runtime/build warnings
+-   waylandsink: Commit the parent after creating subsurface
+-   msdkdec: fix surface leak in msdkdec_handle_frame
+-   tsmux: Fix copying of buffer region
+-   tsdemux: Handle continuity mismatch in more cases
+-   tsdemux: Always issue a DTS even when it’s equal to PTS
+-   openexr: Fix build with OpenEXR 2.4 (and also OpenEXR 2.2 on Ubuntu
+    18.04)
+-   ccextractor: Always forward all sticky events to the caption pad
+-   pnmdec: Return early on ::finish() if we have no actual data to
+    parse
+-   ass: avoid infinite unref loop with bad data
+-   fluidsynth: add sf3 to soundfont search path
+-   webrtcdsp/webrtcechoprobe segmentation fault on windows (1.16.0 x86)
+
+gst-libav
+
+-   avvidenc: Fix error propagation
+-   avdemux: Fix segmentation fault if long_name is NULL
+-   avviddec: Fix huge leak caused by circular reference
+-   avviddec: Enforce allocate new AVFrame per input frame
+-   avdec_mpeg2video (and probably more): Huge memory leak in git master
+
+gst-rtsp-server
+
+-   rtsp-media: Use lock in gst_rtsp_media_is_receive_only
+-   rtsp-client: RTP Info when completed_sender
+-   rtsp-client: fix location uri-format by getting uri directly from
+    context instead
+
+gstreamer-vaapi
+
+-   meson build: halt configuration if no renderer API
+-   libs: decoder: h265: skip all pictures prior the first I-frame
+-   libs: window: x11: Avoid usage of deprecated API
+
+gst-editing-services
+
+-   Initialize debug categories before usage
+
+gst-build
+
+-   gst-env: Use locally built GStreamer utility programs
+
+Cerbero build tool and packaging changes in 1.16.2
+
+General
+
+-   openssl: Update to 1.1.1d
+-   Updated ffmpeg, expat, flac, freetype, croco, ogg, xml2, mpg123,
+    openjpeg, opus, pixman, speex, tiff recipes
+-   Fix setting of git credentials in local source repos
+
+Windows
+
+-   webrtc-audio-processing: fix segmentation fault on 32-bit windows
+    with webrtcdsp/webrtcechoprobe elemens
+-   vpx plugin has no features when built with Visual Studio 2019
+-   libvpx: Add support for Visual Studio 2019
+-   mingw-runtime.recipe: Correctly package pkg-config in the MSI
+-   GIO doesn’t load any modules on Windows with MSVC, which breaks TLS
+    support since glib-networking’s giognutls module isn’t loaded
+-   Make the instructions for running Cerbero the same on all platforms
+
+macOS + iOS
+
+-   Add support for macOS 10.15 Catalina
+-   Updates for Xcode 11
+-   macos/ios: expose objc++ compilers in env variables
+-   srt.recipe: Fix crash in constructor on iOS
+-   osx-framework.recipe: Dynamically generate the list of libraries and
+    ship pkg-config
+-   macos: add -mmacosx-version-min for framework
+-   gstreamer-1.0-osx-framework.recipe contains an outdated hard-coded
+    list of libraries
+-   We need to ship pkg-config with macOS
+
+Linux
+
+-   Fix filesprovider.find_shlib_regex when a lib_suffix is used in the
+    cerbero config file
+
+Contributors to 1.16.2
+
+Adam Nilsson, Amr Mahdi, Angus Ao, Charlie Turner, Edward Hervey, Fabian
+Greffrath, Fuwei Tang, Havard Graff, Hu Qian, James Cowgill, Jan
+Alexander Steffens (heftig), Jeffy Chen, Jeremy Lempereur, Joakim
+Johansson, Jochen Henneberg, Julien Isorce, Kevin Joly, Kristofer
+Bjorkstrom, Kyrylo Polezhaiev, Matthew Waters, Michael Olbrich, Muhammet
+Ilendemli, Nicolas Dufresne, Nirbheek Chauhan, Pablo Marcos Oltra, Roman
+Shpuntov, Ruben Gonzalez, Scott Kanowitz, Sebastian Dröge, Seungha Yang,
+Thibault Saunier, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivia
+Nikolaidou,
+
+… 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.16.2
+
+-   List of Merge Requests applied in 1.16
+-   List of Issues fixed in 1.16.2
+
 
 Known Issues
 
@@ -1721,9 +1898,8 @@
 development of 1.17/1.18 will happen in the git master branch.
 
 The plan for the 1.18 development cycle is yet to be confirmed, but it
-is now expected that feature freeze will take place shortly after the
-GStreamer conference/hackfest in early November 2019, with the first
-1.18 stable release ready in late November or early December.
+is now expected that feature freeze will take place in December 2019,
+with the first 1.18 stable release ready in late January or February.
 
 1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10,
 1.8, 1.6, 1.4, 1.2 and 1.0 release series.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/RELEASE 
new/gst-rtsp-server-1.16.2/RELEASE
--- old/gst-rtsp-server-1.16.1/RELEASE  2019-09-23 12:17:41.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/RELEASE  2019-12-03 12:16:06.000000000 +0100
@@ -1,4 +1,4 @@
-This is GStreamer gst-rtsp-server 1.16.1.
+This is GStreamer gst-rtsp-server 1.16.2.
 
 The GStreamer team is pleased to announce another bug-fix release in the
 stable 1.x API series of your favourite cross-platform multimedia framework!
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/configure 
new/gst-rtsp-server-1.16.2/configure
--- old/gst-rtsp-server-1.16.1/configure        2019-09-23 12:17:09.000000000 
+0200
+++ new/gst-rtsp-server-1.16.2/configure        2019-12-03 12:15:32.000000000 
+0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GStreamer RTSP Server Library 1.16.1.
+# Generated by GNU Autoconf 2.69 for GStreamer RTSP Server Library 1.16.2.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer>.
 #
@@ -591,8 +591,8 @@
 # Identity of this package.
 PACKAGE_NAME='GStreamer RTSP Server Library'
 PACKAGE_TARNAME='gst-rtsp-server'
-PACKAGE_VERSION='1.16.1'
-PACKAGE_STRING='GStreamer RTSP Server Library 1.16.1'
+PACKAGE_VERSION='1.16.2'
+PACKAGE_STRING='GStreamer RTSP Server Library 1.16.2'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
 PACKAGE_URL=''
 
@@ -1537,7 +1537,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GStreamer RTSP Server Library 1.16.1 to adapt to many 
kinds of systems.
+\`configure' configures GStreamer RTSP Server Library 1.16.2 to adapt to many 
kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1609,7 +1609,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GStreamer RTSP Server Library 
1.16.1:";;
+     short | recursive ) echo "Configuration of GStreamer RTSP Server Library 
1.16.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1807,7 +1807,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GStreamer RTSP Server Library configure 1.16.1
+GStreamer RTSP Server Library configure 1.16.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2085,7 +2085,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GStreamer RTSP Server Library $as_me 1.16.1, which was
+It was created by GStreamer RTSP Server Library $as_me 1.16.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3062,7 +3062,7 @@
 
 # Define the identity of the package.
  PACKAGE='gst-rtsp-server'
- VERSION='1.16.1'
+ VERSION='1.16.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3273,9 +3273,9 @@
 
 
 
-  PACKAGE_VERSION_MAJOR=$(echo 1.16.1 | cut -d'.' -f1)
-  PACKAGE_VERSION_MINOR=$(echo 1.16.1 | cut -d'.' -f2)
-  PACKAGE_VERSION_MICRO=$(echo 1.16.1 | cut -d'.' -f3)
+  PACKAGE_VERSION_MAJOR=$(echo 1.16.2 | cut -d'.' -f1)
+  PACKAGE_VERSION_MINOR=$(echo 1.16.2 | cut -d'.' -f2)
+  PACKAGE_VERSION_MICRO=$(echo 1.16.2 | cut -d'.' -f3)
 
 
 
@@ -3286,7 +3286,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
 $as_echo_n "checking nano version... " >&6; }
 
-  NANO=$(echo 1.16.1 | cut -d'.' -f4)
+  NANO=$(echo 1.16.2 | cut -d'.' -f4)
 
   if test x"$NANO" = x || test "x$NANO" = "x0" ; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -8112,10 +8112,10 @@
 done
 
 
-  GST_CURRENT=1601
+  GST_CURRENT=1602
   GST_REVISION=0
-  GST_AGE=1601
-  GST_LIBVERSION=1601:0:1601
+  GST_AGE=1602
+  GST_LIBVERSION=1602:0:1602
 
 
 
@@ -12749,10 +12749,10 @@
 
 
 
-GST_REQ=1.16.1
-GSTPB_REQ=1.16.1
-GSTPG_REQ=1.16.1
-GSTPD_REQ=1.16.1
+GST_REQ=1.16.2
+GSTPB_REQ=1.16.2
+GSTPG_REQ=1.16.2
+GSTPD_REQ=1.16.2
 
 
 
@@ -18953,7 +18953,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GStreamer RTSP Server Library $as_me 1.16.1, which 
was
+This file was extended by GStreamer RTSP Server Library $as_me 1.16.2, which 
was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -19019,7 +19019,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GStreamer RTSP Server Library config.status 1.16.1
+GStreamer RTSP Server Library config.status 1.16.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/configure.ac 
new/gst-rtsp-server-1.16.2/configure.ac
--- old/gst-rtsp-server-1.16.1/configure.ac     2019-09-23 12:16:58.000000000 
+0200
+++ new/gst-rtsp-server-1.16.2/configure.ac     2019-12-03 12:15:20.000000000 
+0100
@@ -2,7 +2,7 @@
 dnl initialize autoconf
 dnl when going to/from release please set the nano (fourth number) right !
 dnl releases only do Wall, cvs and prerelease does Werror too
-AC_INIT([GStreamer RTSP Server Library], [1.16.1],
+AC_INIT([GStreamer RTSP Server Library], [1.16.2],
     [http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],
     [gst-rtsp-server])
 AG_GST_INIT
@@ -53,13 +53,13 @@
 dnl      1.10.9 (who knows) => 1009
 dnl
 dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 1601, 0, 1601)
+AS_LIBTOOL(GST, 1602, 0, 1602)
 
 dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.16.1
-GSTPB_REQ=1.16.1
-GSTPG_REQ=1.16.1
-GSTPD_REQ=1.16.1
+GST_REQ=1.16.2
+GSTPB_REQ=1.16.2
+GSTPG_REQ=1.16.2
+GSTPD_REQ=1.16.2
 
 dnl *** autotools stuff ****
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPClient.html 
new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPClient.html
--- old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPClient.html        
2019-09-23 12:17:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPClient.html        
2019-12-03 12:16:07.000000000 +0100
@@ -819,7 +819,7 @@
 <a name="GstRTSPClientSendFunc"></a><h3>GstRTSPClientSendFunc ()</h3>
 <pre class="programlisting"><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span 
class="returnvalue">gboolean</span></a>
 <span class="c_punctuation">(</span>*GstRTSPClientSendFunc<span 
class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" 
href="GstRTSPClient.html" title="GstRTSPClient"><span 
class="type">GstRTSPClient</span></a> *client</code></em>,
-                          <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a> *message</code></em>,
+                          <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a> *message</code></em>,
                           <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span 
class="type">gboolean</span></a> close</code></em>,
                           <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span 
class="type">gpointer</span></a> user_data</code></em>);</pre>
 <p>This callback is called when <em class="parameter"><code>client</code></em>
@@ -843,7 +843,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>message</p></td>
-<td class="parameter_description"><p>a <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a></p></td>
+<td class="parameter_description"><p>a <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -924,7 +924,7 @@
 <a name="GstRTSPClientSendMessagesFunc"></a><h3>GstRTSPClientSendMessagesFunc 
()</h3>
 <pre class="programlisting"><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span 
class="returnvalue">gboolean</span></a>
 <span class="c_punctuation">(</span>*GstRTSPClientSendMessagesFunc<span 
class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" 
href="GstRTSPClient.html" title="GstRTSPClient"><span 
class="type">GstRTSPClient</span></a> *client</code></em>,
-                                  <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a> *messages</code></em>,
+                                  <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a> *messages</code></em>,
                                   <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span 
class="type">guint</span></a> n_messages</code></em>,
                                   <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span 
class="type">gboolean</span></a> close</code></em>,
                                   <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span 
class="type">gpointer</span></a> user_data</code></em>);</pre>
@@ -949,7 +949,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>messages</p></td>
-<td class="parameter_description"><p><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a></p></td>
+<td class="parameter_description"><p><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 <tr>
@@ -1038,7 +1038,7 @@
 <a 
name="gst-rtsp-client-handle-message"></a><h3>gst_rtsp_client_handle_message 
()</h3>
 <pre class="programlisting"><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRtspdefs.html#GstRTSPResult"><span
 class="returnvalue">GstRTSPResult</span></a>
 gst_rtsp_client_handle_message (<em class="parameter"><code><a class="link" 
href="GstRTSPClient.html" title="GstRTSPClient"><span 
class="type">GstRTSPClient</span></a> *client</code></em>,
-                                <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a> *message</code></em>);</pre>
+                                <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a> *message</code></em>);</pre>
 <p>Let the client handle <em class="parameter"><code>message</code></em>
 .</p>
 <div class="refsect3">
@@ -1057,7 +1057,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>message</p></td>
-<td class="parameter_description"><p>an <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a>. </p></td>
+<td class="parameter_description"><p>an <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a>. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym 
title="Don't free data after the code is done."><span class="acronym">transfer 
none</span></acronym>]</span></td>
 </tr>
 </tbody>
@@ -1074,10 +1074,10 @@
 <pre class="programlisting"><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRtspdefs.html#GstRTSPResult"><span
 class="returnvalue">GstRTSPResult</span></a>
 gst_rtsp_client_send_message (<em class="parameter"><code><a class="link" 
href="GstRTSPClient.html" title="GstRTSPClient"><span 
class="type">GstRTSPClient</span></a> *client</code></em>,
                               <em class="parameter"><code><a class="link" 
href="GstRTSPSession.html" title="GstRTSPSession"><span 
class="type">GstRTSPSession</span></a> *session</code></em>,
-                              <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a> *message</code></em>);</pre>
+                              <em class="parameter"><code><a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a> *message</code></em>);</pre>
 <p>Send a message message to the remote end. <em 
class="parameter"><code>message</code></em>
  must be a
-<a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GST-RTSP-MESSAGE-REQUEST:CAPS"><span
 class="type">GST_RTSP_MESSAGE_REQUEST</span></a> or a <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GST-RTSP-MESSAGE-RESPONSE:CAPS"><span
 class="type">GST_RTSP_MESSAGE_RESPONSE</span></a>.</p>
+<a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GST-RTSP-MESSAGE-REQUEST:CAPS"><span
 class="type">GST_RTSP_MESSAGE_REQUEST</span></a> or a <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GST-RTSP-MESSAGE-RESPONSE:CAPS"><span
 class="type">GST_RTSP_MESSAGE_RESPONSE</span></a>.</p>
 <div class="refsect3">
 <a name="gst-rtsp-client-send-message.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" 
border="0">
@@ -1100,7 +1100,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>message</p></td>
-<td class="parameter_description"><p>The <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#GstRTSPMessage"><span
 class="type">GstRTSPMessage</span></a> to send. </p></td>
+<td class="parameter_description"><p>The <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#GstRTSPMessage-struct"><span
 class="type">GstRTSPMessage</span></a> to send. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym 
title="Don't free data after the code is done."><span class="acronym">transfer 
none</span></acronym>]</span></td>
 </tr>
 </tbody>
@@ -1320,13 +1320,13 @@
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a 
name="GstRTSPClientClass.params-set"></a>params_set</code></em> ()</p></td>
 <td class="struct_member_description"><p>set parameters. This function should 
also initialize the
-RTSP response(ctx-&gt;response) via a call to <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#gst-rtsp-message-init-response"><code
 class="function">gst_rtsp_message_init_response()</code></a></p></td>
+RTSP response(ctx-&gt;response) via a call to <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#gst-rtsp-message-init-response"><code
 class="function">gst_rtsp_message_init_response()</code></a></p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
 <td class="struct_member_name"><p><em class="structfield"><code><a 
name="GstRTSPClientClass.params-get"></a>params_get</code></em> ()</p></td>
 <td class="struct_member_description"><p>get parameters. This function should 
also initialize the
-RTSP response(ctx-&gt;response) via a call to <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPMessage.html#gst-rtsp-message-init-response"><code
 class="function">gst_rtsp_message_init_response()</code></a></p></td>
+RTSP response(ctx-&gt;response) via a call to <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPMessage.html#gst-rtsp-message-init-response"><code
 class="function">gst_rtsp_message_init_response()</code></a></p></td>
 <td class="struct_member_annotations"> </td>
 </tr>
 <tr>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPMediaFactory.html 
new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPMediaFactory.html
--- old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPMediaFactory.html  
2019-09-23 12:17:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPMediaFactory.html  
2019-12-03 12:16:07.000000000 +0100
@@ -1399,7 +1399,7 @@
 <a 
name="gst-rtsp-media-factory-construct"></a><h3>gst_rtsp_media_factory_construct
 ()</h3>
 <pre class="programlisting"><a class="link" href="GstRTSPMedia.html" 
title="GstRTSPMedia"><span class="returnvalue">GstRTSPMedia</span></a> *
 gst_rtsp_media_factory_construct (<em class="parameter"><code><a class="link" 
href="GstRTSPMediaFactory.html" title="GstRTSPMediaFactory"><span 
class="type">GstRTSPMediaFactory</span></a> *factory</code></em>,
-                                  <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
+                                  <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
 <p>Construct the media object and create its streams. Implementations
 should create the needed gstreamer elements and add them to the result
 object. No state changes should be performed on them yet.</p>
@@ -1440,7 +1440,7 @@
 <a 
name="gst-rtsp-media-factory-create-element"></a><h3>gst_rtsp_media_factory_create_element
 ()</h3>
 <pre class="programlisting"><a 
href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct"><span
 class="returnvalue">GstElement</span></a> *
 gst_rtsp_media_factory_create_element (<em class="parameter"><code><a 
class="link" href="GstRTSPMediaFactory.html" title="GstRTSPMediaFactory"><span 
class="type">GstRTSPMediaFactory</span></a> *factory</code></em>,
-                                       <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
+                                       <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
 <p>Construct and return a <a 
href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct"><span
 class="type">GstElement</span></a> that is a <a 
href="/usr/share/gtk-doc/html/gstreamer-1.0/GstBin.html#GstBin-struct"><span 
class="type">GstBin</span></a> containing
 the elements to use for streaming the media.</p>
 <p>The bin should contain payloaders pay%d for each stream. The default
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPMountPoints.html 
new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPMountPoints.html
--- old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPMountPoints.html   
2019-09-23 12:17:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPMountPoints.html   
2019-12-03 12:16:07.000000000 +0100
@@ -266,7 +266,7 @@
 <a 
name="gst-rtsp-mount-points-make-path"></a><h3>gst_rtsp_mount_points_make_path 
()</h3>
 <pre class="programlisting"><a 
href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span 
class="returnvalue">gchar</span></a> *
 gst_rtsp_mount_points_make_path (<em class="parameter"><code><a class="link" 
href="GstRTSPMountPoints.html" title="GstRTSPMountPoints"><span 
class="type">GstRTSPMountPoints</span></a> *mounts</code></em>,
-                                 <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
+                                 <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
 <p>Make a path string from <em class="parameter"><code>url</code></em>
 .</p>
 <div class="refsect3">
@@ -285,7 +285,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>url</p></td>
-<td class="parameter_description"><p>a <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="type">GstRTSPUrl</span></a></p></td>
+<td class="parameter_description"><p>a <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="type">GstRTSPUrl</span></a></p></td>
 <td class="parameter_annotations"> </td>
 </tr>
 </tbody>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPStreamTransport.html 
new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPStreamTransport.html
--- old/gst-rtsp-server-1.16.1/docs/libs/html/GstRTSPStreamTransport.html       
2019-09-23 12:17:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/docs/libs/html/GstRTSPStreamTransport.html       
2019-12-03 12:16:07.000000000 +0100
@@ -72,7 +72,7 @@
 </td>
 </tr>
 <tr>
-<td class="function_type">const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="returnvalue">GstRTSPUrl</span></a> *
+<td class="function_type">const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="returnvalue">GstRTSPUrl</span></a> *
 </td>
 <td class="function_name">
 <a class="link" 
href="GstRTSPStreamTransport.html#gst-rtsp-stream-transport-get-url" 
title="gst_rtsp_stream_transport_get_url 
()">gst_rtsp_stream_transport_get_url</a> <span class="c_punctuation">()</span>
@@ -387,7 +387,7 @@
 <hr>
 <div class="refsect2">
 <a 
name="gst-rtsp-stream-transport-get-url"></a><h3>gst_rtsp_stream_transport_get_url
 ()</h3>
-<pre class="programlisting">const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="returnvalue">GstRTSPUrl</span></a> *
+<pre class="programlisting">const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="returnvalue">GstRTSPUrl</span></a> *
 gst_rtsp_stream_transport_get_url (<em class="parameter"><code><a class="link" 
href="GstRTSPStreamTransport.html" title="GstRTSPStreamTransport"><span 
class="type">GstRTSPStreamTransport</span></a> *trans</code></em>);</pre>
 <p>Get the url configured in <em class="parameter"><code>trans</code></em>
 .</p>
@@ -420,7 +420,7 @@
 <a 
name="gst-rtsp-stream-transport-set-url"></a><h3>gst_rtsp_stream_transport_set_url
 ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 gst_rtsp_stream_transport_set_url (<em class="parameter"><code><a class="link" 
href="GstRTSPStreamTransport.html" title="GstRTSPStreamTransport"><span 
class="type">GstRTSPStreamTransport</span></a> *trans</code></em>,
-                                   <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
+                                   <em class="parameter"><code>const <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="type">GstRTSPUrl</span></a> *url</code></em>);</pre>
 <p>Set <em class="parameter"><code>url</code></em>
  as the client url.</p>
 <div class="refsect3">
@@ -439,7 +439,7 @@
 </tr>
 <tr>
 <td class="parameter_name"><p>url</p></td>
-<td class="parameter_description"><p>a client <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/gst-plugins-base-libs-GstRTSPUrl.html#GstRTSPUrl"><span
 class="type">GstRTSPUrl</span></a>. </p></td>
+<td class="parameter_description"><p>a client <a 
href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0/GstRTSPUrl.html#GstRTSPUrl-struct"><span
 class="type">GstRTSPUrl</span></a>. </p></td>
 <td class="parameter_annotations"><span class="annotation">[<acronym 
title="Don't free data after the code is done."><span class="acronym">transfer 
none</span></acronym>][<acronym title="NULL may be passed as the value in, out, 
in-out; or as a return value."><span 
class="acronym">nullable</span></acronym>]</span></td>
 </tr>
 </tbody>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/docs/libs/html/index.html 
new/gst-rtsp-server-1.16.2/docs/libs/html/index.html
--- old/gst-rtsp-server-1.16.1/docs/libs/html/index.html        2019-09-23 
12:17:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/docs/libs/html/index.html        2019-12-03 
12:16:07.000000000 +0100
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" 
cellspacing="0"><tr><th valign="middle"><p class="title">GStreamer RTSP Server 
Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GStreamer RTSP Server 1.16.1
+      for GStreamer RTSP Server 1.16.2
     </p></div>
 </div>
 <hr>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/gst/rtsp-server/rtsp-client.c 
new/gst-rtsp-server-1.16.2/gst/rtsp-server/rtsp-client.c
--- old/gst-rtsp-server-1.16.1/gst/rtsp-server/rtsp-client.c    2019-09-21 
19:58:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/gst/rtsp-server/rtsp-client.c    2019-12-02 
21:04:18.000000000 +0100
@@ -202,6 +202,7 @@
     GstRTSPContext * ctx);
 static gboolean pre_signal_accumulator (GSignalInvocationHint * ihint,
     GValue * return_accu, const GValue * handler_return, gpointer data);
+gboolean gst_rtsp_media_has_completed_sender (GstRTSPMedia * media);
 
 G_DEFINE_TYPE_WITH_PRIVATE (GstRTSPClient, gst_rtsp_client, G_TYPE_OBJECT);
 
@@ -1741,7 +1742,7 @@
   GstRTSPResult res;
   GstRTSPState rtspstate;
   GstRTSPRangeUnit unit = GST_RTSP_RANGE_NPT;
-  gchar *path, *rtpinfo;
+  gchar *path, *rtpinfo = NULL;
   gint matched;
   gchar *seek_style = NULL;
   GstRTSPStatusCode sig_result;
@@ -1830,7 +1831,8 @@
   }
 
   /* grab RTPInfo from the media now */
-  if (!(rtpinfo = gst_rtsp_session_media_get_rtpinfo (sessmedia)))
+  if (gst_rtsp_media_has_completed_sender (media) &&
+      !(rtpinfo = gst_rtsp_session_media_get_rtpinfo (sessmedia)))
     goto rtp_info_error;
 
   /* construct the response now */
@@ -1839,7 +1841,9 @@
       gst_rtsp_status_as_text (code), ctx->request);
 
   /* add the RTP-Info header */
-  gst_rtsp_message_take_header (ctx->response, GST_RTSP_HDR_RTP_INFO, rtpinfo);
+  if (rtpinfo)
+    gst_rtsp_message_take_header (ctx->response, GST_RTSP_HDR_RTP_INFO,
+        rtpinfo);
   if (seek_style)
     gst_rtsp_message_add_header (ctx->response, GST_RTSP_HDR_SEEK_STYLE,
         seek_style);
@@ -3091,16 +3095,18 @@
   n_streams = gst_rtsp_media_n_streams (media);
   for (i = 0; i < n_streams; i++) {
     GstRTSPStream *stream = gst_rtsp_media_get_stream (media, i);
-    gchar *location =
-        g_strdup_printf ("rtsp://%s%s:8554/stream=%d", priv->server_ip, path,
-        i);
-    gchar *keymgmt = stream_make_keymgmt (client, location, stream);
+    gchar *uri, *location, *keymgmt;
+
+    uri = gst_rtsp_url_get_request_uri (ctx->uri);
+    location = g_strdup_printf ("%s/stream=%d", uri, i);
+    keymgmt = stream_make_keymgmt (client, location, stream);
 
     if (keymgmt)
       gst_rtsp_message_take_header (ctx->response, GST_RTSP_HDR_KEYMGMT,
           keymgmt);
 
     g_free (location);
+    g_free (uri);
   }
 
   /* we suspend after the announce */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/gst/rtsp-server/rtsp-media.c 
new/gst-rtsp-server-1.16.2/gst/rtsp-server/rtsp-media.c
--- old/gst-rtsp-server-1.16.1/gst/rtsp-server/rtsp-media.c     2019-09-21 
19:58:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/gst/rtsp-server/rtsp-media.c     2019-12-02 
21:04:18.000000000 +0100
@@ -237,6 +237,9 @@
 static guint gst_rtsp_media_signals[SIGNAL_LAST] = { 0 };
 
 static gboolean check_complete (GstRTSPMedia * media);
+gboolean gst_rtsp_media_has_completed_sender (GstRTSPMedia * media);
+
+static gboolean gst_rtsp_media_is_receive_only (GstRTSPMedia * media);
 
 #define C_ENUM(v) ((gint) v)
 
@@ -731,23 +734,24 @@
   return rtpbin;
 }
 
+/* Must be called with priv->lock */
 static gboolean
 is_receive_only (GstRTSPMedia * media)
 {
   GstRTSPMediaPrivate *priv = media->priv;
-  gboolean recive_only = TRUE;
+  gboolean receive_only = TRUE;
   guint i;
 
   for (i = 0; i < priv->streams->len; i++) {
     GstRTSPStream *stream = g_ptr_array_index (priv->streams, i);
     if (gst_rtsp_stream_is_sender (stream) ||
         !gst_rtsp_stream_is_receiver (stream)) {
-      recive_only = FALSE;
+      receive_only = FALSE;
       break;
     }
   }
 
-  return recive_only;
+  return receive_only;
 }
 
 /* must be called with state lock */
@@ -757,6 +761,7 @@
   GstQuery *query;
   GstRTSPMediaPrivate *priv = media->priv;
 
+  g_mutex_lock (&priv->lock);
   /* Update the seekable state of the pipeline in case it changed */
   if (is_receive_only (media)) {
     /* TODO: Seeking for "receive-only"? */
@@ -770,6 +775,7 @@
       if (gst_rtsp_stream_get_publish_clock_mode (stream) ==
           GST_RTSP_PUBLISH_CLOCK_MODE_CLOCK_AND_OFFSET) {
         priv->seekable = -1;
+        g_mutex_unlock (&priv->lock);
         return;
       }
     }
@@ -796,7 +802,7 @@
   }
 
   GST_DEBUG_OBJECT (media, "seekable:%" G_GINT64_FORMAT, priv->seekable);
-
+  g_mutex_unlock (&priv->lock);
   gst_query_unref (query);
 }
 
@@ -818,7 +824,7 @@
   return FALSE;
 }
 
-/* must be called with state lock */
+/* must be called with state lock and private lock */
 static void
 collect_media_stats (GstRTSPMedia * media)
 {
@@ -826,8 +832,9 @@
   gint64 position = 0, stop = -1;
 
   if (priv->status != GST_RTSP_MEDIA_STATUS_PREPARED &&
-      priv->status != GST_RTSP_MEDIA_STATUS_PREPARING)
+      priv->status != GST_RTSP_MEDIA_STATUS_PREPARING) {
     return;
+  }
 
   priv->range.unit = GST_RTSP_RANGE_NPT;
 
@@ -887,8 +894,9 @@
       priv->range.max.seconds = ((gdouble) stop) / GST_SECOND;
       priv->range_stop = stop;
     }
-
+    g_mutex_unlock (&priv->lock);
     check_seekable (media);
+    g_mutex_lock (&priv->lock);
   }
 }
 
@@ -2518,9 +2526,8 @@
       priv->status != GST_RTSP_MEDIA_STATUS_SUSPENDED)
     goto not_prepared;
 
-  g_mutex_lock (&priv->lock);
-
   /* Update the range value with current position/duration */
+  g_mutex_lock (&priv->lock);
   collect_media_stats (media);
 
   /* make copy */
@@ -2554,6 +2561,27 @@
   }
 }
 
+gboolean
+gst_rtsp_media_has_completed_sender (GstRTSPMedia * media)
+{
+  GstRTSPMediaPrivate *priv = media->priv;
+  gboolean sender = FALSE;
+  guint i;
+
+  g_mutex_lock (&priv->lock);
+  for (i = 0; i < priv->streams->len; i++) {
+    GstRTSPStream *stream = g_ptr_array_index (priv->streams, i);
+    if (gst_rtsp_stream_is_complete (stream) &&
+        gst_rtsp_stream_is_sender (stream)) {
+      sender = TRUE;
+      break;
+    }
+  }
+  g_mutex_unlock (&priv->lock);
+
+  return sender;
+}
+
 static void
 stream_update_blocked (GstRTSPStream * stream, GstRTSPMedia * media)
 {
@@ -2910,10 +2938,13 @@
       GST_DEBUG ("%p: went from %s to %s (pending %s)", media,
           gst_element_state_get_name (old), gst_element_state_get_name (new),
           gst_element_state_get_name (pending));
-      if (priv->no_more_pads_pending == 0 && is_receive_only (media) &&
-          old == GST_STATE_READY && new == GST_STATE_PAUSED) {
+      if (priv->no_more_pads_pending == 0
+          && gst_rtsp_media_is_receive_only (media) && old == GST_STATE_READY
+          && new == GST_STATE_PAUSED) {
         GST_INFO ("%p: went to PAUSED, prepared now", media);
+        g_mutex_lock (&priv->lock);
         collect_media_stats (media);
+        g_mutex_unlock (&priv->lock);
 
         if (priv->status == GST_RTSP_MEDIA_STATUS_PREPARING)
           gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_PREPARED);
@@ -2995,7 +3026,9 @@
         if (priv->blocked && media_streams_blocking (media) &&
             priv->no_more_pads_pending == 0) {
           GST_DEBUG_OBJECT (GST_MESSAGE_SRC (message), "media is blocking");
+          g_mutex_lock (&priv->lock);
           collect_media_stats (media);
+          g_mutex_unlock (&priv->lock);
 
           if (priv->status == GST_RTSP_MEDIA_STATUS_PREPARING)
             gst_rtsp_media_set_status (media, GST_RTSP_MEDIA_STATUS_PREPARED);
@@ -3385,7 +3418,7 @@
     g_object_set_data (G_OBJECT (elem), "gst-rtsp-dynpay-handlers", handlers);
   }
 
-  if (priv->nb_dynamic_elements == 0 && is_receive_only (media)) {
+  if (priv->nb_dynamic_elements == 0 && gst_rtsp_media_is_receive_only 
(media)) {
     /* If we are receive_only (RECORD), do not try to preroll, to avoid
      * a second ASYNC state change failing */
     priv->is_live = TRUE;
@@ -4212,7 +4245,7 @@
 
   switch (priv->suspend_mode) {
     case GST_RTSP_SUSPEND_MODE_NONE:
-      if (is_receive_only (media))
+      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);
@@ -4451,7 +4484,7 @@
   /* we just activated the first media, do the playing state change */
   if (old_active == 0 && activate)
     do_state = TRUE;
-  /* if we have no more active media and prepare count is not indicate 
+  /* if we have no more active media and prepare count is not indicate
    * that there are new session/sessions ongoing,
    * do the downward state changes */
   else if (priv->n_active == 0 && priv->prepare_count <= 1)
@@ -4472,9 +4505,11 @@
 
   /* remember where we are */
   if (state != GST_STATE_NULL && (state == GST_STATE_PAUSED ||
-          old_active != priv->n_active))
+          old_active != priv->n_active)) {
+    g_mutex_lock (&priv->lock);
     collect_media_stats (media);
-
+    g_mutex_unlock (&priv->lock);
+  }
   g_rec_mutex_unlock (&priv->state_lock);
 
   return TRUE;
@@ -4639,3 +4674,16 @@
 
   return TRUE;
 }
+
+gboolean
+gst_rtsp_media_is_receive_only (GstRTSPMedia * media)
+{
+  GstRTSPMediaPrivate *priv = media->priv;
+  gboolean receive_only;
+
+  g_mutex_lock (&priv->lock);
+  receive_only = is_receive_only (media);
+  g_mutex_unlock (&priv->lock);
+
+  return receive_only;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/gst-rtsp-server.doap 
new/gst-rtsp-server-1.16.2/gst-rtsp-server.doap
--- old/gst-rtsp-server-1.16.1/gst-rtsp-server.doap     2019-09-23 
12:16:58.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/gst-rtsp-server.doap     2019-12-03 
12:15:20.000000000 +0100
@@ -32,6 +32,16 @@
 
  <release>
   <Version>
+   <revision>1.16.2</revision>
+   <branch>1.16</branch>
+   <name></name>
+   <created>2019-12-03</created>
+   <file-release 
rdf:resource="https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.16.2.tar.xz";
 />
+  </Version>
+ </release>
+
+ <release>
+  <Version>
    <revision>1.16.1</revision>
    <branch>1.16</branch>
    <name></name>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/ltmain.sh 
new/gst-rtsp-server-1.16.2/ltmain.sh
--- old/gst-rtsp-server-1.16.1/ltmain.sh        2019-09-23 12:17:04.000000000 
+0200
+++ new/gst-rtsp-server-1.16.2/ltmain.sh        2019-12-03 12:15:26.000000000 
+0100
@@ -31,7 +31,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-10"
+VERSION="2.4.6 Debian-2.4.6-11"
 package_revision=2.4.6
 
 
@@ -2141,7 +2141,7 @@
        compiler:       $LTCC
        compiler flags: $LTCFLAGS
        linker:         $LD (gnu? $with_gnu_ld)
-       version:        $progname $scriptversion Debian-2.4.6-10
+       version:        $progname $scriptversion Debian-2.4.6-11
        automake:       `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
        autoconf:       `($AUTOCONF --version) 2>/dev/null |$SED 1q`
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/meson.build 
new/gst-rtsp-server-1.16.2/meson.build
--- old/gst-rtsp-server-1.16.1/meson.build      2019-09-23 12:16:58.000000000 
+0200
+++ new/gst-rtsp-server-1.16.2/meson.build      2019-12-03 12:15:20.000000000 
+0100
@@ -1,5 +1,5 @@
 project('gst-rtsp-server', 'c',
-  version : '1.16.1',
+  version : '1.16.2',
   meson_version : '>= 0.47',
   default_options : ['warning_level=1', 'buildtype=debugoptimized'])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gst-rtsp-server-1.16.1/tests/check/gst/client.c 
new/gst-rtsp-server-1.16.2/tests/check/gst/client.c
--- old/gst-rtsp-server-1.16.1/tests/check/gst/client.c 2019-09-21 
19:58:44.000000000 +0200
+++ new/gst-rtsp-server-1.16.2/tests/check/gst/client.c 2019-12-02 
21:04:18.000000000 +0100
@@ -55,6 +55,51 @@
 }
 
 static gboolean
+test_response_play_200 (GstRTSPClient * client, GstRTSPMessage * response,
+    gboolean close, gpointer user_data)
+{
+  GstRTSPStatusCode code;
+  const gchar *reason;
+  GstRTSPVersion version;
+  gchar *str;
+  gchar **session_hdr_params;
+  gchar *pattern;
+
+  fail_unless_equals_int (gst_rtsp_message_get_type (response),
+      GST_RTSP_MESSAGE_RESPONSE);
+
+  fail_unless (gst_rtsp_message_parse_response (response, &code, &reason,
+          &version)
+      == GST_RTSP_OK);
+  fail_unless_equals_int (code, GST_RTSP_STS_OK);
+  fail_unless_equals_string (reason, "OK");
+  fail_unless_equals_int (version, GST_RTSP_VERSION_1_0);
+
+  /* Verify mandatory headers according to RFC 2326 */
+  /* verify mandatory CSeq header */
+  fail_unless (gst_rtsp_message_get_header (response, GST_RTSP_HDR_CSEQ, &str,
+          0) == GST_RTSP_OK);
+  fail_unless (atoi (str) == cseq++);
+
+  /* verify mandatory Session header */
+  fail_unless (gst_rtsp_message_get_header (response, GST_RTSP_HDR_SESSION,
+          &str, 0) == GST_RTSP_OK);
+  session_hdr_params = g_strsplit (str, ";", -1);
+  fail_unless (session_hdr_params[0] != NULL);
+  g_strfreev (session_hdr_params);
+
+  /* verify mandatory RTP-Info header */
+  fail_unless (gst_rtsp_message_get_header (response, GST_RTSP_HDR_RTP_INFO,
+          &str, 0) == GST_RTSP_OK);
+  pattern = g_strdup_printf ("^url=rtsp://.+;seq=[0-9]+;rtptime=[0-9]+");
+  fail_unless (g_regex_match_simple (pattern, str, 0, 0),
+      "GST_RTSP_HDR_RTP_INFO '%s' doesn't match pattern '%s'", str, pattern);
+  g_free (pattern);
+
+  return TRUE;
+}
+
+static gboolean
 test_response_400 (GstRTSPClient * client, GstRTSPMessage * response,
     gboolean close, gpointer user_data)
 {
@@ -1707,7 +1752,55 @@
 
 GST_END_TEST;
 
-static Suite *
+GST_START_TEST (test_client_play)
+{
+  GstRTSPClient *client;
+  GstRTSPMessage request = { 0, };
+  gchar *str;
+  GstRTSPContext ctx = { NULL };
+
+  client = setup_multicast_client (1);
+
+  ctx.client = client;
+  ctx.auth = gst_rtsp_auth_new ();
+  ctx.token =
+      gst_rtsp_token_new (GST_RTSP_TOKEN_MEDIA_FACTORY_ROLE, G_TYPE_STRING,
+      "user", NULL);
+  gst_rtsp_context_push_current (&ctx);
+
+  fail_unless (gst_rtsp_message_init_request (&request, GST_RTSP_SETUP,
+          "rtsp://localhost/test/stream=0") == GST_RTSP_OK);
+  str = g_strdup_printf ("%d", cseq);
+  gst_rtsp_message_take_header (&request, GST_RTSP_HDR_CSEQ, str);
+  gst_rtsp_message_add_header (&request, GST_RTSP_HDR_TRANSPORT,
+      "RTP/AVP;multicast");
+  /* destination is from adress pool */
+  expected_transport = "RTP/AVP;multicast;destination=233.252.0.1;"
+      "ttl=1;port=.*;mode=\"PLAY\"";
+  gst_rtsp_client_set_send_func (client, test_setup_response_200, NULL, NULL);
+  fail_unless (gst_rtsp_client_handle_message (client,
+          &request) == GST_RTSP_OK);
+  gst_rtsp_message_unset (&request);
+  expected_transport = NULL;
+
+  fail_unless (gst_rtsp_message_init_request (&request, GST_RTSP_PLAY,
+          "rtsp://localhost/test") == GST_RTSP_OK);
+  str = g_strdup_printf ("%d", cseq);
+  gst_rtsp_message_take_header (&request, GST_RTSP_HDR_CSEQ, str);
+  gst_rtsp_message_add_header (&request, GST_RTSP_HDR_SESSION, session_id);
+  gst_rtsp_client_set_send_func (client, test_response_play_200, NULL, NULL);
+  fail_unless (gst_rtsp_client_handle_message (client,
+          &request) == GST_RTSP_OK);
+  gst_rtsp_message_unset (&request);
+
+  send_teardown (client);
+  teardown_client (client);
+  g_object_unref (ctx.auth);
+  gst_rtsp_token_unref (ctx.token);
+  gst_rtsp_context_pop_current (&ctx);
+}
+
+GST_END_TEST static Suite *
 rtspclient_suite (void)
 {
   Suite *s = suite_create ("rtspclient");
@@ -1759,6 +1852,7 @@
   tcase_add_test (tc, test_client_multicast_max_ttl_first_client);
   tcase_add_test (tc, test_client_multicast_max_ttl_second_client);
   tcase_add_test (tc, test_client_multicast_invalid_ttl);
+  tcase_add_test (tc, test_client_play);
 
   return s;
 }


Reply via email to