Package Release Info

live555-2023.01.19-bp155.1.6

Update Info: Base Release
Available in Package Hub : 15 SP5

platforms

AArch64
ppc64le
s390x
x86-64

subpackages

libBasicUsageEnvironment2
libgroupsock30
libliveMedia107
libUsageEnvironment3
live555
live555-devel

Change Logs

* Sat Jan 21 2023 Dirk Müller <dmueller@suse.com>
- update to 2023.01.19:
  - By default, we no longer compile "groupsock/NetAddress.cpp" for Windows to use
    "gethostbyname()", because of a report that this breaks IPv6 name resolution.
* Mon Jan 16 2023 Dirk Müller <dmueller@suse.com>
- update to 2023.01.11:
  * Updated the "BasicTaskScheduler"/"DelayQueue" implementation to make the 'token counter'
    a field of the task scheduler object, rather than having it be a static variable.
    This avoids potential problems if an application uses more than one thread (with each thread
    having its own task scheduler).
* Fri Dec 02 2022 Dirk Müller <dmueller@suse.com>
- update to 2022.12.01:
  - Yet another fix to the previous fix for RTSP-over-HTTP streaming.
  - The previous version's fix to "RTSPClient" (for RTSP-over-HTTP streaming) was incomplete.
    This should fix it for real.
  - Fixed a bug in "RTSPClient" that would cause RTSP-over-HTTP streaming over TLS to
    sometimes fail.  (Thanks to Johannes Gajdosik for reporting this.)
  - Fixed a bug that would cause a RTSP server to use an incorrect URL if it accepted connections
    via TLS, but *without* streaming SRTP.
* Tue Nov 22 2022 Dirk Müller <dmueller@suse.com>
- update to 2022.11.19:
  - Added a new global variable "ReceivingInterfaceAddr6" (analogous to the existing
    variable "ReceivingInterfaceAddr" for IPv4) to allow applications to optionally
    change the default receiving address for IPv6.
* Sun Oct 02 2022 Dirk Müller <dmueller@suse.com>
- update to 2022.10.01:
  - Updated the previous revision so that the virtual function "specialHandlingOfAuthenticationFailure()"
    is now called only if there is an actual authentication failure - not on the first time that
    we send back a "401 Unauthorized" response.
  - Added a new virtual function "specialHandlingOfAuthenticationFailure()" to "RTSPServer" to
    allow a subclassed "RTSPServer" to take special action (e.g., statistics logging)
    whenever an authentication failure occurs.
* Fri Jul 22 2022 Dirk Müller <dmueller@suse.com>
- update to 2022.07.14:
  * use SHA-1 rather than MD5 to hash the latest tarball of our code
* Fri Jun 24 2022 Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2022.06.16:
  + Both our RTSP client and RTSP server implementations now
    support (optional) RTSP-over-HTTPS streaming, when
    RTSP-over-TLS would otherwise be available.
- Changes from version 2022.06.14:
  + Added optional support (via #ifdefs) to the
    "testOnDemandRTSPServer" demo application for streaming via
    RTSPS (RTSP-over-TLS) and optionally SRTP (encrypted RTP/RTCP).
    To use this, you would need to define SERVER_USE_TLS, and
    PATHNAME_TO_CERTIFICATE_FILE and PATHNAME_TO_PRIVATE_KEY_FILE.
* Wed May 04 2022 Christophe Giboudeaux <christophe@krop.fr>
- Update to 2022.04.26:
  * Ensure that we don't call "delete[]" on an uninitialized
    pointer.
- Changes from version 2022.04.15:
  * Fixed a "fprintf()" argument-order-evaluation bug in the
    "mikeyParse" demo application.
- Changes from version 2022.04.12:
  * Updated the "openRTSP" application (RTSP command-line client)
    to add an option '-L', meaning: receive only an "application"
    (e.g., 'metadata') track, if present, outputting the data to
    'stdout'.
* Tue Feb 15 2022 Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2022.02.07:
  + Updated the SRTP packet sending code in "MultiFramedRTPSink.cp"
    to not allocate a variable-sized buffer on the stack, because
    some compilers can't handle this.
  + Ensure that RTSP servers that serve SRTP do not also support
    streaming over the TCP connection, because that would add extra
    overhead for no benefit.
- Changes from version 2022.01.21:
  + Fixed a bug in the "groupsock" library that could cause
    outgoing RTP packets to get duplicated when a RTSP "PLAY"
    command is sent after a "PAUSE".
- Changes from version 2022.01.20:
  + More updates to the code for optional server SRTP streaming.
- Changes from version 2022.01.17:
  + More updates to the code in preparation for optional server
    SRTP streaming.
- Changes from version 2022.01.11:
  + Fixed a minor memory leak in "RTSPClient" when receiving a SRTP
    stream.
  + Updates to "RTPSink" in preparation for optional server SRTP
    streaming.
- Changes from version 2022.01.06:
  + Made "GenericMediaServer::addServerMediaSubsession()" a virtual
    function, and redefine it in the subclass "RTSPServer" to call
    the base function, then set the "ServerMediaSubsession"s
    "streamingIsEncrypted" flag (if the RTSP server is streaming
    SRTP).
* Mon Dec 20 2021 Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2021.12.18:
  + Fixed a bug in the way that "RTSPClient" handles its two
    separate TCP connections when it does RTSP-over-HTTP.
  + Updated "RTPInterface::sendDataOverTCP()" so that if it's
    necessary to do a blocking send(), we call
    "makeSocketNonBlocking()" immediately after the call to
    "send()".
  + Performed the annual update of the copyright years near the
    start of each file.
* Sat Dec 18 2021 Dirk Müller <dmueller@suse.com>
- update to 2021.12.07:
  - Added #ifndef NO_OPENSSL/#endif around "#include <openssl/err.h>" in
    "liveMedia/TLSState.cpp", so that the code will compile if you're compiling
    with no OpenSSL headers, and NO_OPENSSL
    defined.
Version: 2021.11.23-bp154.1.72
* Mon Dec 06 2021 Dirk Müller <dmueller@suse.com>
- update to 2021.11.23:
  * Updated the "RTSPServer::setTLSState()" function to take an optional
    parameter "weServeSRTP".  For now, the default value of this parameter is
    False, but it will get changed to True later, when we implement server-side
    SRTP.
  * Updated the RTSP server implementation to (optionally) support connections via TLS.
  * Updated the "TLSState" interface and implementation to (1) reduce the
    amount of stuff that the compiler gets to see if you're compiling with
    NO_OPENSSL defined, and (2) add a new subclass "ServerTLSState" that
    will eventually be used to implement optional TLS connections to our RTSP server.
  * Split the "TLSState" class into two classes: "TLSState" (an abstract base
    class), and "ClientTLSState" (a subclass).  This is in preparation for later defining
    second subclass "ServerTLSState" that will eventually be used to implement TLS connections
    in our RTSP server.
  * Updated the implementation of AES encryption/decryption (used by our client SRTP
    implementation) to use the new OpenSSL EVP interface.  This makes it possible to
    use hardware acceleration (e.g., AES-NI), when it is available.
  * Updated the "RTSPClient"s implementation of receiving RTP/RTCP-over-TCP so
    that it will also work over a RTSP-over-TLS (including RTSPS) connection.
  * Fixed a bug in "MatroskaFileParser" that could cause delivery of data to a downstream object
    that wasn't expecting it (potentially causing an invalid memory access).
  * The final (I hope!) update to eliminate a "depends on uninitialised value"
    report from 'valgrind'.
* Mon Aug 23 2021 Fusion Future <qydwhotmail@gmail.com>
- Update to 2021.08.23:
  * Updated the "readSocket()" code in "GroupsockHelper.cpp" yet
    again to try to eliminate another (alleged) "depends on
    uninitialised value" report from 'valgrind'.
    (If, after this, you still see this, then your implementation
    of "recvfrom()" is broken.)
- Changes in 2021.08.19:
  * Updated the "readSocket()" code in "GroupsockHelper.cpp" to
    eliminate another possible "depends on uninitialised value"
    report from 'valgrind'.
- Changes in 2021.08.18:
  * Updated the "readSocket()" code in "GroupsockHelper.cpp" to
    eliminate a "depends on uninitialised value" report from
    'valgrind'.
- Changes in 2021.08.17:
  * Updated the 'groupsock' "setPortNum()" function to not rely
    upon the "ss_family" family field, in case it's uninitialized.
- Changes in 2021.08.14:
  * Fixed a minor bug in the previous release ("delete" should have
    been "delete[]")
- Changes in 2021.08.13:
  * Fixed a bug in "MPEG1or2Demux" that could cause a 'reading
    twice at the same time" abort when streaming from a MPEG
    Program Stream file. (boo#1189726, CVE-2021-39283)
  * Fixed a potential memory leak in "AC3AudioStreamFramer".
    (boo#1189725, CVE-2021-39282)
* Thu Aug 12 2021 Fusion Future <qydwhotmail@gmail.com>
- Update to 2021.08.09:
  - Fixed a bug in the MPEG-1 or 2 file server demultiplexors that
    could cause a RTSP server to crash if it received successive
    RTSP "SETUP" commands for the same track. (Thanks to Ba
    Jinsheng for reporting this.)(boo#1189352, CVE-2021-38381)
- Update to 2021.08.06:
  - Fixed a bug in the Matroska and Ogg file server demultiplexors
    that could cause a RTSP server to crash if it received
    successive RTSP "SETUP" commands for the same track.  (Thanks
    to Ba Jinsheng for reporting this.)(boo#1189353, CVE-2021-38382)
- Update to 2021.08.04:
  - In the "MP3FileSource" implementation, we no longer do a
    recursive call to "doEventLoop()" when attempting to
    synchronously read from a MP3 file.  This avoids a possible
    stack overflow in the RTSP server if multiple concurrent
    requests are made. (Thanks to Ba Jinsheng for reporting this.)
    The server still does some synchronous reads, when
    initializing, and when parsing MP3 frame headers. This should
    be fixed sometime in the future. (boo#1189351, CVE-2021-38380)
- Update to 2021.07.20:
  - If a "RTSPClient" receives a response to a RTSP "PLAY" that
    changes the 'scale()' or 'speed()' of the whole session, then
    those parameters also need to be changed in each subsession (as
    that inheritance doesn't happen automatically). (Thanks to a
    developer in China for reporting this.)
- Update to 2021.07.10:
  - Updated "H264or5VideoStreamFramer.cpp" once again to set the
    default value of "DeltaTfiDivisor" to 2.0 for H.265, and 1.0
    for everything else.  (This fixes the frame rate for another
    stream supplied by Paul Westlund.)
- Update to 2021.06.29:
  - In the proxy server implementation, if a client closes one
    substream, but there are still other clients receiving other
    substream(s), then we no send a single-track RTSP "PAUSE"
    command downstream, because some back-end servers might handle
    that by pausing all tracks of the stream.  So now, in this
    case, we don't send a RTSP "PAUSE" command at all. (Thanks to
    Jose Maria Infanzon for noting this issue.)
- Update to 2021.06.25:
  - Updated "H264or5VideoStreamFramer.cpp" to set the default value
    of "DeltaTfiDivisor" to 1.0 (rather than 2.0), and to assume a
    frame rate of 30 fps (rather than 25 fps) if there is no VPS or
    SPS NAL unit that specifies a different frame rate.  This seems
    to work the best for most raw H.264 and H.265 video streams.
    (Thanks to Paul Westlund for supplying an example file to
    motivate this.)
- Change the so version of libliveMedia to 97
Version: 2021.05.22-bp152.4.4.1
* Thu Jun 17 2021 tiwai@suse.de
- Update to 2021.05.22:
  lots of fixes and updates, including the security fix for
  CVE-2021-28899 boo#1185874
  See the list in http://live555.com/liveMedia/public/changelog.txt
- Change the so version of libliveMedia to 94, libgroupsock to 30
* Sun Oct 18 2020 Dirk Mueller <dmueller@suse.com>
- update to 2020.10.16:
  - Changed "TLSState::read()" to treat any "SSL_read()" result of <=0 as if the
    TLS connection has closed (unless the error was SSL_ERROR_WANT_READ).
    This fixes a problem that could cause 100% CPU usage in RTSP client applications.
    (Thanks to Larry Wu for reporting this.)
  - Updated "TLSState::setup()" to use "TLS_client_method()" instead of the (deprecated)
    "SSLv23_client_method()".
* Sat Oct 03 2020 Dirk Mueller <dmueller@suse.com>
- update to 2020.08.19:
  - Fixed a bug in "QuickTimeFileSink" that could cause malformed "esds" atoms to be
    generated.  (Thanks to Chris Paucar for reporting this issue.)
  - In "MPEG2TransportStreamFromESSource.cpp", changed the name of the constant LOW_WATER_MARK
    to TS_FROM_ES_LOW_WATER_MARK, and "#ifndef"d it, so that, if you wish, you can redefine it
    at compile time.
  - Fixed a bug in the handling of pausing, when streaming from (multi-track) Matroska files.
  - Fixed another bug in the handling of seeking within Matroska files.
  - Fixed a bug in the handling of seeking within Matroska files.
    (Thanks to Jim Ham for reporting this problem.)
  - Changed the parameter signature of the "RawVideoRTPSink" constructor and "createNew()"
    functions so that the "width" parameter comes before the "height" parameter.  This order
  - "width", "height" - is more common, and is the order used when these parameters are
    defined in RFC 4175.
    IMPORTANT NOTE: Because the types of these two parameters are the same, existing application
    code that uses "RawVideoRTPSink" will compile without error; however, it will not work
    properly unless the order of the parameters in the call to "RawVideoRTPSink::createNew()"
    is changed.
  - More cleanup of the implementation of "RawVideoRTPSink".
  - Cleaned up the implementation of "RawVideoRTPSink".
  - Updated the "RawVideoRTPSource" implementation to not set "fCurrentPacketCompletesFrame"
    until we are processing the last line in the packet.
    (Thanks to Andrey Lisovoy for reporting this issue.)
  - Fixed a potential buffer overflow bug in the server handling of a RTSP "PLAY" command,
    when the command specifies seeking by absolute time.
    (Thank to Xiaobo Xiang for reporting this.)
  - Fixed a memory leak in the "sha1()" function (a "EVP_MD_CTX" object was not being deleted).
    (Thanks to Amir Perlman for reporting this.)
  - Moved all definitions of PREFIX from "Makefile.tail" files to "Makefile.head" (so that
    it can be redefined by a "config.*" file, if desired.
    Also changed the definition of EXE in "config.mingw" to be ".exe".
    (Thanks to Eric Beuque for this suggestion.)
  - Fixed a typo in the previous release that could cause a compilation problem for some
    developers.  (Thanks to Eric Beuque for reporting this.)
* Thu Jun 04 2020 Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2020.05.15:
  + Added a new filter class "ADTSAudioStreamDiscreteFramer" that
    prepends ADTS headers to incoming AAC audio frames. This makes
    the AAC audio playable (by media players).
  + Updated "openRTSP" to use a "ADTSAudioStreamDiscreteFramer"
    when outputting a AAC audio stream.
  + Updated the "LIVE555 HLS Proxy" to support AAC audio tracks
    (as well as H.264/5 video).
- Changes from version 2020.05.14:
  + Updated "H264or5VideoStreamDiscreteFramer" to add VPS,SPS,PPS
    NAL units (if known) to the output stream, each time an
    "access_unit_delimiter" NAL unit is added. This makes it more
    likely that the Transport Stream segments produced by the
    "LIVE555 HLS Proxy" will be understandable by a client browser.
  + Added support for H.265 video streams to the "LIVE555 HLS Proxy".
- Changes from version 2020.05.13:
  + Made the "MPEG2TransportStreamMultiplexor" segmentation mechanism
    (used by "HLSSegmenter") more robust in case the Transport
    Stream PTS is not monotonic non-decreasing.
* Tue Apr 28 2020 Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2020.04.24:
  + Fixed an apparent bug in "RTSPClient" that was causing it to
    not always send an "Authorization:" header when sending a RTSP
    "OPTIONS" command.
* Thu Apr 23 2020 munix9@googlemail.com
- Added pkgconfig(openssl) as a requirement for the devel package:
  iveMedia/TLSState.hh #includes openssl/ssl.h.
* Tue Apr 14 2020 munix9@googlemail.com
- Update to version 2020.04.12:
  + Updated "config.linux-with-shared-libraries"
    (and "liveMedia/Makefile.tail") to ensure that "libssl" and
    "libcrypto" are linked when "libliveMedia" is built.
    (Thanks to Felix Kaechele for reporting this.)
- Changes from version 2020.04.06:
  + Removed support for the classes "RTSPServerSupportingHTTPStreaming"
    and "TCPStreamSink".
    These were being used (in the "LIVE555 Media Server") for
    streaming using "HTTP Live Streaming" (HLS).  This was always
    a hack; it is better to use a dedicated HTTP server to serve
    HLS segments, rather than trying to implement a HTTP server
    (serving 'virtual HLS segments) within our own (primarily RTSP)
    server.
    If you are looking for HLS support, note that we provide a
    source-code demo application "testH264VideoToHLSSegments" that
    converts a (static) H.264 Elementary Stream file to HLS
    segments, and the "LIVE555 HLS Proxy", which proxies a live
    RTSP/RTP stream to HLS segments.
* Thu Apr 02 2020 Dominique Leuenberger <dimstar@opensuse.org>
- Update to version 2020.03.06 (boo#1146283, CVE-2019-15232):
  + Fixed a problem in "H264or5VideoStreamFramer.cpp" that was
    allegedly causing problems compiling for Windows.
- Changes from version 2020.02.25:
  + Added full support for the "LIVE555 HLS Proxy"
- Changes from version 2020.02.24:
  + Commented out a line of code that was preventing
    "RTSPClientConnection" objects from being closed when a RTSP
    server handles a "TEARDOWN" command (on a RTP-over-TCP stream).
- Changes from version 2020.02.23:
  + Updated our (unicast) RTSP server implementation to handle
    "PAUSE" commands by calling "stopGettingFrames()" on the input
    source.
  + Fixed a bug in "H264or5VideoStreamFramer" that was causing it
    to not update its presentation times properly following a pause.
  + Updated "openRTSP" to improve the handling of the "-R <port-num>"
    option.
- Changes from version 2020.02.11:
  + Added support for receiving SRTP (encrypted) RTSP streams.
- For changes between 2019.06.28 and 2020.02.10, please see the
  http://www.live555.com/liveMedia/public/changelog.txt.
- Rebase live555-fpic.patch.
Version: 2019.06.28-bp150.12.1
* Mon Jul 15 2019 Dave Plater <davejplater@gmail.com>
- Update to version 2019.06.28, fixes boo#1127341 VUL-1:
  CVE-2019-9215: live555: malformed headers lead to invalid memory
  access in the parseAuthorizationHeader function.
* Mon Jun 24 2019 Dominique Leuenberger <dimstar@opensuse.org>
- Convert to dynamic libraries (boo#1121995):
  + Use make ilinux-with-shared-libraries: build the dynamic libs
    instead of the static one.
  + Use make install instead of a manual file copy script: this
    also reveals that we missed quite a bit of code to be installed
    before.
  + Split out shared library packages according the SLPP.
* Thu May 16 2019 Martin Li?ka <mliska@suse.cz>
- Use FAT LTO objects in order to provide proper static library.
* Mon Feb 04 2019 atoptsoglou@suse.com
- update to 2019.02.03:
  * CVE-2019-7314:A use-after-free error causes the RTSP server to
    crash (boo#1124159)
Version: 2018.12.14-bp150.3.3.1
* Tue Jan 15 2019 astieger@suse.com
- update to 2018.12.14:
  * Add support for sending (and handling) RTCP "BYE" packets that
    contain a 'reason' string (breaking api change)
* Tue Jan 15 2019 astieger@suse.com
- update to 2018.11.26:
  * CVE-2019-6256: DoS vulnerability in the server implementation
    of RTSP-over-HTTP (boo#1121892)
* Tue Nov 06 2018 Mathias Homann <Mathias.Homann@opensuse.org>
- Update to 2018.10.17
  * CVE-2018-4013: remote code execution vulnerability (boo#1114779)
  * changes: see http://www.live555.com/liveMedia/public/changelog.txt
  * removed xlocale.patch - xlocale.h is now conditionally included, only when
    required. Upstream fix.
Version: 2017.10.28-bp150.2.4
* Wed Nov 01 2017 Mathias.Homann@opensuse.org
- Update to 2017.10.28
  2017.10.28:
- Fixed the handling of the LIVE555 Proxy Server's "-u <username> <password>" command-line option if
  the "REGISTER" command is also implemented (i.e., with "-R").  Now, when we handle "REGISTER",
  the <username> and <password> are used to access the REGISTER'ed back-end stream, if necessary.
- Changed the server handling of the RTSP "REGISTER" command to (if "reuseConnection" is True) delay
  a short period of time (100ms) between replying to the "REGISTER" command, and actually
  handling it.  This is intended to reduce/avoid the possibility of a subsequent "DESCRIBE" command
  ending up in the client ("REGISTER" sender)'s buffer, before the socket gets reused for handling
  incoming RTSP commands.  (Thanks to Durgesh Tanuku for noting this issue.)
- Made a change to "SIPClient" to better handle Asterisk SIP servers with authentication.
  (Thanks to Rus.)
  2017.09.12:
- Made some improvements/bug fixes to AVI indexes in "AVIFileSink".
  (Thanks to Victor V. Vinokurov.)
- Updated the handling of the "writeTimeoutInMilliseconds" parameter in the "makeSocketBlocking()"
  function to work correctly on Windows. (Thanks to Jeff Shanab for noting this issue.)
- Added support for adding Opus audio to MPEG Transport Streams.  This is done by setting the
  "mpegVersion" parameter to 3 in "MPEG2TransportStreamFromESSource::addNewAudioSource()" or
  "MPEG2TransportStreamMultiplexor::handleNewBuffer()".
  (Thanks to Praveen Mathad for suggesting this.)
  2017.07.18:
- Updated "BitVector" to support a signed version of "get_expGolomb()", and fixed our H.264/265
  parsing code to use the signed version where appropriate.
  (Thanks to Toson Huang and Long Zhang for reporting this.)
* Mon Aug 07 2017 schwab@suse.de
- xlocale.patch: don't use obsolete <xlocale.h>
* Sat Jul 08 2017 jengelh@inai.de
- Replace silly -exec rm ; by -delete.
* Mon Jul 03 2017 ramaxlo@gmail.com
- Update to version 2017.06.04
  2017.06.04:
  * Fixed a bug in "RTPInterface::removeStreamSocket()" that could
    cause not all 'TCP stream' records for a given socket number
    to be removed if a TCP socket I/O error occurred (during
    RTP/RTCP-over-TCP streaming).  (Thanks to Gerald Hansink et al
    for reporting this.)
  2017.05.24:
  * In "RTSPClient.cpp", moved the call to "clearServerRequestAlternativeByteHandler()"
    from the "RTSPClient" destructor to the "resetTCPSockets()"
    function (which is called more often). This should eliminate
    a 'pointer to a deleted object' error. (Thanks to Gerald Hansink
    et al for reporting this.)
  2017.04.26:
  * Added a new public member function "numClientSessions()"
    to "GenericMediaServer" (and therefore to "RTSPServer", which
    inherits from this).  This allows a server to - at any time -
    check how many clients are currently accessing the server.
  * Updated the diagnostic output in "RTSPClient" to distinguish
    between opening a new TCP socket and connect()ing on a TCP
    socket. (The distinction is important for "REGISTER", which can
    reuse an existing TCP socket.)
  2017.04.10:
  * Fixed a bug in "base64Decode()" that could be triggered
    if (1) your RTSP server is streaming RTP/RTCP-over-HTTP, and (2)
    the remote client sends bad Base64 data (containing an embedded '\0'
    character). (Thanks to Arkady Bernov for reporting this.)
  2017.01.26:
  * Updated "ProxyServerMediaSession.cpp" to change all 'reset()'
    operations so that they are now run as a 'scheduled task' from
    the event loop - avoiding the possibility of bugs caused by
    'reset()' being called while another operation is in progress.
    (Thanks to Erik Montnemery for reporting this issue, and proposing a fix.)
  2016.11.28:
  * Our "RTSPClient" code now ignores "Connection: close" lines in
    the responses to HTTP "GET" requests (that are used to set up
    RTSP-over-HTTP tunneling). Because this tunneling requires that
    the (separate) input and output TCP connections remain intact,
    we assume that the server - if it includes such a line in the
    response to a HTTP "GET" - doesn't really mean it.
    (Thanks to Nguyen Viet Hung for reporting a server that does this.)
  2016.11.17:
  * Fixed a bug in the handling of 'APP' RTCP subpackets. (Thanks to
    Frederik de Ruyck for reporting this.)
  * Fixed a bug in the "StreamReplicator" code. (Thanks to Bruno Abreu
    for reporting this.)
  2016.11.06:
  * Increase the RTSP client's socket receive buffer when we'll be
    receiving RTP/RTCP-over-TCP, and increase the RTSP server's
    client connection socket send buffer when it's used to
    "REGISTER" a stream.
  2016.11.03:
  * Fixed a bug (in the sending/ handling of the "REGISTER"/"DEREGISTER"
    commands) that had been accidentally introduced in version
    2016.09.19. (Thanks to Ralf Globisch for noting this.)
  2016.10.29:
  * Performed the annual update of the copyright years and license
    near the start of each file
  2016.10.21:
  * Changed the "RTCPInstance error" message in "RTCP.cpp" to make
    it clear that the problem is caused by the remote endpoint using
    a buggy version of RTP/RTCP-over-TCP streaming.
  * Updated "QuickTimeFileSink" to make the various creation/modification
    times relative to January 1st 1904 in UTC (as Apple recommends),
    rather than in US Pacific Time.
* Sun Oct 16 2016 aloisio@gmx.com
- Update to version 2016.10.11
  2016.10.11:
  * After building the source code, we now display a message
    reminding the developer about our FAQ.
  2016.09.22:
  * Added a new "liveMedia" class
    "MPEG2TransportStreamAccumulator" - a filter that can
    be used to combine several (by default, 7) MPEG Transport
    Stream 188-byte 'packets' into a larger chunk of data,
    more appropriate for streaming via RTP (or raw UDP).
  2016.09.19:
  * Added support for an experimental RTSP "DEREGISTER"
    command, which undoes the effect of a "REGISTER" command.
  * Moved the REGISTER/DEREGISTER-specific functionality of
    "RTSPServer.cpp" into a new file "RTSPServerRegister.cpp",
    to make the base RTSP server code (in "RTSPServer.cpp")
    easier to comprehend.
  2016.09.12:
  * Fixed "GenericMediaServer::createNewClientSessionWithId()"
    to make sure that the new 'client session' object (returned
    by a call to "createNewClientSession()") is not NULL
    before it tries to add it to the 'fClientSessions' table.
    (Thanks to Helmut Grohne for discovering this issue.)
  2016.09.08:
  * Updated "RTSPClient::reset()" to reset each of the 'request
    queues' as well.
    (Thanks to Erik Montnemery for noting a problem (with the
    "LIVE555 Proxy Server") that this caused.)
  * Updated "GenericMediaServer::ClientConnection::closeSockets()"
    so that it doesn't try to call "closeSocket()" (=="close()")
    on socket numbers <0.
  2016.09.05:
  * Fixed a problem whereby a 'delayed task' for a
    "MPEG2TransportStreamMultiplexor" object might have gotten run
    after such an object was deleted.
    (Thanks to Bruno Basilio for providing debugging output to
    help track this down.)
  * Updated "Socket::reset()" (in "groupsock/NetInterface.cpp") so
    that it doesn't try to call "closeSocket()" (=="close()") on
    socket numbers <0.
  * Added a comment to "UsageEnvironment/include/UsageEnvironment.hh"
    to note that "triggerEvent()" should not be called with the
    same 'event trigger id' from different threads.
    (This was already noted in a comment in
    "liveMedia/DeviceSource.cpp", but not in
    "UsageEnvironment/include/UsageEnvironment.hh", which is
    where "triggerEvent()" is defined.)
  2016.08.27:
  * Fixed a problem whereby a "Medium" object's "nextTask()"
    (i.e., "fNextTask") could hold an invalid value after a
    'scheduled task' has occurred (but before the next similar
    task is scheduled) - which causes problems should the
    "Medium" object be deleted during that window of time.
    (Thanks to Helmut Grohne for noting this problem.)
  * Added comments to "UsageEnvironment/include/UsageEnvironment.hh"
    to make it clear that "unscheduleDelayedTask()" (or
    "rescheduleDelayedTask()") must not be called on a
    'scheduled task' after it has already occurred.
    (Thanks to Helmut Grohne for motivating this.)
  2016.08.07:
  * Fixed a bug in the handling of the non-standard
    "com.ses.streamID:" header (used by 'SAT>IP' servers)
    that we had introduced in version 2016.01.12.
    (Thanks to Yaobing Deng for noting this.)
  2016.07.19:
  * Fixed a bug in "RTSPServer" that could cause a crash if a
    "RTSPServer" object is deleted after having been used
    for RTSP-over-HTTP streaming.  (Thanks to Pavel Aronov.)
  * Updated "RTSPClient" to recognize a "Connection: Close"
    header in a server's response. It handles this header by
    closing the RTSP TCP connection (because the server is
    assumed to not be using it again), so that we open a new
    TCP  connection for any subsequent commands.
    (Thanks to Nathan (at MediaPortal) for this suggestion.)
  * Made a small optimization to "RTSPServer"s handling of the
    first "SETUP" command from each client.  (Thanks to Maxim
    Dementiev for the suggestion.)
  2016.06.26:
  * Added a new (public) function "canDeliverNewFrameImmediately()"
    to "MPEG2TransportStreamMultiplexor".
    This function may be used by a downstream reader to test
    whether the next call to "doGetNextFrame()" will deliver
    data immediately.  It can be useful if you want to decide
    whether or not to keep accumulating multiple Transport Stream
    'packets' into an outgoing RTP packet.
    (Thanks to Gilles Chanteperdrix for suggesting this.)
  * Made a minor syntactic change to "MediaTranscodingTable.hh"
    to eliminate compiler warnings.
  2016.06.23:
  * Changed the constant "MAX_INPUT_ES_FRAME_SIZE" to a static
    member variable
    "MPEG2TransportStreamFromESSource::maxInputESFrameSize"
    that can, if desired, be increased at run time (before a
    "MPEG2TransportStreamFromESSource" object is created).
    (Thanks to Gilles Chanteperdrix for motivating this.)
  2016.06.22:
  * Changed "~ProxyServerMediaSession()" so that it no longer
    deletes the "MediaTranscodingTable" object that it had
    been passed in its constructor.  (The reason for this is
    that the same "MediaTranscodingTable" can be used by more
    than one "ProxyServerMediaSession".)
  * Made the "parseTransportHeaderForREGISTER()" function
    (that's used in the "RTSPServer" implementation) non-static,
    so that it can be used in other, non-RTSP server
    implementations that want to handle the "REGISTER" command.
  * Made the "RTPSink::SSRC()" function "public:" rather than
    "protected:".
    (Thanks to Jean-Luc Bonnet for this suggestion.)
  2016.05.20:
  * Added a new virtual function "noteLiveness()" to the
    "ServerMediaSession" class. This function is called
    (by a "GenericMediaServer") whenever there's 'liveness'
    on a "ClientSession".  The default implementation of this
    function is a 'noop', but subclasses can redefine it - e.g.,
    if you want to remove long-unused "ServerMediaSession"s
    from the server.
  * Fixed a bug in the options handling for the command
    "live555ProxyServer" that could erroneously produce a
    "usage" error if the '-R' option is used, but no
    back-end "rtsp://" URL is given.
  2016.05.18:
  * Backed out the change to "MultiFramedRTPSink" that was
    made in 2016.05.17; the 2016.05.16 version turned out
    to be correct.
  * Rearranged "#include"s to avoid an 'excessive #include
    nesting' error with some old compilers.
  2016.05.17:
  * Made a (mostly inconsequential) fix to the previous bugfix
    for "MultiFramedRTPSink".
  2016.05.16:
  * Fixed a bug in "MultiFramedRTPSink" that affected
    subclasses that redefine "frameSpecificHeaderSize()"
    (for frame-specific headers that precede multiple frames
    in a RTP packet).  (Currently, the only subclass that
    this affected was "VorbisAudioRTPSink".)
    (Thanks to Gilles Chanteperdrix for reporting this bug.)
  * Made a minor update to the "ProxyServerMediaSession" code
    to better support optional media transcoding.
  2016.04.21:
  * Made it easier to set the MTU for all outgoing RTP
    packets, instead of having to call "setPacketSizes()"
    after each "MultiFramedRTPSink" is created.  If you wish,
    you can define the compile-time constants (macros)
    RTP_PAYLOAD_MAX_SIZE and (optionally) RTP_PAYLOAD_PREFERRED_SIZE
    when compiling "MultiFramedRTPSink.cpp".  (These constants
    have default values of 1456 and 1000 respectively, just as
    before.)
  * Updated "GroupsockHelper.{hh,cpp}" to (supposedly) support
    'MinGW' better
  2016.04.01:
  * Fixed a bug the "ProxyServerMediaSubsession" code that
    could cause an infinite loop if the 'back-end' server was
    slow to respond to "SETUP" requests.
    (Thanks to Erik Montnemery for helping to debug this.)
  * Added support for parsing/streaming Matroska files that
    contain PCM audio tracks.
    (Thanks to Michel Promonet.)
  2016.03.16:
  * Added some more debugging fprintf()s to the
    "ProxyServerMediaSubsession" code to try to track down a
    bug.
  * Simplified the "genMakefiles" script (moving duplicate
    code into a 'for' loop).
  2016.03.14:
  * Updated the proxy server implementation to better handle
    'front-end' clients that have asked to stream only some
    of the substreams of a multi-stream session.  Now, if a
    substream is closed (because all 'front-end' clients have
    stopped requesting it), but other front-end clients are
    still streaming other substreams, then we will send - to
    the 'back-end' server - only a substream-specific "PAUSE"
    command; not a "PAUSE" command for the entire stream.
    (Thanks to Lakshmi Narayanan for noting this issue.)
  * Added an optional "-p <RTSP-port-number>" option to the
    "LIVE555 Proxy Server", to allow the user to specify a
    RTSP server port number other than the standard port
    numbers: 554 and 8554. (These standard port numbers are
    still tried if the specified port number can't be used.)
    (Thanks to Denis Genestier for this suggestion.)
  2016.02.22:
  * Updated the "ProxyServerMediaSession" to add a Boolean
    virtual function "allowProxyingForSubsession()".
    By default, this always returns True.  However,
    subclasses can redefine this if they wish to restrict
    which subsessions of a stream get proxied - e.g., if
    you want to proxy only video tracks.
  * Improved the "WAVAudioFileSource" code (for parsing
    WAV-format audio files) to make it more tolerant of
    unusual formats.
  * Made it possible to build a version of the "liveMedia"
    library that doesn't contain any RTSP server code;
    e.g., if you are developing only a RTSP client, and
    want to save space. To do this, omit any files that
    contain "Server" or "RTPSink" in their name, and define
    OMIT_REGISTER_HANDLING when compiling "RTSPClient.cpp".
    (Thanks to Jeff Shanab for this suggestion.)
  2016.02.09:
  * Added an option "-E <absolute-seek-end-time>" to
    "openRTSP".
    (Thanks to Hans Maes for suggesting this.)
  2016.02.08:
  * Fixed a bug that was causing "playSIP" to crash.
    (Thanks to Vilaysak Thipavong for reporting this.)
  2016.01.29:
  * Updated "QuickTimeFileSink" to make it usable with non-RTP
    input sources. It still needs to have a "MediaSession"
    that describes the input source; however, this input source
    no longer needs to be RTP; it can, instead, be a UDP or
    other type of source. (Of course, audio/video synchronization
    and hint tracks can't be done in this case.)
  * Changed the name of a variable in the "Makefile.tail" file
    for the "BasicUsageEnvironment" project, in response to
    a complaint that the old name clashed with something in
    some Windows development environment
  2016.01.24:
  * Updated "ProxyServerMediaSession.cpp" to add some
    'internal error' debugging fprintf()s to try to catch a
    possible bug that was reported recently.
  2016.01.20:
  * When a server calls "startStream()" to start a RTSP stream
    for a client, we now no longer make a slight adjustment to
    the RTP timestamp sequence (using the "presetNextTimestamp()"
    call) if there is already another ongoing stream using the
    same "RTPSink".  The effect of this is only minor, but it
    ensures that the addition of an addition 'destination' to
    an ongoing RTSP/RTP stream does not cause any change to the
    contents of the RTP/RTCP packets.
    (Thanks to Erik Montnemery for noting this issue.)
  2016.01.16:
  * This release has no source-code changes from the previous
    release.  However, a test file was mistakenly left in the
    previous version; this produced an excessively-large tar file.
    This has now been removed.
  2016.01.12:
  * Added a hack to "RTSPClient" to handle the non-standard
    "com.ses.streamID:" header - used by 'SAT>IP' servers -
    by using its value in the 'base URL' for subsequent requests.
    (Thanks to Julian Scheel for proposing this.)
  2015.12.22:
  * Updated "QuickTimeFileSink" to add a sanity check to try
    to prevent an occasional problem with H.264 video tracks
    that contain 'sync frames'.
  * Updated the "config.linux-with-shared-libraries"
    configuration file to use the $(CC) and $(CXX)
    macros, to allow for cross-compiling.  (Thanks to Michel
    Promonet.)
  * Updated the years in the copyright notice on each file.
  2015.11.09:
  * Changed the "ProxyServerMediaSession" code once again.  We
    backed out the changes in the previous two releases,
    and now respond to failures of the back-end "SETUP"
    or "PLAY" commands by doing a full reset - which involves
    deleting the "ProxyServerMediaSubsession" object, and
    doing another "DESCRIBE" to create a new one.  However, we
    can't do this immediately - because the "SETUP" and "PLAY"
    commands can be sent from within
    "ProxyServerMediaSubsession::createNewStreamSource()".
    Instead, we wait until the next 'liveness' command, which
    will get sent immediately when we return to the event loop.
  * Our proxy server code no longer converts the "mode" string
    to lower case before passing it to
    "MPEG4GenericRTPSink::createNew()".  (This turned out to
    be unnecessary, and was breaking some clients that weren't
    treating this string as case-insensitive when they saw it
    in the stream's SDP descriptor.)  (Thanks to Craig Matsuura
    for noting this issue.)
  2015.10.29:
  * Updated the fix in the previous revision to apply to the
    back-end "PLAY" command as well as the back-end "SETUP"
    command, because both of these back-end commands can get
    sent from within
    "ProxyServerMediaSubsession::createNewStreamSource()", so
    we can't allow the "ProxyServerMediaSubsession" object
    to get deleted in either case.
* Fri Oct 16 2015 aloisio@gmx.com
- Update to version 2015.10.12:
  * The change that we made to the "ProxyServerMediaSession" code
    in version 2015.07.31 (to reset the proxy server's state if
    a back-end "SETUP" command fails) was too aggressive; it was
    deleting the "ProxyServerMediaSubsession" object.  This was
    a problem, because "SETUP" commands can be called from within
    "ProxyServerMediaSubsession::createNewStreamSource()".
    Instead, we now deal with a failed back-end "SETUP" command
    simply by resetting the 'back-end' connection. (Thanks to
    Hardik Sangani for reporting this issue.)
- 2015.09.24:
  * Fixed a bug in "RTSPClient" that could cause a crash if the
    TCP connection was lost while resending a RTSP command.
    (Thanks to ChaSeop Im for reporting this.)
  * Moved some more generic 'media server' functionality from
    "RTSPServer" to its parent class "GenericMediaServer".
  * Added a new pure virtual function "getRTPSinkandRTCP()"
    to "ServerMediaSubsession" to allow callers to get ('const')
    access to a stream's "RTPSink" and/or "RTCPInstance" (and
    thus their corresponding "Groupsock" objects) after the
    stream has been created (using "getStreamParameters()".
  * Updated "Groupsock" to allow for the possibility of there
    being more than one 'destRecord' for each sessionId.
    (This is something that doesn't happen in the normal case;
    it's only a special case for WebRTC.)
- 2015.08.07:
  * If a "RTCPInstance" happens to have both a source and a sink
    (an unusual situation), we now include both "SR" and "RR"
    reports in each outgoing RTCP report packet.
  * When a "RTPSink" is being closed, we no longer turn off
    background reading on its 'groupsock' (because, being a
    "RTPSink", we never turned it on), just in case the
    'groupsock' is also being shared with something else
    (e.g., a "RTPSource") that does background read handling).
- 2015.08.06:
  * Fixed a bug that would cause the destruction of a
    "RTCPInstance" that was sharing a 'groupsock'
    with a "RTPSource" (i.e., for multiplexed RTP and RTCP) to
    stop the "RTPSource" from continuing to receive incoming RTP
    packets.  This normally wasn't a major problem, because the
    destruction of the "RTCPInstance" was usually followed
    immediately by the destruction of the "RTPSource".
    However, it's also possible for the "RTPSource" to stay alive
    long after the "RTCPInstance" is deleted; in this case things
    will now work correctly.
- 2015.07.31:
  * Fixed a minor memory leak in the "ProxyServerMediaSession"
    code ("PresentationTimeSessionNormalizer"s and
    "PresentationTimeSubsessionNormalizer"s weren't being deleted
    properly). (Thanks to Dnyanesh Gate for reporting this.)
  * Made the "ProxyServerMediaSession" code a bit more
    bullet-proof, by resetting the 'back-end' connection if a
    "SETUP" command fails. (Thanks to Craig Matsuura for providing
    a real-world example of "SETUP" failing.)
  * Fixed the 'estimated bitrate' values in
    "testMPEG1or2VideoReceiver.cpp" and
    "testMPEG2TransportReceiver.cpp" to match those in the
    corresponding "test*Streamer.cpp" files.
    (Thanks to Alex Anderson for reporting this.)
- 2015.07.23:
  * Fixed a potential buffer overflow bug in "RTSPServer".
    (Thanks to "an anonymous researcher working with Beyond
    Security's SecuriTeam Secure Disclosure" for discovering this.)
- 2015.07.19:
  * Fixed a bug in "RTPInterface::sendDataOverTCP()"; it was
    disabling transmission on its socket if the "send()" call
    failed.  We now do this only if the error was not "EAGAIN".
    (Thanks to Erik Oomen for bringing this to our attention.)
  * Changed "QuickTimeFileSink" to try to work around an issue with
    QuickTime sometimes complaining about the frame number in the
    last 'sync frame' being 'out of range'.
  * Changed the parameter signature for
    "ProxyServerMediaSession::createNew()" (and the
    "ProxyServerMediaSession" constructor) to take a
    "GenericMediaServer*" rather than a "RTSPServer" as parameter.
    This makes it possible to create proxy servers that use protocols
    other than RTSP at the 'front-end'.  (The 'back-end' protocol will
    still be RTSP, however.)
  * Defined a new class "MediaTranscodingTable" that can be used to
    generate "FramedFilter" (subclass) objects that perform media
    transcoding.  Added a parameter of this type (with default value
    NULL) to the "ProxyServerMediaSession" constructor and
    "createNew()" function.  This makes it possible to - if you wish
  - add transcoding functionality to a proxy server.  (This feature
    is still experimental, and might be changed in the future.)
  * Added optional "initialPortNum" and "multiplexRTCPWithRTP"
    parameters to the "ProxyServerMediaSession" constructor - to be
    passed to the "ProxyServerMediaSubsession" objects that it creates.
    This allows subclasses to change these parameters if they wish.
  * Updated "ProxyServerMediaSession" to make it possible for
    subclasses to create subclasses of "Groupsock" and/or
    "RTCPInstance", if they wish.
- 2015.06.25:
  * Changed the definition of the "doEventLoop()" "watchVariable" to
    make it 'volatile'. (Ditto for the "fTriggersAwaitingHandling"
    field in the "BasicTaskScheduler" implementation.) This is to
    alleviate a concern about aggressive optimizing compilers
    possibly generating incorrect code.  (Thanks to Remi
    Denis-Courmont for bringing this issue to our attention.)
- 2015.06.24:
  * Updated the implementation of "GenericMediaServer" to move the
    code that removes and deletes all "ClientConnection",
    "ClientSession", and "ServerMediaS(ubs)ession" objects from the
    "GenericMediaServer" destructor to a member function "cleanup()".
    This member function MUST be called from the destructor of any
    subclass of "GenericMediaServer".  (Putting this code in the
    destructor of "GenericMediaServer" itself was a bug, because the
    "ClientConnection", "ClientSession", and
    "ServerMediaS(ubs)ession" objects may themselves have been
    subclassed, and there may be a problem deleting them after the
    "GenericMediaServer" subclass destructor has already been called.
    (Thanks to Christopher Benne for noting this.)
  * Fixed the way that "RTSPClient" handles responses to
  "GET_PARAMETER" to properly allow for possible additional
    pipelined responses appearing afterwards.
    (Thanks to Paul Clark for identifying this problem.)
  * Moved the "ClientSession" liveness checking/timeout mechanism
    from "RTSPServer" to its new abstract base class
    "GenericMediaServer".  (The API and functionality of the
    "RTSPServer" class remains unchanged.)
  * Updated the "OnDemandServerMediaSubsession" code to make it
    possible for subclasses to create and use subclasses of
    "RTCPInstance".
  * Undid the change that we made to "RTSPClient.hh" in the
    previous version.  There is no longer a demonstrated need to
    make "RTSPClient::connectToServer()" virtual.
  * Made a syntactic change to "MatroskaFile.cpp" to eliminate
    some compiler warnings.
- 2015.06.21:
  * Updated "RTSPClient" to put "port=" rather than "client_port="
    in "Transport:" headers when requesting a multicast stream,
    in accordance with RFC 2326.
    (Thanks to Julian Scheel for noting this.)
  * Updated "MultiFramedRTPSource" so that it doesn't deliver
    0-length frames to the downstream object - in case the
    downstream object interprets this as being an error.
    (Thanks to Julian Scheel for the suggestion.)
  * Made the member function "RTSPClient::connectToServer()"
    virtual, in response to a request from a developer who wanted
    to reimplement this in their "RTSPClient" subclass.
  * Changed the "Groupsock::output()" function to no longer
    take a 'TTL' parameter. (Instead, we now use the TTL (usually
    255) that was provided when the "Groupsock" object was
    created.)
  * Cleaned up the "GroupEId" class that's used by "Groupsock".
    (Previously, that class had some extra, experimental
    functionality that turned out not to be useful.)
  * Cleaned up the "destRecord" structure that's used in
    "Groupsock" to represent the (possibly multiple) destinations
    for each "Groupsock" object.
  * Updated the "groupsock" library and
    "OnDemandServerMediaSubsession" to better support (in some
    future release) sockets whose destination endpoints are set
    via STUN packet exchanges.
- 2015.06.11:
  * Fixed a bug in "RTSPClient" that had accidentally been
    introduced in version - 2015.06.04 that prevented "Session:"
    headers from being included in some requests.
- 2015.06.10:
  * Fixed the return type of the "createNewClientConnection()"
    virtual function, redefined in
    "RTSPServerSupportingHTTPStreaming".
  * More changes to satisfy anal-retentive compilers.
  * Removed the "DarwinInjector" code; that functionality has
    not been supported for some time.
- 2015.06.09a:
  * More changes to supposedly satisfy anal-retentive compilers.
- 2015.06.09:
  * Added some "friend" declarations to "GenericMediaServer.hh"
    and "RTSPServer.hh" in an attempt to placate an anal-retentive
    Windows compiler.  (Issue reported by Deanna Earley.)
- 2015.06.07:
  * Restructured the "RTSPServer" class into an abstract base
    class "GenericMediaServer" and a subclass "RTSPServer".
    This makes it possible to develop other kinds of media server
    that use the same "ServerMediaSession"/"ServerMediaSubsession"
    objects to represent the stream(s) that they serve, but using
    protocols other than RTSP.
  * Added a new virtual function "createGroupsock" to
    "OnDemandServerMediaSubsession". This makes it possible for
    subclasses of "OnDemandServerMediaSubsession" to automatically
    use subclasses of "Groupsock" (e.g., those that implement
    STUN/DTLS).
  * Moved the "ignoreSigPipeOnSocket()" function from
    "RTSPCommon.hh" ("liveMedia" library) to "GroupsockHelper.hh"
    ("groupsock" library), because the function is not specific to
    RTSP.
- 2015.06.04:
  * Added optional support for including the RTSP "Speed:" header
    in "PLAY" requests. (Thanks to Sarma Kolavasi.)
  * Updated the implementation of "setResultErrMsg()" in
    "BasicUsageEnvironment" to work properly in Windows.
    (Thanks to Stas Tsymbalov.)
- 2015.05.31:
  * Updated the "ProxyServerMediaSession" code to recover better
    if a back-end RTSP "PLAY" command fails (for whatever reason).
    Should this happen, we now reset the connection to the
    'back-end' server.  (This will cause the initial 'front-end'
    client connection (that caused the "PLAY" command to be sent)
    to fail, but subsequent 'front-end' client requests will now
    have a better chance of succeeding.)
- 2015.05.28:
  * Fixed a bug in error reporting in the "groupsock" library.
    In a couple of places, we were using the result of
    "getResultMsg()" directly in a call to "setResultMsg()", but
    unfortunately those functions are implemented (at least in
    "BasicUsageEnvironment") using the same buffer.
    (Thanks to Stas Tsymbalov for reporting this.)
  * Updated the "MPEGVideoStreamFramer" class (and thereby its
    subclasses, including "H264VideoStreamFramer" to implement
    the "doStopGettingFrames()" virtual function by calling
    "flushInput()".  This should fix a potential problem whereby
    these classes might not work correctly if the downstream
    reader calls "stopPlaying()", and then resumes reading.
    (Thanks to Stas Tsymbalov for bringing this issue to our
    attention.)
- 2015.05.25:
  * Fixed a bug in "StreamReplicator::removeStreamReplica()":
    It should have been calling "deactivateStreamReplica()"
  * before* possibly deleting the "StreamReplicator" object
    (if this was the last replica, and
    "fDeleteWhenLastReplicaDies" was True).
    (Thanks to Stas Tsymbalov for reporting this.)
  * Fixed some potential problems with "StreamReplica"
    deactivation.  (Thanks to Stas Tsymbalov.)
  * Updated the "RTSPServer" implementation to call
    "ignoreSigPipeOnSocket()" on 'client connection' sockets,
    rather than just on the main server socket.  This is to
    ensure that the server doesn't get killed if a client -
    running on the same host - gets killed.  (Note that, because
    of this fix, it should never be necessarily to set the
    "MSG_NOSIGNAL" flag on any of our calls to "send()".)
- 2015.05.12:
  * Updated the previous revision to change the order in which
    fields are deleted in the "RTSPServer" destructor, to avoid
    a possible crash if "RTSPServer" objects are deleted.
    (Thanks to ChaSeop Im for noting the problem.)
- 2015.05.03:
  * Updated the "RTSPServer" implementation to fix a bug in
    RTP/RTCP-over-TCP streaming. Before, if the
    "RTSPClientConnection" object closed before the
    "RTSPClientSession" object, and the TCP connection was also
    being used for RTP/RTCP-over-TCP streaming, then the streaming
    state (in the "RTSPClientSession") would stay alive, even
    though the TCP socket had closed (and the socket number
    possibly reused for a subsequent connection). This could cause
    a problem when the "RTSPClientSession" was later reclaimed
    (due to inactivity). Now, whenever a "RTSPClientConnection"
    object is closed (due to the RTSP TCP connection closing), we
    make sure that we also close any stream that had been using
    the same TCP connection for RTP/RTCP-over-TCP streaming.
    (Thanks to Kirill Zhegulev for noting this issue.)
  * Removed extraneous comments near the top of
    "testProgs/registerRTSPStream".
- 2015.04.22:
  * Updated "config.iphone" and "config.iphone-simulator" to work
    with the latest Xcode. (Thanks to Braden Ackerman.)
  * Fixed a rare memory leak in "MultiFramedRTPSource" that might
    occur if it's reading an incoming packet over TCP - requiring
    >1 read for the packet - and the "MultiFramedRTPSource" gets
    closed or paused while this is happening.
    (Thanks to Kirill Zhegulev for noting this.)
- 2015.04.16:
  * Added the "f" (force symbolic link) flag to the "ln" command
    in the "make install" Makefile rules, in case you're
    reinstalling the same version of a library.
    (Thanks to Luca Ceresoli for noting the need for this.)
- 2015.04.15:
  * Removed the previous (20 kByte) hard-wired limitation in the
    size of incoming packets for "MultiFramedRTPSource".  (Now,
    any size packet up to the maximum size of 65535 can be
    handled.)
  * Added a (u_int16_t) field "desiredMaxIncomingPacketSize" to
    "RTSPClient".  If set to a value >0, then a "Blocksize:"
    header with this value (minus an allowance for IP, UDP, and
    RTP headers) will be sent with each "SETUP" request.
    (Thanks to Deanna Earley for noting the optional RTSP
    "Blocksize" header.)
- 2015.04.01:
  * By default, "H264or5VideoStreamDiscreteFramer" sets
    "fPictureEndMarker" (and thus the RTP 'M' bit) if the NAL
    unit is VCL.  Because this isn't always the right thing to do
    (e.g., if we're delivering multiple 'slice' NAL units per
    'access unit' (picture)), we now move this test into a virtual
    function
    "H264or5VideoStreamDiscreteFramer::nalUnitEndsAccessUnit()".
    If desired, you can implement a subclass that redefines this
    virtual function. (Thanks to Chris Richardson for bringing
    this issue to our attention.)
  * Made a minor syntactic change to
    "ProxyServerMediaSubsession.cpp" to ensure that it compiles
    with some old versions of VC++.
- 2015.03.19:
  * Updated the "RTSPClient" code for handling a
    "WWW-Authenticate:" header in a "401 Unauthorized" response.
    We now check for the "stale=TRUE" parameter.  If it's set,
    then we resend the command, even if we already handled an
    earlier "WWW-Authenticate:" header. (Thanks to Deanna Earley
    for noting the need to handle "stale=TRUE".)
- 2015.03.16:
  * Made a small change to the "BasicTaskScheduler"
    implementation to reduce the likelihood of a race condition
    with external thread(s) calling "triggerEvent()".
- 2015.03.06a:
  * Oops - forgot to add '\0'-termination to the previous fix.
- 2015.03.06:
  * Updated "RTSPClient" to decode %-encoded characters, should
    they appear in the <username> and/or <password> fields in a
    "rtsp://" URL. (Thanks to Deanna Earley for suggesting this.)
- 2015.03.01:
  * Updated the "H264or5VideoRTPSink" implementation to make sure
    that any stale fragmented data is flushed (discarded) if a
    server's stream is paused.  This ensures that - after we
    resume from the pause - that we never stream data with old
    presentation times. (Thanks to Gilles Chanteperdrix for
    discovering and reporting this issue.)
- 2015.02.26:
  * Fixed a bug in "ProxyServerMediaSubsession" that could cause a
    crash if the parent "ProxyServerMediaSession" object is
    removed from the RTSP server and deleted. (Thanks to Sergio ?
    for first reporting this problem.  Thanks to Chiung Ikhwan
    for discovering the source of the bug.)
- 2015.02.23:
  * Fixed a bug in
    "OnDemandServerMediaSubsession::getCurrentNPT()".
    (Thanks to Gilles Chanteperdrix for noting this.)
- 2015.02.17:
  * Latest version of the "LIVE555 Streaming Media" code
  (reinstalled due to a server crash).
- 2015.02.13:
  * Oops - removed the "#define DEBUG" that had inadvertently
    been left in "RTCP.cpp" in the previous version.
- 2015.02.12:
  * Updated the previous release of "RTCP.cpp" to ensure that it
    will compile for Windows.
- 2015.02.10:
  * Added experimental support for sending RTCP "APP" packets,
    and handling incoming RTCP "APP" packets.  (Thanks to Nick
    Ogden for suggesting this, and providing an example
    implementation.)
- 2015.02.05:
  * Made the "ProxyServerMediaSession" code a bit more
    'bulletproof'.
- 2015.02.04:
  * Fixed a bug in "DigestAuthentication" that could cause the
    proxy server code to crash if it was given a username and
    password for its 'back end' server.
    (Thanks to Sergio Andrade  for reporting this.)
  * Fixed a minor bug in "MatroskaFileParser".
  * Did some syntactic cleanup on a few files to avoid compiler
    warnings with the newest version of "gcc".
* Sat Jan 31 2015 aloisio@gmx.com
- fixed paths in live555.pc
- update to version 2015.01.27:
  * Fixed a bug in "MPEG2TransportStreamFromESSource" that could
    sometimes cause an abort if more than one Elementary Stream
    Source were multiplexed into a single Transport Stream.
    (Thanks to Marc Palau for reporting this issue.)
- version 2015.01.19:
  * Fixed an obscure bug in "RTSPClient" that might conceivably
    have caused a crash if it received a completely empty RTSP
    response.
- version 2015.01.04:
  * Updated "config.iphone-simulator" to work with the latest Xcode.
    (Thanks to Braden Ackerman.)
  * In the "BasicUsageEnvironment" implementation, renamed
    "EventTime" to "_EventTime" to avoid a reported naming conflict.
- version 2014.12.17:
  * Updated "RTSPServerSupportingHTTPStreaming" to make sure that
    the data stream source gets closed when it's no longer needed.
- version 2014.12.16:
  * Changed the FD_SETSIZE check (introduced in version 2014.12.11)
    so that it's not done in Windows (because in Windows,
    FD_SETSIZE has different semantics).
    (Thanks to Deanna Earley for reporting this.)
- version 2014.12.13:
  * Updated the H.264/H.265 parsing code in "H264or5VideoStreamFramer"
    to be a little smarter about how it computes a file's frame rate
    (when streaming a 'raw' H.264 or H.265 file).
    (Thanks to Michel Promonet for inspiring this.)
  * Updated "config.iphoneos" to work with the latest Xcode.
    (Thanks to Braden Ackerman.)
- version 2014.12.11:
  * Changed our implementation of "setBackgroundHandling()" and
    "moveBackgroundHandling()" in "BasicTaskScheduler" to check for
    (and disallow) socket numbers >= FD_SETSIZE, because <sys/select.h>
    has a bug (at least, in most systems) that causes buffer overflow
    in this case.  (Thanks to Michel Promonet for pointing this out.)
- version 2014.12.09:
  * Needed to make the "QuickTimeFileSink" constructor and destructor
    protected: to allow subclassing.
- version 2014.12.08:
  * Fixed a bug in parsing 'absolute' RTSP "Range:" headers with no end
    time. (Thanks to Ken Chow for reporting this.)
  * Added a new option "-K" to "openRTSP, to tell the client to
    periodically send "OPTIONS" requests as 'keep-alives' for buggy
    servers that don't use incoming RTCP "RR" packets to indicate client
    liveness.  (Thanks to Peter Schlaile for this suggestion.)
  * Added a new 'protected' virtual member function "noteRecordedFrame()"
    to "QuickTimeFileSink". This function is called whenever a frame is
    recorded to the output file. The default implementation of this
    virtual function does nothing, but subclasses can redefine it if
    they wish.
- version 2014.11.28:
  * When "RTSPClient" parses a RTSP response, we first skip over any
    blank lines that may be at the start of the response.  This can
    happen if the previous response (e.g., to a "DESCRIBE") contained
    extra whitespace. (Thanks to ilwoo Nam for giving an example of
    a server that exhibited this behavior.)
- version 2014.11.12:
  * We had forgotten to initialize the "RTSPClient" member variable
  "fAllowBasicAuthentication" that we introduced in the previous
  version.
- version 2014.11.07:
  * Added a new "RTSPClient" member function "disallowBasicAuthentication()"
    that you can call if you don't want a RTSP client to perform 'basic'
    authentication (whcih involves sending the username and password over
    the network), even if the server asks for this.
    (Thanks to Tomasz Pala for this suggestion.)
  * Updated the debugging printout code in "RTCP.cpp" to identify all
    known RTCP payload types, even if we don't currently handle them.
    We also - when doing debugging printout - parse and print out
    the contents of SDES RTCP packets.
- version 2014.11.01:
  * Updated "RTSPClient" so that it reuses "fCurrentAuthenticator"
    if we previously updated it with data from a "WWW-Authenticate:"
    response, even if a non_NULL "authenticator" parameter was
    passed as a parameter to the command.  This reduces the number
    of authetication exchanges that take place if the server asks
    for authentication on more than one command in a RTSP session.
    (Thanks to Tomasz Pala for this suggestion.)
  * Updated "DigestAuthenticator" to allow for the possibility of
    "username" or "password" being NULL.
  * Updated the "RTSPServer" implementation to add an access check
    before the first "SETUP" (the one that doesn't include a
    session id), because it's possible, in principle, for a client
    to send such a "SETUP" without first sending a "DESCRIBE".
    Therefore, we need to perform access checks on both commands.
- version 2014.10.28:
  * Added support for the VP9 video RTP payload format (sending and
    receiving), including the demultiplexing and streaming of a VP9
    video track from a Matroska-format file.
  * Made "VP8VideoRTPSource" more robust against a bad first-byte
    header field in the payload.
- version 2014.10.21:
  * Increased the max output packet size for "MultiFramedRTPSink"
    and "RTCPInstance" from 1448 to 1456, because we had a report
    of problems when proxying incoming JPEG/RTP packets of this
    size (and because 1456 bytes still gives a packet size of no
    more than 1500 bytes when we add
    in IP, UDP, and UMTP headers).
- version 2014.10.20:
  * Increased the RTSP request and response buffer sizes from 10000
    to 20000 bytes, because we saw a RTSP stream (VP8 video) that
    had an extremely large "configuration=" string that was hiting
    the previous limit.
- version 2014.10.16:
  * Fixed the "RTSPServer" implementation to handle a rare race
    condition that could cause a "ServerMediaSession" object to
    be deleted while it was being used to implement "DESCRIBE".
    (Thanks to Michel Promonet for reporting this.)
- version 2014.10.07:
  * Fixed a bug in the "MultiFramedRTPSource" implementation where
    we weren't properly checking the size of incoming RTP packets
    that have the "CC" field (i.e., number of "CSRC" fields) non-zero.
  * Updated "Groupsock::output()" to be a virtual function.
    (This makes it possible to implement "Groupsock" subclasses that
    implement 'bump-in-the-stack' protocols (such as SRT(C)P) below
    RTP/RTCP.)
- version 2014.10.03:
  * Fixed a problem in the "timestampString()" routine that occurs
    if "time_t" is 64 bits, but we're on a 32-bit machine.
    (Thanks to Deanna Earley for reporting this.)
  * Updated the debugging output code in "RTCP.cpp" to make it
    clearer that SDES and APP packets are not invalid; just not
    (yet) handled by us.
* Wed Oct 29 2014 olaf@aepfle.de
- BuildRequire pkg-config to get rpm Provides/Requires pkgconfig(live555)
* Mon Oct 06 2014 aloisio@gmx.com
- Added support for pkg-config by creating the relevant .pc file
* Thu Oct 02 2014 dimstar@opensuse.org
- Update to 2014.09.22:
  + Changed the way in which the "RTSPServer" code handles incoming
    "OPTIONS" commands that contain a "Session:" header. If the
    "Session:" header contains a session id that does not exist,
    then we now return a "Session Not Found" error (even though the
    handling of the "OPTIONS" command is not session-specific).
    This new behavior will help proxy servers (that use our
    "RTSPServer" implementation as a 'back-end' server) better
    detect when the back-end server has restarted while streaming.
  + For all other changes since 2013.04.30, please see
    http://www.live555.com/liveMedia/public/changelog.txt.
* Mon Mar 04 2013 dimstar@opensuse.org
- Update to version 2013.04.30:
  + One year worth of updates... see changelog.
* Sun Feb 05 2012 dimstar@opensuse.org
- Update to version 2012.02.04:
  + Updated "WAVAudioFileSource" to read from its input file
    asynchronously, if possible, rather than doing a synchronous
    (blocking) read.
- Changes from version 2012.02.03:
  + Updated "RTSPClient" to - after receiving a "SETUP" response
    for a UDP stream - send a couple of short 'dummy' UDP packets
    to the server.  This will make it more likely that the
    incoming RTP/UDP packets will successfully traverse a NAT box
    (if the client is behind a NAT).  (Note that we don't do this
    for RTCP, because the client's regular RTCP "RR" packets will
    have the same effect.)
  + Changed the way that the "sessionId" member field in
    "MediaSubsession" is managed.  Its memory is now managed by
    "MediaSubsession" itself, rather than by "RTSPClient" (as it
    was previously).  With the previous behavior, "valgrind"
    (incorrectly) reported a possible memory leak. The new behavior
    should make 'valgrinerds' happy.
- Drop patches that were required by VideoLAN: fixed upstream:
  + live-getaddrinfo.patch
  + live-inet_ntop.patch
  + live-uselocale.patch
* Tue Jan 31 2012 dimstar@opensuse.org
- Update to version 2012.01.26.
* Wed Nov 16 2011 dominique-vlc.suse@leuenberger.net
- Rewrite part of the .spec file.., Cleaner installation.
* Wed Nov 16 2011 dominique-vlc.suse@leuenberger.net
- Add VideoLAN required patches for proper funtioning of live555:
  + live-getaddrinfo.patch
  + live-inet_ntop.patch
  + live-uselocale.patch
* Wed Nov 16 2011 dominique-vlc.suse@leuenberger.net
- Update to version 2011.11.08:
  + Added "VorbisAudioRTPSink" and "VorbisAudioRTPSource" for
    sending/receiving Vorbos audio RTP streams (based on RFC 5215).
  + Added "VP8VideoRTPSink" and "VP8VideoRTPSource" for
    sending/receiving VP8 video RTP streams.
  + Added support for extracting and streaming Vorbis audio tracks
    from Matroska (including WEBM) files.
  + Added support for extracting and streaming VP8 video tracks
    from Matroska (including WEBM) files.
  + Updated the "testOnDemandRTSPServer" and "LIVE555MediaServer"
    (source-code version only) applications to support streaming
    from ".webm' files.
  + Fixed frame durations for data extracted from Matroska tracks
    that don't have a 'default duration'.
  + Fixed a memory leak in "RTSPClient::sendOptionsCmd()".
* Sat Oct 22 2011 dominique-vlc.suse@leuenberger.net
- Update to version 2011.10.18:
  + Improved "RTSPServer" support for subdirectories in "rtsp://"
  URLs (handling this better for non-compliant clients that try to
  do a "SETUP" on agrregate URLs - when there is only a single
  subsession in the stream).
- Add a -devel subpackage, obsolete the now empty subpackage by it.
- Drop rpmlintrc file, as the devel files are now in a devel
  package.
* Thu Jun 30 2011 dominique-vlc.suse@leuenberger.net
- Update to version 2011.06.16
* Sat Oct 02 2010 dominique-vlc.suse@leuenberger.net
- Update to 2010.09.25
* Mon Aug 31 2009 dominique-vlc.suse@leuenberger.net
2009.07.28:
- Updated "QuickTimeFileSink" to add a "stss" atom for video streams, following a suggestion by Gerardo Ares.
  (At present we just 'guess' which video 'samples' (frames) are 'key frames', so this might not work properly on some
  video streams.)
- Modified the "config.uClinux" configuration file, following a suggestion by Chetan Raj.
- Changed "RTSPClient"s implementation of the RTSP "TEARDOWN" command to always act as if the command succeeded, regardless of
  the actual response from the server (because, from the client's point of view, the session has ended).
  (This overcomes a potential memory leak, pointer out by Stuart Rawling.)
  2009.07.09:
- Modified the RTSP server implementation to - for streams where there is a known duration - always include a range end time
  in the RTSP "PLAY" response, even if the client did not specify one in the "PLAY" request.  This allows VLC's client
  'trick play' to (mostly) work.
- Updated "MediaSession::initiate()" to eliminate a possible memory leak if we get an error in socket creation.
  (Thanks to Denis Charmet.)
- Made a minor change to "MultiFramedRTPSink" to make monitoring/debugging easier.  (Thanks to Guy Bonneau.)
- Begun adding support for DV video.  However, this implementation is still incomplete.  DO NOT USE IT!
  2009.06.02:
- Updated the MPEG Transport Stream multiplexor implementation to allow for H.264 video.  (Thanks to Massimo Zito.)
- Updated "MultiFramedRTPSink" to allow for subclasses for RTP payload formats (such as DV, coming soon) that impose
  a granularity on RTP fragment sizes.