/XNZ

Header-Only APIs for Block Compressed Stream Formats

Primary LanguageCOtherNOASSERTION

XNZ

XNZ is a collection of ANSI/C89 compatible header-only APIs designed to support decoding block compressed media container formats while streaming from source (eg over a network connection or from file on disk) with the intent of queueing resources to an accelerated hardware pipeline.

Motivation to author a custom streaming block decompression library began with a desire for cross-platform parity with Apple's compression_stream API on Microsoft platforms without the need to explicitly bootstrap zlib. xnz_png_inflate_blobs provides an analogous implementation using compression_stream_process with the COMPRESSION_ZLIB algorithm for comparison.

BC[#], KTX and GDeflate container support to come. No roadmap for LZ4 as Apple's compression_stream and Pixar's USD implementations are satisfactory.


Library Category Description Specification
xnz.h decoder bitstream loading/decoding from memory RFC 1951
xnz_icc_profile.h colorspace color profile loading/decoding from file/memory ICC
xnz_bmp_image.h image image encoding/export to file/memory BMP
xnz_dds_image.h image image loading/decoding from file/memory DDS
xnz_png_image.h image image loading/decoding from file/memory PNG
xnz_sgi_image.h image image loading/decoding from file/memory SGI

XNG

XNG is a sister layer that extends XNZ with other image formats that aren't based on block compression and additionally wraps all XNZ header-only library implementations for consumption via a single shared library/API.


File Category Description Type
xng_image_formats.h enum xng image api enumerations + typedefs ENUM
xng_image_buffer.h buffer raw pixel buffer raster routines PIXELS
xng_raw_image.h image image loading/decoding from file/memory UINT8
xng_fpf_image.h image image loading/decoding from file/memory FLOAT32
xng_ttf_font.h font parse, decode, and rasterize characters from truetype fonts TRUETYPE
xng_font.c virtual base "class" to expose all component font apis STRUCT
xng_image.c virtual base "class" to expose all component image apis STRUCT
xng.h header global library header to expose all xnz + xng apis HEADER

XNG is the modular Image Resource Component Layer responsible for loading and queuing transfer of texture data to 3rdGen's Accelerated Graphics Layer, Core Render. CoreRender's C libraries embody the foundational layer of 3rdGen's proprietary simulation engine and cross-platform application framework.