Import with #import "std/vorbis_linux".

OggSyncState :: struct { data: *u8; storage: s32; fill: s32; returned: s32; unsynced: s32; headerbytes: s32; bodybytes: s32; }

ogg_sync_state.

OggStreamState :: struct { body_data: *u8; body_storage: isize; body_fill: isize; body_returned: isize; lacing_vals: *s32; granule_vals: *s64; lacing_storage: isize; lacing_fill: isize; lacing_packet: isize; lacing_returned: isize; header: [282]u8; header_fill: s32; e_o_s: s32; b_o_s: s32; serialno: isize; pageno: isize; packetno: s64; granulepos: s64; }

ogg_stream_state.

OggPackBuffer :: struct { endbyte: isize; endbit: s32; buffer: *u8; ptr: *u8; storage: isize; }

oggpack_buffer.

VorbisInfo :: struct { version: s32; channels: s32; rate: isize; bitrate_upper: isize; bitrate_nominal: isize; bitrate_lower: isize; bitrate_window: isize; codec_setup: *void; }

vorbis_info.

VorbisDspState :: struct { analysisp: s32; vi: *VorbisInfo; pcm: **float32; pcmret: **float32; pcm_storage: s32; pcm_current: s32; pcm_returned: s32; preextrapolate: s32; eofflag: s32; lW: isize; W: isize; nW: isize; centerW: isize; granulepos: s64; sequence: s64; glue_bits: s64; time_bits: s64; floor_bits: s64; res_bits: s64; backend_state: *void; }

vorbis_dsp_state.

VorbisBlock :: struct { pcm: **float32; opb: OggPackBuffer; lW: isize; W: isize; nW: isize; pcmend: s32; mode: s32; eofflag: s32; granulepos: s64; sequence: s64; vd: *VorbisDspState; localstore: *void; localtop: isize; localalloc: isize; totaluse: isize; reap: *void; glue_bits: isize; time_bits: isize; floor_bits: isize; res_bits: isize; internal: *void; }

vorbis_block.

VorbisRead :: #type (destination: *void, size: usize, count: usize, source: *void) -> usize
VorbisSeek :: #type (source: *void, offset: s64, whence: s32) -> s32
VorbisClose :: #type (source: *void) -> s32
VorbisTell :: #type (source: *void) -> isize
VorbisCallbacks :: struct { read: VorbisRead; seek: VorbisSeek; close: VorbisClose; tell: VorbisTell; }

ov_callbacks.

VorbisFile :: struct { datasource: *void; seekable: s32; offset: s64; end: s64; oy: OggSyncState; links: s32; offsets: *s64; dataoffsets: *s64; serialnos: *isize; pcmlengths: *s64; vi: *VorbisInfo; vc: *void; pcm_offset: s64; ready_state: s32; current_serialno: isize; current_link: s32; bittrack: float64; samptrack: float64; os: OggStreamState; vd: VorbisDspState; vb: VorbisBlock; callbacks: VorbisCallbacks; }

OggVorbis_File.

VorbisDecode :: (input: []u8, output: *Vec(u8), max_frames: s64, audio: *VorbisAudio) -> bool

Replaces OUTPUT with the decoded samples of the single Ogg Vorbis stream INPUT holds: interleaved, signed 16-bit little-endian. False, with OUTPUT empty, for anything else: an empty, damaged or truncated stream, trailing bytes, chained streams, a stream whose decoded length differs from its declared length, or one longer than MAX_FRAMES frames.

Source ↗ · All modules