

                              EMIPLIB ChangeLog


Version 1.1.1, November 2011
 * Fixed a bug in the CMake configuration: was unable to handle
   path names with spaces.
 * In an MS-Windows environment you can now choose to build a
   DLL instead of a static library. This should make it easier
   to comply with the LGPL when working on that platform.

Version 1.1.0, July 2011
 * Switched to CMake build system.
 * Bugfix in MIPAVCodecFrameConverter. Forgot to copy media info.
 * Added MIPYUV420FileInput.
 * Added MIPYUV420FrameCutter.
 * Changed MIPRTPL16Encoder and MIPRTPL16Decoder, to make it possible
   to use a sampling rate different from 44100 Hz.
 * Added SILK based encoding/decoding components, and corresponding
   RTP encoding/decoding components.
 * Made adjustments for newer jthread & jrtplib versions.
 * Fixed bug in PortAudio input/output component.
 * Made it possible to specify a specific device in the WinMM input
   and output components.

Version 1.0.0, July 2010
 * Fixed bugs in MIPComponentChain. The feedback chain building
   procedure had to be adjusted slightly to handle the case in
   which multiple feedback chains go through the same component.
   Also, the procedure needed to start from the ordered list of
   connections, not the input list.
 * Added MIPAudioTrackOutput and MIPAudioRecorderInput for Android 
   platform.
 * Removed libavcodec code from MIPDirectShowCapture. Component now
   generates either YUV420P or YUYV422 data, which can be converted
   using a MIPAVCodecFrameConverter instance. Corresponding changes
   were made to MIPVideoSession.
 * MIPAVCodecDecoder was modified so that the user can choose to
   ignore data before the first keyframe.
 * Created components MIPRTPH263Encoder and MIPRTPH263Decoder which
   cause H.263 video to be encapsulated correctly in RTP packets.
 * Added MIPRTPPacketGrouper utility. When data (a single video
   frame for example) has to be split over multiple RTP packets,
   this class can help group these packets so that they can be
   recombined again.
 * Added MIPComponentAlias, which basically allows you to refer
   to the same component using a different pointer. See documentation
   for an example of its usage.
 * MIPRTPPacketDecoder interface (and implementation in derived
   classes) changed somewhat. When data (like a video frame) is split
   over several RTP packets, it is possible that a single packet
   signals the completion of more than one frame. Interface was
   changed to support this, and corresponding changes to MIPRTPDecoder
   were made.
 * Old, non standard, video encapsulation in RTP code now also supports
   video frames that are larger than a maximum packet size (i.e. data
   will be split over multiple RTP packets when necessary). Support
   for sending raw YUV420P frames was added as well.
 * MIPVideoSession was modified to allow the user to choose between
   several video encodings/compressions. The session can also be
   initialized for output only, no video is captured in that case.

Version 0.17.0, August 2009
 * Added a virtual function to the WAV file input components which gets
   called when the last block of the file has been read. This allows
   you to stop the chain at that point.
 * Added some methods to MIPAudioMixer to allow you to ignore the
   audio from particular sources.
 * Added methods to MIPAudioMixer to set the internal timer to a
   specific value.
 * Added support for echo cancellation using the Speex routines.
 * Modified MIPAudioMixer so that the setExtraDelay method also works
   if the timing information in the messages is not used.
 * Changed U-Law and A-Law decoding to a table-lookup method. This also
   fixes a bug in the A-Law decoding as was reported by Joo Pedro Motondon
   (joao.motondon@gmail.com).
 * Support for newer ffmpeg API.
 * Video4Linux2 based input component was added.
 * Added a libavcodec based video frame converter.
 * Added a component to decompress JPEG encoded video frames using the
   TinyJPEG library.

Version 0.16.1, February 2008
 * Fixed a bug in MIPInterChainTimer. Forgot to initialize a variable,
   causing the timing to fail.

Version 0.16.0, December 2007
 * Modified the MIPWinMMOutput component slightly. The changes should
   help avoid running out of buffers.
 * Fixed some compilation issues on WinCE in the lpccodec.cpp file.
 * Added L16 RTP payload types.
 * Improved support for user defined RTPSession instances in 
   MIPAudioSession and MIPVideoSession.
 * Added support for soundcard input/output using PortAudio.
 * Added MIPStreamBuffer, a class which can be used to safely pass
   data between threads.
 * Added MIPInterChainTimer, which allows the timing of one chain to
   depend on another chain.
 * Modified MIPAudioSession to use a MIPInterChainTimer component
   if possible. This should improve audio quality.

Version 0.15.0, August 2007:
 * Changed the MIPMessage filtering somewhat. The previous implementation
   did not create the desired behaviour.
 * Added A-law compression/decompression. Thanks to Jim Heising
   (JHeising@worksoutsoft.com) for contributing the code.
 * Fixed bug in MIPWAVReader (8-bit samples were interpreted wrong)
 * In MIPAudioSession, other sampling intervals than the defaults can now 
   be used.
 * In MIPAudioSession, you can now select between a number of compression
   types.
 * Added MIPAudioFilter, with which you can remove certain frequencies from
   audio data.
 * Added GSM 06.10 compression/decompression.
 * Added LPC compression/decompression.
 * Added an OpenAL output component.

Version 0.14.0, February 2007:
 * Added MIPWAVWriter and MIPWAVOutput. They allow simple sound recording
   in case libsndfile isn't available.
 * Fixed bug in MIPRTPSpeexDecoder which caused problems when different
   sources used different Speex compression modes.

Version 0.13.0, August 2006:
 * Modified the MIPRTPDecoder component. Now, the timestamp unit returned
   by a MIPRTPPacketDecoder instance can be stored in the corresponding
   RTPSourceData instance.
 * Added a simple 3D audio implementation which only takes distance into
   account.
 * Added the possibility to start audio threads with high priority in
   Win32 and WinCE implementations.
 * Fixed the lack of a 'm_init=false' statement in the destroy function
   of MIPAudioSession and MIPVideoSession.
 * If a MIPRTPSynchronizer is used in a MIPRTPDecoder, it is now only used
   every two seconds. In between, a cached synchronization offset is used.
 * Added memory tracking debug code and thread debug code.

Version 0.12.0, July 2006:
 * Added MIPResample template function.
 * Added SDL audio output component.
 * Changed the transmission system. Now, a specific RTP decoder can be
   linked to one or more payload types.
 * Changed the RTP Speex encoder and decoder so that they no longer
   use the 'info' byte transmitted in the previous versions. RTP packets
   will now only contain Speex data.
 * Added a MIPSpeexUtil class which can be used to detect the way a Speex
   frame was encoded (narrow band, wide band or ultra wide band).
 * Added U-law encoder/decoder and PCMU RTP encoder/decoder.
 * The DirectShow input component should now work better. Thanks to Andrea 
   Fontana (advmail@katamail.com) for supplying the patches.
 * Made it possible to change the connections in a chain while it is
   running.
 * Some parameters in the Speex encoder were not used. Thanks to  
   Peter De Cleyn (peter.decleyn@ua.ac.be) for pointing this out.

Version 0.11.0, April 2006:
 * Adjusted the audio session component to make it possible to select
   a specific Speex encoding mode (narrow band, wide band, ultra wide 
   band)
 * Created a template function to resample audio. Calculations can
   now be done completely using integers.
 * Modified the MIPSamplingRateConverter to allow 16 bit signed samples
   too.
 * In MIPAudioSession and MIPVideoSession, an RTP BYE packet is sent
   when the session is stopped.
 * A MIPSamplingRateConverter object was added to the MIPAudioSession
   class. Otherwise, a Speex packet corresponding to a different
   sampling rate would cause the output chain to stop.
 * Added a JACK audio output component.
 * Added a JACK audio input component.
 * Added checks in the configure script for OSS and Video4Linux.
 * Removed background thread from the ESD output component.
 * Added pkg-config files.

Version 0.10.0, March 2006:
 * Fixed bug in MIPAudioSession. In the GNU/Linux version, when the same
   OSS device was used for both input and output, there were some problems.
 * Added ESD audio output component.
 * Added 16 bit signed and unsigned raw audio messages using native byte
   order.
 * Modified the MIPSampleEncoder component. Now, an int32_t is used as an
   intermediate format instead of a float. This should speed things up on
   devices without FPU.
 * The MIPWAVReader can now also read samples as int16_t values (instead
   of only float values)
 * The MIPWAVInput component can now also produce samples as 16 bit (native
   byte order) audio messages.
 * Added Audio File Library audio input component.
 * The DirectShow webcam input component now allows the selection of a
   specific device (in case more than one is available).
 * The audio mixer and Speex components can now also use integer samples
   instead of floating point samples only.
 * Added a post-build batch file for the MS-Windows version which copies
   all the header files to an 'include' subdirectory.

Version 0.9.0, January 2006:
 * Initial release

