Bink Video!

Bink SDK Features

The Bink SDK includes everything necessary to playback Bink movies quickly and easily. It is available for every gaming platform.

Sony PLAYSTATION ® 4 Console

  • Bink 1 and Bink 2 support - we love the PS4!
  • Available as a static library.
  • Works with the default PS4 toolchain.
  • Allows you to offload much of the video decoding onto the PS4 GPU using compute shaders - this is up to four times faster than CPU-only decoding! 4K video uses 2.3 ms CPU and 1.6 ms GPU (times overlap, so 2.3 ms is the limit).
  • Includes a complete API for blitting using the PS4 wonderful GPU that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink library is about 282 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Sony PLAYSTATION ® 3 Console

  • Available as a static library.
  • Uses the SPUs for background decompression - decompress up to ten 1280x720 or thirty-six 640x480 in the background without any PPU overhead!
  • Bink 1 supports SPU-threads, RAW, and SPURS tasks for SPU decompression. Bink 2 supports running across two PPU-threads.
  • Works with the default PS/3 toolchain (GCC and SN Systems).
  • Supports 7.1 audio output using LibAudio - PS/3 has terrific sound and Bink can maximize it!
  • Includes a complete API for blitting using fragment shaders that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink library is about 242 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Nintendo Wii U™ Console

  • Currently Bink 1 only.
  • Available as a static library.
  • Works with the default Wii U toolchain.
  • Includes a complete API for blitting using fragment shaders that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink library is about 290 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Nintendo Wii™ Console

  • Bink 1 only.
  • Available as a static library.
  • Works with the default Wii toolchain.
  • Includes a complete API for blitting using the Wii's GPU register combiners that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink library is about 142 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Nintendo 3DS™ Handheld

  • Bink 1 only.
  • Available as a static library.
  • Supports the Nintendo 3DS audio hardware directly.
  • Includes a complete API for blitting using the 3DS's GPU register combiners that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink library is about 145 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video frames in memory (12-bits per pixel) and a one second data rate buffer. This is much less memory than other codecs need.
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions. By default, the Bink IO system uses all asynchronous background reading.

Sony Playstation ® Portable (PSP) Handheld

  • Bink 1 only.
  • Available as a static library.
  • Works with the default PSP toolchain (GCC and SN Systems).
  • Supports libwave and simple audio for audio output.
  • Includes a complete API for blitting using multi-pass palettes that is mostly cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink library is about 165 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Sony PS Vita ® Handheld

  • Bink 1 (Bink 2 coming soon).
  • Available as a static library.
  • Works with the default Vita toolchain.
  • Includes a complete API for blitting using the Vita's GPU register combiners that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink library is about 182 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Sony PlayStation 2 Console

  • Bink 1 only.
  • Available as a static library.
  • Works with both SN Systems and CodeWarrior (we use SN Systems internally).
  • Uses one of the two PCM output channels (one on each SPU) for sound output. Will run simultaneously with other sound systems perfectly.
  • Supplies massively optimized assembly YUV to RGB converters to 16-bit, and 32-bit RGB.
  • Can access the YUV bits directly (YUV12).
  • A standard Bink player will link in about 115 KB of code and data and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video frames in memory (12-bits per pixel) and a one second data rate buffer. This is much less memory than other codecs need.
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or a starting logic sector number, or you can completely overload all of the IO functions.
  • Bink supplies a sophisticated IOP-side streaming system that does perfect asynchronous streaming and can run simultaneously with any other system IO being performed at the same time (so you can play videos during level loads).

Microsoft Windows (all versions, 32-bit and 64-bit)

  • Bink 1 and Bink 2! Bink 2 requires SSE 2.
  • Available as a DLL file that ships with your application.
  • Should work fine with any Windows C/C++ compiler (including Microsoft Visual Studio 6 and .NET which we build with).
  • Built-in support for background thread decompression - playback is twice as fast on a dual core machine!
  • Allows you to offload much of the video decoding onto the GPU using DX11 compute shaders - this is two to three times faster than CPU-only decoding (and the higher the resolution, the bigger the win).
  • Includes a complete API for blitting using fragment shaders that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • Supports the Miles Sound System, DirectSound, or waveout for sound output. We also support 5.1 or 7.1 multi-channel output using Miles.
  • Supplies super-fast MMX optimized YUV to RGB converters to 16-bit, 32-bit, and 24-bit RGB.
  • Can access the YUV bits directly in several formats (YUY2, UYUV, YUV12).
  • The Bink DLL is about 170 KB and is completely standalone (no other DLLs are required).
  • At playback time, Bink needs two full YUV12 video frames in memory (12-bits per pixel) and a one second data rate buffer. This is much less memory than other codecs need.
  • Can open from a filename string, a file handle, or you can completely overload all of the IO functions. By default, the Bink IO system does all reading on a low-overhead background thread.
  • Includes a full-featured blitting and buffering API on Windows. This BinkBuffer API can use DirectDraw, DIBSections, and overlays in RGB or YUV mode. Blitting is normally complicated on Windows due to the huge number of APIs - Bink simplies this down to one simple API.
  • Includes wrappers for alpha-blitting through OpenGL, Direct X 7, Direct X 8, Direct X 9, or D3D9 with pixel shaders. Source code included to this layer, so you can easily integrate with the rest of your 3D game. Possible to use the Bink 3D buffer API without knowing GL or DX.
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.

Microsoft Xbox One Console

  • Bink 1 and Bink 2 support - love this hardware!
  • Available both as a static library and a static link time code generation library (LTCG libs are little faster at runtime and save about 20K, but they link much slower).
  • Works perfectly with Visual Studio.
  • Allows you to offload much of the video decoding onto the PS4 GPU using compute shaders - this is up to four times faster than CPU-only decoding! 4K video uses 2.3 ms CPU and 2.4 ms GPU (times overlap, so 2.4 ms is the limit).
  • Includes a complete API for blitting using the Xbox GPU that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • The Bink libraries link to about 200 KB in your Xbox EXE.
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Microsoft Xbox 360 Console

  • Bink 1 and Bink 2 support!
  • Available both as a static library and a static link time code generation library (LTCG libs are little faster at runtime and save about 20K, but they link much slower).
  • Works perfectly with Visual Studio.
  • Built-in support for background thread decompression - use any of the Xbox cores to do the Bink decompression.
  • Supports XAudio for sound output. Includes support for 5.1 movies (decodes 6 channels of audio and routes them to the proper mix bin).
  • Includes a complete API for blitting using fragment shaders that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • Can access the YUV bits directly (YUY2 and YUV12) for fast copying to YUV textures.
  • The Bink libraries link to about 200 KB in your XBE image, and are contained in sections, so you can unload them when you aren't using Bink.
  • At playback time, Bink needs two full YUV12 video frames in memory (12-bits per pixel) and a one second data rate buffer. This is much less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can open from a filename string, a file handle, or you can completely overload all of the IO functions. By default, the Bink IO system does all reading on a low-overhead background thread.
  • Includes examples of using pixel shaders, and alpha textures.
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Bink has shipped in nearly all Xbox 360 titles since the summer 2006.

Nintendo DS Handheld

  • Bink 1 only.
  • Available as a static library.
  • Works with both SN Systems and CodeWarrior (we use SN Systems internally).
  • Supports the Nintendo DS audio hardware directly.
  • Supplies fast assembly optimized YUV to RGB converters to 8- and 16-bit RGB. Can color convert directly into back buffer or video textures.
  • Can access the YUV bits directly (YUV12).
  • The Bink library is about 145 KB and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video frames in memory (12-bits per pixel) and a one second data rate buffer. This is much less memory than other codecs need.
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions. By default, the Bink IO system uses all asynchronous background reading.

Apple Macintosh

  • Bink 1 and Bink 2! Bink 2 requires x86 (no PPC support).
  • Available as both a PPC and x86 MachO shared library.
  • Supports the Sound Manager (and sits along side the Miles Sound System) for sound output.
  • Supplies fast assembly optimized YUV to RGB converters to 16-bit, and 32-bit RGB.
  • Access the YUV bits directly (YUV12).
  • The Bink libraries are about 204 KB and are completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video frames in memory (12-bits per pixel) and a one second data rate buffer.
  • Can open from a filename string, an FSSpec pointer, or you can completely overload all of the IO functions. By default, the Bink IO system uses all asynchronous background reading on MacOS 9 and uses a low-overhead background thread on MacOS X.
  • Includes a full-featured blitting and buffering API on MacOS. This BinkBuffer API uses QuickDraw to gain direct access to the frame buffer on MacOS 8 to X. This API is compatible with the Windows version, so moving Bink playback between Windows and MacOS is painless.
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.

Apple iOS - iPhone/iPad

  • Bink 1 and Bink 2! Bink 2 requires Neon (iPhone 4+ or iPad).
  • Available as a static library (fat with slices for ARM6, ARM7, and simulator).
  • Works with Xcode.
  • The Bink library is about 182 KB at runtime and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

Android

  • Bink 1 and Bink 2! Bink 2 requires Neon.
  • Available as a static library.
  • Works with GCC toolchain.
  • The Bink library is about 164 KB at runtime and is completely standalone (no other libraries are required).
  • At playback time, Bink needs two full YUV12 video buffers in memory (12-bits per pixel) and a one second data rate buffer. This is WAY less memory than other codecs need. We don't even need extra texture memory - we can decompress directly into the textures!
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.
  • Can open from a filename string, an OS file handle, or you can completely overload all of the IO functions.

GNU/Linux for x86 CPUs

  • Bink 1 and Bink 2! Bink 2 requires x86 (no PPC support).
  • Available as a static library for GCC.
  • Supports SDL_mixer for sound output.
  • Allows you to offload much of the video decoding onto the GPU using GL 4.3 compute shaders - this is two to three times faster than CPU-only decoding (and the higher the resolution, the bigger the win). On AMD, make sure you have Catalyst 14.1 drivers. nVidia is still working on robust compute shader drivers (hopefully soon).
  • Includes a complete API for blitting using fragment shaders that is cross platform compatible with most of the Bink platforms! Use the GPU for beautiful video!
  • Supplies super-fast MMX optimized YUV to RGB converters to 16-bit, 32-bit, and 24-bit RGB.
  • Can access the YUV bits directly in several formats (YUY2, UYUV, YUV12).
  • The Bink library is about 200 KB and is completely standalone (only pthreads and glibc required).
  • At playback time, Bink needs two full YUV12 video frames in memory (12-bits per pixel) and a one second data rate buffer.
  • Can open from a filename string, a file handle, or you can completely overload all of the IO functions. By default, the Bink IO system does all reading on a low-overhead background thread.
  • Can completely overload the default memory functions, so that all memory management happens through user-supplied callbacks.