Bink Development History
This change log includes the entire Bink development history.
Changes from version 1.9q to 1.9r (01-21-2010)
- On PS3, we switched back to use cellSpursEventFlagWait (you should insure that exitIfNoWork is set to false in cellSpursAttributeInitialize or cellSpursInitialize).
- On the PS3, upgraded to SDK 310.
- On Windows, fixed a bug when scheduling async decompression of more than 64 background frames.
- On Windows, turn off audio rate adjusting for data rates that are exactly 44100 or 48000 or when you are running on a single CPU. This fixes some skipping problems on older machines.
- On Windows, added a timer option that forces use of timeGetTime instead of QueryPerformanceCounter - to enable it, set the environment variable RAD_USE_TGT to 1 (can be useful as a workaround on old AMD boxes).
- Fixed a rare divide overflow in BinkGetSummary.
Changes from version 1.9p to 1.9q (11-02-2009)
- Fixed a bug in the PS3 GCM texture example - if your mapped memory allocator doesn't align to 128-byte addresses, then you need this apply this change.
- Fixed a regression where small Bink files still streamed (even though they could fit in the IO buffer).
- Made it safe to call Bink from multiple threads using different HBINK handles without using a mutex.
- Made it possible to change sound providers after you have set one (if there are no Bink files open).
- Added a BinkSetWillLoop function that tells Bink that you want to loop the video during playback - this lets Bink seek back to the beginning of the file to hide the disc seek hitch when you loop around.
Changes from version 1.9n to 1.9p (09-02-2009)
- Added support for the Nintendo DSi.
- Rewrote the IO system on the DS and DSi - it saves up to 25% of the CPU. Everyone should upgrade.
- Sped up the SPU based PS3 decompression for SPURS (uses less SPU and PPU cpu while waiting).
- Changed the DX9 support on Windows to always use system textures with dirty rectangle updating - this gets better render overlap.
- Added Bink texture support code for DX10 on Windows.
- Added Korean documentation.
- Optimized the initial file loading on all platforms - we now do fewer start up IOs.
- Dropped Xaudio 1 support on Xbox 360.
- Added some alignment constraints to speed up file IO on various platforms.
- Fixed a bug where dirty rectangles weren't being returned correctly.
- Fixed a rare deadlock on Vista (when a user unplugged USB speakers or headphones during playback).
- Made the Windows 64-bit player use the 32-bit registry, so that it finds all the 32-bit settings.
Changes from version 1.9m to 1.9n (04-02-2009)
- Built with March Xbox XDK - fixes a sound crash when using an older Bink on the March XDK.
- Built with the 250 Sony SDK.
- Built with the Wii SdK 3.2 (patch 3).
Changes from version 1.9L to 1.9m (03-16-2009)
- Fixed a rare bug that would cause the background IO thread to use 100% of the CPU when IO was suspended. If you are loading data while streaming a video, this will greatly help your performance (especially on PS3 which doesn't have a spare core to hide the problem).
- Switch the MacOS X version of the Bink library to use Unix paths (no more FSSpecs).
- Fixed the screen vertices on Windows, Xbox and Xenon, so that videos will play properly with bi-linear turned off.
- Changed the Wii texture code to draw in 32x32 pixel chunks - this almost doubles (!) the texturing speed (better texture cache usage), and it fixes the previous problem of artifacts when scaling a texture (which means the Wii texturing precision problem was in triangle setup and not the texture iterators as I previously suspected). Note that this fix is in WiiTextures.c, which is sample code that you generally integrate into your game, so make sure you merge these changes!
- Cleaned up the 3D window resizing code in the Windows examples.
- Added error reporting to the SPU setup code, so you can call BinkGetError to better see what went wrong.
- Fixed a crash when using BinkMix to remove a track that wasn't present in the input file.
Changes from version 1.9k to 1.9L (01-14-2009)
- Worked around yet another code-gen bug on the Xbox 360 (which led to noisy audio).
Changes from version 1.9i to 1.9k (01-01-2009)
- Fixed a bug in the new BinkDoFramePlane function.
- Switched to the November Xbox 360 XDK (with hotfix).
- Fixed a bug on Windows where the video could play too fast for the first few seconds after a loop.
- Fixed a linker issue on Win64, where MSS64.DLL wasn't being delay loaded properly.
- Added SIMD optimizations in the Bink audio decoder for PSP.
- Switched the latest GCC and to the GCC linker on PSP.
- Switched to CodeWarrior 1.0 on Wii.
Changes from version 1.9h to 1.9i (10-31-2008)
- Added SIMD versions of the Bink audio decoder for MMX, SSE, SSE2, PS3 VMX, Xbox 360 VMX, and Sony PS2. The Bink audio decoder is already really fast (usually less than a few percent on most platforms), but it's now faster still.
- Added the new BinkDoFramePlane function which lets you decompress specific planes of a video frame (like just the alpha, or just the Y).
- Added support for Miles 7.2d and up.
- Fixed two bugs in the Nintendo Wii GPU color conversion sample code. The first bug would draw your movies too bright (blacks would be slightly gray). The second bug selected three indirect stages instead of two, so game state could be incorrectly inherited. These bugs were fixed in wiitextures.c which is supplied in source form, so be sure to update the copy in your game.
- Fixed a bug in the Wii audio code where very long movies (around 8 minutes) would start to fall out of sync.
- Fixed sync problems for all Windows sound providers (DirectSound, waveOut, and Miles) where newer sound chipsets (most motherboard sound chips) that have a natural sample rate of 48000, will play non-48K audio (like 44100 Hz) at the incorrect rate (like 44130 Hz). This slight clock difference slowly leads to sync problems in longer movies. We now measure the sound rate and slowly compensate the video to match. It's amazing that in 2008 we are still having these problems.
- On the Nintendo DS, added the embedded middleware notices.
- On the PS3, added vectorized sound mixing in the hand-off to libaudio. This is one of the few tasks done on the PPU and it only uses about 1%, but, in any case, it is now about 3.5 times faster.
- Switched the PS2 example code to use GPU color conversion. This uses about half the dynamic memory during playback and doubles the amount of CPU that Bink can use for decompression. This means you can now playback much higher quality Bink movies on PS2. Since this technique is so much better, we removed the software blitters to save another 32K in code space. You can still use the old Bink library, if you don't want to update to the new technique (but there's no reason not to switch).
- Fixed a bug on the Xbox 360 and Win32, where if you were playing two videos simultaneously on one background hardware thread, only one video would be advanced.
- Fixed a bug in the DirectSound code, where long thread delays during playback would play the previous contents of the audio buffer (leading to looping audio), instead of silence.
- Fixed a bug on the Xbox 360 where you could get an XAudio 2 assert if you changed the master volume of a mono track.
- Updated the analysis window with more modern data rate target graphs.
- Added Smacker 4.2d to the RAD Video Tools.
Changes from version 1.9g to 1.9h (05-20-2008)
- Made the RAD Video Tools use registry for settings, so that the 64-bit player can see the 32-bit settings.
- On the PS3, fixed a bug in the GCM example code where the SPU decompression would fail on movies that had a non-divisible-by-32 width.
- Shrunk the stack sizes on the PS3.
- Fixed a bug playing ancient Bink files on single CPU machines.
Changes from version 1.9f to 1.9g (04-07-2008)
- Added support for XAudio 2 on the Xbox 360.
Changes from version 1.9e to 1.9f (03-07-2008)
- On the PS3, set an error when using an aligned structure for BinkRegisterFrameBuffers (instead of just crashing).
- On the Wii and GameCube, fixed a rare problem with IO buffer alignment if you did a BinkGoto exactly while the final IO of the file was in still progress (thanks Mattias!)
Changes from version 1.9d to 1.9e (02-12-2008)
- Fixed a bug in the Xbox 360 mixbin code, where volume would behave oddly.
Changes from version 1.9c to 1.9d (02-06-2008)
- Fixed a bug in the PS3 SPU code when playing multiple audio tracks (5.1 or 7.1 audio).
- Fixed a silly bug in the PS3 example code where the example would crash if it couldn't find the Bink SPU elf.
- Fixed a bug in the Windows Miles integration code where stereo audio tracks might not play in the rear speakers correctly.
- Always allocate two video buffers, even if the file contains all key frames. This allows us to properly use async decompression on these file (async requires two buffers).
- Fixed a distribution problem where the latest Win64 Bink player wasn't being included in the RAD Video Tools.
- If you request alpha channel support, and the input movie doesn't have an alpha channel - we just turn off alpha in the Bink file (rather than encode an all-zero alpha plane). Also added an option to override the "no alpha channel present" warning.
- When running on Win64, the RAD Video Tools now calls the 64-bit player automatically.
Changes from version 1.9b to 1.9c (01-15-2008)
- On the Nintendo DS, fixed a bug with videos that had very little data changing from frame to frame.
- Updated the documentation of BinkStartAsyncThread for SPURS tasks.
- Built the PS3 version with system software 210.
Changes from version 1.9a to 1.9b (12-12-2007)
- Added pre-written SPURS task and RAW support libraries for the PS3 SPU asynchronous decompressor.
- On SPURS, allow the audio codec to be swapped out to make more room when decompressing 1080p movies.
- Wrote SIMD SPU audio decoder routines (which lowered the audio decompression time on the SPU by 25%).
- Preload a little more data on the SPU routines to get better overlap (which allowed me to shrink the overall memory footprint a bit).
- Switched a bunch of temporary buffers to the stack with alloca on Windows, Xbox 360, PS3 and SPU. This usually lets us load higher resolution movies in tight memory situations.
- Return from BinkNextFrame and BinkGoto if there is an asynchronous decompression already in progress.
- Fixed an IO buffer problem on the Wii, that would cause very small Binks to fail to load.
- In the RAD Video Tools, try using our built-in file readers for TIFF and JPEG before trying QuickTime - this is much faster.
- Improved the Xbox 360 mix bin support code, so that you can modify the speaker mix during playback.
- Switched to the November Xbox 360 SDK.
- Fixed a bug where ancient Bink files (created before January 2000) would play incorrectly on multi-CPU boxes.
- Fixed a filename length overrun when creating Bink files in very deep file paths.
Changes from version 1.8x to 1.9a (11-04-2007)
- The big asynchronous decompression release! Bink now supports built-in background decompression on Windows, Xbox 360 and Sony PS3 (using SPUs). All of this is done super cleanly, it requires very few code changes, and you don't have to do any direct multi-threaded coding at all.
- Added SPU decompression support on the PS3 - Bink now takes no PPU time at all! You can play up to ten 1280x720 on the six SPUs at the same time, or up to 36 640x480 movies simultaneously! The PS3 is really fast when you can harness the SPUs.
- Added support for background decompression on Windows. All games should use threaded decompression now - it is faster even on single core CPUs (because the blitting takes place concurrently with decompression). The standalone Bink Player has also been threaded.
- Dropped the requirement to do a Sync_Bink_textures on Xbox 360, PS3, and Wii. We now do the cache flush ourselves in the codec (which is faster).
- Added some clean-up code to the Draw_Bink_textures function on Wii, so that the GX API isn't left in such a weird state.
- Added a FrameChangePercent field to the Bink structure, so you don't have to calculate it with the BinkGetRects function.
- Added some optimizations on Xbox 360, PS3 and Windows 64. Cartoon style videos are up to 15% faster.
- Added support for background decompression on the Xbox 360.
- Fixed the sound sync on PSP after resuming from a paused state.
- In creating the SPU version, cut the library code/static data size by about 20K on all platforms.
- Put more runtime temporary data on the stack - this saved about 26K of data previously allocated in BinkOpen.
- No longer allocate the delta mask plane unless you call BinkGetRects or BinkCopyToBuffer - otherwise we save another 8K or so.
- Added the total video time in the file info window.
- Show the video name in the Bink Player window.
- Added support for Miles 7.1b.
- Switched to the August Xbox 360 SDK.
Changes from version 1.8w to 1.8x (08-11-2007)
- Fixed a problem in the Bink file header validation where partially compressed Bink files would be seen as corrupted. This meant you couldn't preview Bink files while they were still compressing in the front-end tool.
- Added more bulletproofing to the audio frame reader to handle additional corrupted input Bink files.
- Switched to the 1.90 PS3 SDK, and built with GCC 4.11. The new GCC is terrific - it sped up decompression on the PS3 by 10%!
- In the Bink compression tool, added an option to apply the alpha pre-multiplication before compressing. Pre-multiplied alpha gives better quality, it filters better, and it's faster - everyone should use it. Also, added an option to use pre-multiplied alpha during filtering (like resizing) and then convert back before compression.
- Updated the examples on all of the platforms to allow you to specify whether you used pre-multiplied alpha.
- Updated the PS3 GCM example to included a simple manager for mapped memory.
- On Xbox 360 and PS3, rewrote the pixel shaders to be more efficient (although the GPUs are so fast on these platforms that it doesn't matter much).
- On Windows, rewrote the 2.0 pixel shaders to be more efficient, and added an optional pixel shader 1.1 path to run on older DX8-class hardware.
- On Wii, changed the example code to take into account as much information about the Wii texture iterators as is public to minimize resampling errors when scaling a Bink video texture. It's always best to try to play the movies at 1 to 1, though, since it seems impossible to remove all possible scaled sampling errors.
- On Wii, fixed the pause feature so that it resumes the audio tracks immediately. Previously, it could take up to 700 ms for the audio to begin when you paused and then resumed audio.
- Fixed a problem in the front-end tools, where filenames in a list file had to be less than 128 characters long.
Changes from version 1.8v to 1.8w (07-13-2007)
- Wrote new optimizations for Xbox 360 and PS3 that give around a 5% speed improvement.
- Fixed an overflow bug where Bink movies around the 400 MB range might be preloaded rather than streamed.
- Fixed a bug on the PS3 where a small amount of audio could be dropped at the beginning of playback if the system was under load.
- Added more bulletproofing when reading the Bink header.
- Fixed a bug on Wii and GameCube where very small files (and preloaded files) using a file offset wouldn't open.
- Added new documentation describing best practices for handling critical errors on each of our platforms.
- Made 8-bit audio tracks play on Wii, PS2, PS3, and PSP. Note that you should normally use 16-bit audio, since 8-bit input is simply scaled up to 16-bit anyway.
- Compiled the Nintendo DS SDK to allow it to be called from 32-bit or 16-bit code.
- Fixed a bug where the Windows Bink player wouldn't clear the bottom of the playback window, if the window was scaled.
- Made the File Info button show up to 256 tracks in a Bink file (it previously only showed 8).
Changes from version 1.8u to 1.8v (05-22-2007)
- Fixed a bug on Windows that caused a crash on machines that have SSE, but not SSE2 (older Athlons mostly).
- Added a delay in the PSP audio shutdown to make sure the sound buffer has spun down.
Changes from version 1.8t to 1.8u (05-22-2007)
- Bulletproofed the video and audio decoders against bad input file data - Bink can play right through any data corruptions now.
- Changed the frame skipping logic to handle playback at incorrect fixed frame rates more smoothly. Playing an NTSC movie on PAL device will be much nicer now, for example.
- Worked around three, count 'em, three code generation bugs with VC 2005 that were causing the RAD Video Tools to exit.
- Increased a few of the internal buffer sizes to handle super long filenames.
Changes from version 1.8s to 1.8t (05-10-2007)
- Changed the default video blitter on Windows to DIBSection. DirectDraw is becoming less reliable and modern machines are more than fast enough to use DIBs.
- Fixed a very rare compression issue when compressing with alpha planes (which also improves alpha quality).
- A bunch of changes under the hood of the Bink audio compressor.
- Bink decompression could previously only open 8 tracks per Bink due to a stupid bug - you can now open 32 per movie.
- Added restrict to many of the internal decoder pointers so that RISC compilers can do a bit better optimizing.
- Added an option for pure mono out on the Wii.
- Fixed the Bink version info so that it shows up on Vista correctly.
- Added internal SSE versions of memcpy, memmove and memset on Win32.
- Put a few of the small global allocations into a fixed pool to avoid fragmentation or remnant allocations (especially for PS3).
- Updated to the PS3 1.60 SDK.
- Updated to the Xbox 360 April SDK.
- Updated to the Visual Studio 2005 on Windows.
- Updated to the Wii 2.4 patch 3 SDK.
- Renamed a few of the fft math routines to avoid conflicting with other middleware.
- Fixed a few of the example programs for the PS3 for SDK 1.60.
- Forced the first Bink frame to always be a key frame (avoids surprises if you use the compression hint window incorrectly).
Changes from version 1.8r to 1.8s (01-25-2007)
- On the PS3, added GCM library example code - now you can get Bink running with a GCM based game almost immediately.
- Change the PS3 library to free the background threads when you call BinkFreeGlobals instead of when you close the last Bink file. This lets you run Bink on other threads without having to worry so much about thread shutdown deadlocks.
- Made the PS3 examples using cellFs directory functions to avoid a memory leak in the C runtime library directory functions.
- Rebuilt the library for version 2.4 of the Wii system libraries. If you are using 2.4, then you must upgrade to this version.
- Added some docs about handling the home button on the PSP.
- Fixed the DX9 pixel shader example code for Windows so that it sets the vertex declaration each frame instead of at setup time.
- Made the tools handle the maximum length Windows file names.
- Changed the way Bink handles small delays (60 to 400 ms) during playback - avoids a very rare pathological case where Bink would keep skipping frames, thinking it was lagging behind the audio.
Changes from version 1.8q to 1.8r (10-04-2006)
- Fixed a very rare bug in the threaded IO provider that is used on Windows, Xbox 360, and PS3. If you are using one of these platforms, you must update.
- Fixed a problem where a mono sound track couldn't be spacialized to the back right speaker on Xbox 360. Stereo tracks worked fine.
- Fixed a problem in the simple Win32 3D example where the second frame was always skipped.
- Fixed a bug on PS3 and PSP where file IO errors weren't being detected properly, leading to a crash on media eject - updating is required.
- Updated the PS3 library and examples to the 096.002 SDK.
- Updated to the Xbox 360 September XDK build.
Changes from version 1.8p to 1.8q (09-13-2006)
- Fixed a silly bug where the batch editor window wasn't popping up.
- Fixed a bug in the optional VRAM allocator in the PSP SDK (not sure if anyone actually uses this).
- Fixed a bug in the 360 SDK where pausing and resuming a Bink would put the audio tracks slightly out of phase.
- Made file IO a little more efficient on files with a data rate less than 128KBps.
- Fixed an IO problem when reading from the very end of a file that had a data rate of less than 128KBps.
Changes from version 1.8o to 1.8p (09-07-2006)
- Added a new video texturing example for the Wii that uses the GPU to do color conversion (for video texturing).
- Updated the GameCube SDK to also use GPU based color conversion and removed the old software blitters (which saves a bunch of runtime memory).
- Fixed a problem where the JPEG library would infinite loop if it attempted to open some types of PNG files.
- Fixed a regression bug in the 16-bit blitters on the NDS.
- Removed the CRT library from the Bink tools and DLL on Win32 - saves about 60K in the player and DLL.
- Updated the Japanese Bink SDK manual to the latest version of the docs.
Changes from version 1.8n to 1.8o (08-07-2006)
- Added a Nintendo Wii version of Bink!
- Fixed a bug when importing resized TGAs with an alpha channel.
- Changed the Windows, Mac, Xbox, 360, PS3 and PSP IO functions to stay on aligned file offsets when reading. This can make the data reading faster, since the OS doesn't have to break up each IO into multiple chunks (especially good for the Xbox and Xbox 360).
Changes from version 1.8m to 1.8n (07-21-2006)
- Fixed a crash in the Bink compressor when compressing a file with an alpha channel to very low data rates.
- Fixed a bug where the X and Y offsets were being ignored when importing a file with an alpha channel.
- Fixed a rare, nasty crash in several of the RAD Video Tools when memory returned from the system was oddly aligned.
- Added PSP support for the system simple audio library (and made the example use it).
- Fixed a thread handle leak on PSP.
- Fixed the global audio buffer memory being leaked on PSP.
Changes from version 1.8L to 1.8m (07-17-2006)
- Added a Sony PSP version of Bink! The PSP SDK is available immediately.
- Fixed a mutex locking bug on the PS3 that would lock if you played two movies in a row on a background thread.
Changes from version 1.8k to 1.8L (06-22-2006)
- Added a Sony Playstation 3 version of Bink! The PS3 SDK is available immediately.
- Changed a D3D setup flag in the Windows 3D examples that was preventing ATI 1900 cards from rendering.
- Updated a few of the Xbox and Xbox 360 examples to play lumpy data rate movies more smoothly.
- Added details in the Bink docs about the Bink cross platform pixel shader blitting API (supplied in BinkTextures.h). This API automates pixel shader blitting on Windows, Sony PS3, Xbox, and Xbox 360.
Changes from version 1.8J to 1.8k (05-07-2006)
- Added a Mac Intel version of Bink. The MacIntel SDK is available immediately, and a Bink player for Mac Intel machines can be downloaded from our website.
Changes from version 1.8i to 1.8J (05-02-2006)
- Added a Win64 version of the Bink player. You can even compile to Win64 video EXEs. On Win64, playback is about 15% faster than the 32-bit version of Bink. A beta Win64 SDK is also available. Thanks to AMD for their kind support of this porting effort!
- Added new DirectX 9 pixel shader example code for Win32 and Win64. Pixel shaders are the fastest and highest quality method to display Bink videos. If you are using Bink in a 3D game on Windows, you should definitely update and use the new pixel shader example code.
- Fixed some stuttering when closing and re-opening the cover of a Nintendo DS. You must call BinkSetSoundOnOff around the close and re-open.
- Fixed the 5.1 speaker channel settings on Xbox 360 for newer versions of the XDK.
- Sped up the loading of single image series from a network drive (sometimes massively).
- Fixed a crash when using an offset to crop a series of single images that had alpha.
- Cleaned up and simplified the Windows 3D texture examples.
Changes from version 1.8h to 1.8i (02-23-2006)
- Fixed a problem in the dirty rectangle calculations when the height wasn't divisible by 16.
- Added the latest version of Smacker Player in the RAD Video Tools.
Changes from version 1.8g to 1.8h (02-14-2006)
- Compressor uses a slightly different error metric to help really low data rate Binks (like for NDS).
- Fixed a bug when converting QuickTime files that have internal scale factors (very rare).
- Changed the TGA detection code to avoid matching some QuickTime movie files.
- We now free a global 30K static audio buffer on the NDS when all Bink files are closed (saves 30K when Binks aren't in use).
- Worked around a deadlock problem on some DirectSound drivers when pausing or stopping a DirectSound buffer.
- Set the alpha bit on in the 5551 format on Nintendo (since they do only have alpha blitters).
- Fix a bug on some sound formats where a looping Bink file would play as static every other loop.
- Switched to the new RAD_IOP from Miles (you can now control the hardware audio directly, if you want to replace Multistream.
- Fixed a problem where specifying a sound track in a Bink file to convert to an AVI or wave file was converting the wrong track.
- Made the 3D example code on Windows and Xbox use the discard flag if all of the pixels are going to be updated (for speeding up full frame copies). This lets the D3D render a frame ahead on full frame updates.
Changes from version 1.8f to 1.8g (09-28-2005)
- Fixed a channel assignment bug with stereo tracks on the Xbox 360.
- Built with latest Xbox 360 system software.
Changes from version 1.8e to 1.8f (09-18-2005)
- Worked around a bug in QueryPerformance Counter on the Xbox 360.
- Don't try to check the sound format of still images which cause DirectShow to occasionally crash on importing.
Changes from version 1.8d to 1.8e (09-14-2005)
- Built with final version of Xbox 360 system software.
- Added support for Miles 7 on Windows (you can now do 5.1 on Windows)! The Miles example shows how to do 5.1 with just a few code changes.
- Worked around an Xbox 360 deadlock problem when playing audio with the system audio player while a Bink is playing.
- Fixed the mix bin volume calculation on Xbox and Xbox 360, where the linear to loudness scale was being applied twice.
- Fixed a crash in BinkOpen if you ran out of memory on a little allocation that followed a larger allocation.
- Fixed a crash in the BinkGetRealTime function when run on a 1 fps movie.
- Fixed BinkShouldSkip on Bink files that don't have an audio track.
- Moved the minimum read size on Xbox and Xbox 360 up to 128K since most movies are use HD data rates.
- Fixed importing of QuickTime files that are wider than 4096 pixels.
- Fixed a crash when using a pixel offset on a still image that had an alpha plane.
- Fixed importing of still image files that are wider than 4096 pixels.
- Detect dual-core Athlons.
- Fixed the Smacker player not playing off another drive letter.
Changes from version 1.8c to 1.8d (06-24-2005)
- Added support for the beta Xbox 360 hardware (June XDK).
- Fixed 8-bit audio playback on Nintendo DS - we still recommend using 16-bit audio, though.
Changes from version 1.8b to 1.8c (05-22-2005)
- Added Nintendo DS support! Play Bink movies in your NDS games as easily as any other Bink platform.
- Added a new function called BinkControlCPUFeatures to turn on and off various features on different platforms.
- Fixed some pixel center bugs in the DX sample code that bilinear blending usually hid.
- Totally rewrote the entire YcRcB to RGB color conversion system. All new infrastructure, all new assembly blitters. This means almost 30% of Bink was replaced in this version.
- All new x86 blitters for MMX and non-MMX: almost twice as fast, less buggy, no more corner cases, and saved almost 200K in the Bink DLL!
- Added dithering to the 16-bit RGB color conversion blitters. 16-bit looks almost as good as 32-bit now.
- Added a new 8-bit palettized output mode. Also added a BinkGetPalette function to retrieve the global Bink palette.
- Moved a few more source files and data tables into Bink sections, so you save another 64K or so, when you unload the Bink section on Xbox.
- Changed a few of the examples to use BinkShouldSkip, so that they avoid locking a texture completely, if we are just going to skip the frame anyway.
Changes from version 1.8b to 1.8c (03-25-2005)
- Added all the changes for the new Nintendo DS version.
- In the Bink player, when using the full-screen stretch parameters (/w-1 /h-1), we now maintain the aspect ratio, so the video doesn't stretch oddly.
- Fixed a bug where if you paused a Bink movie before the first frame, then Bink would think it was way behind in playback and keep struggling to catch up.
- Bumped to the March XDK for the Xbox 360.
- Fixed a bug in the Redmon next-gen console version where setting the volume could cause an assert in XAudio.
- Updated to CodeWarrior 9.4 on MacOS.
Changes from version 1.8a to 1.8b (03-02-2005)
- Added new Bink for Xbox support code that allows the use of hardware pixel shaders for the YcRcB color conversion. This doubles the playback speed on an Xbox *and* uses 900 KB less memory *and* is much higher quality! Using this feature, you can now play 1280x720 HDTV movies on the Xbox!! This is such the "right thing to do" on an Xbox that it is now the default playback method - if you have old Bink for Xbox code, you should definitely update it.
- Added new Bink for Xbox examples for both normal video and alpha video pixel shader playback.
- Added a few tweaks to the Xbox 360 support.
- Fixed a silly typo that caused the pause key in the Bink player not to pause the movie.
- Made a tweak to the QuickTime audio importer. This should fix the -108 error when loading of QT audio tracks (which happens on a lot of camera movies).
- Added a option on the Linux player to not play audio. This avoids a crash in SDL on some Linux machines.
- For sound input files with a .QT or .MOV file extension, we now always try QuickTime first. This prevents broken DirectShow filters (say for MPEG splitting) from preventing QT files from converting (when they really should be read with QT anyway). We did this for video files previously, now we do it for sound too.
Changes from version 1.7d to 1.8a (02-18-2005)
- Added support for this one unreleased next-gen console from a company over in Redmond (Xbox 360).
- Added BinkGetFrameBuffersInfo and BinkRegisterFrameBuffers functions. These functions allow you to allocate the Y, cR, and cB color buffers that Bink uses internally. This allows you to do a lot of cool things, like allocating the frame buffers as 8-bit luminance textures on Xbox, and then using a pixel shader to do the YcRcB to RGB conversion so that there is no blitting overhead at all (example of this coming soon)! This also allows you to share the same frame buffer memory for multiple Bink files and save memory (as long as you don't play them all at once).
- Added a BinkControlBackgroundIO function that allows you to suspend and resume the background IO that Bink performs. This makes it really easy to load other game data while a Bink is playing - you just suspend Bink when the Bink buffer is mostly full and resume it when it is mostly empty. Great for playing a movie while your game loads level data.
- Added a BinkShouldSkip function that allows you to query whether a frame or blit should be skipped. This allows you to avoid calling BinkCopyToBuffer completely to check whether you are falling behind, so you don't have to lock a texture or DDraw surface just to find out you should have skipped anyway. It's also useful when using the BinkRegisterFrameBuffers function with textures, since you will never call BinkCopyToBuffer.
- Made an adjustment to the audio encoder that makes deep bassy tones compress much better.
- Fixed a goofy bug in the 32-bit still image importer that would cause the right-most pixels to display garbage.
- Fixed a bug in the 16-bit YUV tables that caused unaligned 16-bit blits to be slightly dim.
- For input files with a .QT or .MOV file extension, we now always try QuickTime first. This prevents broken DirectShow filters (say for MJPEG files) from preventing QT files from converting (when they really should be read with QT anyway).
Changes from version 1.7c to 1.7d (01-08-2005)
- Fixed a problem where the DirectShow importing code could lock up on the final frame.
- Fixed a problem importing some QuickTime sound files.
- Added a warning for long filenames with QuickTime.
- Fixed a problem with flic output when the final frame palette was different than the first palette.
Changes from version 1.7b to 1.7c (12-10-2004)
- Fixed a problem on the PS2 where the system libraries occasionally fail to report a disk error. We now use an IO timeout, so after 400 ms, we will fail the read.
- Added a warning when QuickTime doesn't have all of the components available to decompress an audio track.
Changes from version 1.7a to 1.7b (11-28-2004)
- DirectShow was trying to load JPEG files (presumably with the M-JPEG codec) - changed to use our internal JPEG decoder (which is way faster).
- DirectShow was trying to load GIF files - changed to use our internal GIF decoder (which is way faster) unless it is a multiframe GIF.
- Fixed a lock up with DirectShow files that don't specify an image pitch.
- Fixed a crash with DirectShow files that had a time duration of zero (which makes no sense, but whatever).
Changes from version 1.6g to 1.7a (11-22-2004)
- Added a DirectShow video and audio importer - this allows us to import a bunch of new file types! We can now import AVIs larger than 2GB, MPEG 1 videos (including the audio track), MPEG 2 videos (if you have a decoder installed), WMV videos (Windows Media), ASF files, MPEG-4 video files, DV video files, MJPEG videos, and tons of compressed audio formats (MP3 and WMA in particular). Many file types that were previously decoded with QuickTime (which is really slow) are now handled by DirectShow.
- Added support for LZW-compressed GIF and TIF files (patent expired).
- Added AMD 64, AMD Opteron, SSE3, Hyperthreading, EM64T and Windows 2003 Server detection to the System Info button.
- Switched to building radutil.dll with VS 2003 which has slightly faster code generation.
- Fixed a bug when reading 48-bit TIFF files (which we only compress as 24-bit files).
- Fixed a bug in the File Info button where the fractional part of the frame rate was reported incorrectly.
- Bink now tries to refill the IO buffer when it falls under 75% of the highest one second's worth of data rate of the file. In previous versions, Bink tried to refill the IO buffer when it fell under 75% of the total IO buffer size. This change allows you to now optionally use large IO buffers without having to worry causing occasional long delays to refill it.
- You can now use the BINKNOFILLIOBUF flag in BinkCopyToBuffer to tell Bink not to refill the IO buffer when it falls under 75% of the data rate. This is useful if you are holding a system lock and you always need BinkCopyToBuffer to complete as quickly as possible.
- Bumped the Xbox stack size up to 32K.
Changes from version 1.6f to 1.6g (11-03-2004)
- Fixed a bug where the the audio track would lose sync with the video if you paused and resumed the audio over and over (problem was most noticeable on Xbox and Windows).
Changes from version 1.6f to 1.6g (9-01-2004)
- Fixed a bug on the Mac and GameCube where an uncommon block type was not being byte-swapped as it was loaded.
- Fixed a bug in the YUV lookup tables on the Mac, GameCube and non-MMX PC where the RGB pixels were too dim (which was most noticable when clamped pixels showed up as too bright).
- Fixed a bug in BinkGetRealTime when called on the very first frame.
- Made the input YUV converter more accurate (during compression).
Changes from version 1.6e to 1.6f (8-22-2004)
- Fixed a crash in the Bink compressor on XP Service Pack 2 (SP2).
- Added some additional file I/O error checking in BinkOpen.
- Fixed a bug in the Bink for Linux where the background IO thread was taking way too much CPU.
- Fixed a bug on the Nintendo GameCube in the 64-bit divider routine that would cause sound to skip.
- Fixed a bug on the GameCube where async IO were not being cancelled when the cover was opened during BinkOpen.
- Fixed a lock up on Windows when you started playing a movie with a USB headset, but then removed it during playback.
- Moved the Bink decoder DLL base address to avoid conflicts with some XP SP2 DLLs.
- Optimized the 64-bit divider on the MacOS platforms.
- Upgraded to CodeWarrior 9.3 on MacOS.
- Fixed the Japanese documentation to show the Japanese index.
Changes from version 1.6d to 1.6e (7-30-2004)
- Added a Japanese version of the Bink SDK documentation.
- Fixed a crash in BinkSoundUseDirectSound that only happened if you called it while a Bink video was still playing.
Changes from version 1.6c to 1.6d (6-25-2004)
- Added a new PS2 video texturing example - check out "ExamPtex.c".
- Fixed the PS2 docs and the examples to use a max volume of 0x7fff for the PCM channel volumes.
- Made the PS2 back buffer example DMA uploading code a little cleaner and more general purpose.
- Made the PS2 RAD_IOPStartup and RAD_IOPShutdown calls do reference counting (so you can call RAD_IOPStartup multiple times).
Changes from version 1.6b to 1.6c (2-28-2004)
- Bink for Sony Playstation 2 is now available! Massively optimized to run on the PS/2, Bink now lets you use the same videos and API that you use on your other platforms! Thanks to Michael Abrash and Mike Sartain for all their hard optimization work.
- Many of the optimizations for the PS2 benefit the other platforms. Bink for the Xbox is 15% faster, for example. Bink for the GameCube is 20% faster.
- Made some build changes to fix problems when running on MacOS 10.3.
- Fixed a bug in the Linux system where playing two Binks at once would reset the system sound format.
- Removed the mono and 2X blitters from the GameCube library to make it smaller (and because you can use the graphics hardware to do these effects faster anyway).
Changes from version 1.6a to 1.6b (12-09-2004)
- Added some power management code to the Bink screen saver feature.
- Added support for using Bink screen savers as input (so you can recompress them, convert to AVI or wave format, or whatever).
- Made the screen saver code never change the display resolution when in preview mode (now only changes when the screen saver officially activates).
Changes from version 1.5y to 1.6a (12-06-2003)
- Bink Video EXE files can now be used as screen savers! When you make the EXE, you can choose to create a EXE or a SCR. After creating the SCR file, you simply copy it into your main Windows directory and it will be added to the list of available screen savers.
- Made the Bink player and examples use high resolution scheduling which makes most playback rates much smoother.
- Fixed a crash where turning on playback statistics on very slow movies (one frame per second or slower) would crash.
- Updated the list file processor so that it can handle series of filenames that aren't zero left-aligned (now it can handle "file8, file9, file10" and "file08, file09, file10"). To use this feature, you must highlight the longest file name (file10 in previous example).
- Fixed the DOS Smacker player so it could be compiled as an EXE.
Changes from version 1.5x to 1.5y (09-23-2003)
- Fixed a bug with non-divisible by 8 widths in the 5551 surface blitter.
- Fixed a bug with non-divisible by 16 heights in the delta (non-copy all) blitter.
- Fixed a sporadic bug that could cause DirectSound not to play on NT4.
Changes from version 1.5w to 1.5x (08-27-2003)
- Fixed a bug in the RAD Video Tools heap that was cause the RAD Batch window not to pop up.
Changes from version 1.5v to 1.5w (08-19-2003)
- Added a Bink for GNU/Linux SDK - should work on most of the modern distributions.
- Added a Bink for GNU/Linux command line video player (uses SDL_mixer for output).
- Added an option in the Windows player to view the alpha plane of a movie.
- Renamed the memory callback function, RADSetMemory to BinkSetMemory (so that you can use Bink and Smacker in the same project.
- Added a BinkDX9SurfaceType function for DX9 games.
- Fixed a problem where a skipped frame would cause BinkGetRects to always return zero rects if you called it before BinkCopyToBufferRect.
- If you pass in inverted numbers for a series of still images for the command line tools, Bink will process them in reverse order.
- Added a few checks so that we don't detect some weird TGAs as JPEGs.
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-divisible-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.