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