Skip to content
Rich Geldreich edited this page Feb 13, 2026 · 165 revisions

We gratefully acknowledge the Sponsors and Supporters of this software. Without their help, this project would not exist.

Unless otherwise explicitly indicated, all documents here are Copyright © 2016–2026 Binomial LLC. All rights reserved except as granted under the Apache 2.0 license.

Here are the Release Notes.

Legal

  • LICENSE - The LICENSE covering our source code, specs and wiki documents (unless otherwise indicated). The source code LICENSE file (also Apache 2.0) is in the main repo here.
  • NOTICE - Our NOTICE file, provided in accordance with the Apache License, Version 2.0 (§4(d))
  • Other Legal/IP/License Information - GPU Texture Formats, Zstd, etc.

Conceptual Architecture: GPU Textures are Infrastructure

Codec Bitstream Specifications

Non-Copyrighted (Public Domain/CC0) Open Specifications

Copyrighted (Apache 2.0) Open Specifications

Codec Specific Articles

References, Notes

Encoder and Transcoding Pure C API Documentation

The library and transcoder module is written in C++, but we do support a plain C-API that exposes all key functionality. The C API is FFI-friendly and also designed for WASM use (when the encoder library or transcoder is compiled as a WASM WASI module). This is the API we use for native Python and in our WASI WASM modules, but it's also callable from any language that supports plain C API's. Also see the pure C API example.

C++ API Documentation

Python Support

Python support is layered on top of our C API, which is documented above. We support calling this API from Python either via the libraries compiled as WASM WASI modules (single threaded only, so compression is slow, but transcoding is fast), or via native .so or .pyd files (which internally supports multithreaded compression). We've so far tested Python support under Windows and Ubuntu Linux with Python v3.12.3. More info is here, or see the Windows build instructions. The module first tries to load native .so's or .pyd's, and if this fails it'll try falling back to our WASM WASI modules via the wasmtime package. The native code's C API is completely made available to Python using pybind11.

The higher level Python API's are not stable yet (we are new to Python), but the lower level C API it depends on is quite stable. Several low-level tests, higher-level LDR/HDR compression and transcoding tests, and a simple example explode_ktx2 command line tool written entirely in Python are in the python directory.

Examples

File Format Related References

Encoder and Transcoder Library Internals

Clone this wiki locally