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).
| member | value | |
|---|---|---|
None | 0 | |
U8 | 1 | |
S16 | 2 | |
S32 | 3 | |
F32 | 4 | |
U8_Planar | 5 | |
S16_Planar | 6 | |
S32_Planar | 7 | |
F32_Planar | 8 |
Functions
EncodedVideoChunk_create
EncodedVideoChunk EncodedVideoChunk_create(bool key, i64 timestamp, i64 duration, bool has_duration, bytes data) raisesnew 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) raisesRaises: 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) raiseschunk.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) raisesRaises: 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) raisesnew 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) raisesdata.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) raisesdata.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) raisesRaises: 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)