ChangeLog for ffmpeg-php (ffmpeg-php.sourceforge.net)

version 0.6.3 (3/30/2009)
    Bug Fixes
    * Fixed compatibility with ffmpeg 0.5.0 release. ffmpeg-php is only
    supporting offical releases from here on.

version 0.6.2 (3/25/2009)
    Bug Fixes
    * Fixed building on php4
    * Fixed compatibility with ffmpeg 0.5.0 release 

version 0.6.0 (10/15/2008)
    New Features:
    * Support for ffmpeg swscale API

    API Changes:
    * Removed obsolete resize() and crop() functions. These operations are
      more flexibly done using the gd commands.
    * Removed animated gif class since it was way out of date and the 
      quality of animated gifs created by ffmpeg sucks anyway

    Bug Fixes:
    * Added check to ensure that gd loads before ffmpeg-php if both are
      compiled as extensions.
    * Replaced large mp3 test file with smaller sample to avoid copyright
      issues and reduce package size.
    * Convert from deprecated img_* functions to swscale.
    * Builds against php4 correctly again.

version 0.5.3 (05/30/2008)
    New Features:
    * Added 'ffmpeg.show_warnings' ini flag to control whether ffmpeg 
      warnings are converted to php warnings.
    * Applied patch to add getAudioStreamId and getVideoStreamId functions 

version 0.5.2.1 (04/03/2008)

    Bug Fixes:
    * Minor build fixes and cleanups

version 0.5.2 (04/02/2008)

    Bug Fixes:
    * ffmpeg-php should compile on macos-x now
    * Failure to find the proper codec is not a fatal error anymore
    * Updated build script to deal with new ffmpeg include file layout.

    
    New Features:
    * Added gd image bounds checking.
    * Added config flag to skip the compile-time gd check.
    * ffmpeg's logs are mapped to php's warnings and notices (no more stderr pollution)

version 0.5.1 (06/11/2007)

    Bug Fixes:
    * Fixed some of the tests (Thanks to Raphael Geissert for the patch)
    * Improved build process (Thanks to Raphael Geissert for the suggestions)
    * Fixed the test script so it won't generate warnings when video/audio
      stream is missing.

    New Features:
    * Added $movie->hasVideo() function to test for video stream.
    * Copyright updated for better compatibilty with the PHP license.

version 0.5.0 (09/29/2006)

    Bug Fixes:
    * Fixed problem with params to av_open_input_file not getting initialized
      correctly. (Thanks to SilverCode for the fix)

version 0.4.9 (09/04/2006)

    New Features:
    * Better error reporting when opening a movie fails
    * INSTALL doc clarifications

    Bug Fixes:
    * Fixed compilation error in ffmpeg_animated_gif.c when building against 
      old ffmpeg


version 0.4.8 (08/04/2006)
    
    New Features:
    * Added new functions for audio streams: getAudioSampleRate(), 
      getAudioBitRate() (Martin Prangl)
    * Changed getBitRate function to like getAudioSampleRate() and
      getAudioBitRate(). Now returns bits per second instead of
      calculating kb/s. (To get kb/s just do movie->getBitRate() / 1000
      in php.) (tkirby)

    Bug Fixes:
    * Fix possible error in hasAudio calculation if audio stream is the
      first stream. (tkirby)

version 0.4.7 (06/08/2006)

    Bug Fixes:
    * Fixed framerate calculation to be compatible with ffmpeg cvs 6/8/06 
      (tkirby)

version 0.4.6 (08/30/2005)

    Bug Fixes:
    * Fixed compatiblity with ffmpeg cvs after 7/30/05 or so (tkirby)

version 0.4.5 (07/12/2005)
    Bug Fixes:
    * Minor build fixes for older ffmpeg versions (tkirby)

version 0.4.4 (06/24/2005)
    New Features:
    * Added ability to create animated gifs via new ffmpeg_animated_gif
      class (tkirby)
    * Fixed ffmpeg_frame constructor to allow creating ffmpeg_frames from
      gd images. This allows to make animated gifs directly from a series
      of gd images. I believe this is currently the only way to make 
      animated gifs using PHP since the bundled version of gd does not
      support animated gif creation (tkirby)
    * Added flag to php.ini to allow server admins to disable persistent
      movies since injudicious use of persistent movies in scripts can eat 
      up server resources quickly (tkirby)
    * Added frame->isKeyFrame() and movie->getNextKeyFrame() methods (tkirby)
    * Now displays ffmpeg-php ini values in php_info() table (tkirby)

    Bug Fixes:
    * Fixed parsing of 'persistent' boolean flag in ffmpeg_movie constructor
    * Fixed segfault when a script tries to read more frames than exist in
      a movie. (tkirby)
    * Patch to use native time bases. This allows building against libavcodec 
      build 4754+ (Steve Brown)
    * Patch to corrctly init gd before attempting to fetch gd image resources.
      This fixes the "togdimage() supplied resource is not a valid Image 
      resource" error that a few people have reported (Steve Brown)

version 0.4.3 (03/12/2005)
    Bug Fixes:
    * Added ability to open movies as persistent resources. This greatly
      increases speed of repeatedly accessing the same movie from separate
      php scripts. This is still somewhat experimental so don't use it
      unless you have a specific need (tkirby)
    * Increased strictness of compiler warnings to catch issues like
      undefined symbol errors. (tkirby)
    * Track frame number within ffmpeg-php since the frame_number variable
      in ffmpeg's decoder context seems to give inaccurate results on some 
      3GP movies. (tkirby)
    * Fixed bug #1099229 - Stride problems if ffmpeg_frame is resized upwards
      (tkirby)
    * Functions now use safe_emalloc() to avoid possible integer overflows 
      (tkirby)
    * Changed lrint() to a macro to allow compiling on Windows (tkirby)

version 0.4.2.1 (02/15/2005)
    Bug Fixes:
    * Fixed error handling when ffmpeg_movie object creation fails (tkirby)
    * Fixed undefined symbol error in ffmpeg_output_movie (tkirby)

version 0.4.2 (01/15/2005)
    New Features:
    * Added more ID3 methods getAlbum(), getArtist(), getGenre()), 
      getTrackNumber(), getYear() for audio files. (tkirby)
    * Cleaned up to build without gd (tkirby)
    * Added ability to build against current ffmpeg cvs (tkirby)

    Bug Fixes:
    * Fixed segfault in ffmpeg_movie free when decoder is not found (tkirby)

version 0.4.1 (01/08/2005)
    New Features:
    * Added getVideoCodec(), getAudioCodec() and getAudioChannels() functions
      per feature request #1097373 (tkirby)
    * Added constructor for ffmpeg_frame that allows to create from a gd
      image. This won't be all that useful until encoding support is added.
      (tkirby)

    Bug Fixes:
    * Fixed incorrect error reporting in get_decoder (tkirby)
    * Don't error if decoder can't be found, just warn (tkirby)
    * Fixed nasty memory leak in free ffmpeg_frame (tkirby)
    * Code cleanup (tkirby)

version 0.4.0a "Festivus" (12/23/2004)
    New Features:
    * Added ffmpeg_frame object to encapsulate frame specific methods. This
      cleans up the explosion of getFrame methods and makes eventual encoding
      support easier (tkirby)

    Bug Fixes:
    * Fixed bug where image resampling context was not getting freed
      (tkirby)
    * Fixed bug in getDuration() where duration was return as an int, which
      was causing frame counts to be off (tkirby)

version 0.3.8a (12/15/2004)
    New Features:
    * Added getFrameIntoImage() function to reuse the same gd image for speed
      (tkirby)

    Bug Fixes:
    * Fixed bug in getFrameResampled() argument parsing (tkirby)
    * Fixed broken alias for getBitRate() function (tkirby)
    * Fixed memory leak in gd image allocation function (tkirby)

version 0.3.7a (12/05/2004)
    New Features:
    * Added support for PHP5

    Bug Fixes:
    * Fixed incorrect module initialization that was causing segfault in PHP5
      (tkirby)

version 0.3.6a (12/04/2004)
    New Features:
    * More malloc optimizations in frame conversion/resampling (tkirby)
    * Added cropping support to getFrameResampled() and getFrame() (tkirby)

    Bug Fixes:
    * Fixed bug #1079237 getFrame fails when getting the same frame twice
      (tkirby)
    * Fixed memory leak when freeing ffmpeg_movie objects (tkirby)
    * Fixed bug #1078753 cropping doesn't work correctly if image is not
      resized (tkirby)
    * Fixed bug #1077952 Segfault with multiple calls to getFrameResampled()
      (tkirby)
    * Fixed tiny memory leak in _php_get_gd_image() (tkirby)
    * Added configure warning if trying to build against php 5 since it
      is not supported yet. (tkirby)

version 0.3.5a (11/29/2004):
    New Features:
    * Can now be built independently of PHP sources. (tkirby)
    * Added ebuild goodness for the Gentoo Type/R crowd 
      (tkirby - Gentoo User :-)

    Bug Fixes:
    * Fixed a couple of really stupid conversion bugs in getFrame() and 
      getFrameResampled() (tkirby)

version 0.3.4a (11/28/2004):
    New Features:
    * Added new method getFrameResampled() which returns a frame resized
      using ffmpeg's resampling. ffmpeg resmpling IMHO is better than GD's 
      resampling and will speed up greatly returning say a thumbnail sized 
      frame since less data has to be copied into the returned GD image. 
      The only caveat to ffmpeg based resampling is that the width and 
      height of the resized image must be even numbers (tkirby)
    * Initial support for audio only files such as mp3 (tkirby)
    * getDuration() now works for mp3 files (tkirby)
    * getVideoBitrate() will return bit rate for mp3 files though this will 
      change in the future when more audio specific methods are added (tkirby)

version 0.3.3a (11/25/2004):
    New Features:
    * Added PHP constants for libavcodec version and build numbers (tkirby)
    * Added getVideoBitRate() method (tkirby)
    * More optimizations for successive calls to getFrame() (tkirby)

    Bug Fixes:
    * Don't error if stream params not found since some formats don't need 
      them (tkirby)
    * Return zero if can't get a valid duration for the movie (tkirby)
    * Zero out alpha channel when copying frame to gd so gd will not try to 
      apply alpha when image is passed to gdImageCopyResampled() (tkirby)
    * getFrame() no longer bounds checks the framenumber param against 
      framecount since framecount may not always be accurate (tkirby)
    * getFrame() now returns false if the wanted frame is not found instead
      of generating an error (tkirby)

version 0.3.2a (11/22/2004):
    New Features:
    * Added getPixelFormat() method (tkirby)
    * Added hasAudio() method (tkirby)
    * Optimized getFrame() method so that reading successive frames is much 
      faster (tkirby)
    * getFrame() can now be called without an argument to get the next frame in
      the stream (tkirby)

    Bug Fixes:
    * Fixed getFrame() returning one frame off of the requested frame (tkirby)

version 0.3.1a (11/19/2004):
    Bug Fixes:
    * Full getFrame() rework, should now work with all ffmpeg movie types 
      (tkirby)

version 0.3.0a (11/17/2004):
    New Features:
    * Initial support for framer() (tkirby)
