Tags: greenjava/live555
Tags
Updated to live555 2025.09.17 2025.09.17: - The previous release was not quite correct. This fixes it. 2025.09.16: - Fixed an issue in the "decodeURL()" function in "RTSPCommon.cpp" that was supposedly causing a crash when run in Windows. (Thanks to Eric Beuque for the report.) 2025.07.19: - Fixed the server handling of incoming TLS connections to close the connection if the call to "ServerTLSState::accept()" fails with an error (so that the server doesn't go into an infinite loop trying to keep handling the connection). (Thanks to Yahia Benmoussa for reporting this.) 2025.07.10: - Updated the "ClientTLSState" code to allow for the possibility of performing extra checking (e.g. on the server certificate) during the setup of a TLS connection. See the "TLSState.hh" header file for details. (Thanks to Yahia Benmoussa and Jonatahn Brady for this suggestion.) 2025.05.24: - Updated the "Makefile.tail" templates to fix a minor bug in dependencies if Makefiles are generated for the "linux-with-shared-libraries" configuration, and then make is run in parallel. (Thanks to Sergei Trofimovich for the report.) 2025.05.08: - In the "BufferedPacket" destructor (in "MultiFramedRTPSource.cpp"), explicitly replace tail recursion with iteration, in case the compiler isn't smart enough to do this. (Thanks to Eric Beuque for the report.) 2025.04.25: - Updated the "rtcp_from_spec" code to use the same (LGPL) license as the rest of the code. 2025.01.17: - In the "SRTPCryptographicContext" constructor, make sure that "fSendingROC" is initialized, to fix a potential 'reference when uninitialized' error. (Thanks to Christian Haas for reporting this.) 2024.11.28: - Updated the signature of "doEventLoop()" to match that of "triggerEvent()", by using "std::atomic_char" as the 'watch variable' type (if NO_STD_LIB is not defined) - Performed the annual update of the copyright years near the start of each file 2024.10.31: - Yet another fix to the (excrutiatingly tricky) SRTP/ROC-handling code. (Thanks to Jean-Baptiste Renou.) 2024.10.30: - Another fix to the code for SRTP streaming: Make sure that the RTCP instance's cryptographic context gets updated whenever the RTP sink's cryptographic context changes. (Thanks again to Jean-Claude Saget.) 2024.10.29: - A fix to the previous release fixing code for streaming SRTP to a new client from an ongoing stream. (Thanks again to Jean-Claude Saget.) 2024.10.24: - Another change to the code for streaming SRTP to a new client from an ongoing stream: If the ROC changes, then generate a new SDP description, but not a new stream source or RTP sink. (Thanks to Jean-Claude Saget for reporting this issue.) 2024.10.11: - Fixed another RTSP server bug in the implementation of RTP-over-TCP streaming. (Thanks again to Sangjun Park.) 2024.10.10: - Fixed a stack-use-after-return bug in the RTSP server implementation. (Thanks to Sangjun Park for reporting this.) 2024.10.09: - Fixed a RTSP server bug in the implementation of RTP-over-TCP streaming that could cause a "RTSPClientConnection" object to be accessed after it had been deleted. (Thanks to Sangjun Park for reporting this issue.) 2024.09.29: - Fixed a bug in "ProxyServerMediaSession.cpp" that could cause an 'access after free' error if the proxy server's "-V" option were used. (Thanks to Andrey Radchenko for reporting this.) 2024.09.25: - Fixed another bug in SRTP streaming from a "reuseFirstSource" stream: Make sure we use the same keying material for each client. 2024.09.24: - Removed an experimental version of "testOnDemandRTSPServer.cpp" (for streaming via SRTP) that had acceidentally been left in the previous release. 2024.09.20: - Ensure that, when streaming SRTP, any change to the server's ROC (rollover counter) gets sent to the RTSP client (in the SDP description), if it joins an ongoing stream. (Thanks to Yahia Benmoussa for reporting this issue.) 2024.08.01: - Updated "ServerMediaSession::generateSDPDescription()" to treat "time_t" as (long long). (Thanks to Godmar for reporting this.) 2024.06.26: - Updated the "OnDemandServerMediaSubsession" implementation to output an error message if the "sink->startPlaying()" call failed (e.g., due to its source not being compatible with the sink). This makes some common errors (e.g, a proper 'framer' not being used) easier to detect. 2024.05.30: - Fixed a mistake that caused the config file "config.raspberrypi" to not appear in the distribution. (It's there now.) 2024.05.15: - Added a new config file "config.raspberrypi" that is known to work for building the code on/for a Raspberry Pi 5. 2024.05.05: - Updated "QuickTimeFileSink" to add support for recording H.265 video streams. (This is not fully working yet; it appears to have some bugs.) 2024.04.19: - Updated "MPEG2TransportStreamFramer" to ignore big jumps (2x or more) in the estimate for the duration of each Transport packet. This is likely caused by an unexpected jump in the PCR (not indicated by "discontinuity_indicator"). (This is in response to a report from Andy Hawkins.) 2024.04.14: - Added constant strings and ints to each library that allow you to get the library version at runtime, rather than just at compile time. For example, for the "liveMedia" library, these are: extern char const* const liveMediaLibraryVersionStr; extern int const liveMediaLibraryVersionInt; (Thanks to Paul Westlund for this suggestion.) 2024.03.08: - Changed "ServerTLSState::setup()" (in "TLSState.cpp") to call "SSL_CTX_use_certificate_chain_file()" instead of "SSL_CTX_use_certificate_file()", to allow the server operator to specify a chain of certificates, rather than just one. (Thanks to Raphael Schlarb for this suggestion.) 2024.02.28: - Updated the code for "dateHeader()" (in "RTSPCommon.cpp") to avoid using "strftime()", because that can produce a localized date string that violates the RTSP specification (which uses section 3.3.1 of RFC 2068 (the HTTP/1.1 specification) to define the "Date:" header). (Thanks to Lauri Nurmi for reporting the problem, and providing a patch.) 2024.02.23: - Updated the code for "dateHeader()" (in "RTSPCommon.cpp") to use "NULL" instead of "nullptr"; the latter was causing compilation problems for someone. 2024.02.15: - Updated the RTCP implementation so that reception stats for a SSRC are no longer deleted, even if a SSRC is reaped due to RTCP inactivity (no RTCP "SR" reports received recently). 2023.11.30: - In the implementation of the "MPEGVideoStreamFramer" class, gave "TimeCode::operator==()" the "const" qualifier, to make some compilers happy. (Thanks to Dmitry Bely for the report) - Performed the annual update of the copyright years near the start of each file 2023.11.08: - Changed the signature to the virtual function "getRTPSinkandRTCP()" (in "ServerMediaSubession", and its subclasses "OnDemandServerMediaSession" and "PassiveServerMediaSubsession") to make its 'result' arguments "rtpSink" and "rtcp" no longer "const *". There was no real reason to make those "const *". (Thanks to Andy Hawkins for prompting this.) 2023.11.07: - In the class "GenericMediaServer", made the variables "fServerMediaSessions", "fClientConnections", and "fClientSessions" 'protected' rather than 'private', to allow subclasses to access them if desired. 2023.10.30: - Fixed a bug in "deleteEventTrigger()" that had accidentally been introduced during the change to 'event trigger' implementation back in June. (Thanks to Jörg Dommaschk for reporting this.) 2023.07.24: - Updated the event trigger implementation once again, to allow for the possibility of developers redefining MAX_NUM_EVENT_TRIGGERS (it must always be <= the number of bits in an "EventTriggerId", though. (Thanks to Jan Rørgaard Hansen for this suggestion.) 2023.06.20: - Updated the event trigger implementation again - in the case where "NO_STD_LIB" is defined. In this case, "fTriggersAwaitingHandling" is implemented as an array of "Boolean volatile"s, rather than as a 32-bit bitmap. This should make 'race conditions' less likely even if "NO_STD_LIB" is defined (though you should use the preferred, default implementation - that uses an array of "std::atomic_flag"s - if possible). 2023.06.16: - Changed the (default) implementation of 'event triggers' in "BasicTaskScheduler" to implement "fTriggersAwaitingHandling" using "std:atomic_flag"s, rather than as a bitmap. This should overcome 'race conditions' that some users experienced when calling "triggerEvent()" from a non-LIVE555 thread. (Thanks to Jan Rørgaard Hansen for reporting this issue.) Note that this is the first time the LIVE555 code has required the C++ standard library. (If you cannot use the C++ standard library, then you can compile the code - but getting the old behavior - by defining "NO_STD_LIB".) - Minor change to "RTSPCommon.cpp" to overcome a compilation error in XCode on Mac OS X. 2023.06.14: - Fixed a bug in the Matroska file parsing code that could sometimes cause a 'use after free' error. (Thanks to Meng Ruijie, Martin Mirchev, and "jerry testing" for reporting this.) 2023.06.10: - Minor change to "GroupsockHelper.cpp" to overcome a compilation error in XCode on Mac OS X. 2023.06.08: - Updated the "dateHeader()" function in "RTSPCommon.cpp" to use "gmtime_r()" instead of the older, non-thread-safe "gmtime()". (Thanks to Russell Greene for the patch.) 2023.05.10: - Fixed a minor memory leak in the "RTSPServer" code. (Thanks to Zhudong Jie for reporting this.) 2023.03.30: - Calls to "send()" and "sendto()" now explicitly take "MSG_NOSIGNAL" rather than 0 as the 'flags' parameter. In most systems, 0 seems to work, but apparently not in Debian Linux. (Thanks to Eric Beuque for reporting this.) 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. (From now on, if you still want to use "gethostbyname()" for Windows, edit the "win32config" file before running "genWindowsMakefiles".) 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). (Thanks to Jan Rørgaard Hansen for reporting this issue.) - Performed the annual update of the copyright years near the start of each file 2022.12.01: - Yet another fix to the previous fix for RTSP-over-HTTP streaming. 2022.11.30: - The previous version's fix to "RTSPClient" (for RTSP-over-HTTP streaming) was incomplete. This should fix it for real. 2022.11.29: - 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. 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. (Thanks to Yahia Benmoussa for the patch.) 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. 2022.09.30: - 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. (By default, the function does nothing.) (Thanks to Joerg Dommaschk for this suggestion.) 2022.07.14: - (This does not change the code at all.) We now use SHA-1 rather than MD5 to hash the latest tarball of our code (as SHA-1 is considered a more secure hash than MD5). 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. (This does not apply to a RTSP server that streams SRTP/SRTCP. In that case, sending SRTP/SRTCP over a TLS connection would add unnecessary overhead, so is not supported.) 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. 2022.04.26: - A minor update to the previous release, to ensure that we don't call "delete[]" on an uninitialized pointer. 2022.04.25: - Updated "RTSPClient" so that it can optionally include a "Require:" header in RTSP commands. (See the definition of "setRequireValue()" in "include/RTSPClient.hh") (Thanks to Gregory Chiapa from Thales Group for suggesting this.) 2022.04.15: - Fixed a "fprintf()" argument-order-evaluation bug in the "mikeyParse" demo application. (Thanks to Taeho Kim for reporting this.) 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'. (This is analogous to the existing '-a' and '-v' options, for receiving only audio or video.)