r1411 - in /unstable/liblivemedia/debian: patches/040_changelog.diff patches/series rules upstream.changelog
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Wed Aug 27 06:59:36 UTC 2008
Author: siretart
Date: Wed Aug 27 06:59:36 2008
New Revision: 1411
URL: http://svn.debian.org/wsvn/pkg-multimedia/?sc=1&rev=1411
Log:
include changelog as debian/upstream.changelog instead as quilt patch. this makes updates to the changelog easier
Added:
unstable/liblivemedia/debian/upstream.changelog (contents, props changed)
- copied, changed from r1408, unstable/liblivemedia/debian/patches/040_changelog.diff
Removed:
unstable/liblivemedia/debian/patches/040_changelog.diff
Modified:
unstable/liblivemedia/debian/patches/series
unstable/liblivemedia/debian/rules
Modified: unstable/liblivemedia/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-multimedia/unstable/liblivemedia/debian/patches/series?rev=1411&op=diff
==============================================================================
--- unstable/liblivemedia/debian/patches/series (original)
+++ unstable/liblivemedia/debian/patches/series Wed Aug 27 06:59:36 2008
@@ -4,4 +4,3 @@
020_invalid_casts.diff
021_ip_mreq_source.diff
022_safe_setlocale.diff
-040_changelog.diff
Modified: unstable/liblivemedia/debian/rules
URL: http://svn.debian.org/wsvn/pkg-multimedia/unstable/liblivemedia/debian/rules?rev=1411&op=diff
==============================================================================
--- unstable/liblivemedia/debian/rules (original)
+++ unstable/liblivemedia/debian/rules Wed Aug 27 06:59:36 2008
@@ -25,6 +25,7 @@
build: build-stamp
build-stamp: configure-stamp
dh_testdir
+ cp debian/upstream.changelog changelog.txt
for f in BasicUsageEnvironment \
UsageEnvironment liveMedia groupsock; do \
CFLAGS="$(CFLAGS) -fPIC -DPIC" $(MAKE) || exit 1; \
@@ -38,6 +39,7 @@
clean-real:
dh_testdir
dh_testroot
+ rm -f changelog.txt
rm -f build-stamp configure-stamp
[ ! -f Makefile ] || $(MAKE) clean
rm -f `find . -name '*.a'`
Copied: unstable/liblivemedia/debian/upstream.changelog (from r1408, unstable/liblivemedia/debian/patches/040_changelog.diff)
URL: http://svn.debian.org/wsvn/pkg-multimedia/unstable/liblivemedia/debian/upstream.changelog?rev=1411&op=diff
==============================================================================
--- unstable/liblivemedia/debian/patches/040_changelog.diff (original)
+++ unstable/liblivemedia/debian/upstream.changelog Wed Aug 27 06:59:36 2008
@@ -1,2480 +1,2475 @@
-Index: liblivemedia-2008.07.25/changelog.txt
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ liblivemedia-2008.07.25/changelog.txt 2008-08-21 20:54:00.000000000 +0200
-@@ -0,0 +1,2475 @@
-+Next version, in progress:
-+- Fixed a minor bug in "RTSPServer". (Thanks to Renato Mauro.)
-+- Minor improvements fo "FileSink" and "MP3FileSource". (Thanks to Pramod Bhagwat.)
-+- Changed the default "reclamationTestSeconds" parameter (in "RTSPServer" and "DynamicRTSPServer") from 45 seconds
-+ to 65 seconds, because 60 seconds is the default timeout value expected by (broken) clients that send
-+ RTSP commands rather than RTCP "RR" reports to indicate liveness.
-+
-+2008.07.25:
-+- Minor bug fix to "MPEG2TransportStreamFramer" (reset "fTSPCRCount" in "doStopGettingFrames()").
-+ (Thanks to Qiujian Shu for reporting this bug.)
-+- Modified the previous changes to "QuickTimeFileSink" and "AVIFileSink" so that the
-+ "createNew()" functions return NULL if the output file cannot be opened.
-+
-+2008.07.24:
-+- Changed "MultiFramedRTPSource" to handle the very first packet that we receive as
-+ if there were packet loss beforehand. This ensures that we correctly discard any
-+ initial packets that we receive that occur after the start of a (multi-packet) frame.
-+- Fixed "QuickTimeFileSink" and "AVIFileSink" to close the output file (if it's not stdout or stderr) in the destructor.
-+
-+2008.07.22:
-+- Fixed "MPEG2TransportStreamMultiplexor" to use an appropriate stream for our SCR, even if the input contained
-+ its own Program Stream Map.
-+- More minor changes to the code to make Erik Hovland's code-checking tools happy.
-+
-+2008.07.06:
-+- Corrected one of Erik Hovland's memory leak fixes made to the previous revision.
-+
-+2008.07.05:
-+- Fixed some memory leaks - and several other mostly cosmetic fixes.
-+ (Thanks to Erik Hovland for noticing these.)
-+
-+2008.06.26:
-+- Fixed a bug in "openRTSP" that was sometimes causing an incorrect "Range:" header
-+ to be sent in "PLAY" requests.
-+
-+2008.06.25:
-+- Fixed a bug in the headers sent for the RTSP "GET_PARAMETER" and "SET_PARAMETER" commands.
-+ (Thanks to "beilyzhang (at) hotmail" for this report.)
-+
-+2008.06.05:
-+- Renamed the "ourSourceAddressForMulticast()" function to the less confusing and more explanatory
-+ "ourIPAddress()".
-+- The "RTSPClient" change that was made in 2008.04.09 to accommodate multicast
-+ streams apparently broke (some?) unicast streams. This has now been fixed.
-+- Updated "RTSPClient" to handle weird servers that include a "Content-Length:" header
-+ in the response to the RTSP "SETUP" command. (If we see such a header, we skip over
-+ the data referred to in the header.) (Thanks to Kristian Soerensen for this suggestion.)
-+- Changed the parsing of lines in "RTSPClient" so that it now accepts \r or \n alone
-+ at the end of each line. (\r\n is preferred, but the standard also allows \r or \n)
-+ (Thanks to David Schueler for this suggestion.)
-+
-+2008.05.12:
-+- Made a change to "RTCPInterface" to ensure that "turnOffBackgroundReadHandling()" is called on a socket
-+ as many times as "turnOnBackgroundReadHandling()". Apparently some versions of Windows get upset if this
-+ doesn't happen. (Thanks to Ken Seo for the suggested fix.)
-+- Fixed a bug in "H263plusVideoStreamParser". (Thanks to Andrey Latin.)
-+- Added more sanity checking to "JPEGVideoRTPSink".
-+
-+2008.04.09:
-+- Corrected a type-related bug in "RTPInterface::handleRead()". (Thanks to Brain Lai for noting this.)
-+- Fixed a bug in "RTSPClient" that would prevent RTCP "RR" reports from being sent to
-+ the correct multicast address when we are receiving a multicast stream. (Thanks to Changjin Liu for noticing this.)
-+
-+2008.04.03:
-+- Fixed a bug that was introduced in the "2007.12.27" release. The "timeout" parameter to the call to
-+ "readSocket" in "SocketDescriptor::tcpReadHandler()" in "RTPInterface.cpp" needed to be initialized
-+ (to zero) first. (Thanks to Lodewijk Loos for alerting us to this problem.)
-+- Added a new config file "config.bfin-linux-uclibc", and renamed "config.bfin_uclinux" as "config.bfin-uclinux".
-+ (Thanks to Mike Frysinger.)
-+
-+2008.02.08:
-+- Added a hack (suggested by "Romain") to "MPEG2TransportStreamFramer" to (perhaps)
-+ produce more accurate per-transport-packet duration estimates for wildly VBR streams.
-+- Updated "MPEG2TransportStreamMultiplexor" to support the addition of MPEG-4 Audio or Video Elementary Streams.
-+- Updated "RTSPOverHTTPServer.cpp" (a work in progress) so that it complies properly for some versions of
-+ Visual Studio on Windows. (Thanks to Eric Flickner for noting this.)
-+
-+2008.01.19:
-+- Corrected the "getNormalPlayTime()" function - introduced in the previous release - to allow for 'trick play'
-+ scale factors other than 1.
-+
-+2008.01.18:
-+- Added a new member function
-+ float MediaSubsession::getNormalPlayTime()
-+ which - given a stream's current presentation time - returns the "Normal Play Time".
-+ This function is useful for RTSP streams.
-+- Added support for a "a=control:" URL specified in the SDP description at the session level.
-+
-+2008.01.04:
-+- Changed the "RTSPClient" timeout - introduced in the previous release - from
-+ 5s to 30s.
-+- Added support for setting and returning the RTSP session start time (as well as the end time).
-+ (This eliminates the need for the "live-starttime.patch" file that VLC was using.)
-+- Updated some of the system-specific configuration files, to eliminate the need for many of the patches that
-+ the VLC developers added to their code.
-+
-+2007.12.27:
-+- Added a 5s timeout to the "RTSPClient" code that checks for RTSP responses.
-+ This mirrors a change that was already being done to VLC's copy of the code.
-+ (This is still a short-term fix, until the "RTSPClient" code is rewritten to
-+ properly use asynchronous I/O, using the event loop.)
-+- Added a timeout to the "readSocket()" call in "SocketDescriptor::tcpReadHandler()" in "RTPInterface.cpp",
-+ to handle reading RTP-over-TCP data. This allows for the possibility of non-cooperative RTSP clients.
-+ (Thanks to Peter Leese for this suggestion.) This is probably not a complete solution;
-+ more thought is needed...
-+
-+2007.12.07:
-+- Fixed "H2633plusVideoFileServerMediaSubsession" to properly use a dynamic RTP payload type, rather than the
-+ static type 34 (which is reserved for the now-obsolete old "video/H263" RTP payload format).
-+
-+2007.12.06:
-+- Updated "JPEGVideoRTPSource" to take optional 'default width' and 'default height' parameters.
-+ These parameters can be set by fields in the SDP description, and can be used to specifiy unusually
-+ large frame widths and/or heights. (Thanks to Andrey Filippov.)
-+
-+2007.11.18:
-+- Fixed a couple of memory leaks in "DarwinInjector". (Thanks to Eyal Beit-Halachmi for noting these.)
-+- Removed old 'backwards compatibility' stuff from "FramedSource". (Noone should be relying upon this any more.)
-+- Fixed a bounds-checking error in "parseRTSPRequestString()" caused by an int vs. unsigned problem.
-+ (Thanks to Luigi Auriemma for noting this.)
-+- In "RTSPClient.cpp", fixed a couple of "unsigned" vs. "int" nits. (Thanks for Brain Lai for noting this.)
-+
-+2007.11.01:
-+- Several of the options to "openRTSP" have now been changed, with two new options added:
-+ -s <initial-seek-time>
-+ -z <scale>
-+ See the "openRTSP" documentation <http://www.live555.com/openRTSP/> for details.
-+- Fixed a bug in the way that "MPEG4VideoStreamDiscreteFramer" parses 'config' information (for inclusion in
-+ the stream's SDP description). (Thanks to Nicola Bova for helping to identify this bug.)
-+- Eliminated a potential memory (and socket) leak when allocating server RTP,RTCP socket pairs.
-+ (Thanks to David Pan for reporting this.)
-+- Updated "ByteStreamFileSource" to treat a 0-byte file read the same as EOF.
-+- Ensure that we have reasonable OS buffering for writes on non-blocking sockets.
-+
-+2007.08.03a:
-+- Removed a debugging printf() that had been left in by mistake. (Thanks to Massimo Zito for noticing this.)
-+
-+2007.08.03:
-+- Updated the "RTSPServer" implementation to work better on systems with more than one IP address.
-+ The server will now include - in its RTSP responses - the IP address on which the corresponding incoming request
-+ was received.
-+
-+2007.07.25:
-+- Added some sanity checks to various "MediaSink" subclasses, in case "fSource" is NULL.
-+ (Thanks to Andrey Kaminsky for noting one of these.)
-+
-+2007.07.10:
-+- Made sure that "MPEG2TransportStreamFramer"s estimate of the average duration of each Transport Packet
-+ gets updated correctly after each 'seek' operation. (Thanks to Massimo Zito for suggesting this.)
-+- Fixed a bug in "MPEG2TransportStreamFromESSource" that was causing presentation
-+ timestamps to not be generated correctly. (Thanks to Massimo Zito for noticing this.)
-+
-+2007.07.01:
-+- Fixed a bug in "RTSPServer" and "RTSPClient" that would cause problems when streaming
-+ files whose names have spaces in them.
-+- Fixed a bug in "OnDemandServerMediaSubsession::deleteStream". (Thanks to Igor Bukanov.)
-+- Make the sockets for "RTPSource", "RTCPInstance" and "BasicUDPSource" non-blocking, even though they will be read
-+ from only asynchronously, when packets arrive. The reason for this is that, in some OSs, reads on a blocking
-+ socket can (allegedly) sometimes block, even if the socket was previously reported (e.g., by "select()") as
-+ having data available. (This can supposedly happen if the UDP checksum fails, for example.)
-+ (Thanks to Marc Neuberger for pointing this out.)
-+- Fixed a bug in "MPEG2TransportFileServerMediaSubsession.cpp" that was causing 2x
-+ fast-forward to fail. (Some debugging code had been left in by mistake.)
-+
-+2007.05.24:
-+- Modified "setupDatagramSocket()" to better handle setting "ReceivingInterfaceAddr" when creating a socket
-+ to be used to send/receive multicast.
-+- Made a couple of minor changes to overcome some compilation errors that some people were apparently seeing.
-+
-+2007.05.23:
-+- The RTSP server now includes the "source=" parameter in the response to a RTSP "SETUP" command.
-+ This works around a bug in QuickTime Player that would cause it to not send RTCP "RR" packets
-+ (when playing a unicast stream, and running on Mac OS X). (Thanks to Dave Singer et al at Apple for tracking
-+ down this problem.)
-+- The RTSP server implementation no longer terminates the session if it returns 400 or 405 errors.
-+
-+2007.04.24a:
-+- Fixed a problem in the new "RTSPOverHTTPServer" code that was causing some people compilation problems.
-+
-+2007.04.24:
-+- Fixed a typo in "testOnDemandRTSPServer.cpp". (Thanks to Nils Grundback for noticing this.)
-+- Modified the signature of "RTSPServer::specialClientAccessCheck()" (defined in the previous revision) to add
-+ a new "clientAddr" parameter (a "struct sockaddr_in"), to allow special access checking based on clients' IP
-+ address.
-+- Make sure that the locale is set to "POSIX" when calling "toupper()" or "tolower()" on human-supplied strings.
-+ (Thanks to Ismail Doenmez for noting this.)
-+
-+2007.04.20:
-+- Modified "MPEG2TransportStreamMultiplexor" to set the "discontinuity_indicator" flag for the first
-+ "adaptation_field" in the output Transport Stream.
-+- Changed "AMRAudioRTPSource" to more accurately report whether/when an interleaved frame's timestamp has
-+ been synchronized using RTCP.
-+ (Thanks to David Bertrand for this patch.)
-+- Made to a small fix to the previous revision's support for multicast streaming of raw UDP (nonstandard)
-+- Added a virtual function to "OnDemandServerMediaSubsession" for closing the stream source.
-+ Subclasses can redefine this, if they wish, to do something smarter. (Thanks to Igor Bukanov for this patch.)
-+- Added support to "RTSPServer" for optionally performing special per-client access control, beyond the
-+ standard Digest Authentication method. (Thanks to Igor Bukanov for this patch.)
-+- Made a minor optimization to "Groupsock.cpp". (Thanks to Maxim Petrov for this suggestion.)
-+- Added an initial implementation of RTSP-over-HTTP at the server level (it was already supported at the client level).
-+ (Note: This code has not yet been completed, and doesn't yet work, so don't try to use it.)
-+
-+2007.02.20:
-+- Updated "RTSPServer" to support multicast streaming of raw UDP streams (nonstandard).
-+ (Thanks to Aesmund Grammeltvedt for this modification.)
-+- Made "RTSPClient" a little more robust in case the TCP connection fails.
-+- Made "RTPSink::rtpmapLine()" virtual (as requested by Andrew Voznytsa).
-+- Removed an archaic (no longer used) declaration in "groupsock/include/Groupsock.hh".
-+- Added an optional "allowKasennaProtocol" parameter to "RTSPClient::describeWithPassword()"
-+ (similar to "RTSPClient::describeURL()"). (Thanks to Igor Bukanov for this suggestion.)s
-+
-+2007.01.17:
-+- Fixed a bug that would cause the "MPEG2TransportStreamIndexer" application to fail when run on a big-endian
-+ architecture.
-+- Added a new class "H264VideoFileSink", that prepends each incoming H.264 NAL unit with the prefix 0x000001,
-+ before writing it to the file. Also updated the "openRTSP" code to use this, when receiving H.264/RTP streams.
-+ (Thanks to Chris Kuiper for contributing this.)
-+- Added a temporary #ifdef to "GroupsockHelper.cpp" to work around a compliation problem when building
-+ for Cygwin.
-+
-+2007.01.11:
-+- Improved the "MPEG2IndexFromTransportStream" class to recogize Transport Stream
-+ PAT and PMT (tables). This in turn makes the "MPEG2TransportStreamIndexer"
-+ utility more robust.
-+- Fixed a minor bug in "MPEG2TransportStreamFromESSource".
-+
-+2007.01.09:
-+- Added RTSP server support for 'trick play' operations on MPEG-2 Transport Stream
-+ files. This requires the presence of a ".tsx" index file for each ".ts" file.
-+ (This functionality will shortly be documented on the LIVE555 web site,
-+ and announced on the "live-devel" mailing list.)
-+- Improved the performance of asynchronous file reading in "ByteStreamFileSource".
-+ (Thanks to Aesmund Grammeltvedt for this suggestion.)
-+- Added "-D_FILE_OFFSET_BITS=64" to the "COMPILE_OPTS" line for each of the Linux config files, in order to
-+ alleviate possible problems with I/O on large files.
-+
-+2006.12.31:
-+- We now implement "ByteStreamFileSource" on Windows using synchronous file reads,
-+ by default. I had thought that Windows XP had fixed the problem - present in
-+ earlier versions of Windows - whereby open files are not treated as select()able
-+ sockets. But apparently the problem is still there.
-+- Added code that will - probably in the next release, very soon - support server
-+ 'trick mode' operations on MPEG-2 Transport Stream files. At present, we have two
-+ new applications - in the "testProgs" directory - that help support this:
-+ "MPEG2TransportStreamIndexer" (to create a special index file for a Transport Stream
-+ file), and "testMPEG2TransportStreamTrickPlay" (to generate a new Transport Stream
-+ file that simulates a 'trick play' operation performed on the original Transport
-+ Stream file). See my forthcoming post to the "live-devel" mailing list for more
-+ details.
-+- Fixed a bug in the Base64 encoding routine. (Thanks to Sebastian Gracias for reporting this.)
-+
-+2006.12.08:
-+- Made sure that each TCP socket used by a "RTSPserver" is non-blocking, so that a slow or hanging client
-+ cannot hang a server. (Thanks to "jers (at) inwind.it" for this suggestion.)
-+
-+2006.11.16a:
-+- Oops - fixed a problem with the packaging of the new "mediaServer" code.
-+
-+2006.11.16:
-+- Included the code for the new "LIVE555 Media Server" application
-+ (in the "mediaServer" subdirectory). This is a complete RTSP/RTP server, that
-+ will serve any appropriately-formatted file that resides in the current directory.
-+ (More documentation will follow.)
-+- Updated "QuickTimeFileSink" to support H.264 video in ".mov" or ".mp4" output files.
-+ (Thanks to David Arnold for this.)
-+- Fixed a potential reference-count related bug in "OnDemandServerMediaSubsession". (Thanks to Jers.)
-+- Changed the "RTSPClient" constructor from "private:" to "protected:".
-+
-+2006.10.27:
-+- "RTSPClient" now recognizes the "Content-Base:" header in RTSP "DESCRIBE" responses.
-+ (Thanks to Derk-Jan Hartman for this suggestion.)
-+- Updated "MultiFramedRTPSource" to avoid excessive recursion (and thus potential
-+ stack overflow) in some cases when receiving streams that have packet loss.
-+ (Thanks to Erwin Beckers for raising this as an issue.)
-+- Updated "RTPSink" and "MultiFramedRTPSink" to ensure that a proper RTP timestamp
-+ is set in the RTSP "RTP-Info" header that follows a "PAUSE", and that this timestamp
-+ gets used in the next outgoing RTP packet. (Thanks to David Bertrand for this suggestion.)
-+- Changed the special implementation of "gettimeofday()" for Windows to return
-+ more accurate results. (Thanks to David Arnold for this change.)
-+
-+2006.10.18a:
-+- A minor update to the "MultiFramedRTPSink" change made in the previous release.
-+
-+2006.10.18:
-+- Added support for adding optional RTP padding bytes to "MultiFramedRTPSink".
-+ (Thanks to Victor Kozhuhov for this suggestion.)
-+
-+2006.10.12a:
-+- Backed out the change that we made in the 2006.09.18 release: We now don't attempt
-+ to setsockopt() SO_REUSEPORT and IP_MULTICAST_LOOP on Windows. (Dave Arnold reports
-+ that doing so leads to UDP packets with TTL=1.)
-+
-+2006.10.12:
-+- Fixed a rare memory leak in "MultiFramedRTPSource". (Thanks to David Bertrand for this fix.)
-+- Made "RTSPServer::lookupServerMediaSession()" virtual, to allow for future
-+ subclasses of "RTSPServer" that - for example - create and add "ServerMediaSession"s
-+ dynamically (depending on whether or not the named file exists).
-+- Added a "rtspURLPrefix()" member function to "RTSPServer". This returns the
-+ "rtsp://" URL prefix that's common to all of the server's "rtsp://" URLs.
-+
-+2006.10.07:
-+- The demo applications (in the "testProgs" directory) that stream MPEG-4
-+ Elementary Stream video files now use a file name "test.m4e" rather than "test.m4v".
-+ This is to avoid confusion, because Apple has coopted the ".m4v" suffix for
-+ MPEG-4 (audio+video) files, which are different.
-+- Made "MPEG4VideoStreamFramer" more bullet proof against some non-standard MPEG-4 video data.
-+ (Thanks to Maxim Petrov for this suggestion.)
-+
-+2006.10.05:
-+- Fixed a minor bug in "MPEG2TransportStreamFromESSource" (thanks to "jeremy at electrosilk.net")
-+- Changed some class member function and variables from "private" to "protected", in response to a request
-+ from David Bertrand.
-+- Made "DarwinInjector::createNew()" more bullet proof, by giving the "applicationName" parameter
-+ a default value.
-+
-+2006.09.20:
-+- Corrected the bug fix to "H264VideoRTPSink" that was made two revisions ago.
-+
-+2006.09.18:
-+- Fixed a bug in the way that "RTPSource" records the maximum sequence number seen so far.
-+ (The bug could be triggered by packets arriving out of order.) Thanks to Mallikharjuna Reddy
-+ for pointing this out.
-+- When creating new datagram sockets, we now attempt to setsockopt() SO_REUSEPORT and IP_MULTICAST_LOOP,
-+ even on Windows. (A version of Windows prior to XP had problems with this, but it's apparently no longer
-+ a problem.)
-+
-+2006.09.12:
-+- Fixed a minor bug in "H264VideoRTPSink". (Thanks to Emiliano Parasassi for noting this.)
-+- If the "totSessionBW" parameter to "RTCPInstance::RTCPInstance()" is zero, print out an error message,
-+ and use a value of 1 (kbps) instead.
-+
-+2006.09.09:
-+- Reenabled asynchronous file reading in "ByteStreamFileSource", after fixing a bug
-+ that could lead to a 'race condition' in some circumstances. (The fix was to call
-+ "FramedSource::afterGetting()" directly - rather than via the event loop - after
-+ delivering data to the downstream object.)
-+- Updated "MPEG2TransportStreamFromESSource" again. Now, we set the
-+ "PES_packet_length" field to zero if the input data was larger than 2^16 bytes
-+ long. (This is in accordance with the MPEG specifications; thanks to "jeremy at electrosilk.net"
-+ for noticing this..)
-+
-+2006.09.08:
-+- Temporarily disabled asynchronous file reading in "ByteStreamFileSource" until we
-+ fix an apparent bug that is causing MPEG streaming to fail.
-+- Updated "MPEG2TransportStreamFromESSource" to print a warning message if the input source delivers
-+ data in chunks that are too big to make up a PES packet.
-+
-+2006.09.07:
-+- Fixed a bug that was preventing the RTCP "RR" packet handler from being called
-+ when we were streaming RTP/RTCP-over-TCP. (Thanks to "zhangzx at rcs-9000.com"
-+ for noticing this.)
-+
-+2006.08.26:
-+- Changed the implementation of "ByteStreamFileSource" so that reads from the
-+ open file are now done asynchronously, when data becomes available. This matches
-+ the code's event-driven execution model better than the previous implementation,
-+ which read from files synchronously. It should also perform better in systems
-+ that read from more than one file concurrently.
-+- Added Victor Kozhuhov's modifications to the WAV file support code, to allow for WAV files that contain
-+ u-law or a-law content (instead of the usual raw PCM).
-+
-+2006.08.24:
-+- Fixed the way in which "RTSPServer" handles requests that span more than one
-+ TCP socket read. These reads are now all handled asynchronously, in accordance
-+ with the library's event-driven execution model. (Thanks to Marc Neuberger for noting this.)
-+- Fixed a memory leak in "MultiFramedRTPSource" that would occur if we received
-+ packets with duplicate sequence numbers, or if we received excessively delayed
-+ packets. (Thanks to David Bertrand for noticing this.)
-+- Changed the order of statements in "~RTSPClient()" to fix a bug (noted by Brain Lai).
-+- Changed "base64Encode()" to take a 'length' parameter, so that it will work with input data that
-+ contains '\0' characters. (Thanks to Derk-Jan Hartman for this suggestion.)
-+- Added support - in "RTSPServer" - for the (non-standard) "x-playNow:" header in RTSP requests.
-+ (Thanks to Rob Casey for this patch.)
-+- Updated "MediaSession" to parse the (standard) SDP "framerate" attribute (in addition to "x-framerate", which
-+ is non-standard).
-+- Changed the parent class of "H264VideoStreamFramer" to be "FramedFilter" (to be consistent with other
-+ 'Framer' classes) instead of "FramedSource". (Thanks to Jinfeng Zhang for noticing this.)
-+- Made the "FramedFilter" implementation more robust, in case the supplied input source parameter is NULL.
-+
-+2006.08.07:
-+- Changed the way that "OnDemandServerMediaSubsession" creates server ports.
-+ It now chooses server port numbers starting with a specific port number
-+ (which is now an optional parameter to the "OnDemandServerMediaSubsession"
-+ constructor). The default value of this initial port number parameter is 6970.
-+ This matches the port number range used by other common RTSP server implementations,
-+ including Darwin Streaming Server and Helix.
-+- Changed the criterion for whether to send out a RTCP "SR". (Thanks to David Bertrand.)
-+- Fixed an obscure bug in "OnDemandServerMediaSubsession::deleteStream()"
-+ (reported by Scott Hayes)
-+- Removed some archaic code that was developed for a customer several years ago, but
-+ which is no longer used.
-+
-+2006.07.04:
-+- Another update to "H264VideoRTPSink" (requested by David Bertrand)
-+
-+2006.06.28:
-+- Another update to "H264VideoRTPSink". (Thanks to David Bertrand.)
-+
-+2006.06.27:
-+- Updated "H364VideoRTPSink"
-+- Corrected the definition of MAX_PES_PACKET_SIZE in MPEG2TransportStreamFromPESSource.cpp.
-+ (Thanks to Jiri Pinkava for this fix.)
-+
-+2006.06.23:
-+- Fixed some minor issues with the previous addition of "H264VideoRTPSink"
-+
-+2006.06.22:
-+- Added "H264VideoRTPSink", for transmitting H.264/RTP streams. (Thanks to
-+ Benoit Quirynen and David Bertrand for funding this work.)
-+- Changed the default definitions of IP_ADD_SOURCE_MEMBERSHIP and
-+ IP_DROP_SOURCE_MEMBERSHIP (for use if they're not already defined in header files),
-+ to make it more likely that SSM joins will properly fail if SSM is not actually
-+ implemented on the host OS.
-+- Changed some "delete"s into "delete[]". (Thanks to Wojciech Matyjewicz
-+ and Mathur for reporting these bugs.)
-+- Made "sapWatch a bit more robust. (Thanks to Jiri Pinkava for this fix.)
-+
-+2006.05.17:
-+- Fixed "OnDemandRTSPServer" so that it sets a RTCP "RR" handler,
-+ even if "reuseFirstStream" is True.
-+- Changed "RTSPServer" (and the "testOnDemandRTSPServer" demo application)
-+ to use a 45-second client liveness timeout, by default. (Previously,
-+ no client liveness checking was being done by default.)
-+ (Note that client liveness timeouts are done only for unicast streams, not multicast.)
-+- Fixed a bug in the implementation of "BasicHashTable" that arose when
-+ we were using hash tables with multi-word-sized keys.
-+
-+2006.05.15:
-+- No change from the previous release, but the installed ".tar.gz" file had
-+ accidentally been deleted.
-+
-+2006.05.11:
-+- Cleaned up some code in "BasicTaskScheduler" that was allegedly causing
-+ problems on a Zaurus.
-+- Changed "TaskScheduler::rescheduleDelayedTask()" so that its "microseconds"
-+ parameter is a "int64_t" (to match "scheduleDelayedTask").
-+ (Thanks to David Bertrand for suggesting this.)
-+- Updated "ServerMediaSession:::generateSDPDescription()" to change
-+ "a=rtcp: unicast-reflection" to "a=rtcp-unicast: reflection", to
-+ reflect the latest version of the IETF's "draft-ietf-avt-rtcpssm"
-+ Internet-Draft. (This is for Source-Specific Multicast sessions only.)
-+- Cleaned up "H263plusVideoRTPSink" slightly, to remove an unnecessary
-+ member variable.
-+- Removed support for the (experimental and non-standard) "X-MCT-TEXT"
-+ payload type.
-+
-+2006.03.17:
-+- Fixed a bug in "RTSPClient" (that had been introduced in the 2006.02.15
-+ release) that was stopping RTP-over-TCP reception from working.
-+
-+2006.03.15:
-+- Updated "MediaSession" to parse the "s=" and "i=" lines of input SDP
-+ descriptions, and added member functions for returning these string values.
-+ (Thanks to Scott Hays or this.)
-+- Updated "MPEG2TransportStreamMultiplexor" to use the audio track for PCR
-+ iff there is no video track present.
-+- Made a change to "liveMedia/include/H263plusVideoStreamFramer.hh" to overcome
-+ an error reported by some nit-picking compilers.
-+- Fixed a minor bug in "MPEG2TransportStreamFromESSource" (in the way that it
-+ handles EOF on input).
-+
-+2006.03.03:
-+- Updated "MPEG4LATMAudioRTPSource" to allow the LATM data length field to
-+ be omitted from the start of each returned audio frame. (The "faad" decoder
-+ (used by VLC, for example) needed this.)
-+- Renamed "SECOND" in the "BasicUsageEnvironment" library to "DELAY_SECOND"
-+ (and similarly for "ZERO", "MINUTE", "HOUR", "DAY"), to avoid an alleged
-+ name conflict with some other code used by VLC. (Thanks to
-+ Derk-Jan Hartman for this suggestion.)
-+- Removed some unnecessary code from "testProgs/playCommon.cpp".
-+
-+2006.02.25:
-+- Updated the previous change to "MultiFramedRTPSource::doStopGettingFrames()",
-+ to also reset the object's fields. (Thanks to David Bertrand.)
-+
-+2006.02.15:
-+- Changed "GetFileSize()" (defined in "liveMedia/include/InputFile.hh") and
-+ "ByteStreamFileSource::fileSize()" to return a "u_int64_t", to allow for
-+ (potentially) large files.
-+- Changed the "microseconds" parameter to "TaskScheduler::scheduleDelayedTask()"
-+ from "int" to "int64_t". This allows for durations greater than the previous
-+ ~2000 second limit.
-+- Updated "RTSPClient" to support handling RTSP requests sent by the server.
-+ (Some servers send periodic requests back to the client as a keep-alive test.)
-+ At present, we just respond to such requests with a "not allowed" error.
-+ (Thanks to Khanh Mai for this change.)
-+- Updated "MultiFramedRTPSource::doStopGettingFrames()" to reset the
-+ "ReorderingPacketBuffer". (Thanks to David Bertrand for this fix.)
-+- Corrected a small bug in the previous "RTSPClient" modification
-+ (noticed by Glen Gray).
-+- Fixed a bug in "ADTSAudioFileSource" when parsing the optional "crc_check"
-+ field. (Thanks to Paul Li for noticing this.)
-+
-+2006.01.27:
-+- Updated "RTSPClient" to:
-+ - allow the "parameterName" parameter to "getMediaSessionParameter()" to be NULL
-+ - add a "setUserAgentString()" member function, to allow clients to
-+ specify an alternative string for "User-Agent:" headers
-+ - parse the optional "timeout" parameter in response "Session:" headers,
-+ and added a "sessionTimeoutParameter()" member function to retrieve it.
-+ (Thanks to Glen Gray for proposing these changes.)
-+- Fixed "H263plusVideoRTPSource" to properly initialize two member variables
-+ in its constructor. (Thanks to David Bertrand for this fix.)
-+- Added Bernhard Feiten's support for H.263plus parsing/framing
-+
-+2006.01.24:
-+- Corrected the maximum PES packet size (in "MPEG1or2DemuxedElementaryStream.cpp")
-+ to allow for a 6-byte header. (Thanks to Jiri Pinkava for this fix.)
-+- Fixed "MPEG1or2AudioStreamFramer" to avoid a potential divide-by-zero when
-+ it's fed certain malformed MPEG audio data. (Thanks to Eric Peters for this.)
-+- Updated the top-level "Makefile.tail" to make it clear that "testProgs" can't
-+ be built until after the 'library' directories are built. This ensures that
-+ parallelizing "make"s don't do the wrong thing.
-+
-+2006.01.05:
-+- Updated "MPEG4VideoStreamFramer" to make the parsing of MPEG-4 video a bit
-+ more robust. (Thanks to Khanh Mai for this suggestion.)
-+
-+2006.01.04:
-+- Updated "OnDemandServerMediaSubsession" to tear down the stream (thus sending
-+ a RTCP "BYE") when the input source ends, iff the stream does not have a known
-+ duration. (If the stream has a known duration, then we keep the stream alive,
-+ in case a client wants to seek backwards in it.)
-+
-+2005.12.30:
-+- Extended the previous release's fix to also work with the RTSP
-+ "OPTIONS" command.
-+
-+2005.12.29:
-+- Include (if necessary) authentication headers in the initial HTTP
-+ "GET" and "POST" commands, if we're setting up RTSP-over-HTTP tunneling.
-+ This allows "RTSPClient" to work properly with some Axis cameras, which
-+ require authentication on these HTTP commands.
-+
-+2005.12.23:
-+- Fixed the RTCP port number in the RTSP "Transport:" header "port=" part
-+ (for multicast streams).
-+- Updated the change that we made in version 2005.11.02 so that it also
-+ sets the port number correctly.
-+
-+2005.12.15:
-+- Made calls to "select()" more robust, by checking for (and ignoring)
-+ EAGAIN or EINTR errors.
-+- Fixed a bug in "MPEG4VideoFileServerMediaSubsession" that could occur if a
-+ bad MPEG-4 video file (not containing any initial 'config' data) is read.
-+ (Thanks to Trevor Pering for noticing this.)
-+- Removed an undocumented, experimental and rarely-used option from "openRTSP".
-+
-+2005.12.09:
-+- Updated the RTCP implementation so that reception stats for a SSRC are now kept
-+ around even after a RTCP BYE is received, in case we want to use these stats
-+ for QOS reports. (However, if a SSRC is reaped due to inactivity, then the
-+ reception stats are deleted.)
-+
-+2005.12.05:
-+- On some systems (notably FreeBSD), "struct sockaddr_in" includes a "sin_len"
-+ field, which should be set before the struct is used. We now replace declarations
-+ of "struct sockaddr_in" with a macro MAKE_SOCKADDR_IN() (defined in
-+ "groupsock/include/GroupsockHelper.hh"). This macro sets the "sin_len" field
-+ iff "HAVE_SOCKADDR_LEN" is defined on the command line.
-+ (Thanks to Boris Nikolaus for noting this issue.)
-+- Fixed a bug in the timestamp generation for certain rare MPEG-4 video streams.
-+ (Thanks to Bernhard Feiten for reporting this.)
-+
-+2005.11.30a:
-+- Improved the calculation of the per-Transport Packet duration in
-+ "MPEG2TransportStreamFramer", so that the overall transmit duration
-+ tries to match the client playout duration (as determined by PCRs).
-+- Minor patch to avoid errors when compiling with GCC 4.1.
-+ (Patch contributed by Hanno Boeck.)
-+- Patch to the special 'Kasenna'-specific support in "RTSPClient".
-+ (Patch contributed by Glen Gray.)
-+
-+2005.11.11:
-+- Modified "MPEG2TransportStreamFramer" to take the PCR "discontinuity_indicator"
-+ flag into account when updating the estimated duration of each TS packet.
-+
-+2005.11.03:
-+- Minor bug fix to the previous version's update to "RTSPClient".
-+
-+2005.11.02a:
-+- Updated the previous release to add a new (optional)
-+ "forceMulticastOnUnspecified" parameter to "RTSPClient::setupMediaSubsession()".
-+ This forces the client to request a multicast stream if the original SDP
-+ response address was unspecified (0.0.0.0). (Note that not all servers
-+ will be able to handle this.) We also handle the "port=" field in RTSP
-+ "SETUP" response "Transport:" headers.
-+- Fixed "RTSPServer" to include a proper "port=" field in the "SETUP"
-+ "Transport:" response when streaming multicast.
-+
-+2005.11.02:
-+- Updated "RTSPClient" to use the "destination=" address in the "SETUP"
-+ response's "Transport:" header - for multicast streams. We do this because
-+ some weird servers (e.g., Axis cameras, reportedly) do not specify the
-+ multicast address earlier, in the "DESCRIBE" response's SDP.
-+
-+2005.10.28b:
-+- Added a "rtpTimestampFrequency" parameter (with default value 90000)
-+ to "H263plusVideoRTPSink", "MPEG4ESVideoRTPSink".
-+
-+2005.10.28a:
-+- Removed some unnecessary "delete"s, and changed some "delete"s to
-+ "Medium::close()"s. (Minor bug noted by Zhixue Zhang.)
-+
-+2005.10.28:
-+- Fixed a potential 'divide by zero' problem in "MP3Internals.cpp".
-+ (Thanks to Eric Peters for noting this.)
-+
-+2005.10.27:
-+- Added a "numEntries()" pure virtual function to "HashTable".
-+ (Thanks to David Bertrand for this suggestion.)
-+
-+2005.10.23:
-+- When creating a Transport Stream from AC-3 audio input, we now use a stream_id
-+ of 0x06 rather than 0x81.
-+- Add support for receiving the various G.726 RTP payload formats, described
-+ in RFC 3551.
-+- Added an implementation of the "doStopGettingFrames()" virtual function to
-+ "BasicUDPSource". (Thanks to Adrian Hornsby for this suggestion.)
-+- Changed the reimplemented virtual functions in "BasicUsageEnvironment0" and
-+ "BasicTaskScheduler0" from "protected" to "public". (Thanks to David Bertrand
-+ for this suggestion.)
-+- Added support to "RTSPClient" for the "GET_PARAMETER" RTSP command.
-+ (Thanks to Glen Gray for this.)
-+- Added a Windows version of the "genWindowsMakefiles" script. This should
-+ make it easier for Windows users to unpack and build the code.
-+ (Thanks to Erwin Herzog for this script.)
-+
-+2005.10.05:
-+- Fixed a couple of bugs noticed by David Bertrand.
-+
-+2005.09.23:
-+- This software is now called "LIVE555 Streaming Media", and our preferred domain name
-+ is now "live555.com".
-+
-+2005.09.20:
-+- Updated "MPEG2TransportStreamMultiplexor" to increase the frequency of PMTs
-+ and PATs in the output Transport Stream.
-+- More improvements to "MPEG2TransportStreamFromESSource".
-+- Updated "RTSPServer" to allow for empty stream names from certain non-standard
-+ RTSP clients (such as Amino STBs).
-+- Fixed "RTSPClient::tearDownMediaSession()" to delete each subsession's
-+ "sessionId" field.
-+- Fixed a minor memory leak in "RTSPClient" (when implementing HTTP tunneling)
-+
-+2005.09.09:
-+- Made the destructors for "BasicUsageEnvironment" and "BasicUsageEnvironment0"
-+ protected rather than public, to match the base class "UsageEnvironment".
-+- More improvements to "MPEG2TransportStreamFromPESSource" and
-+ "MPEG2TransportStreamFromESSource".
-+
-+2005.09.06:
-+- Modified "MPEG2TransportStreamMultiplexor", and added
-+ "MPEG2TransportStreamFromESSource".
-+
-+2005.08.26:
-+- Updated "MediaSession" to parse the SDP "a=type:" attribute. (Patch by
-+ Derk-Jan Hartman.)
-+- Added support to "RTSPClient" for handling Microsoft servers' non-standard use
-+ of the RTSP/RTP protocol. Also, fixed the parsing and generation of floating
-+ point numbers in the RTSP "Range:" and "Scale:" headers to work correctly in
-+ non-POSIX locales. (Thanks to Derk-Jan Hartman for this suggestion.)
-+- Fixed a memory leak in "MPEG2TransportStreamFromPESSource".
-+- Changed "MP3StreamState::readFromStream()" from "private" to "protected", to
-+ satisfy a request by Pierre l'Hussiez.
-+
-+2005.08.09:
-+- Improved the Transport Stream generation software to (in the future) allow
-+ for generating Transport Streams from Elementary Stream data as well as
-+ from PES packet data.
-+
-+2005.07.23:
-+- Improved "H264VideoRTPSource" to properly handle 'aggregate' packets
-+ that contain more than one NAL unit.
-+
-+2005.07.21:
-+- We no longer set a RTCP "RR" handler when we're streaming, unicast on-demand,
-+ from a shared input source. (The reason for this is that, in this case,
-+ we also share a RTCP instance for all client sessions (streams).
-+ A better fix will eventually be needed.)
-+
-+2005.07.19:
-+- Updated H.264/RTP support.
-+
-+2005.07.15:
-+- Oops, DEBUG was not supposed to be defined in "RTSPServer.cpp".
-+- Added "-D_LARGEFILE_SOURCE=1" to the "COMPILE_OPTS =" line of the various
-+ "config.*linux*" files, to ensure that code that uses "fseeko()" will
-+ compile properly for all Linux systems.
-+
-+2005.07.13:
-+- When handling a 'passive' session, we no longer set a RTCP "RR" handler,
-+ because (unlike unicast, on-demand sessions) the RTCP instance usually
-+ outlives RTSP client sessions. (Thanks to Jon Sheller for reporting
-+ this bug.)
-+
-+2005.07.12:
-+- Minor updates to the Base64 code for H.264/RTP receiving.
-+
-+2005.07.10:
-+- Removed a debugging version of "testOnDemandRTSPServer" that had mistakenly been
-+ left in the proevious revision. If you downloaded the previous revision, then
-+ please download this version instead!
-+- Fixed "MPEG1or2VideoStreamFramer" to better handle MPEG video streams where the
-+ first GOP time code has a non-zero 'pictures' count.
-+ (Thanks to Eric Peters for reporting this problem.)
-+- Some enhancements to the Base64 code, for eventual use by "H264VideoRTPSource".
-+
-+2005.07.08:
-+- Added - to "RTCPInstance" - the ability to assign 'handler' functions
-+ to be called on the arrival of RTCP "SR" or "RR" packets (as well as "BYE").
-+ We now use this mechanism (specifically, a RTCP "RR" handler) to improve the
-+ optional 'liveness' test for "RTSPServer". (Liveness is now indicated by
-+ either a RTSP command over the TCP connection, or the arrival of a RTCP
-+ "RR" packet.)
-+- Moved routines for Base64 encoding and decoding into the "liveMedia"
-+ library. (Base64 encoding was already being used by "RTSPClient";
-+ Base64 decoding will soon be used by "H264VideoRTPSource".)
-+
-+2005.07.01:
-+- Updated "testOnDemandRTSPServer" to demonstrate AAC audio streaming (from an
-+ ADTS-format file)
-+- Made some modifications to (supposedly) make the code compile better for
-+ WinCE.
-+
-+2005.06.30:
-+- Added support for reading and streaming from AAC audio files in ADTS format.
-+ (Thanks to Manthan Systems for funding this work.)
-+- Removed duplicate code in "testOnDemandRTSPServer.cpp".
-+- Removed duplication of a common error message from "RTSPClient.cpp".
-+
-+2005.06.29:
-+- Added support for Basic authentication (in addition to Digest authentication)
-+ to "RTSPClient".
-+- Removed a minor memory leak in "PassiveServerMediaSubsession".
-+- Improved "MPEG4ESVideoRTPSource" to better note when received RTP packets
-+ begin or end a MPEG-4 'frame'. (Thanks to Saumya Chandra for noting the
-+ limitations of the previous code.)
-+- Changed some member functions in "PassiveServerMediaSubsession" from
-+ "private" to "protected", to allow subclassing. (Thanks to
-+ Fabrice Aeschbacher for this suggestion.)
-+
-+2005.06.16:
-+- Fixed a bug in the generic MPEG (1, 2 or 4) video parsing code that was causing some
-+ MPEG-4 streams not to be parsed correctly.
-+- Updated "MPEG4VideoStreamFramer" to better handle MPEG-4 video streams that contain
-+ 'B' frames. (Now, more accurate presentation times and frame durations are computed
-+ for such streams.)
-+
-+2005.06.07:
-+- Modified the Windows-specific code in "ByteStreamFileSource.cpp" to compile properly
-+ under MINGW.
-+
-+2005.06.04:
-+- Updated "MPEG2TransportStreamFramer::doStopGettingFrames()" to clear the PID status
-+ table. This makes it possible to handle PCR discontinuities when seeking (e.g.)
-+ within a stream.
-+- Updated the "ByteStreamFileSource::seekToByte*()" operations to take 64-bit
-+ parameters, to allow for seeking within files that are >4 GB in size.
-+
-+2005.05.26a:
-+- Updated the 'seeking' operations in "ByteStreamFileSource" to handle files
-+ that are > 2^31 bytes in size.
-+
-+2005.05.26:
-+- Updated "RTCPInstance::setByeHandler()" to (by default) handle only "BYE"s that
-+ come from active participants. This means, for example, that a receiver of a
-+ multicast stream can now quit without its RTCP "BYE" being handled by other
-+ multicast receivers. (By default, multicast receivers will now handle only
-+ "BYE"s that come from the sender.)
-+- "RTSPServer" now includes "rtptime" in the returned "RTPInfo:" header, because
-+ the bugfix in the previous release also happened to fix the problem that this was
-+ having with QuickTime Player.
-+
-+2005.05.24:
-+- Fixed "RTPSink" so that it now resets "fTimestampBase" only on the first time
-+ that a timestamp is ever computed; not on the first time after "startPlaying()"
-+ is called. (Thanks to David Bertrand for noting this.)
-+
-+2005.05.23:
-+- Added support to "RTSPServer" for (optionally) reclaiming client connection
-+ state (and stopping the stream) if no command has been received on the
-+ RTSP TCP connection within a specified period of time. This is useful for
-+ use in closed systems where it is known that the RTSP client always uses
-+ the "GET_PARAMETER" command as a periodic 'keep-alive'. It stops the
-+ stream from continuing indefinitely if the client suddenly dies.
-+
-+2005.05.12:
-+- Removed some unnecessary floating point code from "MP3Internals.cpp".
-+ (This was causing unnecessary slowness on some hardware without floating point.)
-+
-+2005.05.09:
-+- Modified "MPEG2TransportStreamFramer" to give greater weight (0.5) to more recent
-+ data when computing the estimate of per-transport-packet duration. (This causes
-+ it to respond more accurately to sudden changes in bitrate (i.e., in VBR streams).)
-+- Added some (otherwise unnecessary) null destructors to stop gcc 4.0 from printing
-+ warning messages. (Thanks to Emiliano Parasassi for pointing this out.)
-+
-+2005.05.05:
-+- "RTSPServer" now uses separate buffers for requests and responses. (This fixes
-+ an issue that arose in the handling of requests from a set-top box.)
-+
-+2005.05.04:
-+- Updated "RTSPServer" to make the parsing of "CSeq:" headers in RTSP requests
-+ more robust.
-+
-+2005.04.26:
-+- Made sure that "MultiFramedRTPSource"s properly stop receiving incoming RTP
-+ packets, when they're asked to stop. (This fixes a bug that was being triggered
-+ by some streams that continued sending RTP packets after a RTCP "BYE". Thanks to
-+ Eberhardt Garner for helping track this down.)
-+- Fixed a minor memory leak in "openRTSP".
-+- Updated "FramedSource.hh" to no longer (by default) support the old form of
-+ the 'after getting' function.
-+
-+2005.04.23:
-+- Added "H264VideoRTPSource", for receiving H.264/RTP streams.
-+ (Thanks to Erik Hellerud for this.)
-+- Made some minor modifications to "ServerMediaS(ubs)ession",
-+ to support a customer's project.
-+
-+2005.04.22:
-+- Improved "MPEG1or2VideoRTPSink" to allow more than one complete video 'slice'
-+ from the same picture to be packed into an outgoing RTP packet.
-+- Eliminated a bogus "IP_ADD_MEMBERSHIP" error message that Windows (for some
-+ reason) sometimes triggers for no reason.
-+
-+2005.04.20:
-+- Changed the name of the (platform-independent) "_close()" function to
-+ "closeSocket()", to prevent an apparent function name conflict in Windows.
-+
-+2005.04.13:
-+- Modified "ourSourceAddressForMulticast()" to try the
-+ "gethostname()"/"gethostbyName()" method if the 'multicast loopback' method fails.
-+- Made some modifications to "ServerMediaSubsession" to support "SIPServer"
-+ (whose implementation is currently in progress).
-+
-+2005.04.07:
-+- Fixed a bug in the "base64Encode()" routine in "RTSPClient.cpp".
-+ (Thanks to Raphael Rigo for noticing this.)
-+- Updated "MPEG1or2VideoStreamDiscreteFramer" to handle the "iFramesOnly" and
-+ "vshPeriod" parameters (just as the original "MPEG1or2VideoStreamFramer"
-+ already does).
-+
-+2005.03.31:
-+- Removed some testing code that had accidentally been left in the previous
-+ release. If you use "openRTSP", then please use this release instead of the
-+ previous one.
-+- Fixed a bug in "RTPServer" when handling streams without stream names.
-+ (The bug had been introduced in version 2005.03.28.)
-+
-+2005.03.30:
-+- Improved the support for seeking within RTSP/RTP-streamed MPEG-1 or 2
-+ Program Stream files. (A/V sync after a seek still isn't perfect, though.)
-+
-+2005.03.28:
-+- The "RTSPServer" implementation now supports raw-UDP streaming, for those
-+ clients that request it. (This is usually requested only by some specialized
-+ clients - such as set-top boxes - and only for data such as MPEG Transport
-+ Streams where audio/video is muxed together (and no RTP timestamps are needed).)
-+- Updated the calculation of MP3 sampling frequencies to allow for 'MPEG2.5'
-+ (Thanks to Massimo Buffo for this fix.)
-+
-+2005.03.23:
-+- Changed "BasicTaskScheduler::SingleStep()" to call only one read handler during
-+ each iteration of the event loop. This prevents potential problems if
-+ the event loop is called reentrantly from within a read handler.
-+- Added a new, alternative version of "ByteStreamFileSource::createNew()" that
-+ takes an open file (FILE*) as parameter, instead of a file name.
-+ (Thanks to Mike Yan for this suggestion.)
-+- Updated the top-level Makefile to build the lower-level directories using
-+ "$(MAKE)" rather than "make". This allows a command other than "make"
-+ (e.g., "gmake") to be used. (Thanks to Sergio.Gelato for this fix.)
-+- Minor changes to (apparently) make Sun's C++ compiler happy.
-+ (Thanks to Sergio.Gelato for these.)
-+- Some changes to "RTSPServer" to make it more tolerant of some strange, non-standard
-+ clients.
-+- Support seeking within RTSP/RTP-streamed MPEG-1 or 2 Program Stream files.
-+
-+2005.03.11:
-+ Updated "MPEG2TransportStreamFromPESSource" once again to better handle
-+ Program Streams that include a "program_stream_map".
-+
-+2005.03.10:
-+- Modified "BasicUDPSource" to make its OS socket receive buffer at least 50 kBytes
-+ (the same as we do for "MultiFramedRTPSource").
-+
-+2005.03.07:
-+- Updated "MPEG2TransportStreamFromPESSource" (and thus also the
-+ "testMPEG1or2ProgramToTransportStream" demo application) to handle MPEG
-+ Program Streams that include MPEG-4 Elementary Stream data. (For this to work,
-+ the Program Stream must include a "program_stream_map".)
-+
-+2005.03.05:
-+- Modifying "ReceivingInterfaceAddr" now works before receiving
-+ unicast streams. (Previously, it worked only when receiving multicast
-+ streams.) Also, added a new option "-I <interface-ip-address>"
-+ to "openRTSP", to allow the user to specify which interface is used.
-+ (Thanks to Luca Abeni for this patch.)
-+- Fixed a "delete[]" vs "delete" bug in "MPEG4VideoStreamFramer",
-+
-+2005.02.28:
-+- Fixed a bug (that had been introduced in the 2005.01.07 version)
-+ in the MP3 frame<->ADU conversion code.
-+
-+2005.02.25:
-+- Fixed some minor memory leaks.
-+- Made some more changes to prepare for RTSP server seeking within MPEG-1 or 2
-+ Program Stream files. (This is still not done yet.)
-+
-+2005.02.14:
-+- Changed the generation of "rtptime" in "RTPInfo:" RTSP headers to use
-+ %u instead of %d. (Thanks to Regis Feneon for noting this.)
-+- Made some changes to prepare for RTSP server seeking within MPEG-1 or 2
-+ Program Stream files. (This is still not done yet.)
-+
-+2005.02.09:
-+- Updated "MultiFramedRTPSink" to allow for frame-specific special headers to
-+ appear before each frame in RTP packets. (This in addition to the (possible)
-+ special header that may appear at the start of the packet.) This functionality
-+ is added using a new virtual function "frameSpecificHeaderSize()" (that,
-+ by default, returns 0.) Thanks to Matt Romaine for this.
-+- Added a new "BufferedPacket" virtual member function
-+ "getNextEnclosedFrameParameters()", which will (eventually) replace the existing
-+ "nextEnclosedFrameSize()" virtual member function. This (plus a corresponding
-+ change to "MultiFramedRTPSource") now makes it possible to give correct
-+ presentation times to multiple frames within incoming RTP packets.
-+
-+2005.02.07:
-+- The "MultiFramedRTPSink::setPacketSizes()" function now applies just to one
-+ specific "MultiFramedRTPSink" object; not to all such objects.
-+- Added a new version of "RTSPServer::removeServerMediaSession()" that takes
-+ the (string) stream name - rather than the "serverMediaSession" object
-+ - as argument.
-+
-+2005.01.29:
-+- We now remove reception and transmission statistics records (from each
-+ "RTPSource" and "RTPSink", respectively), whenever each RTCP SSRC membership
-+ gets 'reaped'. We also added more information to "RTPTransmissionStats".
-+ (Thanks to WIS Technologies for funding this work.)
-+- Some minor fixes to "JPEGVideoRTPSource". (Thanks to Sergey Khlutchin for
-+ reporting this.)
-+- Made the "ServerMediaSession" constructor "protected", to allow for
-+ subclassing. (This was requested by Eric Peters.)
-+- Updated "win32config.Borland" and modified some header files, so that the
-+ code can be built using Borland's "C++ Builder 5.0".
-+ (Thanks to David Wu for this suggestion.)
-+- Added a "setPacketSizes()" function to "MultiFramedRTPSink" to make it
-+ possible to change the 'maximum' and 'preferred' size of outgoing
-+ RTP packets. (Thanks to Christian Gerstner for this suggestion.)
-+
-+2005.01.24:
-+- Some MIME-type parameters in SDP "a=fmtp:" lines are Boolean, taking only values
-+ 0 or 1. Sometimes these parameters are set (to 1), without an explicit "=1"
-+ being in the SDP "a=fmtp:" line. (This is not legal, but it sometimes occurs.)
-+ Our SDP parsing code (in "MediaSession.cpp") now checks for this.
-+
-+2005.01.23:
-+- More improvements to "AVIFileSink". MPEG-1, 2 or 4, JPEG and H.263 video is
-+ now supported, along with raw PCM or u-law audio. (However, audio is not
-+ yet working perfectly, and MPEG audio is currently not supported at all.)
-+ (Thanks to WIS Technologies for funding this work.)
-+- Changed the (many) calls to "gettimeofday()" to pass NULL as the 'timezone'
-+ parameter, because this isn't used.
-+
-+2005.01.13:
-+- Fixed a bug in "liveMedia/OnDemandServerMediaSubsession.cpp" that was reportedly
-+ causing crashes on some systems. (Thanks to Brian Wang for finding this.)
-+- Updated "MPEG1or2VideoStreamDiscreteFramer" and
-+ "MPEG4VideoStreamDiscreteFramer" to set appropriate presentation
-+ timestamps for B-frames. (Unlike I and P-frames, B-frames' timestamps are
-+ not monotonically increasing.) (Thanks to WIS Technologies for funding this work.)
-+
-+2005.01.07:
-+- Fixed a bug in "JPEGVideoRTPSink" that was causing incorrect packets to
-+ be generated when streaming using non-standard JPEG quantization tables
-+ (which must be included in the RTP packets).
-+- Updated the handling of incoming MP3 ADUs to allow for the possibility of
-+ receiving ADUs that contain 'ancillary data' at the end. (For example,
-+ ADUs for "mp3Pro" frames are like this.) Note, however, that our
-+ MP3 frame-to-ADU generating code currently doesn't include 'ancillary
-+ data' at the end of the generated MP3 ADUs. This will need to be fixed
-+ in order to be able to correctly *transmit* ADUs for "mp3Pro" frames.
-+- More work on "AVIFileSink". Recording of MPEG-4 video-only files now works.
-+
-+2004.12.29:
-+- Added a new liveMedia 'sink' class - "AVIFileSink" - for writing an AVI-format
-+ file. Note: This is not fully working yet, so don't try using it yet!
-+ (Thanks to WIS Technologies for funding this work.)
-+
-+2004.12.23:
-+- Fixed a bug in the previous release (when receiving MPEG-2 Transport RTP streams).
-+
-+2004.12.22:
-+- Updated "MPEG4GenericBufferedPacket::nextEnclosedFrameSize() to (i) allow
-+ for "generic" mode, and (ii) properly check for the absence of an
-+ "AU Header section". (Thanks to Erick van Rijk for this suggestion.)
-+- When receiving a MPEG-2 Transport Stream (either RTP *or* raw-UDP), pass it
-+ through a "MPEG2TransportStreamFramer", so that "durationInMicroseconds" is
-+ set appropriately, based on the stream's embedded PCR values.
-+ (Thanks to Dermot McGahon for this suggestion.)
-+- Changed the "num_packets_lost" statistics line (printed by "openRTSP -Q")
-+ to format as an int rather than as an unsigned. This is in case this value
-+ is negative (which can happen if duplicate packets are received).
-+ (Thanks to Norbert Donath for noting this.)
-+
-+2004.12.15:
-+- Changed the RTSP servers in the various test programs to use port 8554
-+ instead of port 7070 for RTSP (as an alternative to the standard port
-+ 554). It turns out that port 8554 is the official IANA-reserved port
-+ number for RTSP (alternative).
-+- Changed "RTSPClient" to include the "Scale:" header if the scale is being changed
-+ to 1.0 from something else. (Thanks to Matt Romaine for this suggestion.)
-+
-+2004.12.09:
-+- Fixed a bug in the handling of "audio/X-MP3-DRAFT-00" RTP streams.
-+ (Thanks to Dhananjay Deshpande for noticing this.)
-+
-+2004.12.07:
-+- Updated "RTSPClient" to parse the "Scale:" header (if any) in a response to
-+ a "PLAY" command, and set a corresponding field in the "MediaSession" or
-+ "MediaSubsession" structure.
-+
-+2004.12.06:
-+- Fixed a minor bug in "BasicTaskScheduler::SingleStep()" that would be triggered
-+ if the (optional) "maxDelayTime" parameter were unusually large.
-+- The "RTSPServer" implementation of RTP/RTC-over-TCP streaming will now work even
-+ if the client's RTSP "SETUP" command doesn't include an "interleaved=" field.
-+
-+2004.11.30:
-+- Added "RTSPServer" support for the RTSP "Scale:" header, which is used to
-+ implement 'trick play': fast forward and reverse play. The actual implementation
-+ of these depends on the media type; it is currently implemented for MPEG-1 or 2
-+ (including MP3) audio (forward play only), and for WAV (PCM) audio (forward or
-+ reverse play).
-+ (Thanks to Sony Corporation for funding this work.)
-+
-+2004.11.26:
-+- Improved "H263plusVideoRTPSource" to better recognize which packets begin
-+ a frame. (This should improve its performance on lossy networks.)
-+- Improved the parsing of MPEG-1 or 2 audio streams to ignore more bogus
-+ 'syncwords'.
-+- We now look for the 'Xing' VBR Table of Contents, and use this (if present)
-+ to implement seeking within VBR files.
-+- Updated "ADUFromMP3Source" to allow the internal data buffers to be flushed
-+ (e.g., if there is a discontinuity in the MP3 input data).
-+- When streaming a seekable MPEG audio stream on demand, insert filters that
-+ convert the input stream to ADU format, and then back to MP3. This allows
-+ us to seek within the stream without being tripped up by the MP3
-+ 'bit reservoir' (back-pointer).
-+
-+2004.11.20:
-+ - Fixed a bug in "MediaSession::initiateByMediaType()". (It was not allowing
-+ for the possibility that a subsession had already been initiated.)
-+
-+2004.11.19:
-+- For consistency (and ease of comparison), the "MIMEtype()"
-+ codec name substring for each "MediaSource" subsession is in upper case.
-+
-+2004.11.18:
-+- Added an optional "scale" parameter to the "RTSPClient" "play...()"
-+ methods, to allow a client to specify fast forward or rewind 'trick play'.
-+ (Thanks to Dermot McGahon for this suggestion.)
-+
-+2004.11.16:
-+- Fixed a bug in the way that "QuickTimeFileSink" records the duration of
-+ multi-channel audio tracks in ".mov" or ".mp4"-format files.
-+ (Thanks to Orban/CRL Inc. for funding this work.)
-+
-+2004.11.11a:
-+- Another minor update to "RTSPClient".
-+
-+2004.11.11:
-+- Updated the "RTSPServer" implementation to handle the case where a "PLAY"
-+ request does not contain a "Range:" header. (Suggestion by Brian Wang.)
-+- Reinstated the "MPEG4LATMAudioRTPSource" fix from version "2004.08.24".
-+ (It had accidentally gotten deleted.)
-+- Included Dermot McGahon's patch to "RTSPClient" to support the bogus
-+ non-standard 'Kasenna' variant of RTSP.
-+
-+2004.11.09a:
-+- Fixed the previous revision (RTSP seeking support) to work properly with VLC.
-+- Fixed a bug that was causing receivers of SSM streams to not receive RTCP packets. (Thanks to Alessandro Gaiarin for reporting this.)
-+
-+2004.11.09:
-+- Added support for seeking within streams. This currently works only for
-+ WAV audio file streams, and MPEG audio (include MP3) file sources.
-+ (However, it doesn't yet work properly for VBR MP3 files; this will get fixed.
-+ Also, it doesn't yet work properly with VLC.)
-+ (Thanks to Sony Corporation for funding this work.)
-+
-+2004.11.06:
-+- Improved the way that we specify output buffers for "RTPSink" objects.
-+ We now do this using a "maxSize" static member variable (instead of
-+ using a 'number of packets' variable as we did before). We also limit
-+ the size of the output buffer used for RTCP packets, to save space.
-+- When streaming a MPEG Transport Stream, don't set the RTP 'M' bit.
-+- When recording a ".mov" or ".mp4" file using "QuickTimeFileSink.cpp",
-+ we no longer fill in the "width" and "height" fields for audio tracks.
-+
-+2004.11.04:
-+- When streaming MPEG audio or WAV audio files on demand, we now return the
-+ correct file duration (in the RTSP "Range:" header and the SDP "a=range:"
-+ attribute), so that media players will report the correct stream duration.
-+ (Thanks to Sony Corporation for funding this work.)
-+- In "MultiFramedRTPSink", we now wait until we receive the first data before
-+ initializing "fNextSendTime" with the current wall-clock time.
-+ (Thanks to Eric Peters for suggesting this.)
-+
-+2004.11.02:
-+- Updated the RTSP "Range:" header (in a "PLAY" response) and the SDP "a=range:"
-+ attribute to support streaming from sources with finite durations.
-+ (Such sources can support seeking via RTSP.) The "ServerMediaSubsession"
-+ class now has a "duration()" virtual function. (In the future,
-+ "FileServerMediaSubsession" subclasses will redefine this, so that seeking
-+ within the file will work.)
-+ (Thanks to Sony Corporation for funding this work.)
-+
-+2004.11.01:
-+- Added support to "RTSPClient" for streaming RTSP/RTP over HTTP, using the technique
-+ described in Apple's document: <http://developer.apple.com/documentation/QuickTime/
-+QTSS/Concepts/chapter_2_section_14.html>.
-+ This can be used for streaming from a Darwin Streaming Server from behind a
-+ HTTP-only firewall. (Note that our own RTSP server implementation doesn't yet
-+ implement RTSP-over-HTTP, but this is on the 'to do' list.)
-+ (Thanks to Orban/CRL Inc. and WIS Technologies for funding this work.)
-+
-+2004.10.28a:
-+- Fixed "OnDemandServerMediaSubsession" so that "PAUSE"/"PLAY" works properly on
-+ unicast streaming from files.
-+
-+2004.10.28:
-+- Removed (perhaps temporarily) the "rtptime=" parameter from the "RTP-Info:" header
-+ that's returned in response to the RTSP "PLAY" command. It appears that this may
-+ be messing up A/V sync in QuickTime Player.
-+
-+2004.10.26:
-+- Updated "JPEGVideoRTPSink" (and "JPEGVideoSource") to allow for the
-+ possibility of sending custom quantiziation tables in JPEG/RTP packets.
-+- Fixed some compile warnings about unused named parameters. (Thanks to
-+ Thiago Correa for these suggestions.)
-+
-+2004.10.22:
-+- Added a new "MPEG1or2VideoStreamDiscreteFramer" class, similar to the existing
-+ "MPEG4VideoStreamDiscreteFramer".
-+
-+2004.10.21:
-+- Modified the order of SDP lines generated by a RTSP server
-+ (in "ServerMediaSession.cpp") to correspond to the exact order specified by
-+ the SDP RFC. JMIF clients are supposedly anal retentive about this.
-+ (Thanks to Fabrice Aeschbacher for noticing this.)
-+
-+2004.10.19:
-+- Updated "MPEG2TransportStreamFramer" to properly handle input data that
-+ doesn't begin with a 'sync' byte (0x47).
-+
-+2004.10.18:
-+- Added a new "removeServerMediaSession()" member function to "RTSPServer".
-+- Updated the implementation of the RTSPServer "RTPInfo:" header to include a
-+ "rtptime=" field.
-+- Improved the "WindowsAudioInputDevice" trick for making the microphone the
-+ first-listed device. (Thanks to Syncanph Xie for this suggestion.)
-+
-+2004.10.14:
-+- Added a new argument "-4" to "openRTSP" (with corresponding updates to
-+ "QuickTimeFileSink"), to generate a "MP4"-format file. (Currently, this
-+ works for MPEG-4 audio only.)
-+ (Thanks to Orban/CRL Inc. for funding this work.)
-+
-+2004.10.13:
-+- Fixed a typo that was causing the Windows version not to build.
-+ (Thanks to Thiago Correa for noticing this.)
-+
-+2004.10.11:
-+- Updates to "RTSPServer":
-+ - Include a "Date:" header in each response
-+ - Include a "Range:" header in each "PLAY" response.
-+ - Include "RTP-Info:" header in each "PLAY" response.
-+- Made "SimpleRTPSink" more idiot-proof.
-+
-+2004.10.07:
-+- Improved the parser in "MPEG4VideoStreamFramer" to be more tolerant of
-+ bad/unexpected data.
-+- Moved the code for opening input files by name (which includes a special-case
-+ hack for "stdin") to a single common file - "InputFile.cpp" - to get rid of
-+ duplicated code.
-+
-+2004.10.04:
-+- Fixed "UserAuthenticationDatabase::addUserRecord()" (in "RTSPServer.cpp") to
-+ make a copy of the "password" string, before adding it to the hash table.
-+ (The hash table already makes a copy of the "username" (key) string.)
-+
-+2004.10.03:
-+- Added support for receiving raw UDP streams (in addition to normal RTP/UDP streams)
-+ (Thanks to Derk-Jan Hartman)
-+
-+2004.09.30:
-+- Updated the RTSP server "UserAuthenticationDatabase" to (i) allow for it to
-+ be subclassed, and (ii) allow it to store passwords that are really
-+ md5(<username>:<realm>:<password>)
-+
-+2004.09.24:
-+ Added support for access control (using digest authentication) to "RTSPServer".
-+ Also, added example code to the "testOnDemandRTSPServer" test program to illustrate
-+ how to use this. (Thanks to Orban/CRL Inc. and WIS Technologies for
-+ funding this work.)
-+
-+2004.09.22:
-+- Moved the digest authentication support out of "RTSPClient.cpp"
-+ (and "SIPClient.cpp") into a new file: "DigestAuthentication.cpp". There's also
-+ a corresponding new header file: "DigestAuthentication.hh". This is in preparation
-+ for adding digest authentication support to our RTSP server implementation also.
-+
-+2004.09.20:
-+- More improvements to the multi-unicast streaming support (from a single input
-+ source). RTP-over-TCP streaming is now supported in this case. Updated
-+ "testOnDemandRTSPServer" to add a variable "reuseFirstSource" (default: False)
-+ that can be used to implement this.
-+
-+2004.09.09:
-+- Made a minor improvement to the multi-unicast streaming support.
-+
-+2004.09.08:
-+- Added optional "author" and "copyright" parameters to "DarwinInjector::setDestination()".
-+- Added an optional "miscSDPLines" parameter to "ServerMediaSession::createNew()",
-+ to allow the caller to add extra SDP lines to the session description.
-+- Fixed a minor bug in the media tables reclamation code.
-+- Added still more support for multi-unicast RTSP/RTP streaming from a
-+ single input source. (Thanks to Orban/CRL, Inc. and WIS Technologies for funding
-+ this work.)
-+
-+2004.09.05:
-+- We now more gracefully handle malformed "m=" SDP lines. (Thanks to
-+ Derk-Jan Hartman for noticing this problem.)
-+- In "RTSPClient", we now make the "CSeq" number a static variable, to avoid
-+ potential problems if we connect to the same server with the same URL
-+ more than once. (Thanks to Keith Gurganus for the suggestion.)
-+- Modified "RTSPServer" to use the destination interface IP address in
-+ its "rtsp://" URL.
-+
-+2004.09.02:
-+- Modified "GroupsockHelper.cpp" to allegedly support building for WinCE.
-+
-+2004.08.26:
-+- Fixed a bug that could cause "AMRAudioRTPSource"s to not get reclaimed.
-+ (Thanks to Chenglim Ear for reporting this.)
-+- More support for multi-unicast RTSP/RTP streaming from a single input source.
-+
-+2004.08.24:
-+- Modified "LATMAudioRTPSource" to include the initial data length field
-+ in the data that's delivered to a client. (A decoder was needing to see this.)
-+- Added a new "MPEG4VideoStreamDiscreteFramer" class, as a (more efficient)
-+ alternative to "MPEG4VideoStreamFramer" when the input source is a sequence of
-+ discrete MPEG-4 frames, rather than a byte stream.
-+- Fixed a minor bug in "Media.cpp". (Thanks to Thiago Correa.)
-+- Added more support for multi-unicast RTSP/RTP streaming from a single input
-+ source. (This now working, except for TCP connections - to be completed.)
-+
-+2004.08.17:
-+- Made the parsing of MPEG-1 or 2 video more robust, in case a Video Sequence Header
-+ doesn't appear exactly where it should.
-+- Added initial support for multi-unicast RTSP/RTP streaming from a single input
-+ source. (This isn't fully working yet - more support needs to be added.)
-+
-+2004.08.13:
-+- Added a "numChannels" parameter to "MPEG4GenericRTPSink" (optional)
-+ and "MPEG4LATMAudioRTPSink".
-+
-+2004.08.12:
-+- Fixed a couple of small memory leaks (noticed by Gabriel Bouvigne).
-+
-+2004.07.31:
-+- Added support for MPEG-4 LATM audio RTP streaming. (MPEG-4 LATM audio RTP
-+ *receiving* had already been implemented.) (Thanks to Orban/CRL, Inc. for
-+ funding this work.)
-+
-+2004.07.27:
-+- Updated the MPEG Program-to-Transport Stream conversion mechanism to set the
-+ correct stream tags depending on whether the input data is MPEG-1 or 2.
-+
-+2004.07.23:
-+- Added a "-O" (upper-case letter 'oh') option to "openRTSP". This tells the
-+ program to not send an initial "OPTIONS" request prior to "DESCRIBE".
-+- Modified "BasicTaskScheduler" to better allow subclassing.
-+- Added an optional "maximum delay time" option to
-+ "BasicTaskScheduler0::SingleStep()". This allows subclasses to impose a
-+ limit on how long "select()" can delay, in case it wants to also do polling.
-+
-+2004.07.22:
-+- Fixed a serious bug that was causing some MPEG Program Stream files to be parsed
-+ incorrectly - especially if they have non-MPEG header data at the front.
-+- Modified the way in which "Medium" objects are reclaimed, to overcome an
-+ obscure bug.
-+
-+2004.07.20:
-+- Added a comment to "DeviceSource.cpp" to clarify the purpose of "fTo", because
-+ several people have gotten this wrong.
-+- Made ~BasicUsageEnvironment protected (just like ~UsageEnvironment)
-+- Fixed "samplingFrequencyFromAudioSpecificConfig()" to remove a memory leak.
-+
-+2004.07.16:
-+- Fixed a bug in "AMRAudioRTPSource", in the way that it handled input RTP packets
-+ that contained more than one AMR frame.
-+ (Thanks to Gabriel Bouvigne for reporting this problem.)
-+- We no automatically reclaim the memory that was allocated for the "UsageEnvironment"
-+ "liveMediaPriv" and "groupsockPriv" structures, once their tables become empty.
-+
-+2004.07.14:
-+- Updated "QuickTimeFileSink's" MPEG-4 audio recording mechanism again, this time
-+ to support aacPlus as well as regular AAC.
-+
-+2004.07.13:
-+- Updated "QuickTimeFileSink" to support recording MPEG-4 audio (including
-+ hint tracks).
-+- Modified "MPEG4VideoStreamFramer" to allow simplified subclasses that take
-+ discrete frames as input (and therefore don't need a full parser).
-+
-+2004.07.07:
-+- Added the (rather bogus) "a=x-qt-text-nam:" and "a=x-qt-text-inf:" attributes
-+ to the SDP descriptions delivered by "RTSPServer" (in response to a "DESCRIBE"
-+ operation). These attributes get the same strings as the "s=" and "i=" lines
-+ (respectively). However, QuickTime Player doesn't do anything with those lines,
-+ but does recognize the "a=x-qt-*" lines.
-+
-+2004.07.06:
-+- Modified the code so that it will build for WinCE.
-+ (Thanks to Gabriel Bouvigne for these changes.)
-+
-+2004.07.02:
-+- Fixed a bug in HashTable::RemoveNext() (noted by Greg Bothe)
-+- Added partial support for recording MPEG-4 audio in "QuickTimeFileSink".
-+ (Hinting is not yet working properly for this media type.)
-+- Added an option to "MPEG1or2AudioStreamFramer" to allow its presentation times
-+ to be resynchronized by its input source.
-+
-+2004.06.18:
-+- Fixed a bug in "MPEG1or2AudioStreamFramer" (in the way it was checking for
-+ syncwords at the start of each frame).
-+- Updated the "MPEGVideoStreamFramer" (base) class to report "fNumTruncatedBytes".
-+- Increased "OutPacketBuffer::numPacketsLimit" from 20 to 30.
-+
-+2004.06.17:
-+- Another improvement to the "MPEG1or2Demux" parsing code.
-+- Updated "QuickTimeFileSink" to support recording MPEG-4 video tracks into
-+ ".mov" files. (There's also basic support for recording MPEG-4 audio, but
-+ this isn't quite working yet.)
-+
-+2004.06.14:
-+- Updated "MPEG1or2Demux" to make the checking for a PACK_START_CODE more
-+ robust if it's not immediately present where we expect to see it.
-+- Fixed a bug in "JPEGVideoRTPSource" that could cause a problem on
-+ 64-bit architectures.
-+ (Thanks to Andrey Filippov for noticing this.)
-+
-+2004.06.11:
-+- Removed an error from a error message in StreamParser.
-+
-+2004.06.09:
-+- Updated the implementation of the aggregate and non-aggregate RTSP "PLAY"
-+ operations to not include a "Range:" header if the 'start' parameter is < 0.
-+ (This is used when resuming from a "PAUSE", for example.)
-+ Also, removed an unnecessary "Range:" header from the "PAUSE" command.
-+ (Thanks to Gabriel Bouvigne for this suggestion.)
-+- Reimplemented "MultiFramedRTPSource::doGetNextFrame1()" to use iteration
-+ rather than recursion, in the case where a large frame is fragmented over
-+ multiple incoming RTP packets. This avoids the possibility of stack overflow
-+ occurring if there are very large fragmented frames in the input data.
-+
-+2004.06.07:
-+- Added optional "start" and "end" parameters to the aggregate "PLAY" operation
-+ in "RTSPClient". (We had already done this for the non-aggregate "PLAY" operation.)
-+- Made the input banks buffers in "StreamParser" heap-allocated, rather than making
-+ them member variables. This avoids any potential compiler problems with having
-+ such large structures as member variables.
-+
-+2004.06.03:
-+- Added the new 'liveMedia' class "MPEG2TransportFileServerMediaSubsession", for
-+ unicast on-demand streaming of MPEG-2 Transport Stream files.
-+- Added the new test programs "testMPEG2TransportStreamer" and
-+ "testMPEG1or2ProgramToTransportStream", and added support for Transport File
-+ streaming to "testOnDemandRTSPServer".
-+ (Thanks to DVAgroup Inc. for funding this work.)
-+
-+2004.06.02:
-+- Fixed "MediaSession" to no longer apply the normal RTP 'M' bit rule
-+ when processing incoming "video/MP2T" (or "video/MP1S" or "video/MP2P")
-+ streams. (For such streams, the 'M' bit does not mean 'end of frame'.)
-+
-+2004.06.01:
-+- Updated "RTSPClient" to handle "Session:" headers that have a trailing
-+ ";timeout=" part. (Thanks to Gabriel Bouvigne for suggesting this.)
-+
-+2004.05.31:
-+- We now handle SDP "m=" lines with an optional <number-or-ports> field
-+ (although we don't actually do anything with this value). Thanks to
-+ Derk-Jan Hartman for this suggestion.
-+
-+2004.05.29a:
-+- Made a correction to the previous change.
-+
-+2004.05.29:
-+- Added a call to "DarwinInjector" to set the TCP socket's send buffer to 100 kBytes.
-+
-+2004.05.28:
-+- Renamed some variables in "MP3Internals.cpp" (and made them static) to
-+ overcome a name conflict seen by the VLC developers. (Thanks to
-+ Derk-Jan Hartman for pointing this out.)
-+
-+2004.05.26:
-+- Fixed a bug (apparently introduced with recent header file changes) that
-+ could cause MP3 files to not be read correctly on Windows. (In particular,
-+ this could cause "testMP3Streamer" to not work correctly on Windows.)
-+ Thanks to David Skiba for the bug report.
-+
-+2004.05.24:
-+- Added a new member function "lastReceivedSSRC()" to "RTPSource". This makes it
-+ possible for a receiver to demultiplex incoming RTP data based on SSRC.
-+ (Later this functionality should perhaps be added to "(MultiFramed)RTPSource"
-+ instead.)
-+- More updates to "DarwinInjector".
-+
-+2004.05.19:
-+- Another update to "openRTSP" for a customer job.
-+
-+2004.05.17:
-+- Added a new test program "testMPEG4VideoToDarwin.cpp" that is similar
-+ to "testMPEG4VideoStreamer", except that instead of transmitting the
-+ video RTP/RTCP packets via multicast, it transmits them - via a RTSP TCP
-+ connection - to a remote Darwin Streaming Server.
-+
-+2004.05.12:
-+- Added a new "liveMedia" class - "DarwinInjector" - that can be used to send an
-+ audio and/or video RTP/RTCP stream to a remote Apple 'Darwin' (aka. QuickTime)
-+ Streaming Server, for playing by (potentially multiple) RTSP clients.
-+- Added a new test program "testMPEG1or2AudioVideoToDarwin.cpp" that is similar
-+ to "testMPEG1or2AudioVideoStreamer", except that instead of transmitting the
-+ audio/video RTP/RTCP packets via multicast, it transmits them - via a RTSP TCP
-+ connection - to a remote Darwin Streaming Server.
-+
-+2004.05.09:
-+- Removed a line of junk that had erroneously been left at the start of Makefile.tail.
-+- The "testRelay" test program has been reprogrammed in the usual liveMedia
-+ 'source->sink' style.
-+
-+2004.05.07:
-+- Another update to RTSPClient for a customer job.
-+
-+2004.05.04:
-+- Added an #include to "BasicUDPSink.cpp" to prevent a compilation problem on
-+ some platforms.
-+
-+2004.05.02:
-+- Some updates to RTSPClient and openRTSP for a customer job.
-+
-+2004.04.27:
-+- Fixed the round-trip time estimation routine in "RTPSink" to allow for
-+ the possibility of the computed round-trip time being negative. This can
-+ happen if there is clock drift between the sender and receiver, and if the
-+ actual round-trip time was quite small. If this happens, the returned
-+ round-trip time value is zero.
-+ (Thanks to Dixon Siu for alerting us to this issue.)
-+
-+2004.04.23:
-+- Updated some #ifdef's so that the code will compile with "mingw" on Windows.
-+ (Thanks to Joey Parrish for this.)
-+- Added a "BasicUDPSink" class to "liveMedia", for UDP streaming without RTP.
-+- Added new 'filter' classes to "liveMedia" for
-+ - converting MPEG Program Streams to Transport Streams.
-+ - 'framing' MPEG Transport Streams to return the 'duration' of each Transport
-+ packet (i.e., the inter-packet time gap).
-+
-+2004.04.09:
-+- Fixed a byte-ordering bug in the code for streaming from WAV audio files
-+ (used in "testWAVAudioStreamer" and "testOnDemandRTSPServer"). We were converting
-+ 16-bit samples from host to network order before streaming them. That was wrong,
-+ because audio samples are always stored in WAV files in little-endian order.
-+ The correct thing to do was to convert from little-endian to big-endian order.
-+
-+2004.03.27:
-+- Fixed a minor bug in the top-level Makefile. (Thanks to Matteo Nastasi for
-+ noting this.)
-+
-+2004.03.27:
-+- Modified "H261VideoRTPSource" so that it returns individual packet payloads to
-+ the caller, rather than waiting to form complete frames. Also, added a member
-+ function "lastSpecialHeader()" that returns the 4-byte special header for the
-+ most recently-read payload.
-+
-+2004.03.23:
-+- Added support for unicast RTSP/RTP streaming from VOB files, and added an example
-+ of this to "testOnDemandRTSPServer".
-+
-+2004.03.17:
-+- Made a series of minor bug fixes and improvements suggested by Sony.
-+
-+2004.03.15:
-+- Fixed a bug in "OnDemandServerMediaSubsession" (the RTCP instance was being
-+ deleted at the wrong time). (Thanks to Clark Taylor for noticing this.)
-+- Minor modifications to the 2004.02.26 "RTPSink" changes.
-+- Updated the "AMRAudioRTPSource" implementation to support 'bandwidth-efficient'
-+ mode. (Warning: This has not yet been tested.)
-+
-+2004.03.12:
-+- Updated the "RTSPClient" class to support an aggregate "PAUSE" operation.
-+
-+2004.03.11:
-+- Added an implementation of AMR audio RTP receiving ("AMRAudioRTPSource"), to
-+ match the existing"AMRAudioRTPSink". Also, added a new class "AMRAudioFileSink"
-+ (a subclass of "FileSink") that outputs an AMR audio input stream to a file,
-+ including the file 'magic number' and frame headers. "openRTSP" was also updated
-+ to output received AMR audio streams using "AMRAudioFileSink"s.
-+ (Thanks to SIGOS Systemintegration GmbH for funding this work.)
-+- Cleaned up the "RTPSource" changes that were made in version 2004.02.26.
-+
-+2004.03.05:
-+- Updated the "RTSPServer" implementation to properly handle aggregate
-+ operations for which the URL ends with a "/". Some clients, such as
-+ "gmp4player" do this.
-+
-+2004.03.03a:
-+- Fixed a bug in "MultiFramedRTPSource.cpp" where we were not properly
-+ skipping over "contributing source" fields, if they were present in the
-+ RTP header. (Thanks to Phillip Bruce for noticing this.)
-+
-+2004.03.03:
-+- Fixed the "testMP3Streamer" test program to keep the RTP sink, RTCP instance,
-+ Groupsocks, and RTSP server (if used) open across all iterations of the loop.
-+ (Thanks to Frank Xia for noticing this problem.)
-+
-+2004.03.02a:
-+- The previous version accidentally had the built-in RTSP server enabled in
-+ "testMP3Streamer". It should be disabled by default.
-+
-+2004.03.02:
-+- Fixed a few potential errors that were found by running "valgrind" on some of
-+ the test programs (on Linux).
-+
-+2004.03.01:
-+- Added two new options to "openRTSP" (and "playSIP"):
-+ "-E <max-inter-packet-gap-time>"
-+ Tells the program to close the stream if no new packets have been
-+ received in at least <max-inter-packet-gap-time> seconds.
-+ "-B <input-socket-buffer-size>"
-+ Tells the program to set the network socket input buffer (for each
-+ input stream) to <input-socket-buffer-size> bytes. (This can be useful
-+ when testing QOS for different input buffer sizes.)
-+ (Thanks to SIGOS Systemintegration GmbH for funding this work.)
-+
-+2004.02.26:
-+- Added - to "RTPSink" - a database of statistics from incoming RTCP
-+ "Reception Report" (RR) packets. (This mirrors the similar database
-+ for RTCP SR packets that was already part of "RTPSource".) (Thanks to
-+ Clark Taylor for contributing this code.)
-+
-+2004.02.23:
-+- Fixed a bug in "MP3ADUinterleaving.cpp" that was causing frame durations
-+ to not be set properly when handling interleaved MP3 ADUs.
-+
-+2004.02.20a:
-+- Corrected a typo in the previous "#ifdef"s
-+
-+2004.02.20:
-+- Added "#ifdef"s to the two files that #include <strstream.h>, so that they
-+ will compile OK with GCC v3.*. (Thanks to Goetz Waschk for this.)
-+- Changed the stream parser debugging statements to make it clear that the
-+ use of C++ language exceptions by the stream parsing code is normal, and
-+ is not an error.
-+
-+2004.02.19:
-+- Updated the "RTSPServer" implementation to support RTP-over-TCP streaming
-+ (if requested by the client).
-+
-+2004.02.13:
-+- Changed the implementation of the "BasicUsageEnvironment" "operator<<"
-+ member functions so that they use "fprintf(stderr, ..." rather than
-+ "cerr << ...". People compiling in some environments were getting
-+ complaints about "cerr" being undefined (presumably because the right
-+ #include files weren't being found). However, everyone should have
-+ "stdio.h". (Thanks to Clark Taylor for this suggestion.)
-+- Changed the "genMakefiles" script to complain if the user tries to
-+ run it without an "<os-target"> parameter.
-+
-+2004.02.09:
-+- Updated "RTSPServer" once again - this time to ensure that each incoming request
-+ is read completely (i.e., up until the trailing <CR><LF><CR><LF>).
-+ (Thanks to Regis Feneon for helping to fix this.)
-+- Added a new "WAVAudioFileServerMediaSubsession" class to support on-demand
-+ streaming from WAV audio files. Also, updated the "testOnDemandRTSPServer"
-+ test program to illustrate this.
-+
-+2004.02.05:
-+- Updated the "WindowsAudioInputDevice" project to build two different versions
-+ of the library: One that uses Windows' built-in mixer; another that doesn't.
-+
-+2004.02.04:
-+- Fixed an obscure bug in "MPEG4ESVideoRTPSink" that could (very rarely)
-+ cause incorrect RTP timestamps to be set for the last fragmented packet
-+ of large MPEG-4 frames. This could cause QuickTime Player's video playback
-+ to freeze.
-+
-+2004.02.03:
-+- Added new "liveMedia" classes "MPEG1or2FileServerDemux" and
-+ "MPEG1or2DemuxedServerMediaSubsession" for supporting on-demand RTSP/RTP
-+ streaming of MPEG-1 or 2 Program Stream files. Also, updated the
-+ "testOnDemandRTSPServer" test program to support streaming of such
-+ a file.
-+- We no longer set SO_REUSEPORT for stream (TCP) sockets, because it usually
-+ doesn't make sense to share TCP ports. (As a side effect, this means that it
-+ will no longer be possible to run more than one RTSP server (using the same
-+ TCP port) simultaneously on the same computer - something that should never have
-+ been possible in the first place.)
-+- Fixed a minor RTSP server bug that was causing incorrect "destination"s to be set
-+ (for multicast streams) in the "SETUP" response "Transport:" header.
-+
-+2004.01.28:
-+- Yet another bug fix to "MPEG4VideoStreamFramer", to properly handle the
-+ case where MPEG-4 "GOV" headers don't occur on exact 'second' boundaries.
-+ (Thanks to Michael Niedermayer (via Michael Hess) for clarifying this.)
-+
-+2004.01.27:
-+- Fixed a bug in the previously added (but normally "#ifdef"d out)
-+ debugging code in "MultiFramedRTPSource.cpp".
-+- Made a fix to the (normally "#ifdef"d out) debugging code in
-+ "AC3AudioStreamFramer.cpp". (Thanks to Yigal for noticing this.)
-+
-+2004.01.24:
-+- Changed "openRTSP" to use 20 kByte "FileSink" receive buffers by default,
-+ instead of 10 kBytes. (Some frames in MPEG-4 streams were exceeding the
-+ previous limit.)
-+- Added code to "MultiFramedRTPSource.cpp" to easily let the developer
-+ simulate packet loss.
-+
-+2004.01.23:
-+- Changed "RTSPServer" to include a "Content-Base:" header in "DESCRIBE"
-+ responses. This overcomes a bug in QuickTime Player, which sends incorrect
-+ "SETUP" URLs otherwise.
-+- Fixed a bug in "MPEG4VideoStreamFramer" that was causing some frames
-+ to erroneously be given a duration of 0.
-+
-+2004.01.22:
-+- Made another improvement to the "RTSPServer" implementation. It once again
-+ properly handles streams without a stream name (i.e., where the "streamName"
-+ parameter to "ServerMediaSession::createNew()" was NULL.
-+- Updated the (little-used) "ByteStreamMultiFileSource" class to take
-+ "preferredFrameSize" and "playTimePerFrame" parameters, just like
-+ "ByteStreamFileSource". Also added a member function to ask whether
-+ a new file has just been read from.
-+
-+2004.01.21:
-+- Made several improvements/bugfixes to the "RTSPServer" implementation:
-+ - Worked around an apparent bug in QuickTime Player: It sometimes
-+ doesn't include a proper URL in RTSP "SETUP" requests.
-+ - Corrected the 'frame' (really tick) rate and frame duration that
-+ are computed for 'fixed_vop_rate' MPEG-4 video streams.
-+ - Compensated for some buggy MPEG-4 video streams that don't set
-+ timestamp information properly.
-+- MPEG-4 video end codes will now be included in the outgoing RTP stream,
-+ and received properly by RTSP clients.
-+- Fixed "RTSPClient" to be more tolerant of RTSP "Transport:" headers that
-+ contain more than one successive ';' character. (Darwin Streaming Server
-+ sometimes does this.)
-+
-+2004.01.19:
-+- Changed "RTSPServer" to not create per-session state when handling
-+ "DESCRIBE", but instead to wait until "SETUP". This fixes a problem
-+ that was causing the "VLC" media player to fail to work with our
-+ "RTSPServer" implementation, because VLC uses one RTSP TCP connection
-+ to do the "DESCRIBE", and then another to do "SETUP" and "PLAY".
-+ (Thanks to Emmanuel Dufour for pointing this out.)
-+- Updated "MPEG4VideoStreamFramer" to include the VIDEO_SEQUENCE_END_CODE
-+ in the output stream if it sees it in the input.
-+
-+2004.01.10:
-+- Fixed the "RTSPServer" implementation to properly return a "server_port" field
-+ in the RTSP "SETUP" response for unicast streams. Also, the server ports
-+ (RTP and RTCP) are now chosen separately, and will no longer be the same
-+ as the client ports if the client and server are running on the same machine.
-+ (That did not work on some Linux systems.)
-+- Fixed a bug in "MP3ADU" that was causing frame durations to not be set properly
-+ when translating between MP3 frames and ADU frames.
-+
-+2004.01.09:
-+- Modified "RTSPClient" to handle embedded NULL characters in a SDP
-+ description. (These are not legal, but they have been seen in some cases.)
-+
-+2004.01.06:
-+- Modified the FramedSource 'after getting' function signature to take two new
-+ parameters: (1) The number of bytes (if any) that were truncated from the
-+ delivered data, and (2) The duration (in microseconds) of the delivered frame.
-+ For backwards compatibility with old code, the old 'after getting' function
-+ signature is still supported, but will be removed in some future version of
-+ the code. (The "getPlayTime()" function was also removed.)
-+
-+2003.12.26:
-+- Made "FramedFilter" objects implement the "stopPlaying()" function by
-+ also calling "stopPlaying()" on their source object.
-+- Fixed an obscure bug in "RTSPClient".
-+
-+2003.12.20:
-+- Made the "video/H263-2000" MIME type use the same RTP payload format as
-+ "video/H263-1998". (Thanks to Norbert Doneth for suggesting this.)
-+
-+2003.12.19:
-+- Fixed a minor bug in "RTSPServer" (some allocated memory wasn't being
-+ freed properly). (Thanks to Konstantin Lunin for finding this.)
-+
-+2003.12.16:
-+- Added "-DSOCKLEN_T=socklen_t" to the "COMPILE_OPTS =" line in
-+ the file "config.solaris", so that the code will compile
-+ correctly for 64-bit Solaris systems.
-+
-+2003.11.25:
-+- Put some error checks back into "WindowsAudioInputDevice".
-+
-+2003.11.21:
-+- Some case-insensitive string comparisons weren't working properly in Windows; fixed.
-+
-+2003.11.19:
-+- Added a global Boolean variable to flag when RTP I/O over a TCP connection fails.
-+ This hack allows higher-level code to check for this.
-+
-+2003.11.16:
-+- Fixed "RTPInterface" to not infinite loop when trying to read from a TCP
-+ connection that has closed.
-+- Modified "BasicTaskScheduler" to overcome a bug in Windows that sometimes
-+ causes "select()" to fail.
-+
-+2003.11.13:
-+- Made "WindowsAudioInputDevice" a bit more robust against broken audio drivers.
-+
-+2003.11.06:
-+- Modified "groupsock/inet.c" to allow the system-supplied "random()" and "srandom()"
-+ functions to be used instead of our own "our_..." implementation.
-+ This is done if USE_SYSTEM_RANDOM is defined (e.g., in the "config.*" file).
-+
-+2003.11.06:
-+- Modified the "MPEGVideoStreamParser" constructor, in response to a complaint
-+that some compilers would choke on the old code.
-+
-+2003.10.30:
-+- Added a warning output message to "MultiFramedRTPSink::afterGettingFrame1()"
-+ whenever the input frame appears to exceed the maximum buffer size. This
-+ maximum buffer size can be increased by changing
-+ "OutPacketBuffer::numPacketsLimit".
-+
-+2003.10.27:
-+- Changed the "MultiFramedRTPSource" error message (added in 2003.10.04) to apply
-+only to frame sizes > 1000, so that (e.g.) QCELP RTP sources don't trigger it.
-+
-+2003.10.24:
-+- Fixed the RTSP server implementation to put SDP lines in the correct order
-+(as defined by the SDP speecification). Also, added "Cseq:" lines that were
-+missing from "404" error responses. (Thanks to Bill May for noting these bugs.)
-+- Improved the implementation of MPEG-4 video framing and streaming.
-+
-+2003.10.08:
-+- Fixed a bug in the previous "FileSink" update that was causing "openRTSP"
-+to crash when recording a MPEG-4 video stream (using the "-m" option).
-+(Thanks to Jiangzhou Scu for noticing this bug.)
-+
-+2003.10.07:
-+- Updated the "FileSink" class to take an optional Boolean parameter
-+"oneFilePerFrame". If set, a separate file will be output for each
-+incoming frame. The frame's presentation time is used as a
-+file name suffix, to distinguish the files.
-+- Added a new option "-m" to "openRTSP" (and "playSIP"). This option
-+causes a separate file to be written for each frame (using the
-+above-mentioned new feature of "FileSink").
-+
-+2003.10.05:
-+- Renamed the new openRTSP/playSIP "-S" option to "-b".
-+
-+2003.10.04:
-+- Added an error message to "MultiFramedRTPSource" to report when
-+the client's receive buffer is too small for an incoming frame.
-+(This could happen with large JPEG frames, for example.)
-+- Updated the signature to "FileSink" to take an optional 'buffer size'
-+parameter as argument. (The default value is 10000.)
-+- Added a "-S <file-sink-buffer-size>" option to "openRTSP" and "playSIP".
-+
-+2003.09.30:
-+Improved the default implementation of
-+"RTPSink::hasBeenSynchronizedUsingRTCP()" to more accurately report
-+whether or not the most recently-delivered packet's presentation time
-+was synchronized using RTCP SRs. (Thanks to Luca Abeni for pointing
-+out the possibility of a problem with the old implementation.)
-+
-+2003.09.25:
-+Improved the support for unicast RTSP/RTP streaming. Also, added a new
-+test program "testOnDemandRTSPServer" that demonstrates how to use this.
-+
-+2003.09.19:
-+- Added support for unicast streaming from a "RTSPServer".
-+ (A test program that demonstrates this will be available shortly.)
-+ (Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands)
-+ for funding this work.)
-+- Modified the "strDup()" function to return NULL (instead of crashing)
-+ if passed a NULL parameter.
-+
-+2003.09.11:
-+- Another improvement/bugfix to the "MultiFramedRTPSink"
-+ implementation.
-+- Changed the implementation of "RTSPServer" and "ServerMediaSession"
-+ in preparation for implementing unicast streaming from RTSP servers.
-+ (This is something that's not ready yet, but close...)
-+
-+2003.09.05:
-+Fixed the implementation of "JPEGVideoRTPSource" so that it prepends
-+a proper JFIF JPEG header to the start of each incoming JPEG frame.
-+This means that programs such as "openRTSP" and "MPlayer" will now
-+receive/play JPEG/RTP streams correctly.
-+
-+2003.09.03:
-+Improved the implementation of "MultiFramedRTPSink" to more efficiently
-+handle the case where input frames get broken up into multiple outgoing
-+RTP packets. We now eliminate an uncessary "memmove()" for each
-+fragment. In particular, this should make MPEG-1 or 2 and motion-JPEG
-+video streaming more efficient.
-+
-+2003.09.01:
-+- Added support for reading and streaming AMR audio files (as defined in
-+RFC 3267). Also added a new test program "testAMRAudioStreamer".
-+(Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands) for
-+funding this work.)
-+
-+2003.08.28a:
-+- When "openRTSP" writes out a recorded MPEG-4 Elementary Stream video file,
-+it now writes SDP 'config' information to the front of the file beforehand.
-+This 'config' information contains VOL etc. headers that can be useful
-+for playback.
-+
-+2003.08.28:
-+- Added 'framer' and RTP sink classes for MPEG-4 Elementary Stream video.
-+(Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands) for
-+funding this work.)
-+- Added a new test program "testMPEG4VideoStreamer".
-+- Fixed a bug with RTP-over-TCP reading that could cause a crash if the
-+same TCP socket number gets reused for a later stream. Also, made this
-+code more thread-safe.
-+
-+2003.08.21:
-+Renamed all of the MPEG-1 or 2 class and program names from "MPEG*" to
-+"MPEG1or2*". This is to distinguish these from the classes and programs
-+that use MPEG-4.
-+
-+2003.08.19:
-+Made the maximum buffer size in "MediaSink.cpp" a parameter that can be
-+set (changed) at runtime. (Reset the default back to 20* packet size)
-+
-+2003.08.18:
-+- Fixed "JPEGVideoRTPSink" to use the standard RTP payload format code
-+(26) for JPEG RTP streams.
-+- Updated "MediaSink.cpp" to increase the maximum buffer size for incoming
-+data. This makes it possible to stream large JPEG frames (which are
-+fragmented over multiple outgoing RTP packets).
-+
-+2003.08.16:
-+- Added new classes "AudioRTPSink" and "VideoRTPSink" as parent classes
-+of the various audio and video RTP sink classes, respectively.
-+- Added a new "JPEGVideoRTPSink" class, and a "JPEGVideoSource" class
-+that can be used as an abstract base class for particular JPEG sources.
-+
-+2003.08.07:
-+Minor change to "MediaSink".
-+
-+2003.07.29:
-+Updated "RTSPClient" to include a "tearDownMediaSession()" operation,
-+in addition to "tearDownMediaSubsession(). "openRTSP" now uses just
-+the "tearDownMediaSession()" operation. (Darwin Streaming Server was
-+barfing with "tearDownMediaSubsession()"). Thanks to Edward Estabrook
-+for suggesting this.
-+
-+2003.07.27:
-+Added a new "-F <fileName-prefix>" option to "openRTSP" (and "playSIP").
-+This can be useful if you are running "openRTSP" several times,
-+in the same directory, to play several different RTSP streams
-+(e.g., from a script). (Thanks to Norbert Donath for this suggestion.)
-+
-+2003.07.14:
-+Updated the "WAVAudioFileSource" implementation (and the
-+"testWAVAudioStreamer" test program) to better report any reason for
-+a WAV file to be invalid.
-+
-+2003.07.13:
-+- Added new filter classes for converting between 16-bit PCM and
-+8-bit u-law audio, and between host and network order for 16-bit values.
-+(See "liveMedia/include/uLawAudioFilter.hh" for details.)
-+- Added a new class "WAVAudioFileSource" for reading/processing
-+WAV audio files.
-+- Added a new test program "testWAVAudioStreamer" that reads a WAV
-+audio file - "test.wav" - and streams it via multicast (using a built-in
-+RTSP server).
-+- Updated "MediaSession" to recognize "L8" and "L16" RTP audio streams
-+(to be handled by "SimpleRTPSource").
-+
-+2003.07.07:
-+- Fixed a bug that would cause "vobStreamer" to crash if (incorrectly)
-+run with no arguments.
-+- Updated the "test*Streamer" test programs to print out the "rtsp://"
-+URL of the built-in RTSP server (if it's enabled).
-+
-+2003.07.01a:
-+Updated the "WindowsAudioInputDevice" subdirectory to:
-+- Change the name of the library from "WindowsAudioInputDevice.lib" to
-+"libWindowsAudioInputDevice.lib".
-+- Added a console test program - "showAudioInputPorts" - that lists
-+the audio input ports that are currently available.
-+
-+2003.07.01:
-+Added a new subdirectory "WindowsAudioInputDevice", which is a
-+Windows-specific implementation of the "AudioInputDevice" class.
-+This can be used by Windows applications to read PCM audio from
-+a sound card.
-+
-+2003.06.28:
-+Added an optional parameter (default, True) to "SimpleRTPSource"
-+that says whether to use the RTP "M" (marker) bit to indicate the
-+last (or only) fragment of a video frame. (Suggested by
-+Cezar Plesca.)
-+
-+2003.06.27:
-+Added a "AudioDeviceSource" class to the "liveMedia" library.
-+This class is a generic audio input device (such as a microphone
-+or a sound card) - to be subclassed for specific OS platforms.
-+
-+2003.06.26:
-+- Updated the "RTSPServer" implementation to respond to "PAUSE"
-+requests. (It doesnt actually pause the stream; just returns "OK".
-+This makes QuickTime Player happier.)
-+- Added a "-o" option to "openRTSP" (and modified "RTSPClient"
-+accordingly). This option causes openRTSP to send an "OPTIONS" command
-+to the server, and prints out the response.
-+
-+2003.06.17:
-+Added support for MPEG-4 generic RTP sinks. (Currently, only the
-+"AAC-hbr" audio mode is supported, and only one AAC frame is packed
-+into each outgoing RTP packet.)
-+
-+2003.06.13:
-+- Fixed a bug in "ServerMediaSubsession" that could cause a memory leak.
-+(Thanks to Frederik Bonte for finding this.)
-+
-+2003.06.07:
-+- Fixed a minor bug in "MPEGVideoRTPSink": The RTP "M" bit is now set
-+only on the last fragment, if a frame is fragmented. (Thanks to
-+Tym Altman for pointing this out.)
-+- Improved support for AudioRTPSinks that have more than one audio channel.
-+
-+2003.05.31:
-+Fixed a bug in "SimpleRTPSink" that would cause it to not generate correct
-+RTP timestamps on outgoing packets.
-+
-+2003.05.29:
-+Fixed a bug in "RTSPServer" that would cause it to get into an infinite
-+loop if a client's connection was terminated unexpectedly.
-+
-+2003.05.28:
-+Fixed some typos in comments.
-+
-+2003.05.23:
-+Some minor changes to reduce the number of bogus warning messages
-+displayed when compiling using Visual C++.
-+
-+2003.05.22b:
-+Fixed a bug in "SIPClient" (thanks to Reini Urban for helping track this
-+down).
-+
-+2003.05.22a:
-+Fixed a couple more minor bugs that were causing "valgrind" to complain.
-+
-+2003.05.22:
-+Fixed a bug in "SIPClient" (a field was not getting initialized properly)
-+
-+2003.05.21:
-+- Because not all platforms define 'errno' the same way, 'errno' is now
-+implemented as a pure virtual function "getErrno()" in
-+"UsageEnvironment". "BasicUsageEnvironment" defines this function to
-+just return "errno", but other subclasses could implement it in other
-+ways.
-+- Added support for setting and reading information in "RTP-Info:"
-+headers in RTSP "PLAY" response. (Thanks to Romulus Grigoras for
-+contributing this.)
-+
-+2003.05.19:
-+Fixed a bug in "SIPClient" that could cause a crash. (Thanks to
-+Reini Urban for finding this.)
-+
-+2003.05.16:
-+- Removed all calls to "fprintf(stderr, ...)" and "cerr << ..." from
-+the library code. Instead, we now use "operator<<" virtual functions
-+that are defined on the "UsageEnvironment". "BasicUsageEnvironment"
-+defines these by outputting to "cerr", but other subclasses of
-+"UsageEnvironment" can define them to do console output whichever
-+way they wish.
-+
-+2003.05.15:
-+- Moved the "select()" call in "readSocket()" (GroupsockHelper.cpp) into
-+ a separate function, to allow it to be easily reimplemented
-+ if desired.
-+- More minor changes to "RTPSource" stats handling, and the "-Q" option
-+ to "openRTSP"/"playSIP".
-+
-+2003.05.12:
-+- Restructured "BasicTaskScheduler" as two hierarchical classes:
-+ "BasicTaskScheduler0" (an abstract base class), and
-+ "BasicTaskScheduler".
-+ This makes it easier to subclass (e.g., to reimplement "SingleStep").
-+ A subclass reimplementation would use "BasicTaskScheduler0".
-+- Removed "our_bcopy()", and use "memmove()" instead, because everyone
-+ seems to implement that.
-+- Fixed a bug in "RTPSource" that could cause packet loss stats to be
-+ reported incorrectly if the first RTP sequence number received was 0.
-+
-+2003.05.06:
-+Minor changes to the "openRTSP" QOS stats reports.
-+
-+2003.05.05:
-+Changed the "start" and "end" parameters to
-+"RTSPClient::playMediaSubsession()" from int to float, for increased
-+granularity. (Suggestion by Cezar Plesca.)
-+
-+2003.05.03:
-+- Added support for pausing/resuming to "RTSPClient".
-+(Thanks to Romulus Grigoras for contributing this.)
-+- Fixed a couple of bugs in "SIPClient".
-+
-+2003.04.28:
-+- Cleaned up and improved the "DelayQueue" implementation.
-+(This time it works properly, I hope.)
-+
-+2003.04.27:
-+- Temporarily backed out the previous change to "DelayQueue", because it
-+broke MPEG video streaming (causing it to play too slowly).
-+
-+2003.04.26:
-+- Made "DelayQueue" a little more accurate, by adjusting for the time
-+that has elapsed since the last alarm, when adding a new entry to the queue.
-+- Fixed a bug in "RTPSource" that could cause packet loss statistics to not
-+be reported accurately (in RTCP) if incoming packets were misordered.
-+- Updated "openRTSP" and "playSIP" to take a new "-Q" option, which
-+prints out QOS data at the end of the session.
-+
-+2003.04.24:
-+- Added a mechanism for registering an optional, auxilliary read handler
-+with a "RTPSource" or "RTCPInstance". Such a handler would get called
-+after each new packet is read.
-+- Changed "SimpleRTPSink" to (by default) set the RTP "M" bit on
-+video streams iff the packet contains the last (or only) fragment of
-+a frame.
-+
-+2003.04.23:
-+- More improvements/fixes to the handling of SSM sessions.
-+- Fixed a bug in RTSPServer that could cause a crash if the client
-+quit suddenly.
-+
-+2003.04.20:
-+- Updated "MediaSession" to recognize
-+ a=source-filter: incl ...
-+lines in SDP descriptions (for SSM sessions), and to do the appropriate
-+SSM-style multicast joins in this case (and also to send back RTCP via
-+unicast).
-+- Updated the RTCP implementation to reflect incoming unicast RTCP packets
-+back to the multicast group in the case where we're a SSM source.
-+- Update "vobStreamer" and the various "test*Streamer" test programs to
-+properly behave as SSM sources, when we have specified this.
-+
-+2003.04.18:
-+- Updated the "*ServerMediaSession" classes to (optionally) output
-+SSM-specific information in SDP descriptions.
-+- Updated "vobStreamer" to choose a random multicast address in the SSM
-+range.
-+
-+2003.04.12:
-+- Fixed "MPEGVideoStreamFramer" to allow for the possibility of
-+the GOP "time_code" field remaining unchanged in the source stream.
-+- Elimination of more unnecessary global variables.
-+
-+2003.04.11:
-+- Added support for an optional user name and password inside a RTSP
-+or SIP URL.
-+- The media lookup table (used in "Media.cpp") is now allocated
-+dynamically, and stored in the "UsageEnvironment", rather than
-+being a global variable.
-+This makes it possible to have different threads, within the same
-+address spaces, accessing the library code.
-+(Each thread would need to have its own "UsageEnvironment" and
-+"TaskScheduler", though.)
-+
-+2003.04.09:
-+Changed "BasicTaskScheduler::SingleStep()" to execute only one delay
-+queue task (along with any data input events) during each iteration.
-+This prevents a possible livelock if the delay queue always has events
-+outstanding. (Thanks to Ruth Sadler for pointing this out.)
-+
-+2003.04.04:
-+- More improvements to "vobStreamer" (which has also been renamed
-+from "VOBStreamer".
-+
-+2003.04.02:
-+- Made another change to the order that things are closed when exiting
-+"openRTSP", to help avoid a potential race condition that can occur
-+when using the "-t" option. (Thanks to Romulus Grigoras for reporting
-+this.)
-+- Updated "MPEGDemux" to properly handle the case where someone tries
-+to read from it after its input source has already closed.
-+- Several improvements to "VOBStreamer".
-+- Added "ByteStreamMultiFileSource" to the "liveMedia" library.
-+This generalizes "ByteStreamFileSource" to allow more than one input
-+file to be read, in sequence.
-+
-+2003.04.01:
-+Fixed a bug in "openRTSP" that could cause it to crash when exiting
-+(if the "-t" option was used).
-+
-+2003.03.31:
-+Added a new test program "VOBStreamer" to "testProgs".
-+This program reads a "VOB" file (e.g., from a non-encrypted DVD),
-+and streams the component video (MPEG) and audio (AC3) component streams
-+using RTP multicast.
-+(Online documentation to follow...)
-+
-+2003.03.30:
-+Added "AC3AudioRTPSource" and "AC3AudioRTPSink".
-+
-+2003.03.28:
-+- Fixed a bug in "MPEGVideoStreamFramer" that would cause it to generate
-+incorrect presentation times if the MPEG video stream started out with
-+a non-zero 'time_code'.
-+- Updated "AC3AudioStreamFramer" to allow clients to get the stream's
-+sampling rate before it reads the first frame.
-+
-+2003.03.25:
-+Began adding support for AC3 audio/RTP streaming.
-+
-+2003.03.22:
-+Added support for receiving H.261/RTP streams
-+
-+2003.03.14:
-+- Removed calls to "strdup()", because that's a C-library function whose
-+result should not be deleted using "delete" (or "delete[]"). Instead,
-+we now provide our own C++ equvalent, called "strDup()".
-+- Also, changed several "delete"s to "delete[]".
-+(Thanks to Bill Kain for noting the need for this fix.)
-+
-+2003:03;11:
-+Updated SIPClient to allow it to use an arbitrary source port number.
-+This makes it possible to use it on the same host on which a SIP server
-+is already running.
-+
-+2003.03.09:
-+- Made "MediaSession"s parsing of SDP descriptions more robust, to allow for
-+blank lines in the SDP description. ("Be liberal in what you accept...")
-+
-+2003.03.07:
-+- Added an optional "MIME subtype" parameter to "SIPClient", to allow
-+SIP "INVITE"s to use a dynamic RTP payload format. Updated "playSIP"
-+accordingly, to add an optional "-D <mime-subtype-name>" argument.
-+- Modified "FileSink" to close the source (and stop playing) if it gets
-+an EOF when writing to the output file. (Thanks to Ruud Schramp.)
-+
-+2003.03.03:
-+Improved the implementation of "MPEG4GenericRTPSource".
-+
-+2003.02.28:
-+- Fixed a bug that would cause RTSP clients to not set the server port
-+number (for RTCP) correctly in some situations. (Thanks to Alex Pollard.)
-+- Fixed a bug in "RTSPServer" that would cause "Transport:" headers to not
-+get generated correctly.
-+
-+2003.02.27:
-+- Improved the "MultiFramedRTPSource" implementation to more cleanly handle
-+packet loss in the case where frames are split into multiple RTP packets.
-+- Parsed the optional "/<num-channels>" parameter that can appear at the
-+end of "a=rtpmap:" lines for audio sessions.
-+
-+2003.02.17:
-+More work on the experimental '-R <rtsp-url>' option to "playSIP"
-+(and "openRTSP") that allows it to inject the incoming stream into
-+a separate RTSP server. This code is now working, although
-+currently only for a single PCMU or GSM audio stream. Also, RTCP
-+packets are not yet relayed between the source and destination.
-+
-+2003.02.16:
-+Improved RTSPClient and SIPClient to check for (and discard)
-+any '\r' or '\n' that appears at the start of a response message.
-+(Some weirdo servers can do this.)
-+
-+2003.02.10:
-+Began adding a new option to "playSIP" (and "openRTSP") to allow the
-+incoming media stream to be injected into a separate, destination
-+RTSP server. This still needs lots of work...
-+
-+2003.02.08:
-+Fixed the "JPEGVideoRTPSource" implementation to properly prepend a
-+synthesized JPEG header to each received frame of RTP data. This now
-+makes it possible to receive and play motion-JPEG RTP streams.
-+
-+2003.02.06a:
-+- Fixed a bug in the SDP "config" attribute parsing. (This affected
-+the use of "MPEG4LATMAudioRTPSource".
-+- Cleaned up the "createNew()" routines in each of the *RTPSource classes.
-+- Added two new RTPSource classes - "MPEG4ESVideoRTPSource" and
-+"MPEG4GenericRTPSource", for MPEG-4. However, these have not been
-+fully implemented yet.
-+
-+2003.02.06:
-+Fixed some code that was 64-bit-unsafe. (Thanks to Philipp Thomas for
-+noticing this.)
-+
-+2003.02.05:
-+- Cleaned up "RTSPClient", and added a method for doing an aggregate
-+"PLAY" operation (in addition to the existing method that does a
-+"PLAY" on an individual subsession).
-+- Modified the "openRTSP" test program so that it does a single
-+aggregate "PLAY", rather than a series of non-aggregate "PLAY"s, one for
-+each subsession. (RealNetworks' server doesn't support the latter.)
-+- Added a new routine for parsing "AudioSpecificConfig" strings that
-+can appear in SDP descriptions.
-+- Added Morgan Multimedia's implementation of "JPEGVideoRTPSource"
-+to the "liveMedia" library. (I haven't yet tested this.)
-+
-+2003.02.04:
-+Removed "-DUSE_OUR_BZERO=1" from "config.linux", because it no longer
-+seems to be necessary, and it was breaking compilation for some people.
-+
-+2003.02.03b:
-+Added an #include to "BasicUsageEnvironment/Lock.cpp" to fix a problem
-+that someone encountered with NULL not being defined.
-+
-+2003.02.03a:
-+Created a new header file "groupsock/include/NetCommon.h" that contains
-+all networking-related #includes. This also does the correct #includes
-+for Windows, allowing Windows code to use Winsock-2 rather than Winsock-1.
-+Also, modified "win32config" to use a "TARGETOS" of WINNT rather than
-+WIN95, to make this all work.
-+
-+Thanks to Doug Kosovic for figuring out the magic incantations
-+needed to get this all working.
-+
-+2003.02.03:
-+- Improved "SIPClient" (in the "liveMedia") library, so that "INVITE"
-+requests are retransmitted, as necessary, for reliability.
-+- Added a "-A <rtp-payload-format>" option to "playSIP". This allows the
-+user to specify which audio RTP payload format should be received.
-+(At present only static payload formats can be specified, and only
-+audio codecs - not video.)
-+
-+2003.01.28:
-+- Added support (in the "liveMedia" library) for a basic SIP client
-+- Added a new test program "playSIP", similar to "openRTSP". These two
-+applications are now built from the same code base.
-+
-+2003.01.17:
-+Further improvements to the MPEG-4 audio support. We can now read
-+(from the "MediaSubsession") the StreamMuxConfig "config" stream that
-+was present in the SDP description. Also added a routine that parses
-+such a string, producing binary "AudioSpecificConfig" data.
-+(See "MPEG4LATMAudioRTPSource.cpp" for details.)
-+
-+2003.01.16:
-+Improved support for receiving MPEG-4 LATM audio. Note that currently,
-+this works only for streams that do not have a StreamMuxConfig present
-+in the stream.
-+
-+2003.01.10:
-+Added basic support for MPEG-4 LATM audio.
-+
-+2002.12.21:
-+Fixed a bug in the previous update to "QuickTimeFileSink"
-+
-+2002.12.20:
-+- Another change to "QuickTimeFileSink", again to change the way that track
-+durations are computed for ".mov" files. Now, each track's duration is
-+set to be the maximum of (i) the sum of the sample durations listed
-+in the 'stts' atom, and (ii) the the sum of the durations listed in the
-+track's 'edit list' (if any).
-+- Updated the MP3 file parsing code to check for a 'Xing' VBR header in
-+the first frame. ("liveCaster" can use this information to print more
-+sensible information about each file that it streams.)
-+
-+2002.12.10:
-+Yet another change to "QuickTimeFileSink", this time to make sure that
-+the duration of video tracks corresponds exactly to the sum of video
-+sample durations listed in the 'stts' atom.
-+
-+2002.11.30:
-+Renamed "TaskScheduler::blockMyself()" to "doEventLoop()", to better
-+describe what this member function actually does.
-+
-+2002.11.25:
-+Another change to "QuickTimeFileSink". Now, when synchronzed tracks
-+are requested, the durations of video frame samples are adjusted so
-+that they correspond to actual RTP presentation times. (This is not
-+done for audio samples, however, because having audio samples vary
-+in duration might break audio codecs.)
-+
-+2002.11.22:
-+Updated "QuickTimeFileSink" once again - this time to add more statistics
-+to the 'udta'/'hinf' atom for each generated hint track.
-+
-+2002.11.18:
-+Modified the support for creating hint tracks in "QuickTimeFileSink" so
-+that it it now works properly for H.263+ video sessions.
-+
-+2002.11.15:
-+- Made a small modification to "groupsock/GroupsockHelper.hh" to ensure that
-+it compiles on all platforms.
-+- Modified "MP3FileSource" so that it can handle layer I or layer II files,
-+as well as layer III (MP3).
-+
-+2002.11.14:
-+Updated "QuickTimeFileSink" to support (optional) hint tracks in output
-+QuickTime files. Also added a "-H" option to "openRTSP" that
-+(when used with "-q") will add hint tracks to the output ".mov" file.
-+(Note that the hint tracks currently don't work well for H.263+ video
-+tracks, and currently don't work at all for QCELP.)
-+
-+2002.11.04:
-+Updated the expiration date in "openRTSP.cpp"
-+
-+2002.10.22:
-+- Undid the previous change. The top-level Unix Makefile now does
-+ cd <dir> ; make
-+once again. Unfortunately "--directory" doesn't seem to work properly
-+with the version of "make" that's installed with FreeBSD.
-+- Changed the implementation of the "-n" option in "openRTSP". If "-y"
-+is also specified, then the user will be notified only if (i) data has
-+arrived for all subsessions, and (ii) all subsessions have been
-+synchronized.
-+
-+2002.10.21:
-+Changed the top-level Unix Makefile to do
-+ make --directory=<dir>
-+rather than
-+ cd <dir>; make
-+as the latter apparently didn't work with cygwin.
-+(Thanks to "Sycotic" Smith for the tip.)
-+
-+2002.10.20:
-+- Updated "QuickTimeFileSink" once again to improve the implementation of
-+synchronized audio/video tracks in output QuickTime files.
-+- Added a configuration file for "cygwin". (Thanks to "Sycotic" Smith
-+for working on this.)
-+
-+2002.10.19:
-+Updated "QuickTimeFileSink" to use QuickTime Edit Lists to synchronize
-+the media tracks. (It appears that this does not always produce playable
-+QuickTime files, so this implementation may have to be changed later.)
-+
-+2002.10.11:
-+Fixed a bug in "MultiFramedRTPSource" that could cause a RTP receiver to
-+hang if it received a malformed RTP packet with no data after a special,
-+media-specific header.
-+
-+2002.10.10:
-+Fixed the "RTSPClient" implementation so that it now understands
-+"Content-Length" as well as "Content-length". (This now allows it
-+to work with our own RTSP server implementation once again!)
-+
-+2002.10.07:
-+Improved the implementation of RTP (and RTCP) reception to eliminate an
-+unnecessary "memmove()" each time a packet is received.
-+
-+2002.10.04:
-+Updated the "liveMedia" library to support optionally sending and receiving
-+RTP and RTCP packets over a TCP connection (e.g., the TCP connection used
-+for a RTSP session). Also, updated the "openRTSP" test program to take
-+an optional "-t" argument, meaning: stream over TCP.
-+
-+2002.10.01:
-+Fixed the modification to "MultiFramedRTPSource" that was made in the
-+2002.08.29 release, and also made a corresponding change to
-+"QuickTimeFileSink", so that it now correctly records H.263+/RTP streams
-+once again.
-+
-+2002.09.30:
-+- Removed the "Media::addNew()" member function, because it was always
-+ called each time a new Media object was created. Instead, its
-+ function was just moved into the Media::Media() constructor.
-+- Made another fix to "testMPEGAudioVideoStreamer".
-+
-+2002.09.28:
-+Fixed a bug in "testMPEGAudioVideoStreamer" that could cause a crash when
-+its input file was being read for the 2nd or more time. (Also updated
-+"liveMedia/FramedSource.cpp".)
-+
-+2002.09.27:
-+Updated "QCELPAudioRTPSource" so that "hasBeenSynchronizedUsingRTCP()"
-+returns True only after a full interleave cycle of RTP packets has been
-+received. This ensures that when it returns true, the receiver will
-+be reading a frame that came from a synchronized RTP packet.
-+
-+2002.09.26:
-+- Fixed QCELPAudioRTPSource so that it now returns correct presentation
-+timestamps on each frame that is read from it (even if the input data
-+was interleaved).
-+- Updated QuickTimeFileSink to correctly write ".mov" files for half-rate
-+QCELP audio tracks.
-+
-+2002.09.25:
-+Added a new test program - "sapWatch" - that reads and prints SDP/SAP
-+announcements (sent to the default SDP/SAP directory)
-+
-+2002.09.24:
-+- Fixed a bug in "QCELPAudioRTPSource"
-+- The RTCP implementation now properly recognizes incoming RTCP
-+reports from other processes on the same computer. (Previously, these
-+would be rejected as being loop-back packets.)
-+
-+2002.09.19:
-+- Updated "RTPSource"s so that an accurate "presentationTime" variable
-+is now returned whenever a client reads from such a source. These times
-+are kept accurate by RTCP "Sender Report" packets sent by the sender.
-+
-+2002.09.13:
-+- Improved the "BasicHashTable" implementation so that it's
-+no longer a quick-and-dirty hack.
-+- Changed the parameter signature to "ByteStreamFileSource" so that the
-+"playTimePerFrame" parameter is now an unsigned (microseconds) instead
-+of a float. This eliminates a round-off problem.
-+
-+2002.09.11:
-+Modified "ByteStreamFileSource::doGetNextFrame()" so that - if the
-+"playTimePerFrame" parameter was set - the presentation time gets set
-+based on this, rather than the current 'wall clock' time.
-+
-+2002.09.06:
-+Updated "win32config.Borland" based on feedback by Vesselin Kostadinov.
-+(Also updated an #ifdef in "liveMedia/include/Media.hh")
-+
-+2002.09.05:
-+Added code to ignore an "EAGAIN" error on a 'groupsock' read.
-+(This can happen in Linux.)
-+
-+2002.09.03:
-+Fixed a bug in the RTSP server implementation that could
-+have caused a memory smash.
-+
-+2002.08.30:
-+Added header files containing version strings (and corresponding integers)
-+for each library. Client code can use these to print out version
-+information, or check for version compatibility.
-+
-+2002.08.29:
-+Modified "MultiFramedRTPSource" and its subclasses to properly handle
-+the case where a frame is fragmented over several successive incoming
-+RTP packets. Each subclass's implementation of "processSpecialHeader()"
-+can choose between having incomplete fragments returned immediately to
-+the client (the default behavior), or waiting until all of the fragments
-+have arrived. The implementation of "H263plusVideoRTPSource" was changed
-+to do the latter (because the current "ffmpeg" H.263+ decoder relies upon
-+getting complete frames for input).
-+
-+Added an optional "applicationName" parameter to "RTSPClient::createNew()",
-+and updated the RTSP client implementation to add a "User-Agent:" field,
-+which will contain this "applicationName" string (if present).
-+
-+2002.08.27:
-+Added an optional Boolean parameter "iFramesOnly" to
-+"MPEGVideoStreamFramer::createNew()". If this parameter is True,
-+then the framer object will return only data from "I" frames.
-+(By default, this parameter is False, meaning that all frames will
-+be returned.) This parameter can be used to reduce the bandwidth
-+of streamed MPEG (1 or 2) video.
-+
-+2002.08.06:
-+Changed "groupsock/GroupsockHelper.cpp" to do a "#include <errno.h>"
-+rather than "extern int errno". The latter was apparently breaking in
-+some versions of Linux.
-+
-+2002.08.05:
-+Added support for the video/MP2P MIME type (RFC 2250 MPEG Program Streams)
-+
-+2002.06.25:
-+Source file distribution copied from live.sourceforge.net
+Next version, in progress:
+- Fixed a minor bug in "RTSPServer". (Thanks to Renato Mauro.)
+- Minor improvements fo "FileSink" and "MP3FileSource". (Thanks to Pramod Bhagwat.)
+- Changed the default "reclamationTestSeconds" parameter (in "RTSPServer" and "DynamicRTSPServer") from 45 seconds
+ to 65 seconds, because 60 seconds is the default timeout value expected by (broken) clients that send
+ RTSP commands rather than RTCP "RR" reports to indicate liveness.
+
+2008.07.25:
+- Minor bug fix to "MPEG2TransportStreamFramer" (reset "fTSPCRCount" in "doStopGettingFrames()").
+ (Thanks to Qiujian Shu for reporting this bug.)
+- Modified the previous changes to "QuickTimeFileSink" and "AVIFileSink" so that the
+ "createNew()" functions return NULL if the output file cannot be opened.
+
+2008.07.24:
+- Changed "MultiFramedRTPSource" to handle the very first packet that we receive as
+ if there were packet loss beforehand. This ensures that we correctly discard any
+ initial packets that we receive that occur after the start of a (multi-packet) frame.
+- Fixed "QuickTimeFileSink" and "AVIFileSink" to close the output file (if it's not stdout or stderr) in the destructor.
+
+2008.07.22:
+- Fixed "MPEG2TransportStreamMultiplexor" to use an appropriate stream for our SCR, even if the input contained
+ its own Program Stream Map.
+- More minor changes to the code to make Erik Hovland's code-checking tools happy.
+
+2008.07.06:
+- Corrected one of Erik Hovland's memory leak fixes made to the previous revision.
+
+2008.07.05:
+- Fixed some memory leaks - and several other mostly cosmetic fixes.
+ (Thanks to Erik Hovland for noticing these.)
+
+2008.06.26:
+- Fixed a bug in "openRTSP" that was sometimes causing an incorrect "Range:" header
+ to be sent in "PLAY" requests.
+
+2008.06.25:
+- Fixed a bug in the headers sent for the RTSP "GET_PARAMETER" and "SET_PARAMETER" commands.
+ (Thanks to "beilyzhang (at) hotmail" for this report.)
+
+2008.06.05:
+- Renamed the "ourSourceAddressForMulticast()" function to the less confusing and more explanatory
+ "ourIPAddress()".
+- The "RTSPClient" change that was made in 2008.04.09 to accommodate multicast
+ streams apparently broke (some?) unicast streams. This has now been fixed.
+- Updated "RTSPClient" to handle weird servers that include a "Content-Length:" header
+ in the response to the RTSP "SETUP" command. (If we see such a header, we skip over
+ the data referred to in the header.) (Thanks to Kristian Soerensen for this suggestion.)
+- Changed the parsing of lines in "RTSPClient" so that it now accepts \r or \n alone
+ at the end of each line. (\r\n is preferred, but the standard also allows \r or \n)
+ (Thanks to David Schueler for this suggestion.)
+
+2008.05.12:
+- Made a change to "RTCPInterface" to ensure that "turnOffBackgroundReadHandling()" is called on a socket
+ as many times as "turnOnBackgroundReadHandling()". Apparently some versions of Windows get upset if this
+ doesn't happen. (Thanks to Ken Seo for the suggested fix.)
+- Fixed a bug in "H263plusVideoStreamParser". (Thanks to Andrey Latin.)
+- Added more sanity checking to "JPEGVideoRTPSink".
+
+2008.04.09:
+- Corrected a type-related bug in "RTPInterface::handleRead()". (Thanks to Brain Lai for noting this.)
+- Fixed a bug in "RTSPClient" that would prevent RTCP "RR" reports from being sent to
+ the correct multicast address when we are receiving a multicast stream. (Thanks to Changjin Liu for noticing this.)
+
+2008.04.03:
+- Fixed a bug that was introduced in the "2007.12.27" release. The "timeout" parameter to the call to
+ "readSocket" in "SocketDescriptor::tcpReadHandler()" in "RTPInterface.cpp" needed to be initialized
+ (to zero) first. (Thanks to Lodewijk Loos for alerting us to this problem.)
+- Added a new config file "config.bfin-linux-uclibc", and renamed "config.bfin_uclinux" as "config.bfin-uclinux".
+ (Thanks to Mike Frysinger.)
+
+2008.02.08:
+- Added a hack (suggested by "Romain") to "MPEG2TransportStreamFramer" to (perhaps)
+ produce more accurate per-transport-packet duration estimates for wildly VBR streams.
+- Updated "MPEG2TransportStreamMultiplexor" to support the addition of MPEG-4 Audio or Video Elementary Streams.
+- Updated "RTSPOverHTTPServer.cpp" (a work in progress) so that it complies properly for some versions of
+ Visual Studio on Windows. (Thanks to Eric Flickner for noting this.)
+
+2008.01.19:
+- Corrected the "getNormalPlayTime()" function - introduced in the previous release - to allow for 'trick play'
+ scale factors other than 1.
+
+2008.01.18:
+- Added a new member function
+ float MediaSubsession::getNormalPlayTime()
+ which - given a stream's current presentation time - returns the "Normal Play Time".
+ This function is useful for RTSP streams.
+- Added support for a "a=control:" URL specified in the SDP description at the session level.
+
+2008.01.04:
+- Changed the "RTSPClient" timeout - introduced in the previous release - from
+ 5s to 30s.
+- Added support for setting and returning the RTSP session start time (as well as the end time).
+ (This eliminates the need for the "live-starttime.patch" file that VLC was using.)
+- Updated some of the system-specific configuration files, to eliminate the need for many of the patches that
+ the VLC developers added to their code.
+
+2007.12.27:
+- Added a 5s timeout to the "RTSPClient" code that checks for RTSP responses.
+ This mirrors a change that was already being done to VLC's copy of the code.
+ (This is still a short-term fix, until the "RTSPClient" code is rewritten to
+ properly use asynchronous I/O, using the event loop.)
+- Added a timeout to the "readSocket()" call in "SocketDescriptor::tcpReadHandler()" in "RTPInterface.cpp",
+ to handle reading RTP-over-TCP data. This allows for the possibility of non-cooperative RTSP clients.
+ (Thanks to Peter Leese for this suggestion.) This is probably not a complete solution;
+ more thought is needed...
+
+2007.12.07:
+- Fixed "H2633plusVideoFileServerMediaSubsession" to properly use a dynamic RTP payload type, rather than the
+ static type 34 (which is reserved for the now-obsolete old "video/H263" RTP payload format).
+
+2007.12.06:
+- Updated "JPEGVideoRTPSource" to take optional 'default width' and 'default height' parameters.
+ These parameters can be set by fields in the SDP description, and can be used to specifiy unusually
+ large frame widths and/or heights. (Thanks to Andrey Filippov.)
+
+2007.11.18:
+- Fixed a couple of memory leaks in "DarwinInjector". (Thanks to Eyal Beit-Halachmi for noting these.)
+- Removed old 'backwards compatibility' stuff from "FramedSource". (Noone should be relying upon this any more.)
+- Fixed a bounds-checking error in "parseRTSPRequestString()" caused by an int vs. unsigned problem.
+ (Thanks to Luigi Auriemma for noting this.)
+- In "RTSPClient.cpp", fixed a couple of "unsigned" vs. "int" nits. (Thanks for Brain Lai for noting this.)
+
+2007.11.01:
+- Several of the options to "openRTSP" have now been changed, with two new options added:
+ -s <initial-seek-time>
+ -z <scale>
+ See the "openRTSP" documentation <http://www.live555.com/openRTSP/> for details.
+- Fixed a bug in the way that "MPEG4VideoStreamDiscreteFramer" parses 'config' information (for inclusion in
+ the stream's SDP description). (Thanks to Nicola Bova for helping to identify this bug.)
+- Eliminated a potential memory (and socket) leak when allocating server RTP,RTCP socket pairs.
+ (Thanks to David Pan for reporting this.)
+- Updated "ByteStreamFileSource" to treat a 0-byte file read the same as EOF.
+- Ensure that we have reasonable OS buffering for writes on non-blocking sockets.
+
+2007.08.03a:
+- Removed a debugging printf() that had been left in by mistake. (Thanks to Massimo Zito for noticing this.)
+
+2007.08.03:
+- Updated the "RTSPServer" implementation to work better on systems with more than one IP address.
+ The server will now include - in its RTSP responses - the IP address on which the corresponding incoming request
+ was received.
+
+2007.07.25:
+- Added some sanity checks to various "MediaSink" subclasses, in case "fSource" is NULL.
+ (Thanks to Andrey Kaminsky for noting one of these.)
+
+2007.07.10:
+- Made sure that "MPEG2TransportStreamFramer"s estimate of the average duration of each Transport Packet
+ gets updated correctly after each 'seek' operation. (Thanks to Massimo Zito for suggesting this.)
+- Fixed a bug in "MPEG2TransportStreamFromESSource" that was causing presentation
+ timestamps to not be generated correctly. (Thanks to Massimo Zito for noticing this.)
+
+2007.07.01:
+- Fixed a bug in "RTSPServer" and "RTSPClient" that would cause problems when streaming
+ files whose names have spaces in them.
+- Fixed a bug in "OnDemandServerMediaSubsession::deleteStream". (Thanks to Igor Bukanov.)
+- Make the sockets for "RTPSource", "RTCPInstance" and "BasicUDPSource" non-blocking, even though they will be read
+ from only asynchronously, when packets arrive. The reason for this is that, in some OSs, reads on a blocking
+ socket can (allegedly) sometimes block, even if the socket was previously reported (e.g., by "select()") as
+ having data available. (This can supposedly happen if the UDP checksum fails, for example.)
+ (Thanks to Marc Neuberger for pointing this out.)
+- Fixed a bug in "MPEG2TransportFileServerMediaSubsession.cpp" that was causing 2x
+ fast-forward to fail. (Some debugging code had been left in by mistake.)
+
+2007.05.24:
+- Modified "setupDatagramSocket()" to better handle setting "ReceivingInterfaceAddr" when creating a socket
+ to be used to send/receive multicast.
+- Made a couple of minor changes to overcome some compilation errors that some people were apparently seeing.
+
+2007.05.23:
+- The RTSP server now includes the "source=" parameter in the response to a RTSP "SETUP" command.
+ This works around a bug in QuickTime Player that would cause it to not send RTCP "RR" packets
+ (when playing a unicast stream, and running on Mac OS X). (Thanks to Dave Singer et al at Apple for tracking
+ down this problem.)
+- The RTSP server implementation no longer terminates the session if it returns 400 or 405 errors.
+
+2007.04.24a:
+- Fixed a problem in the new "RTSPOverHTTPServer" code that was causing some people compilation problems.
+
+2007.04.24:
+- Fixed a typo in "testOnDemandRTSPServer.cpp". (Thanks to Nils Grundback for noticing this.)
+- Modified the signature of "RTSPServer::specialClientAccessCheck()" (defined in the previous revision) to add
+ a new "clientAddr" parameter (a "struct sockaddr_in"), to allow special access checking based on clients' IP
+ address.
+- Make sure that the locale is set to "POSIX" when calling "toupper()" or "tolower()" on human-supplied strings.
+ (Thanks to Ismail Doenmez for noting this.)
+
+2007.04.20:
+- Modified "MPEG2TransportStreamMultiplexor" to set the "discontinuity_indicator" flag for the first
+ "adaptation_field" in the output Transport Stream.
+- Changed "AMRAudioRTPSource" to more accurately report whether/when an interleaved frame's timestamp has
+ been synchronized using RTCP.
+ (Thanks to David Bertrand for this patch.)
+- Made to a small fix to the previous revision's support for multicast streaming of raw UDP (nonstandard)
+- Added a virtual function to "OnDemandServerMediaSubsession" for closing the stream source.
+ Subclasses can redefine this, if they wish, to do something smarter. (Thanks to Igor Bukanov for this patch.)
+- Added support to "RTSPServer" for optionally performing special per-client access control, beyond the
+ standard Digest Authentication method. (Thanks to Igor Bukanov for this patch.)
+- Made a minor optimization to "Groupsock.cpp". (Thanks to Maxim Petrov for this suggestion.)
+- Added an initial implementation of RTSP-over-HTTP at the server level (it was already supported at the client level).
+ (Note: This code has not yet been completed, and doesn't yet work, so don't try to use it.)
+
+2007.02.20:
+- Updated "RTSPServer" to support multicast streaming of raw UDP streams (nonstandard).
+ (Thanks to Aesmund Grammeltvedt for this modification.)
+- Made "RTSPClient" a little more robust in case the TCP connection fails.
+- Made "RTPSink::rtpmapLine()" virtual (as requested by Andrew Voznytsa).
+- Removed an archaic (no longer used) declaration in "groupsock/include/Groupsock.hh".
+- Added an optional "allowKasennaProtocol" parameter to "RTSPClient::describeWithPassword()"
+ (similar to "RTSPClient::describeURL()"). (Thanks to Igor Bukanov for this suggestion.)s
+
+2007.01.17:
+- Fixed a bug that would cause the "MPEG2TransportStreamIndexer" application to fail when run on a big-endian
+ architecture.
+- Added a new class "H264VideoFileSink", that prepends each incoming H.264 NAL unit with the prefix 0x000001,
+ before writing it to the file. Also updated the "openRTSP" code to use this, when receiving H.264/RTP streams.
+ (Thanks to Chris Kuiper for contributing this.)
+- Added a temporary #ifdef to "GroupsockHelper.cpp" to work around a compliation problem when building
+ for Cygwin.
+
+2007.01.11:
+- Improved the "MPEG2IndexFromTransportStream" class to recogize Transport Stream
+ PAT and PMT (tables). This in turn makes the "MPEG2TransportStreamIndexer"
+ utility more robust.
+- Fixed a minor bug in "MPEG2TransportStreamFromESSource".
+
+2007.01.09:
+- Added RTSP server support for 'trick play' operations on MPEG-2 Transport Stream
+ files. This requires the presence of a ".tsx" index file for each ".ts" file.
+ (This functionality will shortly be documented on the LIVE555 web site,
+ and announced on the "live-devel" mailing list.)
+- Improved the performance of asynchronous file reading in "ByteStreamFileSource".
+ (Thanks to Aesmund Grammeltvedt for this suggestion.)
+- Added "-D_FILE_OFFSET_BITS=64" to the "COMPILE_OPTS" line for each of the Linux config files, in order to
+ alleviate possible problems with I/O on large files.
+
+2006.12.31:
+- We now implement "ByteStreamFileSource" on Windows using synchronous file reads,
+ by default. I had thought that Windows XP had fixed the problem - present in
+ earlier versions of Windows - whereby open files are not treated as select()able
+ sockets. But apparently the problem is still there.
+- Added code that will - probably in the next release, very soon - support server
+ 'trick mode' operations on MPEG-2 Transport Stream files. At present, we have two
+ new applications - in the "testProgs" directory - that help support this:
+ "MPEG2TransportStreamIndexer" (to create a special index file for a Transport Stream
+ file), and "testMPEG2TransportStreamTrickPlay" (to generate a new Transport Stream
+ file that simulates a 'trick play' operation performed on the original Transport
+ Stream file). See my forthcoming post to the "live-devel" mailing list for more
+ details.
+- Fixed a bug in the Base64 encoding routine. (Thanks to Sebastian Gracias for reporting this.)
+
+2006.12.08:
+- Made sure that each TCP socket used by a "RTSPserver" is non-blocking, so that a slow or hanging client
+ cannot hang a server. (Thanks to "jers (at) inwind.it" for this suggestion.)
+
+2006.11.16a:
+- Oops - fixed a problem with the packaging of the new "mediaServer" code.
+
+2006.11.16:
+- Included the code for the new "LIVE555 Media Server" application
+ (in the "mediaServer" subdirectory). This is a complete RTSP/RTP server, that
+ will serve any appropriately-formatted file that resides in the current directory.
+ (More documentation will follow.)
+- Updated "QuickTimeFileSink" to support H.264 video in ".mov" or ".mp4" output files.
+ (Thanks to David Arnold for this.)
+- Fixed a potential reference-count related bug in "OnDemandServerMediaSubsession". (Thanks to Jers.)
+- Changed the "RTSPClient" constructor from "private:" to "protected:".
+
+2006.10.27:
+- "RTSPClient" now recognizes the "Content-Base:" header in RTSP "DESCRIBE" responses.
+ (Thanks to Derk-Jan Hartman for this suggestion.)
+- Updated "MultiFramedRTPSource" to avoid excessive recursion (and thus potential
+ stack overflow) in some cases when receiving streams that have packet loss.
+ (Thanks to Erwin Beckers for raising this as an issue.)
+- Updated "RTPSink" and "MultiFramedRTPSink" to ensure that a proper RTP timestamp
+ is set in the RTSP "RTP-Info" header that follows a "PAUSE", and that this timestamp
+ gets used in the next outgoing RTP packet. (Thanks to David Bertrand for this suggestion.)
+- Changed the special implementation of "gettimeofday()" for Windows to return
+ more accurate results. (Thanks to David Arnold for this change.)
+
+2006.10.18a:
+- A minor update to the "MultiFramedRTPSink" change made in the previous release.
+
+2006.10.18:
+- Added support for adding optional RTP padding bytes to "MultiFramedRTPSink".
+ (Thanks to Victor Kozhuhov for this suggestion.)
+
+2006.10.12a:
+- Backed out the change that we made in the 2006.09.18 release: We now don't attempt
+ to setsockopt() SO_REUSEPORT and IP_MULTICAST_LOOP on Windows. (Dave Arnold reports
+ that doing so leads to UDP packets with TTL=1.)
+
+2006.10.12:
+- Fixed a rare memory leak in "MultiFramedRTPSource". (Thanks to David Bertrand for this fix.)
+- Made "RTSPServer::lookupServerMediaSession()" virtual, to allow for future
+ subclasses of "RTSPServer" that - for example - create and add "ServerMediaSession"s
+ dynamically (depending on whether or not the named file exists).
+- Added a "rtspURLPrefix()" member function to "RTSPServer". This returns the
+ "rtsp://" URL prefix that's common to all of the server's "rtsp://" URLs.
+
+2006.10.07:
+- The demo applications (in the "testProgs" directory) that stream MPEG-4
+ Elementary Stream video files now use a file name "test.m4e" rather than "test.m4v".
+ This is to avoid confusion, because Apple has coopted the ".m4v" suffix for
+ MPEG-4 (audio+video) files, which are different.
+- Made "MPEG4VideoStreamFramer" more bullet proof against some non-standard MPEG-4 video data.
+ (Thanks to Maxim Petrov for this suggestion.)
+
+2006.10.05:
+- Fixed a minor bug in "MPEG2TransportStreamFromESSource" (thanks to "jeremy at electrosilk.net")
+- Changed some class member function and variables from "private" to "protected", in response to a request
+ from David Bertrand.
+- Made "DarwinInjector::createNew()" more bullet proof, by giving the "applicationName" parameter
+ a default value.
+
+2006.09.20:
+- Corrected the bug fix to "H264VideoRTPSink" that was made two revisions ago.
+
+2006.09.18:
+- Fixed a bug in the way that "RTPSource" records the maximum sequence number seen so far.
+ (The bug could be triggered by packets arriving out of order.) Thanks to Mallikharjuna Reddy
+ for pointing this out.
+- When creating new datagram sockets, we now attempt to setsockopt() SO_REUSEPORT and IP_MULTICAST_LOOP,
+ even on Windows. (A version of Windows prior to XP had problems with this, but it's apparently no longer
+ a problem.)
+
+2006.09.12:
+- Fixed a minor bug in "H264VideoRTPSink". (Thanks to Emiliano Parasassi for noting this.)
+- If the "totSessionBW" parameter to "RTCPInstance::RTCPInstance()" is zero, print out an error message,
+ and use a value of 1 (kbps) instead.
+
+2006.09.09:
+- Reenabled asynchronous file reading in "ByteStreamFileSource", after fixing a bug
+ that could lead to a 'race condition' in some circumstances. (The fix was to call
+ "FramedSource::afterGetting()" directly - rather than via the event loop - after
+ delivering data to the downstream object.)
+- Updated "MPEG2TransportStreamFromESSource" again. Now, we set the
+ "PES_packet_length" field to zero if the input data was larger than 2^16 bytes
+ long. (This is in accordance with the MPEG specifications; thanks to "jeremy at electrosilk.net"
+ for noticing this..)
+
+2006.09.08:
+- Temporarily disabled asynchronous file reading in "ByteStreamFileSource" until we
+ fix an apparent bug that is causing MPEG streaming to fail.
+- Updated "MPEG2TransportStreamFromESSource" to print a warning message if the input source delivers
+ data in chunks that are too big to make up a PES packet.
+
+2006.09.07:
+- Fixed a bug that was preventing the RTCP "RR" packet handler from being called
+ when we were streaming RTP/RTCP-over-TCP. (Thanks to "zhangzx at rcs-9000.com"
+ for noticing this.)
+
+2006.08.26:
+- Changed the implementation of "ByteStreamFileSource" so that reads from the
+ open file are now done asynchronously, when data becomes available. This matches
+ the code's event-driven execution model better than the previous implementation,
+ which read from files synchronously. It should also perform better in systems
+ that read from more than one file concurrently.
+- Added Victor Kozhuhov's modifications to the WAV file support code, to allow for WAV files that contain
+ u-law or a-law content (instead of the usual raw PCM).
+
+2006.08.24:
+- Fixed the way in which "RTSPServer" handles requests that span more than one
+ TCP socket read. These reads are now all handled asynchronously, in accordance
+ with the library's event-driven execution model. (Thanks to Marc Neuberger for noting this.)
+- Fixed a memory leak in "MultiFramedRTPSource" that would occur if we received
+ packets with duplicate sequence numbers, or if we received excessively delayed
+ packets. (Thanks to David Bertrand for noticing this.)
+- Changed the order of statements in "~RTSPClient()" to fix a bug (noted by Brain Lai).
+- Changed "base64Encode()" to take a 'length' parameter, so that it will work with input data that
+ contains '\0' characters. (Thanks to Derk-Jan Hartman for this suggestion.)
+- Added support - in "RTSPServer" - for the (non-standard) "x-playNow:" header in RTSP requests.
+ (Thanks to Rob Casey for this patch.)
+- Updated "MediaSession" to parse the (standard) SDP "framerate" attribute (in addition to "x-framerate", which
+ is non-standard).
+- Changed the parent class of "H264VideoStreamFramer" to be "FramedFilter" (to be consistent with other
+ 'Framer' classes) instead of "FramedSource". (Thanks to Jinfeng Zhang for noticing this.)
+- Made the "FramedFilter" implementation more robust, in case the supplied input source parameter is NULL.
+
+2006.08.07:
+- Changed the way that "OnDemandServerMediaSubsession" creates server ports.
+ It now chooses server port numbers starting with a specific port number
+ (which is now an optional parameter to the "OnDemandServerMediaSubsession"
+ constructor). The default value of this initial port number parameter is 6970.
+ This matches the port number range used by other common RTSP server implementations,
+ including Darwin Streaming Server and Helix.
+- Changed the criterion for whether to send out a RTCP "SR". (Thanks to David Bertrand.)
+- Fixed an obscure bug in "OnDemandServerMediaSubsession::deleteStream()"
+ (reported by Scott Hayes)
+- Removed some archaic code that was developed for a customer several years ago, but
+ which is no longer used.
+
+2006.07.04:
+- Another update to "H264VideoRTPSink" (requested by David Bertrand)
+
+2006.06.28:
+- Another update to "H264VideoRTPSink". (Thanks to David Bertrand.)
+
+2006.06.27:
+- Updated "H364VideoRTPSink"
+- Corrected the definition of MAX_PES_PACKET_SIZE in MPEG2TransportStreamFromPESSource.cpp.
+ (Thanks to Jiri Pinkava for this fix.)
+
+2006.06.23:
+- Fixed some minor issues with the previous addition of "H264VideoRTPSink"
+
+2006.06.22:
+- Added "H264VideoRTPSink", for transmitting H.264/RTP streams. (Thanks to
+ Benoit Quirynen and David Bertrand for funding this work.)
+- Changed the default definitions of IP_ADD_SOURCE_MEMBERSHIP and
+ IP_DROP_SOURCE_MEMBERSHIP (for use if they're not already defined in header files),
+ to make it more likely that SSM joins will properly fail if SSM is not actually
+ implemented on the host OS.
+- Changed some "delete"s into "delete[]". (Thanks to Wojciech Matyjewicz
+ and Mathur for reporting these bugs.)
+- Made "sapWatch a bit more robust. (Thanks to Jiri Pinkava for this fix.)
+
+2006.05.17:
+- Fixed "OnDemandRTSPServer" so that it sets a RTCP "RR" handler,
+ even if "reuseFirstStream" is True.
+- Changed "RTSPServer" (and the "testOnDemandRTSPServer" demo application)
+ to use a 45-second client liveness timeout, by default. (Previously,
+ no client liveness checking was being done by default.)
+ (Note that client liveness timeouts are done only for unicast streams, not multicast.)
+- Fixed a bug in the implementation of "BasicHashTable" that arose when
+ we were using hash tables with multi-word-sized keys.
+
+2006.05.15:
+- No change from the previous release, but the installed ".tar.gz" file had
+ accidentally been deleted.
+
+2006.05.11:
+- Cleaned up some code in "BasicTaskScheduler" that was allegedly causing
+ problems on a Zaurus.
+- Changed "TaskScheduler::rescheduleDelayedTask()" so that its "microseconds"
+ parameter is a "int64_t" (to match "scheduleDelayedTask").
+ (Thanks to David Bertrand for suggesting this.)
+- Updated "ServerMediaSession:::generateSDPDescription()" to change
+ "a=rtcp: unicast-reflection" to "a=rtcp-unicast: reflection", to
+ reflect the latest version of the IETF's "draft-ietf-avt-rtcpssm"
+ Internet-Draft. (This is for Source-Specific Multicast sessions only.)
+- Cleaned up "H263plusVideoRTPSink" slightly, to remove an unnecessary
+ member variable.
+- Removed support for the (experimental and non-standard) "X-MCT-TEXT"
+ payload type.
+
+2006.03.17:
+- Fixed a bug in "RTSPClient" (that had been introduced in the 2006.02.15
+ release) that was stopping RTP-over-TCP reception from working.
+
+2006.03.15:
+- Updated "MediaSession" to parse the "s=" and "i=" lines of input SDP
+ descriptions, and added member functions for returning these string values.
+ (Thanks to Scott Hays or this.)
+- Updated "MPEG2TransportStreamMultiplexor" to use the audio track for PCR
+ iff there is no video track present.
+- Made a change to "liveMedia/include/H263plusVideoStreamFramer.hh" to overcome
+ an error reported by some nit-picking compilers.
+- Fixed a minor bug in "MPEG2TransportStreamFromESSource" (in the way that it
+ handles EOF on input).
+
+2006.03.03:
+- Updated "MPEG4LATMAudioRTPSource" to allow the LATM data length field to
+ be omitted from the start of each returned audio frame. (The "faad" decoder
+ (used by VLC, for example) needed this.)
+- Renamed "SECOND" in the "BasicUsageEnvironment" library to "DELAY_SECOND"
+ (and similarly for "ZERO", "MINUTE", "HOUR", "DAY"), to avoid an alleged
+ name conflict with some other code used by VLC. (Thanks to
+ Derk-Jan Hartman for this suggestion.)
+- Removed some unnecessary code from "testProgs/playCommon.cpp".
+
+2006.02.25:
+- Updated the previous change to "MultiFramedRTPSource::doStopGettingFrames()",
+ to also reset the object's fields. (Thanks to David Bertrand.)
+
+2006.02.15:
+- Changed "GetFileSize()" (defined in "liveMedia/include/InputFile.hh") and
+ "ByteStreamFileSource::fileSize()" to return a "u_int64_t", to allow for
+ (potentially) large files.
+- Changed the "microseconds" parameter to "TaskScheduler::scheduleDelayedTask()"
+ from "int" to "int64_t". This allows for durations greater than the previous
+ ~2000 second limit.
+- Updated "RTSPClient" to support handling RTSP requests sent by the server.
+ (Some servers send periodic requests back to the client as a keep-alive test.)
+ At present, we just respond to such requests with a "not allowed" error.
+ (Thanks to Khanh Mai for this change.)
+- Updated "MultiFramedRTPSource::doStopGettingFrames()" to reset the
+ "ReorderingPacketBuffer". (Thanks to David Bertrand for this fix.)
+- Corrected a small bug in the previous "RTSPClient" modification
+ (noticed by Glen Gray).
+- Fixed a bug in "ADTSAudioFileSource" when parsing the optional "crc_check"
+ field. (Thanks to Paul Li for noticing this.)
+
+2006.01.27:
+- Updated "RTSPClient" to:
+ - allow the "parameterName" parameter to "getMediaSessionParameter()" to be NULL
+ - add a "setUserAgentString()" member function, to allow clients to
+ specify an alternative string for "User-Agent:" headers
+ - parse the optional "timeout" parameter in response "Session:" headers,
+ and added a "sessionTimeoutParameter()" member function to retrieve it.
+ (Thanks to Glen Gray for proposing these changes.)
+- Fixed "H263plusVideoRTPSource" to properly initialize two member variables
+ in its constructor. (Thanks to David Bertrand for this fix.)
+- Added Bernhard Feiten's support for H.263plus parsing/framing
+
+2006.01.24:
+- Corrected the maximum PES packet size (in "MPEG1or2DemuxedElementaryStream.cpp")
+ to allow for a 6-byte header. (Thanks to Jiri Pinkava for this fix.)
+- Fixed "MPEG1or2AudioStreamFramer" to avoid a potential divide-by-zero when
+ it's fed certain malformed MPEG audio data. (Thanks to Eric Peters for this.)
+- Updated the top-level "Makefile.tail" to make it clear that "testProgs" can't
+ be built until after the 'library' directories are built. This ensures that
+ parallelizing "make"s don't do the wrong thing.
+
+2006.01.05:
+- Updated "MPEG4VideoStreamFramer" to make the parsing of MPEG-4 video a bit
+ more robust. (Thanks to Khanh Mai for this suggestion.)
+
+2006.01.04:
+- Updated "OnDemandServerMediaSubsession" to tear down the stream (thus sending
+ a RTCP "BYE") when the input source ends, iff the stream does not have a known
+ duration. (If the stream has a known duration, then we keep the stream alive,
+ in case a client wants to seek backwards in it.)
+
+2005.12.30:
+- Extended the previous release's fix to also work with the RTSP
+ "OPTIONS" command.
+
+2005.12.29:
+- Include (if necessary) authentication headers in the initial HTTP
+ "GET" and "POST" commands, if we're setting up RTSP-over-HTTP tunneling.
+ This allows "RTSPClient" to work properly with some Axis cameras, which
+ require authentication on these HTTP commands.
+
+2005.12.23:
+- Fixed the RTCP port number in the RTSP "Transport:" header "port=" part
+ (for multicast streams).
+- Updated the change that we made in version 2005.11.02 so that it also
+ sets the port number correctly.
+
+2005.12.15:
+- Made calls to "select()" more robust, by checking for (and ignoring)
+ EAGAIN or EINTR errors.
+- Fixed a bug in "MPEG4VideoFileServerMediaSubsession" that could occur if a
+ bad MPEG-4 video file (not containing any initial 'config' data) is read.
+ (Thanks to Trevor Pering for noticing this.)
+- Removed an undocumented, experimental and rarely-used option from "openRTSP".
+
+2005.12.09:
+- Updated the RTCP implementation so that reception stats for a SSRC are now kept
+ around even after a RTCP BYE is received, in case we want to use these stats
+ for QOS reports. (However, if a SSRC is reaped due to inactivity, then the
+ reception stats are deleted.)
+
+2005.12.05:
+- On some systems (notably FreeBSD), "struct sockaddr_in" includes a "sin_len"
+ field, which should be set before the struct is used. We now replace declarations
+ of "struct sockaddr_in" with a macro MAKE_SOCKADDR_IN() (defined in
+ "groupsock/include/GroupsockHelper.hh"). This macro sets the "sin_len" field
+ iff "HAVE_SOCKADDR_LEN" is defined on the command line.
+ (Thanks to Boris Nikolaus for noting this issue.)
+- Fixed a bug in the timestamp generation for certain rare MPEG-4 video streams.
+ (Thanks to Bernhard Feiten for reporting this.)
+
+2005.11.30a:
+- Improved the calculation of the per-Transport Packet duration in
+ "MPEG2TransportStreamFramer", so that the overall transmit duration
+ tries to match the client playout duration (as determined by PCRs).
+- Minor patch to avoid errors when compiling with GCC 4.1.
+ (Patch contributed by Hanno Boeck.)
+- Patch to the special 'Kasenna'-specific support in "RTSPClient".
+ (Patch contributed by Glen Gray.)
+
+2005.11.11:
+- Modified "MPEG2TransportStreamFramer" to take the PCR "discontinuity_indicator"
+ flag into account when updating the estimated duration of each TS packet.
+
+2005.11.03:
+- Minor bug fix to the previous version's update to "RTSPClient".
+
+2005.11.02a:
+- Updated the previous release to add a new (optional)
+ "forceMulticastOnUnspecified" parameter to "RTSPClient::setupMediaSubsession()".
+ This forces the client to request a multicast stream if the original SDP
+ response address was unspecified (0.0.0.0). (Note that not all servers
+ will be able to handle this.) We also handle the "port=" field in RTSP
+ "SETUP" response "Transport:" headers.
+- Fixed "RTSPServer" to include a proper "port=" field in the "SETUP"
+ "Transport:" response when streaming multicast.
+
+2005.11.02:
+- Updated "RTSPClient" to use the "destination=" address in the "SETUP"
+ response's "Transport:" header - for multicast streams. We do this because
+ some weird servers (e.g., Axis cameras, reportedly) do not specify the
+ multicast address earlier, in the "DESCRIBE" response's SDP.
+
+2005.10.28b:
+- Added a "rtpTimestampFrequency" parameter (with default value 90000)
+ to "H263plusVideoRTPSink", "MPEG4ESVideoRTPSink".
+
+2005.10.28a:
+- Removed some unnecessary "delete"s, and changed some "delete"s to
+ "Medium::close()"s. (Minor bug noted by Zhixue Zhang.)
+
+2005.10.28:
+- Fixed a potential 'divide by zero' problem in "MP3Internals.cpp".
+ (Thanks to Eric Peters for noting this.)
+
+2005.10.27:
+- Added a "numEntries()" pure virtual function to "HashTable".
+ (Thanks to David Bertrand for this suggestion.)
+
+2005.10.23:
+- When creating a Transport Stream from AC-3 audio input, we now use a stream_id
+ of 0x06 rather than 0x81.
+- Add support for receiving the various G.726 RTP payload formats, described
+ in RFC 3551.
+- Added an implementation of the "doStopGettingFrames()" virtual function to
+ "BasicUDPSource". (Thanks to Adrian Hornsby for this suggestion.)
+- Changed the reimplemented virtual functions in "BasicUsageEnvironment0" and
+ "BasicTaskScheduler0" from "protected" to "public". (Thanks to David Bertrand
+ for this suggestion.)
+- Added support to "RTSPClient" for the "GET_PARAMETER" RTSP command.
+ (Thanks to Glen Gray for this.)
+- Added a Windows version of the "genWindowsMakefiles" script. This should
+ make it easier for Windows users to unpack and build the code.
+ (Thanks to Erwin Herzog for this script.)
+
+2005.10.05:
+- Fixed a couple of bugs noticed by David Bertrand.
+
+2005.09.23:
+- This software is now called "LIVE555 Streaming Media", and our preferred domain name
+ is now "live555.com".
+
+2005.09.20:
+- Updated "MPEG2TransportStreamMultiplexor" to increase the frequency of PMTs
+ and PATs in the output Transport Stream.
+- More improvements to "MPEG2TransportStreamFromESSource".
+- Updated "RTSPServer" to allow for empty stream names from certain non-standard
+ RTSP clients (such as Amino STBs).
+- Fixed "RTSPClient::tearDownMediaSession()" to delete each subsession's
+ "sessionId" field.
+- Fixed a minor memory leak in "RTSPClient" (when implementing HTTP tunneling)
+
+2005.09.09:
+- Made the destructors for "BasicUsageEnvironment" and "BasicUsageEnvironment0"
+ protected rather than public, to match the base class "UsageEnvironment".
+- More improvements to "MPEG2TransportStreamFromPESSource" and
+ "MPEG2TransportStreamFromESSource".
+
+2005.09.06:
+- Modified "MPEG2TransportStreamMultiplexor", and added
+ "MPEG2TransportStreamFromESSource".
+
+2005.08.26:
+- Updated "MediaSession" to parse the SDP "a=type:" attribute. (Patch by
+ Derk-Jan Hartman.)
+- Added support to "RTSPClient" for handling Microsoft servers' non-standard use
+ of the RTSP/RTP protocol. Also, fixed the parsing and generation of floating
+ point numbers in the RTSP "Range:" and "Scale:" headers to work correctly in
+ non-POSIX locales. (Thanks to Derk-Jan Hartman for this suggestion.)
+- Fixed a memory leak in "MPEG2TransportStreamFromPESSource".
+- Changed "MP3StreamState::readFromStream()" from "private" to "protected", to
+ satisfy a request by Pierre l'Hussiez.
+
+2005.08.09:
+- Improved the Transport Stream generation software to (in the future) allow
+ for generating Transport Streams from Elementary Stream data as well as
+ from PES packet data.
+
+2005.07.23:
+- Improved "H264VideoRTPSource" to properly handle 'aggregate' packets
+ that contain more than one NAL unit.
+
+2005.07.21:
+- We no longer set a RTCP "RR" handler when we're streaming, unicast on-demand,
+ from a shared input source. (The reason for this is that, in this case,
+ we also share a RTCP instance for all client sessions (streams).
+ A better fix will eventually be needed.)
+
+2005.07.19:
+- Updated H.264/RTP support.
+
+2005.07.15:
+- Oops, DEBUG was not supposed to be defined in "RTSPServer.cpp".
+- Added "-D_LARGEFILE_SOURCE=1" to the "COMPILE_OPTS =" line of the various
+ "config.*linux*" files, to ensure that code that uses "fseeko()" will
+ compile properly for all Linux systems.
+
+2005.07.13:
+- When handling a 'passive' session, we no longer set a RTCP "RR" handler,
+ because (unlike unicast, on-demand sessions) the RTCP instance usually
+ outlives RTSP client sessions. (Thanks to Jon Sheller for reporting
+ this bug.)
+
+2005.07.12:
+- Minor updates to the Base64 code for H.264/RTP receiving.
+
+2005.07.10:
+- Removed a debugging version of "testOnDemandRTSPServer" that had mistakenly been
+ left in the proevious revision. If you downloaded the previous revision, then
+ please download this version instead!
+- Fixed "MPEG1or2VideoStreamFramer" to better handle MPEG video streams where the
+ first GOP time code has a non-zero 'pictures' count.
+ (Thanks to Eric Peters for reporting this problem.)
+- Some enhancements to the Base64 code, for eventual use by "H264VideoRTPSource".
+
+2005.07.08:
+- Added - to "RTCPInstance" - the ability to assign 'handler' functions
+ to be called on the arrival of RTCP "SR" or "RR" packets (as well as "BYE").
+ We now use this mechanism (specifically, a RTCP "RR" handler) to improve the
+ optional 'liveness' test for "RTSPServer". (Liveness is now indicated by
+ either a RTSP command over the TCP connection, or the arrival of a RTCP
+ "RR" packet.)
+- Moved routines for Base64 encoding and decoding into the "liveMedia"
+ library. (Base64 encoding was already being used by "RTSPClient";
+ Base64 decoding will soon be used by "H264VideoRTPSource".)
+
+2005.07.01:
+- Updated "testOnDemandRTSPServer" to demonstrate AAC audio streaming (from an
+ ADTS-format file)
+- Made some modifications to (supposedly) make the code compile better for
+ WinCE.
+
+2005.06.30:
+- Added support for reading and streaming from AAC audio files in ADTS format.
+ (Thanks to Manthan Systems for funding this work.)
+- Removed duplicate code in "testOnDemandRTSPServer.cpp".
+- Removed duplication of a common error message from "RTSPClient.cpp".
+
+2005.06.29:
+- Added support for Basic authentication (in addition to Digest authentication)
+ to "RTSPClient".
+- Removed a minor memory leak in "PassiveServerMediaSubsession".
+- Improved "MPEG4ESVideoRTPSource" to better note when received RTP packets
+ begin or end a MPEG-4 'frame'. (Thanks to Saumya Chandra for noting the
+ limitations of the previous code.)
+- Changed some member functions in "PassiveServerMediaSubsession" from
+ "private" to "protected", to allow subclassing. (Thanks to
+ Fabrice Aeschbacher for this suggestion.)
+
+2005.06.16:
+- Fixed a bug in the generic MPEG (1, 2 or 4) video parsing code that was causing some
+ MPEG-4 streams not to be parsed correctly.
+- Updated "MPEG4VideoStreamFramer" to better handle MPEG-4 video streams that contain
+ 'B' frames. (Now, more accurate presentation times and frame durations are computed
+ for such streams.)
+
+2005.06.07:
+- Modified the Windows-specific code in "ByteStreamFileSource.cpp" to compile properly
+ under MINGW.
+
+2005.06.04:
+- Updated "MPEG2TransportStreamFramer::doStopGettingFrames()" to clear the PID status
+ table. This makes it possible to handle PCR discontinuities when seeking (e.g.)
+ within a stream.
+- Updated the "ByteStreamFileSource::seekToByte*()" operations to take 64-bit
+ parameters, to allow for seeking within files that are >4 GB in size.
+
+2005.05.26a:
+- Updated the 'seeking' operations in "ByteStreamFileSource" to handle files
+ that are > 2^31 bytes in size.
+
+2005.05.26:
+- Updated "RTCPInstance::setByeHandler()" to (by default) handle only "BYE"s that
+ come from active participants. This means, for example, that a receiver of a
+ multicast stream can now quit without its RTCP "BYE" being handled by other
+ multicast receivers. (By default, multicast receivers will now handle only
+ "BYE"s that come from the sender.)
+- "RTSPServer" now includes "rtptime" in the returned "RTPInfo:" header, because
+ the bugfix in the previous release also happened to fix the problem that this was
+ having with QuickTime Player.
+
+2005.05.24:
+- Fixed "RTPSink" so that it now resets "fTimestampBase" only on the first time
+ that a timestamp is ever computed; not on the first time after "startPlaying()"
+ is called. (Thanks to David Bertrand for noting this.)
+
+2005.05.23:
+- Added support to "RTSPServer" for (optionally) reclaiming client connection
+ state (and stopping the stream) if no command has been received on the
+ RTSP TCP connection within a specified period of time. This is useful for
+ use in closed systems where it is known that the RTSP client always uses
+ the "GET_PARAMETER" command as a periodic 'keep-alive'. It stops the
+ stream from continuing indefinitely if the client suddenly dies.
+
+2005.05.12:
+- Removed some unnecessary floating point code from "MP3Internals.cpp".
+ (This was causing unnecessary slowness on some hardware without floating point.)
+
+2005.05.09:
+- Modified "MPEG2TransportStreamFramer" to give greater weight (0.5) to more recent
+ data when computing the estimate of per-transport-packet duration. (This causes
+ it to respond more accurately to sudden changes in bitrate (i.e., in VBR streams).)
+- Added some (otherwise unnecessary) null destructors to stop gcc 4.0 from printing
+ warning messages. (Thanks to Emiliano Parasassi for pointing this out.)
+
+2005.05.05:
+- "RTSPServer" now uses separate buffers for requests and responses. (This fixes
+ an issue that arose in the handling of requests from a set-top box.)
+
+2005.05.04:
+- Updated "RTSPServer" to make the parsing of "CSeq:" headers in RTSP requests
+ more robust.
+
+2005.04.26:
+- Made sure that "MultiFramedRTPSource"s properly stop receiving incoming RTP
+ packets, when they're asked to stop. (This fixes a bug that was being triggered
+ by some streams that continued sending RTP packets after a RTCP "BYE". Thanks to
+ Eberhardt Garner for helping track this down.)
+- Fixed a minor memory leak in "openRTSP".
+- Updated "FramedSource.hh" to no longer (by default) support the old form of
+ the 'after getting' function.
+
+2005.04.23:
+- Added "H264VideoRTPSource", for receiving H.264/RTP streams.
+ (Thanks to Erik Hellerud for this.)
+- Made some minor modifications to "ServerMediaS(ubs)ession",
+ to support a customer's project.
+
+2005.04.22:
+- Improved "MPEG1or2VideoRTPSink" to allow more than one complete video 'slice'
+ from the same picture to be packed into an outgoing RTP packet.
+- Eliminated a bogus "IP_ADD_MEMBERSHIP" error message that Windows (for some
+ reason) sometimes triggers for no reason.
+
+2005.04.20:
+- Changed the name of the (platform-independent) "_close()" function to
+ "closeSocket()", to prevent an apparent function name conflict in Windows.
+
+2005.04.13:
+- Modified "ourSourceAddressForMulticast()" to try the
+ "gethostname()"/"gethostbyName()" method if the 'multicast loopback' method fails.
+- Made some modifications to "ServerMediaSubsession" to support "SIPServer"
+ (whose implementation is currently in progress).
+
+2005.04.07:
+- Fixed a bug in the "base64Encode()" routine in "RTSPClient.cpp".
+ (Thanks to Raphael Rigo for noticing this.)
+- Updated "MPEG1or2VideoStreamDiscreteFramer" to handle the "iFramesOnly" and
+ "vshPeriod" parameters (just as the original "MPEG1or2VideoStreamFramer"
+ already does).
+
+2005.03.31:
+- Removed some testing code that had accidentally been left in the previous
+ release. If you use "openRTSP", then please use this release instead of the
+ previous one.
+- Fixed a bug in "RTPServer" when handling streams without stream names.
+ (The bug had been introduced in version 2005.03.28.)
+
+2005.03.30:
+- Improved the support for seeking within RTSP/RTP-streamed MPEG-1 or 2
+ Program Stream files. (A/V sync after a seek still isn't perfect, though.)
+
+2005.03.28:
+- The "RTSPServer" implementation now supports raw-UDP streaming, for those
+ clients that request it. (This is usually requested only by some specialized
+ clients - such as set-top boxes - and only for data such as MPEG Transport
+ Streams where audio/video is muxed together (and no RTP timestamps are needed).)
+- Updated the calculation of MP3 sampling frequencies to allow for 'MPEG2.5'
+ (Thanks to Massimo Buffo for this fix.)
+
+2005.03.23:
+- Changed "BasicTaskScheduler::SingleStep()" to call only one read handler during
+ each iteration of the event loop. This prevents potential problems if
+ the event loop is called reentrantly from within a read handler.
+- Added a new, alternative version of "ByteStreamFileSource::createNew()" that
+ takes an open file (FILE*) as parameter, instead of a file name.
+ (Thanks to Mike Yan for this suggestion.)
+- Updated the top-level Makefile to build the lower-level directories using
+ "$(MAKE)" rather than "make". This allows a command other than "make"
+ (e.g., "gmake") to be used. (Thanks to Sergio.Gelato for this fix.)
+- Minor changes to (apparently) make Sun's C++ compiler happy.
+ (Thanks to Sergio.Gelato for these.)
+- Some changes to "RTSPServer" to make it more tolerant of some strange, non-standard
+ clients.
+- Support seeking within RTSP/RTP-streamed MPEG-1 or 2 Program Stream files.
+
+2005.03.11:
+ Updated "MPEG2TransportStreamFromPESSource" once again to better handle
+ Program Streams that include a "program_stream_map".
+
+2005.03.10:
+- Modified "BasicUDPSource" to make its OS socket receive buffer at least 50 kBytes
+ (the same as we do for "MultiFramedRTPSource").
+
+2005.03.07:
+- Updated "MPEG2TransportStreamFromPESSource" (and thus also the
+ "testMPEG1or2ProgramToTransportStream" demo application) to handle MPEG
+ Program Streams that include MPEG-4 Elementary Stream data. (For this to work,
+ the Program Stream must include a "program_stream_map".)
+
+2005.03.05:
+- Modifying "ReceivingInterfaceAddr" now works before receiving
+ unicast streams. (Previously, it worked only when receiving multicast
+ streams.) Also, added a new option "-I <interface-ip-address>"
+ to "openRTSP", to allow the user to specify which interface is used.
+ (Thanks to Luca Abeni for this patch.)
+- Fixed a "delete[]" vs "delete" bug in "MPEG4VideoStreamFramer",
+
+2005.02.28:
+- Fixed a bug (that had been introduced in the 2005.01.07 version)
+ in the MP3 frame<->ADU conversion code.
+
+2005.02.25:
+- Fixed some minor memory leaks.
+- Made some more changes to prepare for RTSP server seeking within MPEG-1 or 2
+ Program Stream files. (This is still not done yet.)
+
+2005.02.14:
+- Changed the generation of "rtptime" in "RTPInfo:" RTSP headers to use
+ %u instead of %d. (Thanks to Regis Feneon for noting this.)
+- Made some changes to prepare for RTSP server seeking within MPEG-1 or 2
+ Program Stream files. (This is still not done yet.)
+
+2005.02.09:
+- Updated "MultiFramedRTPSink" to allow for frame-specific special headers to
+ appear before each frame in RTP packets. (This in addition to the (possible)
+ special header that may appear at the start of the packet.) This functionality
+ is added using a new virtual function "frameSpecificHeaderSize()" (that,
+ by default, returns 0.) Thanks to Matt Romaine for this.
+- Added a new "BufferedPacket" virtual member function
+ "getNextEnclosedFrameParameters()", which will (eventually) replace the existing
+ "nextEnclosedFrameSize()" virtual member function. This (plus a corresponding
+ change to "MultiFramedRTPSource") now makes it possible to give correct
+ presentation times to multiple frames within incoming RTP packets.
+
+2005.02.07:
+- The "MultiFramedRTPSink::setPacketSizes()" function now applies just to one
+ specific "MultiFramedRTPSink" object; not to all such objects.
+- Added a new version of "RTSPServer::removeServerMediaSession()" that takes
+ the (string) stream name - rather than the "serverMediaSession" object
+ - as argument.
+
+2005.01.29:
+- We now remove reception and transmission statistics records (from each
+ "RTPSource" and "RTPSink", respectively), whenever each RTCP SSRC membership
+ gets 'reaped'. We also added more information to "RTPTransmissionStats".
+ (Thanks to WIS Technologies for funding this work.)
+- Some minor fixes to "JPEGVideoRTPSource". (Thanks to Sergey Khlutchin for
+ reporting this.)
+- Made the "ServerMediaSession" constructor "protected", to allow for
+ subclassing. (This was requested by Eric Peters.)
+- Updated "win32config.Borland" and modified some header files, so that the
+ code can be built using Borland's "C++ Builder 5.0".
+ (Thanks to David Wu for this suggestion.)
+- Added a "setPacketSizes()" function to "MultiFramedRTPSink" to make it
+ possible to change the 'maximum' and 'preferred' size of outgoing
+ RTP packets. (Thanks to Christian Gerstner for this suggestion.)
+
+2005.01.24:
+- Some MIME-type parameters in SDP "a=fmtp:" lines are Boolean, taking only values
+ 0 or 1. Sometimes these parameters are set (to 1), without an explicit "=1"
+ being in the SDP "a=fmtp:" line. (This is not legal, but it sometimes occurs.)
+ Our SDP parsing code (in "MediaSession.cpp") now checks for this.
+
+2005.01.23:
+- More improvements to "AVIFileSink". MPEG-1, 2 or 4, JPEG and H.263 video is
+ now supported, along with raw PCM or u-law audio. (However, audio is not
+ yet working perfectly, and MPEG audio is currently not supported at all.)
+ (Thanks to WIS Technologies for funding this work.)
+- Changed the (many) calls to "gettimeofday()" to pass NULL as the 'timezone'
+ parameter, because this isn't used.
+
+2005.01.13:
+- Fixed a bug in "liveMedia/OnDemandServerMediaSubsession.cpp" that was reportedly
+ causing crashes on some systems. (Thanks to Brian Wang for finding this.)
+- Updated "MPEG1or2VideoStreamDiscreteFramer" and
+ "MPEG4VideoStreamDiscreteFramer" to set appropriate presentation
+ timestamps for B-frames. (Unlike I and P-frames, B-frames' timestamps are
+ not monotonically increasing.) (Thanks to WIS Technologies for funding this work.)
+
+2005.01.07:
+- Fixed a bug in "JPEGVideoRTPSink" that was causing incorrect packets to
+ be generated when streaming using non-standard JPEG quantization tables
+ (which must be included in the RTP packets).
+- Updated the handling of incoming MP3 ADUs to allow for the possibility of
+ receiving ADUs that contain 'ancillary data' at the end. (For example,
+ ADUs for "mp3Pro" frames are like this.) Note, however, that our
+ MP3 frame-to-ADU generating code currently doesn't include 'ancillary
+ data' at the end of the generated MP3 ADUs. This will need to be fixed
+ in order to be able to correctly *transmit* ADUs for "mp3Pro" frames.
+- More work on "AVIFileSink". Recording of MPEG-4 video-only files now works.
+
+2004.12.29:
+- Added a new liveMedia 'sink' class - "AVIFileSink" - for writing an AVI-format
+ file. Note: This is not fully working yet, so don't try using it yet!
+ (Thanks to WIS Technologies for funding this work.)
+
+2004.12.23:
+- Fixed a bug in the previous release (when receiving MPEG-2 Transport RTP streams).
+
+2004.12.22:
+- Updated "MPEG4GenericBufferedPacket::nextEnclosedFrameSize() to (i) allow
+ for "generic" mode, and (ii) properly check for the absence of an
+ "AU Header section". (Thanks to Erick van Rijk for this suggestion.)
+- When receiving a MPEG-2 Transport Stream (either RTP *or* raw-UDP), pass it
+ through a "MPEG2TransportStreamFramer", so that "durationInMicroseconds" is
+ set appropriately, based on the stream's embedded PCR values.
+ (Thanks to Dermot McGahon for this suggestion.)
+- Changed the "num_packets_lost" statistics line (printed by "openRTSP -Q")
+ to format as an int rather than as an unsigned. This is in case this value
+ is negative (which can happen if duplicate packets are received).
+ (Thanks to Norbert Donath for noting this.)
+
+2004.12.15:
+- Changed the RTSP servers in the various test programs to use port 8554
+ instead of port 7070 for RTSP (as an alternative to the standard port
+ 554). It turns out that port 8554 is the official IANA-reserved port
+ number for RTSP (alternative).
+- Changed "RTSPClient" to include the "Scale:" header if the scale is being changed
+ to 1.0 from something else. (Thanks to Matt Romaine for this suggestion.)
+
+2004.12.09:
+- Fixed a bug in the handling of "audio/X-MP3-DRAFT-00" RTP streams.
+ (Thanks to Dhananjay Deshpande for noticing this.)
+
+2004.12.07:
+- Updated "RTSPClient" to parse the "Scale:" header (if any) in a response to
+ a "PLAY" command, and set a corresponding field in the "MediaSession" or
+ "MediaSubsession" structure.
+
+2004.12.06:
+- Fixed a minor bug in "BasicTaskScheduler::SingleStep()" that would be triggered
+ if the (optional) "maxDelayTime" parameter were unusually large.
+- The "RTSPServer" implementation of RTP/RTC-over-TCP streaming will now work even
+ if the client's RTSP "SETUP" command doesn't include an "interleaved=" field.
+
+2004.11.30:
+- Added "RTSPServer" support for the RTSP "Scale:" header, which is used to
+ implement 'trick play': fast forward and reverse play. The actual implementation
+ of these depends on the media type; it is currently implemented for MPEG-1 or 2
+ (including MP3) audio (forward play only), and for WAV (PCM) audio (forward or
+ reverse play).
+ (Thanks to Sony Corporation for funding this work.)
+
+2004.11.26:
+- Improved "H263plusVideoRTPSource" to better recognize which packets begin
+ a frame. (This should improve its performance on lossy networks.)
+- Improved the parsing of MPEG-1 or 2 audio streams to ignore more bogus
+ 'syncwords'.
+- We now look for the 'Xing' VBR Table of Contents, and use this (if present)
+ to implement seeking within VBR files.
+- Updated "ADUFromMP3Source" to allow the internal data buffers to be flushed
+ (e.g., if there is a discontinuity in the MP3 input data).
+- When streaming a seekable MPEG audio stream on demand, insert filters that
+ convert the input stream to ADU format, and then back to MP3. This allows
+ us to seek within the stream without being tripped up by the MP3
+ 'bit reservoir' (back-pointer).
+
+2004.11.20:
+ - Fixed a bug in "MediaSession::initiateByMediaType()". (It was not allowing
+ for the possibility that a subsession had already been initiated.)
+
+2004.11.19:
+- For consistency (and ease of comparison), the "MIMEtype()"
+ codec name substring for each "MediaSource" subsession is in upper case.
+
+2004.11.18:
+- Added an optional "scale" parameter to the "RTSPClient" "play...()"
+ methods, to allow a client to specify fast forward or rewind 'trick play'.
+ (Thanks to Dermot McGahon for this suggestion.)
+
+2004.11.16:
+- Fixed a bug in the way that "QuickTimeFileSink" records the duration of
+ multi-channel audio tracks in ".mov" or ".mp4"-format files.
+ (Thanks to Orban/CRL Inc. for funding this work.)
+
+2004.11.11a:
+- Another minor update to "RTSPClient".
+
+2004.11.11:
+- Updated the "RTSPServer" implementation to handle the case where a "PLAY"
+ request does not contain a "Range:" header. (Suggestion by Brian Wang.)
+- Reinstated the "MPEG4LATMAudioRTPSource" fix from version "2004.08.24".
+ (It had accidentally gotten deleted.)
+- Included Dermot McGahon's patch to "RTSPClient" to support the bogus
+ non-standard 'Kasenna' variant of RTSP.
+
+2004.11.09a:
+- Fixed the previous revision (RTSP seeking support) to work properly with VLC.
+- Fixed a bug that was causing receivers of SSM streams to not receive RTCP packets. (Thanks to Alessandro Gaiarin for reporting this.)
+
+2004.11.09:
+- Added support for seeking within streams. This currently works only for
+ WAV audio file streams, and MPEG audio (include MP3) file sources.
+ (However, it doesn't yet work properly for VBR MP3 files; this will get fixed.
+ Also, it doesn't yet work properly with VLC.)
+ (Thanks to Sony Corporation for funding this work.)
+
+2004.11.06:
+- Improved the way that we specify output buffers for "RTPSink" objects.
+ We now do this using a "maxSize" static member variable (instead of
+ using a 'number of packets' variable as we did before). We also limit
+ the size of the output buffer used for RTCP packets, to save space.
+- When streaming a MPEG Transport Stream, don't set the RTP 'M' bit.
+- When recording a ".mov" or ".mp4" file using "QuickTimeFileSink.cpp",
+ we no longer fill in the "width" and "height" fields for audio tracks.
+
+2004.11.04:
+- When streaming MPEG audio or WAV audio files on demand, we now return the
+ correct file duration (in the RTSP "Range:" header and the SDP "a=range:"
+ attribute), so that media players will report the correct stream duration.
+ (Thanks to Sony Corporation for funding this work.)
+- In "MultiFramedRTPSink", we now wait until we receive the first data before
+ initializing "fNextSendTime" with the current wall-clock time.
+ (Thanks to Eric Peters for suggesting this.)
+
+2004.11.02:
+- Updated the RTSP "Range:" header (in a "PLAY" response) and the SDP "a=range:"
+ attribute to support streaming from sources with finite durations.
+ (Such sources can support seeking via RTSP.) The "ServerMediaSubsession"
+ class now has a "duration()" virtual function. (In the future,
+ "FileServerMediaSubsession" subclasses will redefine this, so that seeking
+ within the file will work.)
+ (Thanks to Sony Corporation for funding this work.)
+
+2004.11.01:
+- Added support to "RTSPClient" for streaming RTSP/RTP over HTTP, using the technique
+ described in Apple's document: <http://developer.apple.com/documentation/QuickTime/
+QTSS/Concepts/chapter_2_section_14.html>.
+ This can be used for streaming from a Darwin Streaming Server from behind a
+ HTTP-only firewall. (Note that our own RTSP server implementation doesn't yet
+ implement RTSP-over-HTTP, but this is on the 'to do' list.)
+ (Thanks to Orban/CRL Inc. and WIS Technologies for funding this work.)
+
+2004.10.28a:
+- Fixed "OnDemandServerMediaSubsession" so that "PAUSE"/"PLAY" works properly on
+ unicast streaming from files.
+
+2004.10.28:
+- Removed (perhaps temporarily) the "rtptime=" parameter from the "RTP-Info:" header
+ that's returned in response to the RTSP "PLAY" command. It appears that this may
+ be messing up A/V sync in QuickTime Player.
+
+2004.10.26:
+- Updated "JPEGVideoRTPSink" (and "JPEGVideoSource") to allow for the
+ possibility of sending custom quantiziation tables in JPEG/RTP packets.
+- Fixed some compile warnings about unused named parameters. (Thanks to
+ Thiago Correa for these suggestions.)
+
+2004.10.22:
+- Added a new "MPEG1or2VideoStreamDiscreteFramer" class, similar to the existing
+ "MPEG4VideoStreamDiscreteFramer".
+
+2004.10.21:
+- Modified the order of SDP lines generated by a RTSP server
+ (in "ServerMediaSession.cpp") to correspond to the exact order specified by
+ the SDP RFC. JMIF clients are supposedly anal retentive about this.
+ (Thanks to Fabrice Aeschbacher for noticing this.)
+
+2004.10.19:
+- Updated "MPEG2TransportStreamFramer" to properly handle input data that
+ doesn't begin with a 'sync' byte (0x47).
+
+2004.10.18:
+- Added a new "removeServerMediaSession()" member function to "RTSPServer".
+- Updated the implementation of the RTSPServer "RTPInfo:" header to include a
+ "rtptime=" field.
+- Improved the "WindowsAudioInputDevice" trick for making the microphone the
+ first-listed device. (Thanks to Syncanph Xie for this suggestion.)
+
+2004.10.14:
+- Added a new argument "-4" to "openRTSP" (with corresponding updates to
+ "QuickTimeFileSink"), to generate a "MP4"-format file. (Currently, this
+ works for MPEG-4 audio only.)
+ (Thanks to Orban/CRL Inc. for funding this work.)
+
+2004.10.13:
+- Fixed a typo that was causing the Windows version not to build.
+ (Thanks to Thiago Correa for noticing this.)
+
+2004.10.11:
+- Updates to "RTSPServer":
+ - Include a "Date:" header in each response
+ - Include a "Range:" header in each "PLAY" response.
+ - Include "RTP-Info:" header in each "PLAY" response.
+- Made "SimpleRTPSink" more idiot-proof.
+
+2004.10.07:
+- Improved the parser in "MPEG4VideoStreamFramer" to be more tolerant of
+ bad/unexpected data.
+- Moved the code for opening input files by name (which includes a special-case
+ hack for "stdin") to a single common file - "InputFile.cpp" - to get rid of
+ duplicated code.
+
+2004.10.04:
+- Fixed "UserAuthenticationDatabase::addUserRecord()" (in "RTSPServer.cpp") to
+ make a copy of the "password" string, before adding it to the hash table.
+ (The hash table already makes a copy of the "username" (key) string.)
+
+2004.10.03:
+- Added support for receiving raw UDP streams (in addition to normal RTP/UDP streams)
+ (Thanks to Derk-Jan Hartman)
+
+2004.09.30:
+- Updated the RTSP server "UserAuthenticationDatabase" to (i) allow for it to
+ be subclassed, and (ii) allow it to store passwords that are really
+ md5(<username>:<realm>:<password>)
+
+2004.09.24:
+ Added support for access control (using digest authentication) to "RTSPServer".
+ Also, added example code to the "testOnDemandRTSPServer" test program to illustrate
+ how to use this. (Thanks to Orban/CRL Inc. and WIS Technologies for
+ funding this work.)
+
+2004.09.22:
+- Moved the digest authentication support out of "RTSPClient.cpp"
+ (and "SIPClient.cpp") into a new file: "DigestAuthentication.cpp". There's also
+ a corresponding new header file: "DigestAuthentication.hh". This is in preparation
+ for adding digest authentication support to our RTSP server implementation also.
+
+2004.09.20:
+- More improvements to the multi-unicast streaming support (from a single input
+ source). RTP-over-TCP streaming is now supported in this case. Updated
+ "testOnDemandRTSPServer" to add a variable "reuseFirstSource" (default: False)
+ that can be used to implement this.
+
+2004.09.09:
+- Made a minor improvement to the multi-unicast streaming support.
+
+2004.09.08:
+- Added optional "author" and "copyright" parameters to "DarwinInjector::setDestination()".
+- Added an optional "miscSDPLines" parameter to "ServerMediaSession::createNew()",
+ to allow the caller to add extra SDP lines to the session description.
+- Fixed a minor bug in the media tables reclamation code.
+- Added still more support for multi-unicast RTSP/RTP streaming from a
+ single input source. (Thanks to Orban/CRL, Inc. and WIS Technologies for funding
+ this work.)
+
+2004.09.05:
+- We now more gracefully handle malformed "m=" SDP lines. (Thanks to
+ Derk-Jan Hartman for noticing this problem.)
+- In "RTSPClient", we now make the "CSeq" number a static variable, to avoid
+ potential problems if we connect to the same server with the same URL
+ more than once. (Thanks to Keith Gurganus for the suggestion.)
+- Modified "RTSPServer" to use the destination interface IP address in
+ its "rtsp://" URL.
+
+2004.09.02:
+- Modified "GroupsockHelper.cpp" to allegedly support building for WinCE.
+
+2004.08.26:
+- Fixed a bug that could cause "AMRAudioRTPSource"s to not get reclaimed.
+ (Thanks to Chenglim Ear for reporting this.)
+- More support for multi-unicast RTSP/RTP streaming from a single input source.
+
+2004.08.24:
+- Modified "LATMAudioRTPSource" to include the initial data length field
+ in the data that's delivered to a client. (A decoder was needing to see this.)
+- Added a new "MPEG4VideoStreamDiscreteFramer" class, as a (more efficient)
+ alternative to "MPEG4VideoStreamFramer" when the input source is a sequence of
+ discrete MPEG-4 frames, rather than a byte stream.
+- Fixed a minor bug in "Media.cpp". (Thanks to Thiago Correa.)
+- Added more support for multi-unicast RTSP/RTP streaming from a single input
+ source. (This now working, except for TCP connections - to be completed.)
+
+2004.08.17:
+- Made the parsing of MPEG-1 or 2 video more robust, in case a Video Sequence Header
+ doesn't appear exactly where it should.
+- Added initial support for multi-unicast RTSP/RTP streaming from a single input
+ source. (This isn't fully working yet - more support needs to be added.)
+
+2004.08.13:
+- Added a "numChannels" parameter to "MPEG4GenericRTPSink" (optional)
+ and "MPEG4LATMAudioRTPSink".
+
+2004.08.12:
+- Fixed a couple of small memory leaks (noticed by Gabriel Bouvigne).
+
+2004.07.31:
+- Added support for MPEG-4 LATM audio RTP streaming. (MPEG-4 LATM audio RTP
+ *receiving* had already been implemented.) (Thanks to Orban/CRL, Inc. for
+ funding this work.)
+
+2004.07.27:
+- Updated the MPEG Program-to-Transport Stream conversion mechanism to set the
+ correct stream tags depending on whether the input data is MPEG-1 or 2.
+
+2004.07.23:
+- Added a "-O" (upper-case letter 'oh') option to "openRTSP". This tells the
+ program to not send an initial "OPTIONS" request prior to "DESCRIBE".
+- Modified "BasicTaskScheduler" to better allow subclassing.
+- Added an optional "maximum delay time" option to
+ "BasicTaskScheduler0::SingleStep()". This allows subclasses to impose a
+ limit on how long "select()" can delay, in case it wants to also do polling.
+
+2004.07.22:
+- Fixed a serious bug that was causing some MPEG Program Stream files to be parsed
+ incorrectly - especially if they have non-MPEG header data at the front.
+- Modified the way in which "Medium" objects are reclaimed, to overcome an
+ obscure bug.
+
+2004.07.20:
+- Added a comment to "DeviceSource.cpp" to clarify the purpose of "fTo", because
+ several people have gotten this wrong.
+- Made ~BasicUsageEnvironment protected (just like ~UsageEnvironment)
+- Fixed "samplingFrequencyFromAudioSpecificConfig()" to remove a memory leak.
+
+2004.07.16:
+- Fixed a bug in "AMRAudioRTPSource", in the way that it handled input RTP packets
+ that contained more than one AMR frame.
+ (Thanks to Gabriel Bouvigne for reporting this problem.)
+- We no automatically reclaim the memory that was allocated for the "UsageEnvironment"
+ "liveMediaPriv" and "groupsockPriv" structures, once their tables become empty.
+
+2004.07.14:
+- Updated "QuickTimeFileSink's" MPEG-4 audio recording mechanism again, this time
+ to support aacPlus as well as regular AAC.
+
+2004.07.13:
+- Updated "QuickTimeFileSink" to support recording MPEG-4 audio (including
+ hint tracks).
+- Modified "MPEG4VideoStreamFramer" to allow simplified subclasses that take
+ discrete frames as input (and therefore don't need a full parser).
+
+2004.07.07:
+- Added the (rather bogus) "a=x-qt-text-nam:" and "a=x-qt-text-inf:" attributes
+ to the SDP descriptions delivered by "RTSPServer" (in response to a "DESCRIBE"
+ operation). These attributes get the same strings as the "s=" and "i=" lines
+ (respectively). However, QuickTime Player doesn't do anything with those lines,
+ but does recognize the "a=x-qt-*" lines.
+
+2004.07.06:
+- Modified the code so that it will build for WinCE.
+ (Thanks to Gabriel Bouvigne for these changes.)
+
+2004.07.02:
+- Fixed a bug in HashTable::RemoveNext() (noted by Greg Bothe)
+- Added partial support for recording MPEG-4 audio in "QuickTimeFileSink".
+ (Hinting is not yet working properly for this media type.)
+- Added an option to "MPEG1or2AudioStreamFramer" to allow its presentation times
+ to be resynchronized by its input source.
+
+2004.06.18:
+- Fixed a bug in "MPEG1or2AudioStreamFramer" (in the way it was checking for
+ syncwords at the start of each frame).
+- Updated the "MPEGVideoStreamFramer" (base) class to report "fNumTruncatedBytes".
+- Increased "OutPacketBuffer::numPacketsLimit" from 20 to 30.
+
+2004.06.17:
+- Another improvement to the "MPEG1or2Demux" parsing code.
+- Updated "QuickTimeFileSink" to support recording MPEG-4 video tracks into
+ ".mov" files. (There's also basic support for recording MPEG-4 audio, but
+ this isn't quite working yet.)
+
+2004.06.14:
+- Updated "MPEG1or2Demux" to make the checking for a PACK_START_CODE more
+ robust if it's not immediately present where we expect to see it.
+- Fixed a bug in "JPEGVideoRTPSource" that could cause a problem on
+ 64-bit architectures.
+ (Thanks to Andrey Filippov for noticing this.)
+
+2004.06.11:
+- Removed an error from a error message in StreamParser.
+
+2004.06.09:
+- Updated the implementation of the aggregate and non-aggregate RTSP "PLAY"
+ operations to not include a "Range:" header if the 'start' parameter is < 0.
+ (This is used when resuming from a "PAUSE", for example.)
+ Also, removed an unnecessary "Range:" header from the "PAUSE" command.
+ (Thanks to Gabriel Bouvigne for this suggestion.)
+- Reimplemented "MultiFramedRTPSource::doGetNextFrame1()" to use iteration
+ rather than recursion, in the case where a large frame is fragmented over
+ multiple incoming RTP packets. This avoids the possibility of stack overflow
+ occurring if there are very large fragmented frames in the input data.
+
+2004.06.07:
+- Added optional "start" and "end" parameters to the aggregate "PLAY" operation
+ in "RTSPClient". (We had already done this for the non-aggregate "PLAY" operation.)
+- Made the input banks buffers in "StreamParser" heap-allocated, rather than making
+ them member variables. This avoids any potential compiler problems with having
+ such large structures as member variables.
+
+2004.06.03:
+- Added the new 'liveMedia' class "MPEG2TransportFileServerMediaSubsession", for
+ unicast on-demand streaming of MPEG-2 Transport Stream files.
+- Added the new test programs "testMPEG2TransportStreamer" and
+ "testMPEG1or2ProgramToTransportStream", and added support for Transport File
+ streaming to "testOnDemandRTSPServer".
+ (Thanks to DVAgroup Inc. for funding this work.)
+
+2004.06.02:
+- Fixed "MediaSession" to no longer apply the normal RTP 'M' bit rule
+ when processing incoming "video/MP2T" (or "video/MP1S" or "video/MP2P")
+ streams. (For such streams, the 'M' bit does not mean 'end of frame'.)
+
+2004.06.01:
+- Updated "RTSPClient" to handle "Session:" headers that have a trailing
+ ";timeout=" part. (Thanks to Gabriel Bouvigne for suggesting this.)
+
+2004.05.31:
+- We now handle SDP "m=" lines with an optional <number-or-ports> field
+ (although we don't actually do anything with this value). Thanks to
+ Derk-Jan Hartman for this suggestion.
+
+2004.05.29a:
+- Made a correction to the previous change.
+
+2004.05.29:
+- Added a call to "DarwinInjector" to set the TCP socket's send buffer to 100 kBytes.
+
+2004.05.28:
+- Renamed some variables in "MP3Internals.cpp" (and made them static) to
+ overcome a name conflict seen by the VLC developers. (Thanks to
+ Derk-Jan Hartman for pointing this out.)
+
+2004.05.26:
+- Fixed a bug (apparently introduced with recent header file changes) that
+ could cause MP3 files to not be read correctly on Windows. (In particular,
+ this could cause "testMP3Streamer" to not work correctly on Windows.)
+ Thanks to David Skiba for the bug report.
+
+2004.05.24:
+- Added a new member function "lastReceivedSSRC()" to "RTPSource". This makes it
+ possible for a receiver to demultiplex incoming RTP data based on SSRC.
+ (Later this functionality should perhaps be added to "(MultiFramed)RTPSource"
+ instead.)
+- More updates to "DarwinInjector".
+
+2004.05.19:
+- Another update to "openRTSP" for a customer job.
+
+2004.05.17:
+- Added a new test program "testMPEG4VideoToDarwin.cpp" that is similar
+ to "testMPEG4VideoStreamer", except that instead of transmitting the
+ video RTP/RTCP packets via multicast, it transmits them - via a RTSP TCP
+ connection - to a remote Darwin Streaming Server.
+
+2004.05.12:
+- Added a new "liveMedia" class - "DarwinInjector" - that can be used to send an
+ audio and/or video RTP/RTCP stream to a remote Apple 'Darwin' (aka. QuickTime)
+ Streaming Server, for playing by (potentially multiple) RTSP clients.
+- Added a new test program "testMPEG1or2AudioVideoToDarwin.cpp" that is similar
+ to "testMPEG1or2AudioVideoStreamer", except that instead of transmitting the
+ audio/video RTP/RTCP packets via multicast, it transmits them - via a RTSP TCP
+ connection - to a remote Darwin Streaming Server.
+
+2004.05.09:
+- Removed a line of junk that had erroneously been left at the start of Makefile.tail.
+- The "testRelay" test program has been reprogrammed in the usual liveMedia
+ 'source->sink' style.
+
+2004.05.07:
+- Another update to RTSPClient for a customer job.
+
+2004.05.04:
+- Added an #include to "BasicUDPSink.cpp" to prevent a compilation problem on
+ some platforms.
+
+2004.05.02:
+- Some updates to RTSPClient and openRTSP for a customer job.
+
+2004.04.27:
+- Fixed the round-trip time estimation routine in "RTPSink" to allow for
+ the possibility of the computed round-trip time being negative. This can
+ happen if there is clock drift between the sender and receiver, and if the
+ actual round-trip time was quite small. If this happens, the returned
+ round-trip time value is zero.
+ (Thanks to Dixon Siu for alerting us to this issue.)
+
+2004.04.23:
+- Updated some #ifdef's so that the code will compile with "mingw" on Windows.
+ (Thanks to Joey Parrish for this.)
+- Added a "BasicUDPSink" class to "liveMedia", for UDP streaming without RTP.
+- Added new 'filter' classes to "liveMedia" for
+ - converting MPEG Program Streams to Transport Streams.
+ - 'framing' MPEG Transport Streams to return the 'duration' of each Transport
+ packet (i.e., the inter-packet time gap).
+
+2004.04.09:
+- Fixed a byte-ordering bug in the code for streaming from WAV audio files
+ (used in "testWAVAudioStreamer" and "testOnDemandRTSPServer"). We were converting
+ 16-bit samples from host to network order before streaming them. That was wrong,
+ because audio samples are always stored in WAV files in little-endian order.
+ The correct thing to do was to convert from little-endian to big-endian order.
+
+2004.03.27:
+- Fixed a minor bug in the top-level Makefile. (Thanks to Matteo Nastasi for
+ noting this.)
+
+2004.03.27:
+- Modified "H261VideoRTPSource" so that it returns individual packet payloads to
+ the caller, rather than waiting to form complete frames. Also, added a member
+ function "lastSpecialHeader()" that returns the 4-byte special header for the
+ most recently-read payload.
+
+2004.03.23:
+- Added support for unicast RTSP/RTP streaming from VOB files, and added an example
+ of this to "testOnDemandRTSPServer".
+
+2004.03.17:
+- Made a series of minor bug fixes and improvements suggested by Sony.
+
+2004.03.15:
+- Fixed a bug in "OnDemandServerMediaSubsession" (the RTCP instance was being
+ deleted at the wrong time). (Thanks to Clark Taylor for noticing this.)
+- Minor modifications to the 2004.02.26 "RTPSink" changes.
+- Updated the "AMRAudioRTPSource" implementation to support 'bandwidth-efficient'
+ mode. (Warning: This has not yet been tested.)
+
+2004.03.12:
+- Updated the "RTSPClient" class to support an aggregate "PAUSE" operation.
+
+2004.03.11:
+- Added an implementation of AMR audio RTP receiving ("AMRAudioRTPSource"), to
+ match the existing"AMRAudioRTPSink". Also, added a new class "AMRAudioFileSink"
+ (a subclass of "FileSink") that outputs an AMR audio input stream to a file,
+ including the file 'magic number' and frame headers. "openRTSP" was also updated
+ to output received AMR audio streams using "AMRAudioFileSink"s.
+ (Thanks to SIGOS Systemintegration GmbH for funding this work.)
+- Cleaned up the "RTPSource" changes that were made in version 2004.02.26.
+
+2004.03.05:
+- Updated the "RTSPServer" implementation to properly handle aggregate
+ operations for which the URL ends with a "/". Some clients, such as
+ "gmp4player" do this.
+
+2004.03.03a:
+- Fixed a bug in "MultiFramedRTPSource.cpp" where we were not properly
+ skipping over "contributing source" fields, if they were present in the
+ RTP header. (Thanks to Phillip Bruce for noticing this.)
+
+2004.03.03:
+- Fixed the "testMP3Streamer" test program to keep the RTP sink, RTCP instance,
+ Groupsocks, and RTSP server (if used) open across all iterations of the loop.
+ (Thanks to Frank Xia for noticing this problem.)
+
+2004.03.02a:
+- The previous version accidentally had the built-in RTSP server enabled in
+ "testMP3Streamer". It should be disabled by default.
+
+2004.03.02:
+- Fixed a few potential errors that were found by running "valgrind" on some of
+ the test programs (on Linux).
+
+2004.03.01:
+- Added two new options to "openRTSP" (and "playSIP"):
+ "-E <max-inter-packet-gap-time>"
+ Tells the program to close the stream if no new packets have been
+ received in at least <max-inter-packet-gap-time> seconds.
+ "-B <input-socket-buffer-size>"
+ Tells the program to set the network socket input buffer (for each
+ input stream) to <input-socket-buffer-size> bytes. (This can be useful
+ when testing QOS for different input buffer sizes.)
+ (Thanks to SIGOS Systemintegration GmbH for funding this work.)
+
+2004.02.26:
+- Added - to "RTPSink" - a database of statistics from incoming RTCP
+ "Reception Report" (RR) packets. (This mirrors the similar database
+ for RTCP SR packets that was already part of "RTPSource".) (Thanks to
+ Clark Taylor for contributing this code.)
+
+2004.02.23:
+- Fixed a bug in "MP3ADUinterleaving.cpp" that was causing frame durations
+ to not be set properly when handling interleaved MP3 ADUs.
+
+2004.02.20a:
+- Corrected a typo in the previous "#ifdef"s
+
+2004.02.20:
+- Added "#ifdef"s to the two files that #include <strstream.h>, so that they
+ will compile OK with GCC v3.*. (Thanks to Goetz Waschk for this.)
+- Changed the stream parser debugging statements to make it clear that the
+ use of C++ language exceptions by the stream parsing code is normal, and
+ is not an error.
+
+2004.02.19:
+- Updated the "RTSPServer" implementation to support RTP-over-TCP streaming
+ (if requested by the client).
+
+2004.02.13:
+- Changed the implementation of the "BasicUsageEnvironment" "operator<<"
+ member functions so that they use "fprintf(stderr, ..." rather than
+ "cerr << ...". People compiling in some environments were getting
+ complaints about "cerr" being undefined (presumably because the right
+ #include files weren't being found). However, everyone should have
+ "stdio.h". (Thanks to Clark Taylor for this suggestion.)
+- Changed the "genMakefiles" script to complain if the user tries to
+ run it without an "<os-target"> parameter.
+
+2004.02.09:
+- Updated "RTSPServer" once again - this time to ensure that each incoming request
+ is read completely (i.e., up until the trailing <CR><LF><CR><LF>).
+ (Thanks to Regis Feneon for helping to fix this.)
+- Added a new "WAVAudioFileServerMediaSubsession" class to support on-demand
+ streaming from WAV audio files. Also, updated the "testOnDemandRTSPServer"
+ test program to illustrate this.
+
+2004.02.05:
+- Updated the "WindowsAudioInputDevice" project to build two different versions
+ of the library: One that uses Windows' built-in mixer; another that doesn't.
+
+2004.02.04:
+- Fixed an obscure bug in "MPEG4ESVideoRTPSink" that could (very rarely)
+ cause incorrect RTP timestamps to be set for the last fragmented packet
+ of large MPEG-4 frames. This could cause QuickTime Player's video playback
+ to freeze.
+
+2004.02.03:
+- Added new "liveMedia" classes "MPEG1or2FileServerDemux" and
+ "MPEG1or2DemuxedServerMediaSubsession" for supporting on-demand RTSP/RTP
+ streaming of MPEG-1 or 2 Program Stream files. Also, updated the
+ "testOnDemandRTSPServer" test program to support streaming of such
+ a file.
+- We no longer set SO_REUSEPORT for stream (TCP) sockets, because it usually
+ doesn't make sense to share TCP ports. (As a side effect, this means that it
+ will no longer be possible to run more than one RTSP server (using the same
+ TCP port) simultaneously on the same computer - something that should never have
+ been possible in the first place.)
+- Fixed a minor RTSP server bug that was causing incorrect "destination"s to be set
+ (for multicast streams) in the "SETUP" response "Transport:" header.
+
+2004.01.28:
+- Yet another bug fix to "MPEG4VideoStreamFramer", to properly handle the
+ case where MPEG-4 "GOV" headers don't occur on exact 'second' boundaries.
+ (Thanks to Michael Niedermayer (via Michael Hess) for clarifying this.)
+
+2004.01.27:
+- Fixed a bug in the previously added (but normally "#ifdef"d out)
+ debugging code in "MultiFramedRTPSource.cpp".
+- Made a fix to the (normally "#ifdef"d out) debugging code in
+ "AC3AudioStreamFramer.cpp". (Thanks to Yigal for noticing this.)
+
+2004.01.24:
+- Changed "openRTSP" to use 20 kByte "FileSink" receive buffers by default,
+ instead of 10 kBytes. (Some frames in MPEG-4 streams were exceeding the
+ previous limit.)
+- Added code to "MultiFramedRTPSource.cpp" to easily let the developer
+ simulate packet loss.
+
+2004.01.23:
+- Changed "RTSPServer" to include a "Content-Base:" header in "DESCRIBE"
+ responses. This overcomes a bug in QuickTime Player, which sends incorrect
+ "SETUP" URLs otherwise.
+- Fixed a bug in "MPEG4VideoStreamFramer" that was causing some frames
+ to erroneously be given a duration of 0.
+
+2004.01.22:
+- Made another improvement to the "RTSPServer" implementation. It once again
+ properly handles streams without a stream name (i.e., where the "streamName"
+ parameter to "ServerMediaSession::createNew()" was NULL.
+- Updated the (little-used) "ByteStreamMultiFileSource" class to take
+ "preferredFrameSize" and "playTimePerFrame" parameters, just like
+ "ByteStreamFileSource". Also added a member function to ask whether
+ a new file has just been read from.
+
+2004.01.21:
+- Made several improvements/bugfixes to the "RTSPServer" implementation:
+ - Worked around an apparent bug in QuickTime Player: It sometimes
+ doesn't include a proper URL in RTSP "SETUP" requests.
+ - Corrected the 'frame' (really tick) rate and frame duration that
+ are computed for 'fixed_vop_rate' MPEG-4 video streams.
+ - Compensated for some buggy MPEG-4 video streams that don't set
+ timestamp information properly.
+- MPEG-4 video end codes will now be included in the outgoing RTP stream,
+ and received properly by RTSP clients.
+- Fixed "RTSPClient" to be more tolerant of RTSP "Transport:" headers that
+ contain more than one successive ';' character. (Darwin Streaming Server
+ sometimes does this.)
+
+2004.01.19:
+- Changed "RTSPServer" to not create per-session state when handling
+ "DESCRIBE", but instead to wait until "SETUP". This fixes a problem
+ that was causing the "VLC" media player to fail to work with our
+ "RTSPServer" implementation, because VLC uses one RTSP TCP connection
+ to do the "DESCRIBE", and then another to do "SETUP" and "PLAY".
+ (Thanks to Emmanuel Dufour for pointing this out.)
+- Updated "MPEG4VideoStreamFramer" to include the VIDEO_SEQUENCE_END_CODE
+ in the output stream if it sees it in the input.
+
+2004.01.10:
+- Fixed the "RTSPServer" implementation to properly return a "server_port" field
+ in the RTSP "SETUP" response for unicast streams. Also, the server ports
+ (RTP and RTCP) are now chosen separately, and will no longer be the same
+ as the client ports if the client and server are running on the same machine.
+ (That did not work on some Linux systems.)
+- Fixed a bug in "MP3ADU" that was causing frame durations to not be set properly
+ when translating between MP3 frames and ADU frames.
+
+2004.01.09:
+- Modified "RTSPClient" to handle embedded NULL characters in a SDP
+ description. (These are not legal, but they have been seen in some cases.)
+
+2004.01.06:
+- Modified the FramedSource 'after getting' function signature to take two new
+ parameters: (1) The number of bytes (if any) that were truncated from the
+ delivered data, and (2) The duration (in microseconds) of the delivered frame.
+ For backwards compatibility with old code, the old 'after getting' function
+ signature is still supported, but will be removed in some future version of
+ the code. (The "getPlayTime()" function was also removed.)
+
+2003.12.26:
+- Made "FramedFilter" objects implement the "stopPlaying()" function by
+ also calling "stopPlaying()" on their source object.
+- Fixed an obscure bug in "RTSPClient".
+
+2003.12.20:
+- Made the "video/H263-2000" MIME type use the same RTP payload format as
+ "video/H263-1998". (Thanks to Norbert Doneth for suggesting this.)
+
+2003.12.19:
+- Fixed a minor bug in "RTSPServer" (some allocated memory wasn't being
+ freed properly). (Thanks to Konstantin Lunin for finding this.)
+
+2003.12.16:
+- Added "-DSOCKLEN_T=socklen_t" to the "COMPILE_OPTS =" line in
+ the file "config.solaris", so that the code will compile
+ correctly for 64-bit Solaris systems.
+
+2003.11.25:
+- Put some error checks back into "WindowsAudioInputDevice".
+
+2003.11.21:
+- Some case-insensitive string comparisons weren't working properly in Windows; fixed.
+
+2003.11.19:
+- Added a global Boolean variable to flag when RTP I/O over a TCP connection fails.
+ This hack allows higher-level code to check for this.
+
+2003.11.16:
+- Fixed "RTPInterface" to not infinite loop when trying to read from a TCP
+ connection that has closed.
+- Modified "BasicTaskScheduler" to overcome a bug in Windows that sometimes
+ causes "select()" to fail.
+
+2003.11.13:
+- Made "WindowsAudioInputDevice" a bit more robust against broken audio drivers.
+
+2003.11.06:
+- Modified "groupsock/inet.c" to allow the system-supplied "random()" and "srandom()"
+ functions to be used instead of our own "our_..." implementation.
+ This is done if USE_SYSTEM_RANDOM is defined (e.g., in the "config.*" file).
+
+2003.11.06:
+- Modified the "MPEGVideoStreamParser" constructor, in response to a complaint
+that some compilers would choke on the old code.
+
+2003.10.30:
+- Added a warning output message to "MultiFramedRTPSink::afterGettingFrame1()"
+ whenever the input frame appears to exceed the maximum buffer size. This
+ maximum buffer size can be increased by changing
+ "OutPacketBuffer::numPacketsLimit".
+
+2003.10.27:
+- Changed the "MultiFramedRTPSource" error message (added in 2003.10.04) to apply
+only to frame sizes > 1000, so that (e.g.) QCELP RTP sources don't trigger it.
+
+2003.10.24:
+- Fixed the RTSP server implementation to put SDP lines in the correct order
+(as defined by the SDP speecification). Also, added "Cseq:" lines that were
+missing from "404" error responses. (Thanks to Bill May for noting these bugs.)
+- Improved the implementation of MPEG-4 video framing and streaming.
+
+2003.10.08:
+- Fixed a bug in the previous "FileSink" update that was causing "openRTSP"
+to crash when recording a MPEG-4 video stream (using the "-m" option).
+(Thanks to Jiangzhou Scu for noticing this bug.)
+
+2003.10.07:
+- Updated the "FileSink" class to take an optional Boolean parameter
+"oneFilePerFrame". If set, a separate file will be output for each
+incoming frame. The frame's presentation time is used as a
+file name suffix, to distinguish the files.
+- Added a new option "-m" to "openRTSP" (and "playSIP"). This option
+causes a separate file to be written for each frame (using the
+above-mentioned new feature of "FileSink").
+
+2003.10.05:
+- Renamed the new openRTSP/playSIP "-S" option to "-b".
+
+2003.10.04:
+- Added an error message to "MultiFramedRTPSource" to report when
+the client's receive buffer is too small for an incoming frame.
+(This could happen with large JPEG frames, for example.)
+- Updated the signature to "FileSink" to take an optional 'buffer size'
+parameter as argument. (The default value is 10000.)
+- Added a "-S <file-sink-buffer-size>" option to "openRTSP" and "playSIP".
+
+2003.09.30:
+Improved the default implementation of
+"RTPSink::hasBeenSynchronizedUsingRTCP()" to more accurately report
+whether or not the most recently-delivered packet's presentation time
+was synchronized using RTCP SRs. (Thanks to Luca Abeni for pointing
+out the possibility of a problem with the old implementation.)
+
+2003.09.25:
+Improved the support for unicast RTSP/RTP streaming. Also, added a new
+test program "testOnDemandRTSPServer" that demonstrates how to use this.
+
+2003.09.19:
+- Added support for unicast streaming from a "RTSPServer".
+ (A test program that demonstrates this will be available shortly.)
+ (Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands)
+ for funding this work.)
+- Modified the "strDup()" function to return NULL (instead of crashing)
+ if passed a NULL parameter.
+
+2003.09.11:
+- Another improvement/bugfix to the "MultiFramedRTPSink"
+ implementation.
+- Changed the implementation of "RTSPServer" and "ServerMediaSession"
+ in preparation for implementing unicast streaming from RTSP servers.
+ (This is something that's not ready yet, but close...)
+
+2003.09.05:
+Fixed the implementation of "JPEGVideoRTPSource" so that it prepends
+a proper JFIF JPEG header to the start of each incoming JPEG frame.
+This means that programs such as "openRTSP" and "MPlayer" will now
+receive/play JPEG/RTP streams correctly.
+
+2003.09.03:
+Improved the implementation of "MultiFramedRTPSink" to more efficiently
+handle the case where input frames get broken up into multiple outgoing
+RTP packets. We now eliminate an uncessary "memmove()" for each
+fragment. In particular, this should make MPEG-1 or 2 and motion-JPEG
+video streaming more efficient.
+
+2003.09.01:
+- Added support for reading and streaming AMR audio files (as defined in
+RFC 3267). Also added a new test program "testAMRAudioStreamer".
+(Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands) for
+funding this work.)
+
+2003.08.28a:
+- When "openRTSP" writes out a recorded MPEG-4 Elementary Stream video file,
+it now writes SDP 'config' information to the front of the file beforehand.
+This 'config' information contains VOL etc. headers that can be useful
+for playback.
+
+2003.08.28:
+- Added 'framer' and RTP sink classes for MPEG-4 Elementary Stream video.
+(Thanks to TNO Fysisch en Elektronisch Laboratorium (Netherlands) for
+funding this work.)
+- Added a new test program "testMPEG4VideoStreamer".
+- Fixed a bug with RTP-over-TCP reading that could cause a crash if the
+same TCP socket number gets reused for a later stream. Also, made this
+code more thread-safe.
+
+2003.08.21:
+Renamed all of the MPEG-1 or 2 class and program names from "MPEG*" to
+"MPEG1or2*". This is to distinguish these from the classes and programs
+that use MPEG-4.
+
+2003.08.19:
+Made the maximum buffer size in "MediaSink.cpp" a parameter that can be
+set (changed) at runtime. (Reset the default back to 20* packet size)
+
+2003.08.18:
+- Fixed "JPEGVideoRTPSink" to use the standard RTP payload format code
+(26) for JPEG RTP streams.
+- Updated "MediaSink.cpp" to increase the maximum buffer size for incoming
+data. This makes it possible to stream large JPEG frames (which are
+fragmented over multiple outgoing RTP packets).
+
+2003.08.16:
+- Added new classes "AudioRTPSink" and "VideoRTPSink" as parent classes
+of the various audio and video RTP sink classes, respectively.
+- Added a new "JPEGVideoRTPSink" class, and a "JPEGVideoSource" class
+that can be used as an abstract base class for particular JPEG sources.
+
+2003.08.07:
+Minor change to "MediaSink".
+
+2003.07.29:
+Updated "RTSPClient" to include a "tearDownMediaSession()" operation,
+in addition to "tearDownMediaSubsession(). "openRTSP" now uses just
+the "tearDownMediaSession()" operation. (Darwin Streaming Server was
+barfing with "tearDownMediaSubsession()"). Thanks to Edward Estabrook
+for suggesting this.
+
+2003.07.27:
+Added a new "-F <fileName-prefix>" option to "openRTSP" (and "playSIP").
+This can be useful if you are running "openRTSP" several times,
+in the same directory, to play several different RTSP streams
+(e.g., from a script). (Thanks to Norbert Donath for this suggestion.)
+
+2003.07.14:
+Updated the "WAVAudioFileSource" implementation (and the
+"testWAVAudioStreamer" test program) to better report any reason for
+a WAV file to be invalid.
+
+2003.07.13:
+- Added new filter classes for converting between 16-bit PCM and
+8-bit u-law audio, and between host and network order for 16-bit values.
+(See "liveMedia/include/uLawAudioFilter.hh" for details.)
+- Added a new class "WAVAudioFileSource" for reading/processing
+WAV audio files.
+- Added a new test program "testWAVAudioStreamer" that reads a WAV
+audio file - "test.wav" - and streams it via multicast (using a built-in
+RTSP server).
+- Updated "MediaSession" to recognize "L8" and "L16" RTP audio streams
+(to be handled by "SimpleRTPSource").
+
+2003.07.07:
+- Fixed a bug that would cause "vobStreamer" to crash if (incorrectly)
+run with no arguments.
+- Updated the "test*Streamer" test programs to print out the "rtsp://"
+URL of the built-in RTSP server (if it's enabled).
+
+2003.07.01a:
+Updated the "WindowsAudioInputDevice" subdirectory to:
+- Change the name of the library from "WindowsAudioInputDevice.lib" to
+"libWindowsAudioInputDevice.lib".
+- Added a console test program - "showAudioInputPorts" - that lists
+the audio input ports that are currently available.
+
+2003.07.01:
+Added a new subdirectory "WindowsAudioInputDevice", which is a
+Windows-specific implementation of the "AudioInputDevice" class.
+This can be used by Windows applications to read PCM audio from
+a sound card.
+
+2003.06.28:
+Added an optional parameter (default, True) to "SimpleRTPSource"
+that says whether to use the RTP "M" (marker) bit to indicate the
+last (or only) fragment of a video frame. (Suggested by
+Cezar Plesca.)
+
+2003.06.27:
+Added a "AudioDeviceSource" class to the "liveMedia" library.
+This class is a generic audio input device (such as a microphone
+or a sound card) - to be subclassed for specific OS platforms.
+
+2003.06.26:
+- Updated the "RTSPServer" implementation to respond to "PAUSE"
+requests. (It doesnt actually pause the stream; just returns "OK".
+This makes QuickTime Player happier.)
+- Added a "-o" option to "openRTSP" (and modified "RTSPClient"
+accordingly). This option causes openRTSP to send an "OPTIONS" command
+to the server, and prints out the response.
+
+2003.06.17:
+Added support for MPEG-4 generic RTP sinks. (Currently, only the
+"AAC-hbr" audio mode is supported, and only one AAC frame is packed
+into each outgoing RTP packet.)
+
+2003.06.13:
+- Fixed a bug in "ServerMediaSubsession" that could cause a memory leak.
+(Thanks to Frederik Bonte for finding this.)
+
+2003.06.07:
+- Fixed a minor bug in "MPEGVideoRTPSink": The RTP "M" bit is now set
+only on the last fragment, if a frame is fragmented. (Thanks to
+Tym Altman for pointing this out.)
+- Improved support for AudioRTPSinks that have more than one audio channel.
+
+2003.05.31:
+Fixed a bug in "SimpleRTPSink" that would cause it to not generate correct
+RTP timestamps on outgoing packets.
+
+2003.05.29:
+Fixed a bug in "RTSPServer" that would cause it to get into an infinite
+loop if a client's connection was terminated unexpectedly.
+
+2003.05.28:
+Fixed some typos in comments.
+
+2003.05.23:
+Some minor changes to reduce the number of bogus warning messages
+displayed when compiling using Visual C++.
+
+2003.05.22b:
+Fixed a bug in "SIPClient" (thanks to Reini Urban for helping track this
+down).
+
+2003.05.22a:
+Fixed a couple more minor bugs that were causing "valgrind" to complain.
+
+2003.05.22:
+Fixed a bug in "SIPClient" (a field was not getting initialized properly)
+
+2003.05.21:
+- Because not all platforms define 'errno' the same way, 'errno' is now
+implemented as a pure virtual function "getErrno()" in
+"UsageEnvironment". "BasicUsageEnvironment" defines this function to
+just return "errno", but other subclasses could implement it in other
+ways.
+- Added support for setting and reading information in "RTP-Info:"
+headers in RTSP "PLAY" response. (Thanks to Romulus Grigoras for
+contributing this.)
+
+2003.05.19:
+Fixed a bug in "SIPClient" that could cause a crash. (Thanks to
+Reini Urban for finding this.)
+
+2003.05.16:
+- Removed all calls to "fprintf(stderr, ...)" and "cerr << ..." from
+the library code. Instead, we now use "operator<<" virtual functions
+that are defined on the "UsageEnvironment". "BasicUsageEnvironment"
+defines these by outputting to "cerr", but other subclasses of
+"UsageEnvironment" can define them to do console output whichever
+way they wish.
+
+2003.05.15:
+- Moved the "select()" call in "readSocket()" (GroupsockHelper.cpp) into
+ a separate function, to allow it to be easily reimplemented
+ if desired.
+- More minor changes to "RTPSource" stats handling, and the "-Q" option
+ to "openRTSP"/"playSIP".
+
+2003.05.12:
+- Restructured "BasicTaskScheduler" as two hierarchical classes:
+ "BasicTaskScheduler0" (an abstract base class), and
+ "BasicTaskScheduler".
+ This makes it easier to subclass (e.g., to reimplement "SingleStep").
+ A subclass reimplementation would use "BasicTaskScheduler0".
+- Removed "our_bcopy()", and use "memmove()" instead, because everyone
+ seems to implement that.
+- Fixed a bug in "RTPSource" that could cause packet loss stats to be
+ reported incorrectly if the first RTP sequence number received was 0.
+
+2003.05.06:
+Minor changes to the "openRTSP" QOS stats reports.
+
+2003.05.05:
+Changed the "start" and "end" parameters to
+"RTSPClient::playMediaSubsession()" from int to float, for increased
+granularity. (Suggestion by Cezar Plesca.)
+
+2003.05.03:
+- Added support for pausing/resuming to "RTSPClient".
+(Thanks to Romulus Grigoras for contributing this.)
+- Fixed a couple of bugs in "SIPClient".
+
+2003.04.28:
+- Cleaned up and improved the "DelayQueue" implementation.
+(This time it works properly, I hope.)
+
+2003.04.27:
+- Temporarily backed out the previous change to "DelayQueue", because it
+broke MPEG video streaming (causing it to play too slowly).
+
+2003.04.26:
+- Made "DelayQueue" a little more accurate, by adjusting for the time
+that has elapsed since the last alarm, when adding a new entry to the queue.
+- Fixed a bug in "RTPSource" that could cause packet loss statistics to not
+be reported accurately (in RTCP) if incoming packets were misordered.
+- Updated "openRTSP" and "playSIP" to take a new "-Q" option, which
+prints out QOS data at the end of the session.
+
+2003.04.24:
+- Added a mechanism for registering an optional, auxilliary read handler
+with a "RTPSource" or "RTCPInstance". Such a handler would get called
+after each new packet is read.
+- Changed "SimpleRTPSink" to (by default) set the RTP "M" bit on
+video streams iff the packet contains the last (or only) fragment of
+a frame.
+
+2003.04.23:
+- More improvements/fixes to the handling of SSM sessions.
+- Fixed a bug in RTSPServer that could cause a crash if the client
+quit suddenly.
+
+2003.04.20:
+- Updated "MediaSession" to recognize
+ a=source-filter: incl ...
+lines in SDP descriptions (for SSM sessions), and to do the appropriate
+SSM-style multicast joins in this case (and also to send back RTCP via
+unicast).
+- Updated the RTCP implementation to reflect incoming unicast RTCP packets
+back to the multicast group in the case where we're a SSM source.
+- Update "vobStreamer" and the various "test*Streamer" test programs to
+properly behave as SSM sources, when we have specified this.
+
+2003.04.18:
+- Updated the "*ServerMediaSession" classes to (optionally) output
+SSM-specific information in SDP descriptions.
+- Updated "vobStreamer" to choose a random multicast address in the SSM
+range.
+
+2003.04.12:
+- Fixed "MPEGVideoStreamFramer" to allow for the possibility of
+the GOP "time_code" field remaining unchanged in the source stream.
+- Elimination of more unnecessary global variables.
+
+2003.04.11:
+- Added support for an optional user name and password inside a RTSP
+or SIP URL.
+- The media lookup table (used in "Media.cpp") is now allocated
+dynamically, and stored in the "UsageEnvironment", rather than
+being a global variable.
+This makes it possible to have different threads, within the same
+address spaces, accessing the library code.
+(Each thread would need to have its own "UsageEnvironment" and
+"TaskScheduler", though.)
+
+2003.04.09:
+Changed "BasicTaskScheduler::SingleStep()" to execute only one delay
+queue task (along with any data input events) during each iteration.
+This prevents a possible livelock if the delay queue always has events
+outstanding. (Thanks to Ruth Sadler for pointing this out.)
+
+2003.04.04:
+- More improvements to "vobStreamer" (which has also been renamed
+from "VOBStreamer".
+
+2003.04.02:
+- Made another change to the order that things are closed when exiting
+"openRTSP", to help avoid a potential race condition that can occur
+when using the "-t" option. (Thanks to Romulus Grigoras for reporting
+this.)
+- Updated "MPEGDemux" to properly handle the case where someone tries
+to read from it after its input source has already closed.
+- Several improvements to "VOBStreamer".
+- Added "ByteStreamMultiFileSource" to the "liveMedia" library.
+This generalizes "ByteStreamFileSource" to allow more than one input
+file to be read, in sequence.
+
+2003.04.01:
+Fixed a bug in "openRTSP" that could cause it to crash when exiting
+(if the "-t" option was used).
+
+2003.03.31:
+Added a new test program "VOBStreamer" to "testProgs".
+This program reads a "VOB" file (e.g., from a non-encrypted DVD),
+and streams the component video (MPEG) and audio (AC3) component streams
+using RTP multicast.
+(Online documentation to follow...)
+
+2003.03.30:
+Added "AC3AudioRTPSource" and "AC3AudioRTPSink".
+
+2003.03.28:
+- Fixed a bug in "MPEGVideoStreamFramer" that would cause it to generate
+incorrect presentation times if the MPEG video stream started out with
+a non-zero 'time_code'.
+- Updated "AC3AudioStreamFramer" to allow clients to get the stream's
+sampling rate before it reads the first frame.
+
+2003.03.25:
+Began adding support for AC3 audio/RTP streaming.
+
+2003.03.22:
+Added support for receiving H.261/RTP streams
+
+2003.03.14:
+- Removed calls to "strdup()", because that's a C-library function whose
+result should not be deleted using "delete" (or "delete[]"). Instead,
+we now provide our own C++ equvalent, called "strDup()".
+- Also, changed several "delete"s to "delete[]".
+(Thanks to Bill Kain for noting the need for this fix.)
+
+2003:03;11:
+Updated SIPClient to allow it to use an arbitrary source port number.
+This makes it possible to use it on the same host on which a SIP server
+is already running.
+
+2003.03.09:
+- Made "MediaSession"s parsing of SDP descriptions more robust, to allow for
+blank lines in the SDP description. ("Be liberal in what you accept...")
+
+2003.03.07:
+- Added an optional "MIME subtype" parameter to "SIPClient", to allow
+SIP "INVITE"s to use a dynamic RTP payload format. Updated "playSIP"
+accordingly, to add an optional "-D <mime-subtype-name>" argument.
+- Modified "FileSink" to close the source (and stop playing) if it gets
+an EOF when writing to the output file. (Thanks to Ruud Schramp.)
+
+2003.03.03:
+Improved the implementation of "MPEG4GenericRTPSource".
+
+2003.02.28:
+- Fixed a bug that would cause RTSP clients to not set the server port
+number (for RTCP) correctly in some situations. (Thanks to Alex Pollard.)
+- Fixed a bug in "RTSPServer" that would cause "Transport:" headers to not
+get generated correctly.
+
+2003.02.27:
+- Improved the "MultiFramedRTPSource" implementation to more cleanly handle
+packet loss in the case where frames are split into multiple RTP packets.
+- Parsed the optional "/<num-channels>" parameter that can appear at the
+end of "a=rtpmap:" lines for audio sessions.
+
+2003.02.17:
+More work on the experimental '-R <rtsp-url>' option to "playSIP"
+(and "openRTSP") that allows it to inject the incoming stream into
+a separate RTSP server. This code is now working, although
+currently only for a single PCMU or GSM audio stream. Also, RTCP
+packets are not yet relayed between the source and destination.
+
+2003.02.16:
+Improved RTSPClient and SIPClient to check for (and discard)
+any '\r' or '\n' that appears at the start of a response message.
+(Some weirdo servers can do this.)
+
+2003.02.10:
+Began adding a new option to "playSIP" (and "openRTSP") to allow the
+incoming media stream to be injected into a separate, destination
+RTSP server. This still needs lots of work...
+
+2003.02.08:
+Fixed the "JPEGVideoRTPSource" implementation to properly prepend a
+synthesized JPEG header to each received frame of RTP data. This now
+makes it possible to receive and play motion-JPEG RTP streams.
+
+2003.02.06a:
+- Fixed a bug in the SDP "config" attribute parsing. (This affected
+the use of "MPEG4LATMAudioRTPSource".
+- Cleaned up the "createNew()" routines in each of the *RTPSource classes.
+- Added two new RTPSource classes - "MPEG4ESVideoRTPSource" and
+"MPEG4GenericRTPSource", for MPEG-4. However, these have not been
+fully implemented yet.
+
+2003.02.06:
+Fixed some code that was 64-bit-unsafe. (Thanks to Philipp Thomas for
+noticing this.)
+
+2003.02.05:
+- Cleaned up "RTSPClient", and added a method for doing an aggregate
+"PLAY" operation (in addition to the existing method that does a
+"PLAY" on an individual subsession).
+- Modified the "openRTSP" test program so that it does a single
+aggregate "PLAY", rather than a series of non-aggregate "PLAY"s, one for
+each subsession. (RealNetworks' server doesn't support the latter.)
+- Added a new routine for parsing "AudioSpecificConfig" strings that
+can appear in SDP descriptions.
+- Added Morgan Multimedia's implementation of "JPEGVideoRTPSource"
+to the "liveMedia" library. (I haven't yet tested this.)
+
+2003.02.04:
+Removed "-DUSE_OUR_BZERO=1" from "config.linux", because it no longer
+seems to be necessary, and it was breaking compilation for some people.
+
+2003.02.03b:
+Added an #include to "BasicUsageEnvironment/Lock.cpp" to fix a problem
+that someone encountered with NULL not being defined.
+
+2003.02.03a:
+Created a new header file "groupsock/include/NetCommon.h" that contains
+all networking-related #includes. This also does the correct #includes
+for Windows, allowing Windows code to use Winsock-2 rather than Winsock-1.
+Also, modified "win32config" to use a "TARGETOS" of WINNT rather than
+WIN95, to make this all work.
+
+Thanks to Doug Kosovic for figuring out the magic incantations
+needed to get this all working.
+
+2003.02.03:
+- Improved "SIPClient" (in the "liveMedia") library, so that "INVITE"
+requests are retransmitted, as necessary, for reliability.
+- Added a "-A <rtp-payload-format>" option to "playSIP". This allows the
+user to specify which audio RTP payload format should be received.
+(At present only static payload formats can be specified, and only
+audio codecs - not video.)
+
+2003.01.28:
+- Added support (in the "liveMedia" library) for a basic SIP client
+- Added a new test program "playSIP", similar to "openRTSP". These two
+applications are now built from the same code base.
+
+2003.01.17:
+Further improvements to the MPEG-4 audio support. We can now read
+(from the "MediaSubsession") the StreamMuxConfig "config" stream that
+was present in the SDP description. Also added a routine that parses
+such a string, producing binary "AudioSpecificConfig" data.
+(See "MPEG4LATMAudioRTPSource.cpp" for details.)
+
+2003.01.16:
+Improved support for receiving MPEG-4 LATM audio. Note that currently,
+this works only for streams that do not have a StreamMuxConfig present
+in the stream.
+
+2003.01.10:
+Added basic support for MPEG-4 LATM audio.
+
+2002.12.21:
+Fixed a bug in the previous update to "QuickTimeFileSink"
+
+2002.12.20:
+- Another change to "QuickTimeFileSink", again to change the way that track
+durations are computed for ".mov" files. Now, each track's duration is
+set to be the maximum of (i) the sum of the sample durations listed
+in the 'stts' atom, and (ii) the the sum of the durations listed in the
+track's 'edit list' (if any).
+- Updated the MP3 file parsing code to check for a 'Xing' VBR header in
+the first frame. ("liveCaster" can use this information to print more
+sensible information about each file that it streams.)
+
+2002.12.10:
+Yet another change to "QuickTimeFileSink", this time to make sure that
+the duration of video tracks corresponds exactly to the sum of video
+sample durations listed in the 'stts' atom.
+
+2002.11.30:
+Renamed "TaskScheduler::blockMyself()" to "doEventLoop()", to better
+describe what this member function actually does.
+
+2002.11.25:
+Another change to "QuickTimeFileSink". Now, when synchronzed tracks
+are requested, the durations of video frame samples are adjusted so
+that they correspond to actual RTP presentation times. (This is not
+done for audio samples, however, because having audio samples vary
+in duration might break audio codecs.)
+
+2002.11.22:
+Updated "QuickTimeFileSink" once again - this time to add more statistics
+to the 'udta'/'hinf' atom for each generated hint track.
+
+2002.11.18:
+Modified the support for creating hint tracks in "QuickTimeFileSink" so
+that it it now works properly for H.263+ video sessions.
+
+2002.11.15:
+- Made a small modification to "groupsock/GroupsockHelper.hh" to ensure that
+it compiles on all platforms.
+- Modified "MP3FileSource" so that it can handle layer I or layer II files,
+as well as layer III (MP3).
+
+2002.11.14:
+Updated "QuickTimeFileSink" to support (optional) hint tracks in output
+QuickTime files. Also added a "-H" option to "openRTSP" that
+(when used with "-q") will add hint tracks to the output ".mov" file.
+(Note that the hint tracks currently don't work well for H.263+ video
+tracks, and currently don't work at all for QCELP.)
+
+2002.11.04:
+Updated the expiration date in "openRTSP.cpp"
+
+2002.10.22:
+- Undid the previous change. The top-level Unix Makefile now does
+ cd <dir> ; make
+once again. Unfortunately "--directory" doesn't seem to work properly
+with the version of "make" that's installed with FreeBSD.
+- Changed the implementation of the "-n" option in "openRTSP". If "-y"
+is also specified, then the user will be notified only if (i) data has
+arrived for all subsessions, and (ii) all subsessions have been
+synchronized.
+
+2002.10.21:
+Changed the top-level Unix Makefile to do
+ make --directory=<dir>
+rather than
+ cd <dir>; make
+as the latter apparently didn't work with cygwin.
+(Thanks to "Sycotic" Smith for the tip.)
+
+2002.10.20:
+- Updated "QuickTimeFileSink" once again to improve the implementation of
+synchronized audio/video tracks in output QuickTime files.
+- Added a configuration file for "cygwin". (Thanks to "Sycotic" Smith
+for working on this.)
+
+2002.10.19:
+Updated "QuickTimeFileSink" to use QuickTime Edit Lists to synchronize
+the media tracks. (It appears that this does not always produce playable
+QuickTime files, so this implementation may have to be changed later.)
+
+2002.10.11:
+Fixed a bug in "MultiFramedRTPSource" that could cause a RTP receiver to
+hang if it received a malformed RTP packet with no data after a special,
+media-specific header.
+
+2002.10.10:
+Fixed the "RTSPClient" implementation so that it now understands
+"Content-Length" as well as "Content-length". (This now allows it
+to work with our own RTSP server implementation once again!)
+
+2002.10.07:
+Improved the implementation of RTP (and RTCP) reception to eliminate an
+unnecessary "memmove()" each time a packet is received.
+
+2002.10.04:
+Updated the "liveMedia" library to support optionally sending and receiving
+RTP and RTCP packets over a TCP connection (e.g., the TCP connection used
+for a RTSP session). Also, updated the "openRTSP" test program to take
+an optional "-t" argument, meaning: stream over TCP.
+
+2002.10.01:
+Fixed the modification to "MultiFramedRTPSource" that was made in the
+2002.08.29 release, and also made a corresponding change to
+"QuickTimeFileSink", so that it now correctly records H.263+/RTP streams
+once again.
+
+2002.09.30:
+- Removed the "Media::addNew()" member function, because it was always
+ called each time a new Media object was created. Instead, its
+ function was just moved into the Media::Media() constructor.
+- Made another fix to "testMPEGAudioVideoStreamer".
+
+2002.09.28:
+Fixed a bug in "testMPEGAudioVideoStreamer" that could cause a crash when
+its input file was being read for the 2nd or more time. (Also updated
+"liveMedia/FramedSource.cpp".)
+
+2002.09.27:
+Updated "QCELPAudioRTPSource" so that "hasBeenSynchronizedUsingRTCP()"
+returns True only after a full interleave cycle of RTP packets has been
+received. This ensures that when it returns true, the receiver will
+be reading a frame that came from a synchronized RTP packet.
+
+2002.09.26:
+- Fixed QCELPAudioRTPSource so that it now returns correct presentation
+timestamps on each frame that is read from it (even if the input data
+was interleaved).
+- Updated QuickTimeFileSink to correctly write ".mov" files for half-rate
+QCELP audio tracks.
+
+2002.09.25:
+Added a new test program - "sapWatch" - that reads and prints SDP/SAP
+announcements (sent to the default SDP/SAP directory)
+
+2002.09.24:
+- Fixed a bug in "QCELPAudioRTPSource"
+- The RTCP implementation now properly recognizes incoming RTCP
+reports from other processes on the same computer. (Previously, these
+would be rejected as being loop-back packets.)
+
+2002.09.19:
+- Updated "RTPSource"s so that an accurate "presentationTime" variable
+is now returned whenever a client reads from such a source. These times
+are kept accurate by RTCP "Sender Report" packets sent by the sender.
+
+2002.09.13:
+- Improved the "BasicHashTable" implementation so that it's
+no longer a quick-and-dirty hack.
+- Changed the parameter signature to "ByteStreamFileSource" so that the
+"playTimePerFrame" parameter is now an unsigned (microseconds) instead
+of a float. This eliminates a round-off problem.
+
+2002.09.11:
+Modified "ByteStreamFileSource::doGetNextFrame()" so that - if the
+"playTimePerFrame" parameter was set - the presentation time gets set
+based on this, rather than the current 'wall clock' time.
+
+2002.09.06:
+Updated "win32config.Borland" based on feedback by Vesselin Kostadinov.
+(Also updated an #ifdef in "liveMedia/include/Media.hh")
+
+2002.09.05:
+Added code to ignore an "EAGAIN" error on a 'groupsock' read.
+(This can happen in Linux.)
+
+2002.09.03:
+Fixed a bug in the RTSP server implementation that could
+have caused a memory smash.
+
+2002.08.30:
+Added header files containing version strings (and corresponding integers)
+for each library. Client code can use these to print out version
+information, or check for version compatibility.
+
+2002.08.29:
+Modified "MultiFramedRTPSource" and its subclasses to properly handle
+the case where a frame is fragmented over several successive incoming
+RTP packets. Each subclass's implementation of "processSpecialHeader()"
+can choose between having incomplete fragments returned immediately to
+the client (the default behavior), or waiting until all of the fragments
+have arrived. The implementation of "H263plusVideoRTPSource" was changed
+to do the latter (because the current "ffmpeg" H.263+ decoder relies upon
+getting complete frames for input).
+
+Added an optional "applicationName" parameter to "RTSPClient::createNew()",
+and updated the RTSP client implementation to add a "User-Agent:" field,
+which will contain this "applicationName" string (if present).
+
+2002.08.27:
+Added an optional Boolean parameter "iFramesOnly" to
+"MPEGVideoStreamFramer::createNew()". If this parameter is True,
+then the framer object will return only data from "I" frames.
+(By default, this parameter is False, meaning that all frames will
+be returned.) This parameter can be used to reduce the bandwidth
+of streamed MPEG (1 or 2) video.
+
+2002.08.06:
+Changed "groupsock/GroupsockHelper.cpp" to do a "#include <errno.h>"
+rather than "extern int errno". The latter was apparently breaking in
+some versions of Linux.
+
+2002.08.05:
+Added support for the video/MP2P MIME type (RFC 2250 MPEG Program Streams)
+
+2002.06.25:
+Source file distribution copied from live.sourceforge.net
Propchange: unstable/liblivemedia/debian/upstream.changelog
------------------------------------------------------------------------------
svn:mergeinfo =
More information about the pkg-multimedia-commits
mailing list