This documentation is for Bink 1 and Bink 2 (which are licensed separately).
The minor versions are released in sync, so, for example, 2.1a (Bink 2) and 1.990a (Bink 1) are released at the same time.
This documentation was generated for Bink versions "2.5p/1.100p".
Added all new Unity integration for Windows! Supports GL, D3D9, D3D11, GPU-assist, rendertargets,
multichannel audio, and is fully multithreaded (up to 4 core decoding). Supports Bink 1 or Bink 2.
- With BinkGPU on GL, we now use persistent buffers if available - this gives a large
reduction in CPU driver time on some GPUs.
- Added D3D 12 BinkGPU implementation on Windows.
- Added D3D 12 Binktextures and BinkGPU implementation on Xbox One.
- Added feature to stream Bink into memory and then play out of the memory once fully loaded. Use a size larger than the Bink file size to BinkSetIOSize to trigger this mode.
- Made the BinkGPU GL implementation use a dummy alpha texture instead of relying on driver
consistency when sampling from unbound textures.
On Xbox 360, PS3 and Wii, fixed cache-clearing an extra 8 scanlines of texture data on videos that had a divisible by
16 or less height (height%32 == 1 to 16). This could crash on a dcbst instruction depending on how your texture memory was mapped.
- Added Telemetry support to Bink Orbis.
- Added hack workaround for Bink 2 GPU on AMD 5800 cards for DX11.
- Fixed a crash when BinkGetPlatformInfo-ing the sound submission thread on PS4 when no Binks had an open sound track.
- Fixed a bug when playing a Bink 2 movie on the GPU that has alpha, but you chose not
to decompress the alpha.
- On the iOS simulator, fixed a link error with Bink 2.
- Made Bink 1 always blit the entire frame with DIBSections (prevents worse than
usual tearing issues on slow scrolling videos in Aero mode on Windows).
- Multithreaded the resizing of videos during compression - compression can be
many times faster if you are resizing.
- On Android x86, used a dummy silence sound buffer to prevent clicks and to avoid
terrible performance if the sound started skipping.
Bink 2 now has GPU video decoding! This is generally two to three times faster than CPU-only decoding alone! BinkGPU
uses the CPU to decode the bitstream, and compute shaders on the GPU for everything else! Available for
Windows DirectX 11, Linux GL 4.3, Sony PS4 and Microsoft Xbox One. Bink 2 is now even faster!
Switched to PS4 SDK 1.5.
- Switched to GCC 4.8 on Linux 64.
- Fixed a bug where SSSE3 instructions were being generated on Linux (in places they shouldn't have been).
- On PS4, moved the default for the sound and IO threads to core 4 and bumped the sound thread priority (should help with UE3).
- Added a way to query the sound submission thread pointer on PS4 using
BinkGetPlatformInfo and the BINKPLATFORMSUBMITTHREADS enum.
- Moved to the QFE 11 XDK on Xbox One.
Fixed deblocking artifact if you decompressed a video with fewer cores than slices that you compressed with. So, for example, if you compress with 2 slices and use 1 core to decode, then you should update (and re-encode).
- Removed the software blitters for Bink 2 Android.
- Lowered the default variance adaptive quantization (VAQ) level (this will
slightly improve most videos).
- Added an option to control the VAQ level in the Bink 2 compressor (including turning it off completely).
- Allow use of '+' on numeric command line switches for easier setting
of option flags (you can now use '/v512+8192' instead of '/v8704').
Added Windows RT (Windows Store Apps) support for Bink 2 and Bink 1. Includes x86,
x64, and ARM DLLs. x86 and x64 are as lighting fast as regular Windows, and ARM can play 720p 30 Hz video comfortably.
- Allow you to set the engine and mix objects for OpenSL on Android (for
Android platforms that let you only open one SL context).
- Fixed a crash bug on the Bink 2 alpha software blitters.
- On Xbox One, create the Xaudio object with XAUDIO2_DO_NOT_USE_SHAPE (takes less hardware resources).
- On Xbox One, set 8 channel output so that multichannel mixing works properly.
- On PS4, made the audio when pausing and resuming less latent.
- Use new threading primitives on Windows, Xenon, Xbox One and Windows RT.
- Slightly better motion-comp on the edges of movies that are non-divisible by 32 in the width or height.
Added Wii-U support!
- Added some docs about using BINKFROMMEMORY with local memory when using the SPU on PS3
(there is a speed hit, but only about 30% and you save the system memory).
- Fixed a problem on PS Vita where thread resources hung around.
Added Sony NGP support!
- Added background thread decompression for Wii (lets you decompress in the retrace wait
or across multiple frames).
- Fixed background thread decompression on Mac.
- Videos without sound will now only catch up to a maximum of 4 frames (before resyncing).
This prevents playback from zooming forward if you stop calling Bink for a while. You
should still call BinkPause if you are doing this intentionally.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).