Bink SDK 1.5v

#### Discussion

This change log includes the entire Bink development history.

# Changes from version 1.5u to 1.5v (04-12-2003)

- Fixed a bug where the Bink player for Mac couldn't highlight pre-compiled EXE video files.
- Fixed a bug on the Mac in the BINKSURFACE32R and BINKSURFACE32RA YUV to RGB pixel converters where a non-divisible by 4 right edge would draw with the wrong colors.
- Fixed a bug in the Mac Classic versions of the library and player where RemoveTimeTask couldn't be found on pre-9.0 MacOS.
- Added Mach-O format Carbon dynamic libraries for building Project Builder or CodeWarrior Mach-O applications without thunking.
- Brought Bink Mac up to the latest PC source base (now uses Perforce and command line building just like the PC, so it will always stay in sync).

# Changes from version 1.5t to 1.5u (03-16-2003)

- Bink playback is now much smoother on medium to low-end machines running Win 9x, due to working around a multi-threaded bug in the system function, timeGetTime, that was eating up to 30% of the CPU!
- Now properly handle the window being minimized when using DirectDraw primary surface blitting in the Bink player.
- Fixed an edge bug when using BinkCopyToBufferRect with a non-visible-by-4 width or height and a non-zero left or top offset.

# Changes from version 1.5s to 1.5t (02-06-2003)

- Fixed the Smack and SmackMix tools when using old format Bink audio tracks.
- We more support more dialects of TGA import files. This means we resort to QuickTime less often (which is good because QuickTime is slooow).
- Fixed an debug assert in the Xbox SDK when setting very quiet (or silent) mix bin volume levels.
- Fixed a crash when using waveOut audio output and the "play as fast as possible" frame rate option.

# Changes from version 1.5r to 1.5s (01-14-2003)

- Allowed the Smack and SmackMix tools to create old format Bink audio tracks.
- Increased the Bink I/O block size from 8K to 16K (since Bink videos are slowly using higher data rates).
- Fixed a setting in the Bink SDK help where the navigation tab would disappear when the focus was lost. One stupid downside is that WinHelp remembers what the setting used to be, so if you have no nagivation tab at all, then choose "Options... Show Tabs" on the menu bar.

# Changes from version 1.5q to 1.5r (01-01-2003)

- Fixed the accidental exclusion of the RADSetMemory function header file from the Bink SDKs.
- Made the Bink Player only ask to check for updates if it is in the same directory as the RAD Video Tools. This means that the free Bink Player can be distributed without popping up update requests.
- We now poll the DirectSound buffer positions much less frequently to handle sound drivers that report these positions slowly.
- We added a non-LTCG version of Bink for Xbox, so that "Edit and Continue" can be used again.

# Changes from version 1.5p to 1.5q (11-18-2002)

- Fixed a problem where our JPEG reader was detecting motion-JPEG QuickTime movies as a single frame JPEG. This had the effect of making motion-JPEG movies only appear to be one frame, so only the first frame of the movie was ever converted. We now force the use of QuickTime when the JPEG file is over 1.5 MB in size, or when the extension is .QT or .MOV.
- Fixed a bug when using the old Bink audio codec where stereo sound files would get converted to mono during compression. Note that there was no problem if you were using the new Bink audio codec (which you should be anyway).
- Fixed a bug when compiling a Smacker for DOS or Win16 video executable.
- Did the big switch over to Perforce source code control.

# Changes from version 1.5m to 1.5p (10-18-2002)

- Added MusyX audio output support for the GameCube SDK. This caused a few API changes on the GameCube (even for non-MusyX games) because we no longer automatically assume you are using AX. So, you must now call BinkSoundUseAX or BinkSoundUseMusyX before the first call to BinkOpen, or you won't get any sound. Also, RADSetAudioMemory has been removed (because only AX used it) - instead, you now pass in the ARAM callbacks to the BinkSoundUseAX function.
- Updated all of the GameCude examples to let them be built AX or MusyX.

# Changes from version 1.5L to 1.5m (10-04-2002)

- Made the lower Bink audio compression levels less lossy (the levels less than 4).
- Changed the GameCube I/O code to check the global DVD status (vs. the file status) so that errors are still reported even if other async I/O intervenes.
- Worked around buggy Windows XP sound drivers that report bogus playback positions (which was causing occasional skips).
- Switched to using QuickTime to load PNGs when compressing alpha planes.

# Changes from version 1.5k to 1.5L (09-25-2002)

- Fixed a problem on the GameCube where stereo audio playback was overly noisy.
- Fixed a few subtle timing issues to allow seamless audio looping.

# Changes from version 1.5J to 1.5k (09-09-2002)

- Added batch functionality to the RAD Video Tools! Now you can highlight a group of input files and process them all one by one.
- The RAD Video Tools now has built-in support for TGA and TIFF alpha planes (previously QuickTime was used for alpha input). Our built-in support is almost 20 times faster than QuickTime, so compressing large numbers of still images is now much, much faster!
- Fixed a bug in the DirectSound support where changing the volume could be ignored.
- Bumped up the default compression data rate to 400 kps.
- Added a warning when you ask to compress an alpha plane and the input file has no alpha plane.
- Switched to .NET for building the tools (a little faster compiled code, but the debugger is frustrating).
- Changed the sound support so that we only reset the sound system every 2 minutes of video (less popping at loop points). We also do the reset on the first frame (previously we did it on the last frame which occasionally popped).
- Moved the end of file logic in the Xbox and GameCube example source to fix a problem where playback could stop one frame early.
- Show 2 decimal places when displaying frame rates in the RAD Video Tools.
- We now free the 2x height doubled YUV scanline buffers in BinkClose (vs. shutdown in previous versions). This only saves about 1500 bytes, but it helps with fragmentation.
- Changed the GameCube SDK to account for the slightly faster rate that the NGC DSP really runs at. Fixes sync problems with longer movies on the GameCube.
- Changed the Xbox and PC SDK to allocate the sound sample buffer on the stack - saves 16K of global memory.
- Now build the Xbox library using VC7's link time code generation. This will generate both faster and smaller code. The file size of the library is large because the linker does the compilation - the link size in bytes will be 10K to 50K smaller.

# Changes from version 1.5i to 1.5J (06-24-2002)

- Updated the sound code for the Miles Sound System to work with Miles 6.5.
- Updated the sound code for DirectSound to be loudness based (vs. amplitude based).
- Updated the Nintendo GameCube examples to work with Patch 3.

# Changes from version 1.5h to 1.5i (06-15-2002)

- Fixed a no-volume problem when using the latest GameCube audio libraries.

# Changes from version 1.5g to 1.5h (06-12-2002)

- Made BinkOpen use async reads on the GameCube to avoid lock ups when opening the door at the wrong time.
- Re-enabled the BinkDX8SurfaceType function on the Xbox.

# Changes from version 1.5f to 1.5g (05-15-2002)

- Fixed the GameCube not playing some soundtracks.
- Fixed two ugly bugs on the GameCube when closing a Bink file.
- Fixed an periodic clicking on the GameCube with some audio sample rates.
- Fixed the little glitch of audio when playing 8-bit data on the GameCube.

# Changes from version 1.5e to 1.5f (05-08-2002)

- Fixed a crash when compressing some audio files.

# Changes from version 1.5d to 1.5e (04-29-2002)

- Fixed a bug when compressing or mixing using the old Bink audio compressor.
- Fixed a debug message that displayed while compressing.

# Changes from version 1.5c to 1.5d (04-27-2002)

- Fixed a few linker errors on GameCube when using CodeWarrior.

# Changes from version 1.5b to 1.5c (04-17-2002)

- Worked around a compiler bug that could cause the Bink compressor to crash on some input files.

# Changes from version 1.5a to 1.5b (04-03-2002)

- Added the BinkCopyToBufferRect function to the Bink SDK. This function allows you to partially copy a Bink frame to another buffer. You can draw with tiled Direct3D textures much faster with this function.
- Updated the DX8 and DX7 example programs to use the BinkCopyToBufferRect function.
- Changed the RAD 3D wrapper API slightly on PC to handle direct locking of tiled textures. You now need to call Lock_RAD_3D_image in a loop to obtain each buffer pointer to copy into. See ExamAlph.c for the updated example.
- Released a new Carbon version of the Mac player (compatible with MacOS X and 9)!
- Fixed a false positive condition when writing out an AVI that could cause the 'Windows has crashed' message to appear when everything was fine.
- Updated the Mac version to the latest codebase.
- Fixed an offset bug on the Mac in BinkBufferLock when running on certain multi-monitor configurations.
- Switched to an all new internal task sharing model on the Mac - replaces all the cooperative thread stuff with timers and critical sections. Much better IO and sound performance (fixes the MacOS X multi-CPU sound skips).
- On MacOS X, switched to using normal IO on a background thread instead of async IO.
- Fixed a few bugs on the GameCube when playing videos with no sound.
- Fixed the mixer to accept lossy levels greater than 100 (to specify the old Bink encoder format).
- Fixed the delay when using BinkGoto on a video without sound.

# Changes from version 1.2J to 1.5a (03-15-2002)

- Added an all new Bink audio encoder! Sounds much better and can compress up to half the old data rate!
- Added crash protection around all calls to Windows or QuickTime - we should now withstand crashes in buggy 3rd party codecs. The specific frame that was being decompressed will be blank, but the rest of the movie should survive.
- Added several new Xbox SDK examples showing overlay and back buffer support. Overlays are really cool - they are definitely the best way to play most videos on the Xbox.
- Added YUY2 blitting support to the Xbox SDK - this allows the Xbox hardware to do the YUV to RGB conversion (which is usually much faster). Most of the examples now use YUY2 as the default texture format.
- Added support for 3D Studio Max's RLA file format. This format supports RGB, alpha, Z-depth info, UV-coordinates, and normals - all per pixel! This lets you do some amazing post-process stuff with video that you'd swear couldn't be pre-rendered. We'll put up some demos of this soon!
- Added lots of new configuration detection to the System Info button in the RAD Video Tools (Duron, P4, Celeron, Itanium, Me, 2000, XP, video card, audio card, memory, and disk space).
- Detect larger than 2 GB AVI files and warn the user that they are not supported by the Windows reader.

# Changes from version 1.2i to 1.2J (02-18-2002)

- Released the all new Nintendo GameCube support! The platforms keep coming!
- Fixed a stupid memory leak in BinkOpen - everyone using 1.2i should upgrade.
- Rewrote BinkGoto completely - you can now jump directly to a frame and the sound will begin immediately (vs. the old 750 millisecond silence delay).
- Added new Direct3D 8 example texture support code. Includes support for dynamic and non-power of 2 textures (both of which can improve playback dramatically).

# Changes from version 1.2h to 1.2i (01-18-2002)

- Detected when DirectDraw can't lock the primary surface and switch to DIBSections. This fixes the problem with blank video windows on XP or when NetMeeting was running.
- Fixed a rare deadlock problem when a movie would loop (or when you called BinkSetSoundOnOff).
- Fixed a data overrun that could cause pauses when playing a movie that had no sound.
- Made BinkGoto start the audio from the "gone-to" frame instead of whatever filled up the sound buffer first.
- Fixed BinkGoto to not unpause the movie if it was previously paused.
- Removed Windows.h from the Bink header file (for faster compilation).

# Changes from version 1.2g to 1.2h (11-07-2001)

- Made the default mix bins on the Xbox to be all speakers (instead of the normal Xbox default of just the front-left and front-right speakers).

# Changes from version 1.2f to 1.2g (11-06-2001)

- Switched to the November Xbox SDK which required slightly changing the BinkSetMixBins and BinkSetMixBinVolumes functions.

# Changes from version 1.2e to 1.2f (10-26-2001)

- Fixed a silly regression bug where videos without audio would play with the wrong frame rate.

# Changes from version 1.2d to 1.2e (10-19-2001)

- Bink can now play multiple sound tracks at once. This means that the BinkSetSoundTrack function now takes an array of track IDs to play instead of a single value. Also, the BINKNOSOUND constant has been removed - to play without any sound, pass a zero for the track count in BinkSetSoundTrack.
- Added example code in ExamXbox.cpp that shows how to play 5.1 audio on an Xbox.
- Added the BinkSetMixBinVolumes function to adjust the mix bin volumes individually on the Xbox.
- BinkSetVolume, BinkSetPan, BinkSetMixBins functions all now take a track ID to control which sound track is changed.
- Worked around a DirectSound bug on the Xbox where the audio tracks sometimes wouldn't start. If we notice the sound positions aren't updating, we restart the audio track.

# Changes from version 1.2c to 1.2d (10-02-2001)

- Fixed a bug in the Miles sound module where sound wouldn't restart after a skip.

# Changes from version 1.2b to 1.2c (09-30-2001)

- Worked around a nasty bug in the Xbox system software where the machine can occasionally get in a state where QueryPerformanceCounter actually runs backwards.
- Fixed a bug where Bink wouldn't play the audio track of very short videos (the entire video had to be less than 250 milliseconds long).

# Changes from version 1.2a to 1.2b (09-24-2001)

- Put all of Bink in separate sections, so that it can be loaded and unloaded on an Xbox. Use the new BinkUnload and BinkUnloadConverters to manage Bink's sections.
- Set the headroom on the Bink DirectSound buffer to zero (the default is too quiet on the Xbox).
- Added a new BinkSetMixBins function to allow the management of Xbox mix bin destination buffers.

# Changes from version 1.1d to 1.2a (08-28-2001)

- Huge quality improvements on videos with color gradiants, washes, or fades as a result of cleaning up noise contamination all the way through the Bink pixel pipeline. In some cases, equivalent quality can be obtained at 1/4 the bandwidth! If you need highest possible quality, we recommend recompressing all your Bink videos. The only downside is that video compression time is longer when using super-high data rates (which you may not need any more). These improvements aren't hype - the quality difference is amazing in most cases!
- Added a new denoising video filter (which is now rarely necessary with the new quality improvements).
- Fixed a front-end problem in the video converter where half-toning was being applied if you selected "half-tone always" in the 256-color section.

# Changes from version 1.1c to 1.1d (08-21-2001)

- Worked around an Xbox DirectSound bug that caused movies to skip or slip out of synch at the start of a movie.
- Fixed a bug that caused Bink's DirectSound code to take lock the DirectSound buffer too frequently.
- Bink for Xbox now allocates it's sound buffer from the RAD memory allocation functions.
- Bink's threads now use 12K of stack space instead of the executable default. This can save a fair amount of memory on the Xbox.
- Added a workaround in the Bink timer code for buggy motherboards that advance the QueryPerformanceCounter incorrectly under heavy loads.

# Changes from version 1.1b to 1.1c (07-12-2001)

- Added new QuickTime importing code to support the video track of MPEG and Flash movies. QuickTime doesn't support audio exporting from either of these file types yet, unfortunately.
- Added new QuickTime importing code to support AVIs that Windows can't open (like DV formatted AVIs).
- Switched to the July version of the Xbox SDK.

# Changes from version 1.1a to 1.1b (06-18-2001)

- Fixed bug when opening a Bink file with multi-threaded I/O turned off. This caused several of the tools to lock up when processing Bink files as input files.

# Changes from version 1.0x to 1.1a (06-14-2001)

- Added new audio encoder that provides much higher quality sound on deep tones (may still have to use 0 lossy level on some files, though).
- Rewritten DirectSound layer - much more tolerant of CPU starvation. Also worked around buggy SBLive drivers that would cause periodic skipping under Windows 2000.
- All new threading model - instead of one thread per open Bink, there are simply two global threads for all open Bink files. Also fixed a few very rare thread deadlocks on multi-CPU machines (typically exhibited after more than 12 hours of looped playback).
- Built with new beta versions of the Xbox system software - fixes crash in BinkOpen on beta 1 and 2 Xbox hardware.
- Fixed compression of unusual AVIs where the video stream format doesn't match the file format (usually seen in Debabilizer AVI files).
- Fixed a bug compressing unusual QuickTime movies where the audio started at a non-zero offset.
- Improved the Bink I/O system to give better playback when playing files that are very close to the data rate limit of the playback device.
- Added a new BinkDX8SurfaceType function that returns the type of a DirectX 8 surface.

# Changes from version 1.0w to 1.0x (02-15-2001)

- First release of the Bink SDK for Xbox! Use Bink files on the Xbox!
- Fixed a several precision issues in the front-end tools that caused a variety of odd problems when working with very long video files.
- Updated the 3D example files to support scaling the video while blitting.
- Fixed a thread deadlock when running under Windows 98 and another background application was pounding on the DirectSound device.
- Fixed a bug on the Mac when using the BINKSURFACE32A surface type.

# Changes from version 1.0v to 1.0w (11-26-2000)

- All Bink example files have been rewritten - much cleaner and easier to understand.
- The example programs for performing alpha on OpenGL or Direct3D have been merged into one file (ExamAlph.C). The example now uses a simple wrapper API to both OpenGL (GLRAD3D.C) and Direct3D (D3DRAD3D.CPP).
- Added a Carbon version of the Bink library for MacOS X.
- Made the Bink Mac player show double-clicked or dropped files from the Finder.
- Fixed a few bugs in the video resizer - should look better when using small resize ratios (like resizing a 320x240 video to 352x256, for example).
- Fixed a bug in the video smoother where small artifacts could appear.
- Allow more video files to be added to a single compiled executable.
- Fixed a bug where bi-linear filtering was forced on when compressing an alpha plane.
- When adding three or more files to a list file, the files are sorted as they are placed into the list.
- List files now store complete pathnames internally, so you can copy them to other locations and the list file will still work.

# Changes from version 1.0u to 1.0v (10-03-2000)

- Fixed a silly bug in the still image importer where the frame range was used incorrectly.

# Changes from version 1.0t to 1.0u (09-28-2000)

- Fixed a bug in Smacker's lossless mode where it wasn't lossless if the input file had a very high data rate.
- Fixed a bug when using a list file containing a series of still images with local start and end frame offsets.
- Fixed a display bug in file information window where large file sizes could be displayed as negative numbers.
- Switched to the new RAD make tool - very cool.

# Changes from version 1.0s to 1.0t (09-09-2000)

- Added video resizing! You can now shrink or zooming during compression or conversion. We use bi-cubic interpolation for extremely high quality scaling.
- Added a bunch of digital video filters for use during compression and conversion - contrast, smoothing, brightness, clamp to black, gamma correction, and video de-interlacing are all now available!
- Fixed a subtle bug in the QuickTime importer where the first frame was sometimes duplicated.
- Added new 256-color small and large icons for Bink and Smacker.
- Added a workaround to a SBLive driver bug that was causing waveOut mode not to work under Win98.
- Fixed some thread contention problems that were causing audio decompression to take a bit more CPU than necessary.
- Fixed the non-client area not being redrawn in the players after a window resize under Win2K.
- Changed a few variable names in RAD.H to avoid conflicts with AMD's 3DNow header file.
- Fixed a bug where a list file containing files with different original frame rates would wrap around if an adjusted frame rate was used on the list file.

# Changes from version 1.0r to 1.0s (08-08-2000)

- Made the player periodically ask to check for updates (since many users just double-click in Explorer and never run the tools).
- Fixed a stupid bug where Bink videos without sound would play as fast possible.

# Changes from version 1.0q to 1.0r (08-03-2000)

- Sped up the decompressor by 12% on Mac and 5% on PC.
- Fixed a audio problem on the Mac where audio playback was noisy.
- An error is now shown when the audio track of a locked QuickTime file is opened (rather than just converting silence).
- When executing an internal video utility and the control key is held down, we now put the command onto the clipboard (this makes it easy to copy the command line into a batch file).
- An hourglass is displayed when reading long series of image files.
- Fixed a bug where the wrong window style was used in the Bink player.
- Fixed a goofy bug where BinkSetSoundOnOff only allowed zero or one (vs. zero or non-zero).

# Changes from version 1.0p to 1.0q (07-10-2000)

- Fixed a subtle aliasing error when using the 'adjust to frame rate' option with non-integral multiples.
- Fixed a bug where the alpha plane of an imported Bink file was ignored.
- Fixed a bug where the alpha plane of a TGA file was ignored if you imported the file as one of a series of still images.
- Switched to a new EXE compressor (UPX) under Win32 that gets better compression and that should be more widely compatible.

# Changes from version 1.0n to 1.0p (06-26-2000)

- Switched to the real FFT instead of the complex FFT which can double audio decompression performance on some CPUs!
- Made the RAD Video Tools must better at detecting series of numbered files.

# Changes from version 1.0m to 1.0n (06-12-2000)

- Compiled EXE Bink and Smacker files can now be used by most of the tools - you can convert them into AVIs, recompress them, remix audio from them, click on advanced play to change the built-in playback settings, etc.
- You can now use the Bink and Smacker sound mixers to remove an audio track - just use '-' for the sound filename to mix.
- The Mac player can now play PC EXE compiled videos - just highlight EXE file and hit Play!
- Video playback is now centered by default on the Mac.
- The background screen is cleared to black by default on the Mac.
- Added options to not clear the background screen and to hide the mouse during playback on the Mac.
- The Smacker player can now hide the mouse cursor during playback.
- Fixed crash when encountering a file IO error (such as the CD being ejected during playback) on both PC and Mac.
- Fixed an offset bug when using negative X offsets in the RAD graphics file importer when outputting true-color files.
- Added the new RADSetMemory function that allows you to replace Bink's or Smacker's memory allocation and freeing routines on both PC and Mac.

# Changes from version 1.0k to 1.0m (06-02-2000)

- Switched to a faster FFT routine (speeds up audio decompression).
- Fixed BinkCopyToBuffer to return a 1, if the blit was skipped.
- Exported the BinkSetIO function correctly.
- Fixed a wrap around bug when converting long wave files with the Bink converter.

# Changes from version 1.0j to 1.0k (05-22-2000)

- Fixed some surface byte ordering issues on MacOS - BINKSURFACE32 is now the correct format for the MacOS desktop.
- Fixed a millisecond overflow problem on MacOS.
- Buffer more sound data on MacOS - should give smoother playback.
- Use less aggressive frame skipping on both PC and Mac.
- Fixed a bug in the Bink IO speed simulator.
- Fixed a crash when importing a Smacker file with Bink audio.
- Added waveOut support to Bink - it can now run completely without DirectX.

# Changes from version 1.0i to 1.0j (04-30-2000)

- First version of Bink for Mac! The full Bink SDK and player is now available for MacOS!
- Fixed a bug when pausing a video before a single frame had been decompressed.

# Changes from version 1.0h to 1.0i (04-05-2000)

- Added three new display color depth options to the Bink player - "at least high-color" (tries 16-bit, then 32-bit, and then 24-bit), "try true-color" (tries 32-bit, then 24-bit, and then 16-bit), and "true-color only" (tries 32-bit, and then tries 24-bit).
- Checks the actual bit depth set after a call to ChangeDisplaySettings to work around a bug in the NVidia drivers.
- Bink player doesn't decompress sound that is going to be skipped when playing in "as fast as possible" mode.
- Fixed a bug in the 5551 merged alpha blitters.
- Added two Bink alpha plane playback examples - DXALPHA.CPP for Direct3D and GLALPHA.C for OpenGL.
- First version of Smacker 4.0 for the Mac! PowerPC and 68K are both supported (you should avoid using Bink audio in Smacker files that will be played on 68K machines, though).
- Fixed a bug in the Smacker encoder where files compressed with Bink audio tracks would be aligned incorrectly. This led to too slow Smacker files on the PC and unplayable files on the Mac. You have to recompress the Smacker file to fix the problem, though.
- Renamed the SmackTimerRead function to RADTimerRead and switched to using QueryPerformanceCounter (from timeGetTime) on Win32 - should make movies play a little more smoothly on Windows NT and 2000.
- Fixed a bug in the SmackGetRects function where an extra bogus rectangle would be returned on a frame where a palette change occurred, but no pixels changed.
- In the Smacker player and SDK, broke out the time spent in the audio and video decoders into separate values.
- Fixed a bug in the Smacker player that cause an extra millisecond of sleep for every frame.
- Fixed a bug where the Bink encoder wouldn't read the alpha channel out of an input Bink file.
- Fixed a crash in the Mac SmackBuffer API when a NULL rectangle was passing to SmackBufferBlit.
- You can now override settings on the command line with a remove switch. For example, if you run "BinkPlay test /L", you can tell Bink to ignore the loop switch with "BinkPlay test /L /-L". The "slash-minus-L" tells Bink to skip the earlier L switch. This is mostly useful for overriding the switches that are compiled into a self-playing Bink or Smacker file.

# Changes from version 1.0g to 1.0h (03-14-2000)

- Under NT, sped up mixing time dramatically by flushing the file less often.
- Fixed a problem where a user-specified DirectSound object could cause audio not to play.
- Fixed a bug in the Smacker mixer where forcing a frame rate would cause the audio to be mixed incorrectly.

# Changes from version 1.0f to 1.0g (03-08-2000)

- Added multi-CPU support to the Bink compressor! Compression scales close to linearly with multiple CPUs - twice as fast for two CPUs, four times as fast for four CPUs, etc.
- Added reversed order blitters (BINKSURFACE24R and BINKSURFACE32R). These are convenient under OpenGL where the reversed byte path is more optimized.
- Added merging alpha blitters (BINKSURFACE32A, BINKSURFACE32RA, and BINKSURFACE4444). These are used with Bink files that are compressed with an alpha plane to get the merged formats commonly used by the 3D APIs.
- Added the new online documentation system (with the system that Casey created for Granny).
- Fixed a bug in the BinkBuffer API where the YUV formats were never tried if the DIBSection blitter failed.

# Changes from version 1.0e to 1.0f (02-08-2000)

- Made the Bink compressor up to 25% faster with better video quality.
- Made the core Bink decompressor about 12% faster on all CPUs.
- Made the decompressor another 5% faster if you recompress your Bink files.
- When compressing with alpha, we now use QuickTime to load the files first (which lets us read the alpha planes out of most files - including TGAs).
- Fixed a few bugs in the alpha plane compressor and decompressor.
- Switched to a new internal frame format as a precursor to multi-CPU (SMP) decompression.
- Merged the Bink for PC and Mac into one code base (for the upcoming Mac release).
- Fixed a crash in the Bink DLL when shutting down under NT 4.
- Made the Bink and Smacker players for Win32 take longer lists of filenames (up to 50 files can now be compiled into an EXE).

# Changes from version 1.0d to 1.0e (02-01-2000)

- Worked around a Windows buffer limit that was causing doubled-clicked files in the RAD Video Tools not to play.
- Fixed a potential crash when decompressing alpha plane data.

# Changes from version 1.0c to 1.0d (01-27-2000)

- Fixed a bug in the QuickTime sound importer - there should be no more glitches with compressed MOV soundtracks, MP3 files or other compressed wave files.
- Fixed the Bink converter using the wrong value when displaying percent complete during a sound file conversion.
- Fixed some YUV conversion problems when using non-zero offsets to the BinkCopyToBuffer function.
- Sped up mono 2x blitting on non-MMX CPUs.
- Fixed a bug where DirectDraw was still required even when using DIBSections.
- Fixed a bug in the standalone player where the DirectSound object was deadlocking when being released under NT 4 at shutdown time.
- Fixed some bugs in the measuring of total read time (and added reporting of idle reading time and background thread reading time in both the summary and the real time statistics).
- Fixed a bug when simulating a device speed where the device speed was overestimated.
- Made the list file button handle lists as large as Windows itself can handle.
- Made the list file button much faster when used with huge lists of files.
- Made the file info button display the true color depth of an AVI file (8, 16, 24, or 32 instead of always 8 or 24).

# Changes from version 1.0c to 1.0b (01-04-2000)

- Sped up mono blitting on non-MMX CPUs.
- Fixed a bug in the YUY2 and UYVY 2X stretchers.

# Changes from version 1.0a to 1.0b (12-28-1999)

- Added 2x height, 2x width, and 2x width and height stretching software blitters - up to four times faster than Windows.
- Added scaling compression support for 2x height, 2x width, and 2x width and height.
- Fixed the Bink colorspace conversion to match YUV hardware exactly (Bink videos should look identical whether displayed with the hardware or our optimized software blitters now). This also had the nice side effect of making videos with lots of reddish hues compress better.
- Added much faster blitter support for non-aligned destination memory addresses.
- Made the Bink compressor display more information when loading lists and runs of files.
- Fixed a bug in the Smacker player for DOS when playing new Smacker 4.0 files.
- Fixed a bug in the Smacker player for DOS when playing an audio track compressed with the Bink audio codec.
- Fixed edge support for mono and 2x blitters.
- Fixed a bug in both the Bink and Smacker compressors, where the start sound offset would be wrong if you adjusted the output frame rate.
- Fixed a bug where the Bink player would wait the first frame's time before beginning playback.
- Fixed a bug in the Bink player where the final frame wasn't displayed long enough.

# Changes from version 0.9n to 1.0a (12-01-1999)

- Bink compression is now twice as fast! Compress your movies in half the time.
- Bink player now shares the CPU much more nicely.
- Added video smoothing and contrast control to the Bink compressor (usually makes a huge difference in video quality).
- Smacker has been upgraded to version 4.0 and has been fully integrated.
- New Smacker 4.0 compression - double the quality of your Smacker movies!
- Smacker 4.0 now includes optional Bink audio compression. You can now use Bink's perceptually-lossless 8 to 1 audio compressor.
- Smacker 4.0 player now shares the CPU much more nicely.
- Smacker 4.0 player now correctly shows the logo if the movie was paused.
- Smacker 4.0 DOS player now uses Miles 6.0 (smaller compiled DOS EXEs).
- Smacker 4.0 uses the Bink bandwidth allocation routines to intelligently reallocate bandwidth to the frames that need it most.
- Added a SmackGetKeyFrame function to the Smacker 4.0 SDK.
- The analyze window now tags key frames in Bink and Smacker 4 files.
- Added an always-on-top option to both the Bink and Smacker players.
- The Bink compressor can now compress to grayscale-only Bink files.
- Added an option for the Bink compressor to compress the alpha plane of the input file (only Bink SDK users can access the alpha plane currently).
- Made window alignment dependent on pixel size (rather than always 4) in Bink.
- Made the compressors, converter, and mixers front-ends more consistent.
- Bink video window isn't cleared to black before playback begins.
- Fixed a nasty bug in the masking YUV blitter that would cause some unusual frames not to be completely copied (leaving little artifacts behind).
- Fixed a crash when looping short Bink movies.
- Fixed a bug in the Bink converter when converting RAW sound files into wave files.
- Fixed a bug in Bink where the first frame would be skipped after a go to or a loop around (which also fixed a weird problem when Smacking a Bink file).

# Changes from version 0.9m to 0.9n (11-02-1999)

- Added new YUV to RGB blitters specifically for video memory - up to 100% faster when converting directly into video memory.
- Fixed a memory leak in BinkClose.
- Fixed a bug when playing multiple files when using the fill-screen-to-black option.

# Changes from version 0.9k to 0.9m (10-14-1999)

- Added a grayscale blitting mode (much faster - useful on slow machines).
- Further tweaked the frame skipping logic for slower machines.
- Made the DIBSection blitter chosen before the overlay and off-screen surfaces (should be more compatible).

# Changes from version 0.9j to 0.9k (10-13-1999)

- Made sound synchronization much more accurate after a frame skip or a pause - we should recover from frame skips on low end machines much cleaner now.
- Fixed a problem with videos stopping with the SDK when using Miles.

# Changes from version 0.9i to 0.9j (10-11-1999)

- Further optimized the 24-bit and 32-bit non-MMX blitting routines.
- Fixed the background of the Bink Tools dialog boxes under NT.
- Fixed a bug with compiled EXE Bink files not playing under NT.

# Changes from version 0.9h to 0.9i (09-09-1999)

- Added DIB Section support for non-DirectX blitting.
- Changed DirectDraw off-screen system blitter to check the DirectDraw scale flags to see if it supported stretching.
- Added new non-MMX 16-bit, 24-bit, and 32-bit blitters that are all much faster on Pentium Pros.
- Added additional optimized data alignment paths in the 16-bit non-MMX blitters.
- Fixed a bug in the sound mixer where key frame markers would be lost.
- Fixed a bug in the compressor where the hint file frame numbers were off by one.
- Added a switch (/C) to hide the Windows mouse cursor inside the Bink window.

# Changes from version 0.9g to 0.9h (09-02-1999)

- Fixed a stupid, but pesky audio mixing bug where the "mix at what frame" setting could be ignored.
- Fixed a sporadic crash when compressing file with more than 50000 frames.
- Fixed a bug where the left edge of the desktop could peek through when using the "clear screen to black" setting.
- Fixed a bug in the SDK when BinkCopyToBuffer wouldn't work inside when the Bink file was paused.

# Changes from version 0.9f to 0.9g (08-05-1999)

- Added a new P5-scheduled version of the 24-bit RGB blitter.
- Fixed bug when canceling a Bink compression, but keeping the existing frames.
- Fixed a bug when skipping into a Bink file inside a list file.

# Changes from version 0.9e to 0.9f (08-03-1999)

- Fixed a goofy bug in the Bink player that causes video EXE files not to use the embedded options.

# Changes from version 0.9d to 0.9e (07-30-1999)

- Added Compile to EXE support for both Bink and Smacker files.
- Adjusted the Bink data rate algorithms to minimize periodic data spikes and data drop outs. It's usually worthwhile to recompress your videos.
- Added peak data rate control in the Bink compressor - this allows you to keep the peak rates under control when applying bandwidth reallocation.
- You can now highlight and play multiple files at once (both in quick mode and advanced).
- Added a View button to the Bink and Smacker mixers.
- The players now also adjust the sound playback rate when playing back at a forced frame rate. This keeps the audio in sync on forced frame rates.
- Added new optimized MMX 24-bit and 32-bit blitters - up to 50% faster blitting in these modes.
- Added a periodic reminder to check for a new Bink version.

# Changes from version 0.9c to 0.9d (07-12-1999)

- Add detection for the AMD Athlon processor (which is pretty awesome, by the way).
- Fixed a stupid bug when playing Bink or Smacker files from the front-end that had spaces in the filename.
- Fixed a bug when pressing Escape while the video was paused.

# Changes from version 0.9b to 0.9c (07-01-1999)

- Made the front-end always call the Bink and Smacker players directly.
- Fixed the Bink player credits window with playing in 320x200 or 320x240 mode.
- Fixed a crash in the player when trying to play a non-Smacker file.

# Changes from version 0.9a to 0.9b (06-29-1999)

- Fixed a DirectDraw related bug where the video frames would never be displayed if full screen mode was requested.
- Split out video decompression time and audio decompression time in the runtime and summary info.

# Changes from version 0.8i to 0.9a (06-25-1999)

- Added separate "Advanced play" windows for Bink and Smacker.
- Added a button to check for the latest version of the RAD Video Tools.
- Added the Video Analysis window to the Bink Tools.
- Fixed looping so that the movie would remain in sync.
- Added the BinkSetSoundOnOff command to the SDK.
- Added the Smacker Player and Smacker Mixer to the front-end (just the compressor to go).
- Wrote and implemented the new Bink help system.
- Much faster (up to twice as fast) 16-bit RGB blitting on MMX machines.
- Fixed a bug where the background I/O task would consume too much CPU time when the movie was done streaming (or close to done streaming).
- Added the BinkBufferSetDDPrimary function call to the SDK to allow BinkBuffers to be used with full-screen DirectDraw applications.
- Fixed an end-of-movie sound glitch when using DirectSound.

# Changes from version 0.8h to 0.8i (05-12-1999)

- Added the Bink converter which replaces the Graphics and Sound Processor in Smacker.
- The Bink converter can now convert video *and* audio at the same time - allowing direct conversions from Bink or QuickTime into AVIs.
- Fixed a threading crash if rapidly opening and closing Bink files.
- Fixed the importing of 16-bit BMP files.
- Added importing and exporting of PNG files.
- Fixed monotonous multiple prompting for series of files when creating a list when a run of files are selected.

# Changes from version 0.8g to 0.8h (04-21-1999)

- Added a frame rate adjustment feature. Unlike the existing frame rate changer, this feature will add or remove frames to maintain your specified frame rate. So, if you have a 15 fps animation and you adjust it to 30 fps, then every frame will be copied twice.
- Added decoding of Bink audio tracks to the utilities (you can now Bink or Smack a Bink file). This allows you to archive your videos in much, much less space than uncompressed AVIs (just use a really high data rate for archival purposes, say 2000000).

# Changes from version 0.8f to 0.8g (04-16-1999)

- Fixed an overwrite bug when compressing small resolution videos.

# Changes from version 0.8e to 0.8f (04-12-1999)

- Added the Bink SDK manual and cleaned up a few problems in the SDK.
- Fixed a bug when playing under NT close to the max data rate of the device.

# Changes from version 0.8d to 0.8e (04-02-1999)

- Fixed a nasty overflow in the data rate parameters which could cause the data rate to grow linearly during a compression. If the data rate of your movies seems too high, then you probably ran into this bug.
- Smoothed playback somewhat for movies that are playing very close to the maximum data rate of the playback device.

# Changes from version 0.8c to 0.8d (03-31-1999)

- Added much better background IO routines - can approach 100% background IO even on Windows 95/98.
- Made audio decompression much faster.
- Added better frame skipping techniques.
- Improved Bink compression speed somewhat.
- Added a new redistributable Bink player (with no RAD credits) for licensing.

# Changes from version 0.8b to 0.8c (03-24-1999)

- Added a list file editor.
- Fixed a bug when Binking a wave file.
- Can detect pretty much any type of CPU now (used the Scitech code).

# Changes from version 0.8a to 0.8b (03-23-1999)

- Rebuilt the Bink installation program to include the mixer.

# Changes from version 0.0 to 0.8a (03-22-1999)

- The first version of Bink for general testing is released (Bink Release Candidate 1)!
- File format changed from earlier betas, this came with an almost 2x quality improvement however - especially on low-bandwidth materials.
- Codec technology is completely finished - tools still need minor polishing, including the integration of Smacker.
- This version of Bink requires DirectX to be installed.

For technical support, e-mail Bink1@radgametools.com
© Copyright 1994-2003 RAD Game Tools, Inc. All Rights Reserved.