IRIXDiVX Changes ================ Release 0.96 (July 6th, 2003) ============================== Features ======== * Added random seek functionality to AVI's. * Added random seek functionality (for chapters) to DVD's. * Added track forward and rewind for DVD chapters. * Increased MAXSKIP (won't skip more than x frames in a row) from 1 to 2. * Increased FindPTS buffer for better MPEG sync. * Display the number of current DVD titles, and added the -t command line to specify a title to play. * Added automatic best audio mode selection for DVD's. * Made audio queuesize more efficient. * Fixed DVD VTS opening to handle title numbers greater than 10. * Fixed AVI and MPEG seek to handle on the fly SyncOffset calculation (increased audio and video sync stability). * Increased MPEG demuxing buffer to 4MB. * Increased MPEG audio readahead from 3/4 second to 1 second. * Reworked avi parsing and indexing methods to allow non-interleaved AVI's. * Much better DiVX 5 detection and base code handling/parsing. * Dolby Surround (AC3) support for DVD's. * Got CSS working properly (patch-css). * Support for DIVF (DiVX 4.xx variant). * Added support for AVI LIST rec chunk (support more unusual encoders). * Audio rate conversion support (will convert movie audio rate to best available output rate if's not available in audio hardware). Bugfixes ======== * Lots of code cleanups and parsing improvements. * Added DVD Private Audio Stream verification for better sync with DVD's. * Added FAP calculation for better sync with DVD's. * Cleaned up some extra DVD debug printing. * Removed X parsing of command line params (was screwing up some command ordering). * Increased sound outbuffer size to 2 seconds of audio rather than 1, to avoid overflows and match the audio port buffer. * Fixed handling to force Pulldown on Progressive Frame DVD's. * Fixed white shadow on right of movie box. * Fixed white line up the right side in fullscreen mode. * Removed audio underflow print when seeking. * Added MPEG audio reset code to prevent printing so many audio decoding errors after seeking. * Fixed MPEG BADSYNC error that should have been returned as MOREDATA. * Fixed autozoom to check the box properly (not crash). * Fixed autozoom to not zoom over 3x. * Fixed speed select mode so that automatic on the fly just forces full frame (like it does on the command line), rather than crashing. * Added more DVD virtual machine code recognition. * Better error handling for DVD media errors. * Fixed end of media handling. * Fixed udf problem when reading large directories (DVD's that have more than 10 titles). * Allow opening of multiple VTS files (greater than 1GB titles). * Added XRGB to RGBX colorspace converter (swaps 32-bit uncompressed). * Fixed broken colorspace packings (uncompressed) on certain hardware. * Added proper termination when DVD cell post code is an unsupported command. * Fixed major issue with automatic xVCD/DVD unmounting that was screwing up calculations on single digit disks. * Fixed Timecode to properly handle framerates other than 29.97 and 30fps. * Made MPEG Pulldown checking much more robust. * Fixed overflow check in MPEG media reading. * Abort rather than hang on bad CSS drive unlocking. * Better error recovery from bad AVI frames. * Better error recovery from MPEG audio stream corruption. * Fixed bug in dvd read code, where certain errors (although extremely unlikely), would produce valid return codes. * Added a buffer to help skip reallocating memory on DVD sector reads. * Fixed bug where under heavy system load, waking up to display an "expired" frame, will now skip that frame. * Fixed PCM sound for DVD's. It was sometimes disabled because of bad sync handling, that sometimes caused lockups before the movie would start. * Improved DVD audio/video sync. * Fixed MPEG12 demuxing code to update timing data between PTS info, which keeps the audio/video demuxing smoother. * Added better flexibility for handling different audio buffer sizes. * Fixed bug introduced in 0.95 where we could no longer load a xVCD or DVD from the command line. * Fixed regression where I truncated the filenames in 0.95. In doing so, Video CD's and DVD's were producing corrupt window titles. Speedups ======== * Speedups with some DiVX motion comp routines. * Skip redundant idct calls in MPEG12. * Better table handling for MPEG12 non intra blocks. * Cleaned up MPEG12 code: unused variables, vars to constants, etc.. * Sped up non intra block parsing in MPEG12. * Sped up DiVX inverse quantization code. * Lots of motion comp optimization for MPEG12. * More efficient sound output code. * More efficient AVI parsing routines. Release 0.95 (April 1st, 2003) ============================== Features ======== * Added standard inst distribution package. * Added manpage, icon, and desktop integration. * Added popup option menu to change runtime options on the fly (right click in movie area). * Movie names in titlebar are now the moviename rather than the full path. * Renamed audio port from "audio_fd" to "irixdivx_audio". * Added support for INDEO and CINEPAK through SGI dmedia libraries. * Video and Audio now have more detailed codec information printed. * Added optcheck for -z option so that -z0 will zoom as large as possible. * Changed cannot find Audio Stream so that it now displays "Movie Info : No Audio Track" when there is no audio track. * Added the equivalent "Movie Info" display to MPEG Raw Video Streams. Bugfixes ======== * Fixed memory leak in cleanup code for decoding thread. * Fixed audio setup section in mpeg code, where we previously weren't setting up audio correctly if sound was disabled on the command line. * Fixed a few small memory leaks in mpeg, divx, and video code. * Fixed audio crash/trouble on systems without audio hardware or if an error occured while opening the audio port. * Temporarily disabled non-interleaved AVI movies for sync purposes. * Fixed syncing problems and inaccuracies with low frame rate movies. * The program window is now kept at a minimum of 290 pixels wide so that small movies don't partially obscure the control panel. * Fixed movie display glitch during pause, stop and freezelast mode. * Added better bitcount checking in uncompressed AVI movies. * Removed -m option that had of late been doing the same thing as -c. * Fixed fullscreen bug where movies were getting offset if the width or height zoom ended up displaying a movie with the exact width or height of the screen. * Added proper handling of pause and better handling of stop. We now flush and blank the audio to keep movie sync. * Fixed pause, stop, and freezelast so that they don't hog CPU time. * Fixed issue where the timeline and timecode weren't getting updated enough (and were therefore inaccurate) when not in fullframe mode. * Fixed initial frame sync code. This eliminates occasional lock-up's that were occuring at the start of the movie. * Fixed syncing issues between threads that were causing occasional lock-up's. * Fixed memory leak in audio cleanup code occuring in all formats but PCM. * Cleaned up define that was printing out debugging information with Raw MPEG video streams. * Added code to make sure the decoder routines flush all the data before they are freed. This was causing memory corruption after the movie decoding was complete. BUGFIX:0000035 (avi) 1. The RIFF parser was not handling padding in the headers. RIFF chunks are supposed to be 16-bit aligned. Although they are in most cases, there are optional header files out there that don't follow that convention. It seems a program called NANDUB in particular likes to add ISFT chunks (Program Identifier) that are 15 bytes long. BUGFIX:0000027 (divx) 1. Bad clipping in one of the tables. This could have been appearing on any video, but this particular sample had a lot of bright whites, and was therefore pressing the problem. BUGFIX:0000031 (mpeg1/2) 1. Although I thought I had made this change before, we now actually set disable sound in our main loop if an mpeg system stream has no audio. 2. Fixed incorrect PTS parsing code in MPEG streams. There was an offset error that was causing trouble in system streams without audio. 3. If a system stream did not have a valid audio packet, we would also fill the sound params with bogus information, and produce a core dump. Speedups ======== * Faster optimized motion comp routines. * Added enhanced priority time. * Colorspace conversion speedup that results in about 15 to 20% speedup. Release 0.94 (February 27th, 2003) ================================== * Fixed segfaults occuring with the -n flag. This was related to some audio initialization that was being done whether or not the -n flag was specified (the -n flag disables audio). (Reported by spidy) * Fixed a bug in the video display code that was causing random lock-ups and startup issues with certain videos. This was happening on all systems with the exception of Odyssey graphics. The Odyssey code was incorrectly setting the video display buffer to be too large, and therefore wasn't having this problem. * Fixed a bug where Odyssey was allocating too large of a video display buffer for screen draws. * Fixed a color-bleeding issue in certain variables. There was a problem with the 64-bit alignment of certain block decoding with DiVX files. (Reported by max_impact) * Improved performance on NEWPORT and EXPRESS graphics by default. * Added audio data to verbose AVI output. * Fixed user reported bug that was causing issues with some MPEG's, where audio was being generated in a loosely interleaved fashion. (Reported by max_impact) * While fixing a user reported bug, I came up with a way to generate some nice speed improvements in the DiVX code which result in 10-15% performance gain.