Wren

Module webcodecs_codec

WebCodecs encoded chunks and AudioData (src/page/webcodecs_chunks.odin, native/js/runtime/web_webcodecs_codec.c). EncodedVideoChunk / EncodedAudioChunk are immutable coded samples; AudioData is decoded PCM with planar / interleaved copyTo. All the layouts and conversions are native.

Exposed to: Window, Worker. Source: api/webcodecs_codec.widl.

Odin: import "wren:webcodecs".

Types

handle EncodedVideoChunk : Object

Checked by the browser on every call (lookup_EncodedVideoChunk).

handle EncodedAudioChunk : Object

Checked by the browser on every call (lookup_EncodedAudioChunk).

handle AudioData : Object

Checked by the browser on every call (lookup_AudioData).

enum AudioSampleFormat : i32

The WebCodecs AudioSampleFormat enum, in the order webcodecs_chunks.odin's Audio_Sample_Format uses (format() returns -1 for a closed AudioData, which the engine maps to null).

membervalue
None0
U81
S162
S323
F324
U8_Planar5
S16_Planar6
S32_Planar7
F32_Planar8

Functions

EncodedVideoChunk_create

EncodedVideoChunk EncodedVideoChunk_create(bool key, i64 timestamp, i64 duration, bool has_duration, bytes data) raises

new EncodedVideoChunk / EncodedAudioChunk({type, timestamp, duration, data}). key is type == "key".

Raises: returns an Error (see web).

Host: EncodedVideoChunk_create :: proc(c: ^Call, key: bool, timestamp: i64, duration: i64, has_duration: bool, data: []u8) -> (u64, Api_Error)

EncodedAudioChunk_create

EncodedAudioChunk EncodedAudioChunk_create(bool key, i64 timestamp, i64 duration, bool has_duration, bytes data) raises

Raises: returns an Error (see web).

Host: EncodedAudioChunk_create :: proc(c: ^Call, key: bool, timestamp: i64, duration: i64, has_duration: bool, data: []u8) -> (u64, Api_Error)

EncodedVideoChunk_type

bool EncodedVideoChunk_type(EncodedVideoChunk chunk)

chunk.type: true "key", false "delta".

Host: EncodedVideoChunk_type :: proc(c: ^Call, chunk: Api_EncodedVideoChunk) -> bool

EncodedVideoChunk_timestamp

i64 EncodedVideoChunk_timestamp(EncodedVideoChunk chunk)

Host: EncodedVideoChunk_timestamp :: proc(c: ^Call, chunk: Api_EncodedVideoChunk) -> i64

EncodedVideoChunk_duration

i64 EncodedVideoChunk_duration(EncodedVideoChunk chunk)

chunk.duration: -1 (null) when absent.

Host: EncodedVideoChunk_duration :: proc(c: ^Call, chunk: Api_EncodedVideoChunk) -> i64

EncodedVideoChunk_byteLength

u32 EncodedVideoChunk_byteLength(EncodedVideoChunk chunk)

Host: EncodedVideoChunk_byteLength :: proc(c: ^Call, chunk: Api_EncodedVideoChunk) -> u32

EncodedVideoChunk_copyTo

i32 EncodedVideoChunk_copyTo(EncodedVideoChunk chunk, out bytes dst) raises

chunk.copyTo(dst): the bytes written. Type when the destination is too small.

Raises: returns an Error (see web).

Host: EncodedVideoChunk_copyTo :: proc(c: ^Call, chunk: Api_EncodedVideoChunk, dst: []u8) -> (i32, Api_Error)

EncodedAudioChunk_type

bool EncodedAudioChunk_type(EncodedAudioChunk chunk)

Host: EncodedAudioChunk_type :: proc(c: ^Call, chunk: Api_EncodedAudioChunk) -> bool

EncodedAudioChunk_timestamp

i64 EncodedAudioChunk_timestamp(EncodedAudioChunk chunk)

Host: EncodedAudioChunk_timestamp :: proc(c: ^Call, chunk: Api_EncodedAudioChunk) -> i64

EncodedAudioChunk_duration

i64 EncodedAudioChunk_duration(EncodedAudioChunk chunk)

Host: EncodedAudioChunk_duration :: proc(c: ^Call, chunk: Api_EncodedAudioChunk) -> i64

EncodedAudioChunk_byteLength

u32 EncodedAudioChunk_byteLength(EncodedAudioChunk chunk)

Host: EncodedAudioChunk_byteLength :: proc(c: ^Call, chunk: Api_EncodedAudioChunk) -> u32

EncodedAudioChunk_copyTo

i32 EncodedAudioChunk_copyTo(EncodedAudioChunk chunk, out bytes dst) raises

Raises: returns an Error (see web).

Host: EncodedAudioChunk_copyTo :: proc(c: ^Call, chunk: Api_EncodedAudioChunk, dst: []u8) -> (i32, Api_Error)

AudioData_create

AudioData AudioData_create(AudioSampleFormat format, f64 sample_rate, u32 frames, u32 channels, i64 timestamp, bytes data) raises

new AudioData({format, sampleRate, numberOfFrames, numberOfChannels, timestamp, data}).

Raises: returns an Error (see web).

Host: AudioData_create :: proc(c: ^Call, format: Api_AudioSampleFormat, sample_rate: f64, frames: u32, channels: u32, timestamp: i64, data: []u8) -> (u64, Api_Error)

AudioData_format

i32 AudioData_format(AudioData data)

data.format: -1 (null) for a closed AudioData.

Host: AudioData_format :: proc(c: ^Call, data: Api_AudioData) -> i32

AudioData_sampleRate

f64 AudioData_sampleRate(AudioData data)

Host: AudioData_sampleRate :: proc(c: ^Call, data: Api_AudioData) -> f64

AudioData_numberOfFrames

u32 AudioData_numberOfFrames(AudioData data)

Host: AudioData_numberOfFrames :: proc(c: ^Call, data: Api_AudioData) -> u32

AudioData_numberOfChannels

u32 AudioData_numberOfChannels(AudioData data)

Host: AudioData_numberOfChannels :: proc(c: ^Call, data: Api_AudioData) -> u32

AudioData_timestamp

i64 AudioData_timestamp(AudioData data)

Host: AudioData_timestamp :: proc(c: ^Call, data: Api_AudioData) -> i64

AudioData_duration

i64 AudioData_duration(AudioData data)

data.duration, microseconds.

Host: AudioData_duration :: proc(c: ^Call, data: Api_AudioData) -> i64

AudioData_allocationSize

i32 AudioData_allocationSize(AudioData data, u32 plane_index, i32 format, u32 frame_offset, u32 frame_count, bool has_count) raises

data.allocationSize(options): bytes for one plane (planar) or the interleaved block, in format (-1 = own).

Raises: returns an Error (see web).

Host: AudioData_allocationSize :: proc(c: ^Call, data: Api_AudioData, plane_index: u32, format: i32, frame_offset: u32, frame_count: u32, has_count: bool) -> (i32, Api_Error)

AudioData_copyTo

i32 AudioData_copyTo(AudioData data, out bytes dst, u32 plane_index, i32 format, u32 frame_offset, u32 frame_count, bool has_count) raises

data.copyTo(destination, options): converts and copies; returns the bytes written.

Raises: returns an Error (see web).

Host: AudioData_copyTo :: proc(c: ^Call, data: Api_AudioData, dst: []u8, plane_index: u32, format: i32, frame_offset: u32, frame_count: u32, has_count: bool) -> (i32, Api_Error)

AudioData_clone

AudioData AudioData_clone(AudioData data) raises

Raises: returns an Error (see web).

Host: AudioData_clone :: proc(c: ^Call, data: Api_AudioData) -> (u64, Api_Error)

AudioData_close

void AudioData_close(AudioData data)

Host: AudioData_close :: proc(c: ^Call, data: Api_AudioData)

Edit this page on GitHub