This is the version history page for Lagarith Lossless Video Codec. You can return to the main page for this software by clicking here.
- Version 1.3.27 (Dec 9, 2011)
- Version 1.3.26 (Sep 26, 2011)
- Version 1.3.25 (May 13, 2011)
- Version 1.3.24 (Apr 11, 2011)
- Version 1.3.24 Beta (Mar 31, 2011)
- Version 1.3.23 (Mar 6, 2011)
- Version 1.3.22 (Feb 16, 2011)
- Version 1.3.21 (Feb 14, 2011)
- Version 1.3.20 (Jul 4, 2009)
- Version 1.3.19 (Sep 21, 2008)
- Version 1.3.18 (Aug 25, 2008)
- Version 1.3.17 (Jul 17, 2008)
- Version 1.3.16 (Jun 22, 2008)
- Version 1.3.15 (Apr 14, 2008)
- Version 1.3.14 (Jul 21, 2007)
- Version 1.3.13 (Jun 25, 2007)
- Version 1.3.12 (Nov 18, 2006)
- Version 1.3.11 (Nov 14, 2006)
- Version 1.3.10 (Oct 5, 2006)
- Version 1.3.9 (Jun 24, 2006)
- Version 1.3.8 (Mar 12, 2006)
- Release Date: Dec 9, 2011
- Fixed a crash that could occur when the source video buffer is not aligned to a multiple of 8 for 32 bit systems. The issue still exists for 64-bit systems, but the fix for them isn't nearly as easy and it is a very rare issue so I am leaving it alone for now. Thanks to Peter Dimov for reporting this and providing a way to reproduce the issue.
- Restored a table entry in the Fibonacci coder I accidently deleted; this would cause video corruption or crashes when playing back high-resolution video.
- Fixed some pointers being treated as 32-bit integers when instantiating the codec; this could result in the pointer being trucated and the application crashing on 64 bit systems. Thanks to Stuart MacKinnon for reporting this and tracking down the cause.
- Added exception handling in the range decoder; I am still getting a few reports of issues with Adobe products, and this will help me determine if there is still a buffer overrun in certain cases.
- Release Date: Sep 26, 2011
- Fixed a buffer overrun in the decoder that caused crashes with Adobe products. Thanks to the all the people that reported this bug.
- Fixed an error that caused certain solid color frames from 1.3.20 and earlier to be corrupted. Thanks to Luke MacKay-Morris for reporting this and providing a sample video.
- Release Date: May 13, 2011
- Fixed some bugs introduced in 1.3.21 that broke backwards compatibility with 1.1.x and below.
- Codec settings are now stored in the Windows registry rather than in config files, this should reduce issues with settings on Windows Vista and 7.
- Added lookup tables to eliminate a conditional in the range encoder, speeding up encoding.
- Replaced a division with an approximate reciprocal multiply and reorganized the run detection code in the range decoder to speed up decoding.
- Changed the Run Length Encoder to encode with a run trigger of length 3 only, and then encode with a run trigger of 1 only if the result is sufficiently small. This speeds up encoding of typical video.
- Added MMX version of the Run Length Encoder to speed up encoding on processors that don't have SSE.
- SSE2 routines originally written for x64 are now included for the x86 build, and are used if they perform faster than the MMX versions on the given processor.
- Some more tweaks to the SSE2 routines to improve performance.
- On test videos, I saw roughly a 20% encoding speed increase, and a 30% decoding speed increase over version 1.3.24.
Version 1.3.24 Beta
- Release Date: Apr 11, 2011
- Fixed a bug in the SSE & MMX median restoration routines for RGB video that caused corrupted video. Thanks to Uwe Jahn for reporting this bug.
- Fixed a bug where SSE instructions were used in some MMX median restoration routines, this would cause crashes on processors that did not support SSE.
- Overhauled multithreading to use events rather than volatile flags and wait loops. This should improve performance slightly in multithreaded mode, and provide better stability.
- Improved the MMX/SSE/SSE2 routines for median restoration, this should speed up decoding slightly.
- Added SSE2 routines for downsampling colorspaces. This speeds up encoding when changing the colorspace on machines with SSE2.
- Release Date: Mar 31, 2011
- An experimental version for testing multithreading change
- Release Date: Mar 6, 2011
- Fixed a buffer overrun that caused crashes on certain resolutions when decoding RGB video. Thanks to Nick Hope for reporting this.
- Improved the performance of the SSE and SSE2 routines for decoding YUY2 slightly.
- Release Date: Feb 16, 2011
- Fixed a bug in that caused video corruption when downsampling. Thanks to Karl Pritchett for reporting this bug.
- Fixed some race conditions with RGBA and YV12 video in multi-threaded mode that caused video corruption. This was also reported by Karl Pritchett.
- Fixed a bug in the 64 bit build that caused crashes when downsampling RGB24 video.
- Release Date: Feb 14, 2011
- Fixed a bug that would cause the codec to crash when downsampling certain resolutions. Thanks to Richard Jones for reporting this bug and tracking down the cause.
- Several speed improvements:
- Integrated RLE restoration into range decoder so decoding only takes one pass through the data.
- Increased range decoder hash table size.
- Removed RLE level 2, testing indicates that it doesn't offer any real benefit verses levels 1 or 3.
- RLE compression now encodes all levels in parallel and selects the best one rather than perform an estimation run and then an RLE run.
- RLE compression now has a faster SSE version for processors that support SSE.
- Added and improved existing MMX/SSE/SSE2 optimizations for several functions relating to median prediction and image layout.
- Overall I typically see about a 10-30% speed improvement.
- Tweaked how RLE level is selected to improve compression by about 1%.
- Tweaked how the work is distributed in multithreading to reduce wasting CPU time.
- Removed Reduced Resolution mode, I don't think it is useful enough to justify maintaining.
- Release Date: Jul 4, 2009
- Fixed a bug that would cause the codec to crash when attempting to upsample YUY2 video with a width that was not a multiple of 4. Thanks to Zack Hartmann for reporting this and providing a sample video.
- Fixed a bug that prevented the configure dialog from showing up in Sony Vegas. Thanks to Adam S. for reporting this.
- Added a configure option to prevent Lagarith from upsampling video when decoding. Checking this option and having the mode set to RGB or RGBA will prevent Lagarith from performing any colorspace conversions. Thanks to Andrew Harrison for suggesting this option.
- Release Date: Sep 21, 2008
- Fixed a race condition introduced in 1.3.18 that could cause corrupted RGBA video when using multithreading. Thanks to Jason Hamby and Sander for reporting this.
- Fixed a crash that could occur when decoding odd width RGBA with a height greater than 512. Thanks to Sander for reporting this and providing a sample video for debugging.
- Release Date: Aug 25, 2008
- Fixed an issue where decoding YUY2 video with multithreading could cause the chroma to be corrupted. Thanks to Vern Dias for reporting this and providing sample video.
- Tweaked multithreading compression so that the main thread copies the compressed data to the output buffer as soon as one thread finishes rather than wait for both.
- Changed the install.bat file to change drive letter too if needed when changing directories, thanks to Jens Diemer for suggesting this.
- Release Date: Jul 17, 2008
- There were no changes in this version, just fixing some build issues that resulted from porting both the two Visual Studio 2005 projects to one 2005 project:
- Fixed an issue where some runtime code was being dynamically linked in, causing the codec to not show up for people who didn't have certain Visual Studio packages installed. Thanks to all the people that reported and helped track down the cause.
- Fixed an issue where the compiler was using the wrong calling convention when calling some assembly-optimized functions, which caused the codec to crash when working with reduced resolution video. Thanks to Andrew Harrison for reporting this bug.
- Release Date: Jun 22, 2008
- Fixed a bug that would occasionally corrupt frames in TMPGEnc (and prossibly other programs as well). Thanks to Aleksey Gankov for reporting this.
- Ported the 64 bit build to Visual Studio 2005.
- Release Date: Apr 14, 2008
- Fixed a bug that would cause the top left corner to have chroma errors when encoding to YV12 with a video who's width was not a multiple of 32. Thanks to Marc for reporting this.
- Fixed a bug where a solid colored YUY2 frame would decode as black. Thanks to Markus Krapf and Bart Barenbrug for reporting this.
- Added more error checking, this should help prevent crashes with corrupted files from Premiere.
- Changed to using Visual Studio 2005 to compile the 32bit dll, thanks to gl.tter for helping with porting the project.
- Release Date: Jul 21, 2007
- Fixed a bug that would corrupt video when downsampling to YUY2 and the resolution was not a multiple of 32.
- Fixed a bug that would cause crashes when downsampling to YV12.
- Restored manual installation instructions to the readme for people having problems with the install.bat file.
- Release Date: Jun 25, 2007
- Changed the lagarith.inf file so that uninstalling from the control pannel now works correctly.
- Added an install.bat file to the Windows 64 version that will install both the 32 and 64 builds. Thanks to Wiak and Bja888 for suggesting this and providing example code.
- Reduced the memory used by the codec when downsampling the colorspace and when using multithreading.
- Improved the RLE code a bit.
- Release Date: Nov 18, 2006
- Fixed a bug introduced with 1.3.11 that would cause the codec to crash when multithreading on processors without SSE2. Thanks to Ken Schultz for reporting this bug.
- Fixed a memory leak introduced with 1.3.11 when downsampling the colorspace during compression.
- Fixed a possible deadlock situation I missed in 1.3.11.
- Tracked down and fixed the cause of a bug that would cause frames to occasionally decode incorrectly when multithreading was enabled. I though I fixed this in 1.3.11, but I had only reduced the severity so that it usually only affected one or two pixels.
- Release Date: Nov 14, 2006
- Pixel prediction routines have been rewritten to use intrinsics instead of inline assembly; allowing them to be portable and easier to understand. They were also changed to operate on planar data instead of interleaved data; this speeds up YV12 encoding significantly.
- Rewrote and simplified a lot of compression code due to the new prediction routines; this will speed up certain encoding cases such as odd-width video. Additionally, RGB32 and RGBA can now be encoded with an odd width.
- Rewrote code for reducing and enlarging 'Reduced Resolution" frames using intrinsics, this should be faster in some instances, and should look a little nicer due to an algorithm tweak.
- Multithreading now does pixel prediction and restoration in parallel for RGB and YV12, this should help improve performance on multi-processor systems.
- Merged the 64 bit and 32 bit code bases; this contributed to many of the above changes.
- Bug Fixes:
- Fixed a threading issue that occasionally caused the codec to freeze when multithreading was enabled. Thanks to Ken Schultz for reporting and helping test fixes for this bug.
- Fixed a bug that would cause frames to occasionally decode incorrectly when multithreading was enabled.
- Changed how Reduced Resolution handles frame edges, this fixes chroma garbage that would show up on the top or bottom of Reduced Resolution frames. Thanks to Andrew Harrison for reporting this.
- Release Date: Oct 5, 2006
- Added encoding support for UYUV video, this will allow Lagarith to be used with capture cards that only output UYUV. The video resulting will be decoded as YUY2 however. Thanks to Steven Rhodes for suggesting this feature.
- Removed some unused code.
- Release Date: Jun 24, 2006
- Fixed a memory leak that occurred with Adobe Premiere. Thanks to Alexey Gankov for reporting this bug and providing a patch.
- Fixed a bug that allowed YUY2 and YV12 video to be decoded as RGB16.
- Fixed the close button on the settings dialog box. Thanks to Zarxrax for reporting this error.
- Release Date: Mar 12, 2006
- Fixed a bug that caused Lagarith to attempt to decode any file encoded with an old version as YV12 when asked to suggest the format (affected AviSynth). Thanks to Zarxrax for reporting this error.
- Fixed a bug that could cause video corruption or crashes when encoding certain types of YV12 source video.
- Changed threading calls and synchronization methods; this may improve performance slightly when multithreading is used.
- Merged various changes from the AMD 64 build back into the base code; hopefully I will be able to merge the builds as the AMD 64 version matures.