/** * SpzCodec - Niantic SPZ v2/v3 Gaussian Splat Codec * * Production-quality codec implementing the Niantic SPZ compressed format * for 3D Gaussian splats. Achieves ~90% compression vs PLY with virtually * no perceptible quality loss. * * SPZ binary layout (after gzip decompression): * [Header: 16 bytes] * [Positions: N * 9 bytes (3 coords * 3 bytes, 24-bit signed fixed-point)] * [Alphas: N * 1 byte (sigmoid-compressed opacity)] * [Colors: N * 3 bytes (SH DC coefficients, uint8)] * [Scales: N * 3 bytes (log-encoded, uint8)] * [Rotations: N * 3 bytes (v2, first-three) or N * 4 bytes (v3, smallest-three)] * [SH coefficients: N * shDim * 3 bytes (optional higher-order SH)] * * Supports: * - SPZ v1, v2, v3 decoding * - SPZ v2 encoding (3-byte first-three quaternion packing) * - SPZ v3 encoding (4-byte smallest-three quaternion packing, default) * - Streaming decode via gzip DecompressionStream * - Memory budget pre-check (G.030.06) * * References: * - W.031: SPZ decompression with fixed-point dequantization * - W.038: Dual standardization track codec abstraction * - G.030.04: SPZ buffer validation * - G.030.06: WebGPU memory ceiling on mobile VR * * @module gpu/codecs * @version 1.0.0 */ import { AbstractGaussianCodec } from './IGaussianCodec.js'; import type { GaussianSplatData, EncodedGaussianData, GaussianCodecCapabilities, GaussianEncodeOptions, GaussianDecodeOptions, GaussianStreamDecodeOptions, CodecResult, CodecMetadata } from './types.js'; export declare class SpzCodec extends AbstractGaussianCodec { private readonly codecId; constructor(); getCapabilities(): GaussianCodecCapabilities; canDecode(buffer: ArrayBuffer): boolean; decompress(compressed: ArrayBuffer): Promise; extractMetadata(buffer: ArrayBuffer): Promise; decode(buffer: ArrayBuffer, options?: GaussianDecodeOptions): Promise>; encode(data: GaussianSplatData, options?: GaussianEncodeOptions): Promise>; stream(source: string | ReadableStream, options?: GaussianStreamDecodeOptions): AsyncIterable>; } //# sourceMappingURL=SpzCodec.d.ts.map