// Generated from WebIDL - DO NOT EDIT
// Source: @webref/idl/webcodecs
///|
/// ImageBufferSource typedef
pub type ImageBufferSource
///|
pub extern "js" fn ImageBufferSource::to_js_value(
self : ImageBufferSource,
) -> JsValue =
#| (self) => self
///|
/// Create ImageBufferSource from AllowSharedBufferSource
pub extern "js" fn ImageBufferSource::from_allow_shared_buffer_source(
v : AllowSharedBufferSource,
) -> ImageBufferSource =
#| (v) => v
///|
/// Create ImageBufferSource from ReadableStream
pub extern "js" fn ImageBufferSource::from_readable_stream(
v : ReadableStream,
) -> ImageBufferSource =
#| (v) => v
///|
/// Check if this ImageBufferSource is AllowSharedBufferSource
pub extern "js" fn ImageBufferSource::is_allow_shared_buffer_source(
self : ImageBufferSource,
) -> Bool =
#| (self) => self instanceof ArrayBuffer || self instanceof SharedArrayBuffer || self instanceof Int8Array || self instanceof Int16Array || self instanceof Int32Array || self instanceof Uint8Array || self instanceof Uint16Array || self instanceof Uint32Array || self instanceof Uint8ClampedArray || self instanceof BigInt64Array || self instanceof BigUint64Array || self instanceof Float16Array || self instanceof Float32Array || self instanceof Float64Array || self instanceof DataView
///|
/// Check if this ImageBufferSource is ReadableStream
pub extern "js" fn ImageBufferSource::is_readable_stream(
self : ImageBufferSource,
) -> Bool =
#| (self) => self instanceof ReadableStream
///|
/// Try to get ImageBufferSource as AllowSharedBufferSource
pub extern "js" fn ImageBufferSource::as_allow_shared_buffer_source(
self : ImageBufferSource,
) -> AllowSharedBufferSource? =
#| (self) => (self instanceof ArrayBuffer || self instanceof SharedArrayBuffer || self instanceof Int8Array || self instanceof Int16Array || self instanceof Int32Array || self instanceof Uint8Array || self instanceof Uint16Array || self instanceof Uint32Array || self instanceof Uint8ClampedArray || self instanceof BigInt64Array || self instanceof BigUint64Array || self instanceof Float16Array || self instanceof Float32Array || self instanceof Float64Array || self instanceof DataView) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Try to get ImageBufferSource as ReadableStream
pub extern "js" fn ImageBufferSource::as_readable_stream(
self : ImageBufferSource,
) -> ReadableStream? =
#| (self) => (self instanceof ReadableStream) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Flatten Option[ImageBufferSource] to AllowSharedBufferSource?
pub fn ImageBufferSource::bind_as_allow_shared_buffer_source(
value : ImageBufferSource?,
) -> AllowSharedBufferSource? {
match value {
Some(v) => v.as_allow_shared_buffer_source()
None => None
}
}
///|
/// Flatten Option[ImageBufferSource] to ReadableStream?
pub fn ImageBufferSource::bind_as_readable_stream(
value : ImageBufferSource?,
) -> ReadableStream? {
match value {
Some(v) => v.as_readable_stream()
None => None
}
}
///|
/// HardwareAcceleration enum
pub(all) enum HardwareAcceleration {
NoPreference
PreferHardware
PreferSoftware
} derive(Eq, Show)
///|
/// Convert to string value
pub fn HardwareAcceleration::to_string(self : HardwareAcceleration) -> String {
match self {
HardwareAcceleration::NoPreference => "no-preference"
HardwareAcceleration::PreferHardware => "prefer-hardware"
HardwareAcceleration::PreferSoftware => "prefer-software"
}
}
///|
/// Parse from string value
pub fn HardwareAcceleration::from_string(s : String) -> HardwareAcceleration? {
match s {
"no-preference" => Some(HardwareAcceleration::NoPreference)
"prefer-hardware" => Some(HardwareAcceleration::PreferHardware)
"prefer-software" => Some(HardwareAcceleration::PreferSoftware)
_ => None
}
}
///|
/// AlphaOption enum
pub(all) enum AlphaOption {
Keep
Discard
} derive(Eq, Show)
///|
/// Convert to string value
pub fn AlphaOption::to_string(self : AlphaOption) -> String {
match self {
AlphaOption::Keep => "keep"
AlphaOption::Discard => "discard"
}
}
///|
/// Parse from string value
pub fn AlphaOption::from_string(s : String) -> AlphaOption? {
match s {
"keep" => Some(AlphaOption::Keep)
"discard" => Some(AlphaOption::Discard)
_ => None
}
}
///|
/// LatencyMode enum
pub(all) enum LatencyMode {
Quality
Realtime
} derive(Eq, Show)
///|
/// Convert to string value
pub fn LatencyMode::to_string(self : LatencyMode) -> String {
match self {
LatencyMode::Quality => "quality"
LatencyMode::Realtime => "realtime"
}
}
///|
/// Parse from string value
pub fn LatencyMode::from_string(s : String) -> LatencyMode? {
match s {
"quality" => Some(LatencyMode::Quality)
"realtime" => Some(LatencyMode::Realtime)
_ => None
}
}
///|
/// VideoEncoderBitrateMode enum
pub(all) enum VideoEncoderBitrateMode {
Constant
Variable
Quantizer
} derive(Eq, Show)
///|
/// Convert to string value
pub fn VideoEncoderBitrateMode::to_string(
self : VideoEncoderBitrateMode,
) -> String {
match self {
VideoEncoderBitrateMode::Constant => "constant"
VideoEncoderBitrateMode::Variable => "variable"
VideoEncoderBitrateMode::Quantizer => "quantizer"
}
}
///|
/// Parse from string value
pub fn VideoEncoderBitrateMode::from_string(
s : String,
) -> VideoEncoderBitrateMode? {
match s {
"constant" => Some(VideoEncoderBitrateMode::Constant)
"variable" => Some(VideoEncoderBitrateMode::Variable)
"quantizer" => Some(VideoEncoderBitrateMode::Quantizer)
_ => None
}
}
///|
/// CodecState enum
pub(all) enum CodecState {
Unconfigured
Configured
Closed
} derive(Eq, Show)
///|
/// Convert to string value
pub fn CodecState::to_string(self : CodecState) -> String {
match self {
CodecState::Unconfigured => "unconfigured"
CodecState::Configured => "configured"
CodecState::Closed => "closed"
}
}
///|
/// Parse from string value
pub fn CodecState::from_string(s : String) -> CodecState? {
match s {
"unconfigured" => Some(CodecState::Unconfigured)
"configured" => Some(CodecState::Configured)
"closed" => Some(CodecState::Closed)
_ => None
}
}
///|
/// EncodedAudioChunkType enum
pub(all) enum EncodedAudioChunkType {
Key
Delta
} derive(Eq, Show)
///|
/// Convert to string value
pub fn EncodedAudioChunkType::to_string(self : EncodedAudioChunkType) -> String {
match self {
EncodedAudioChunkType::Key => "key"
EncodedAudioChunkType::Delta => "delta"
}
}
///|
/// Parse from string value
pub fn EncodedAudioChunkType::from_string(s : String) -> EncodedAudioChunkType? {
match s {
"key" => Some(EncodedAudioChunkType::Key)
"delta" => Some(EncodedAudioChunkType::Delta)
_ => None
}
}
///|
/// EncodedVideoChunkType enum
pub(all) enum EncodedVideoChunkType {
Key
Delta
} derive(Eq, Show)
///|
/// Convert to string value
pub fn EncodedVideoChunkType::to_string(self : EncodedVideoChunkType) -> String {
match self {
EncodedVideoChunkType::Key => "key"
EncodedVideoChunkType::Delta => "delta"
}
}
///|
/// Parse from string value
pub fn EncodedVideoChunkType::from_string(s : String) -> EncodedVideoChunkType? {
match s {
"key" => Some(EncodedVideoChunkType::Key)
"delta" => Some(EncodedVideoChunkType::Delta)
_ => None
}
}
///|
/// AudioSampleFormat enum
pub(all) enum AudioSampleFormat {
U8
S16
S32
F32
U8Planar
S16Planar
S32Planar
F32Planar
} derive(Eq, Show)
///|
/// Convert to string value
pub fn AudioSampleFormat::to_string(self : AudioSampleFormat) -> String {
match self {
AudioSampleFormat::U8 => "u8"
AudioSampleFormat::S16 => "s16"
AudioSampleFormat::S32 => "s32"
AudioSampleFormat::F32 => "f32"
AudioSampleFormat::U8Planar => "u8-planar"
AudioSampleFormat::S16Planar => "s16-planar"
AudioSampleFormat::S32Planar => "s32-planar"
AudioSampleFormat::F32Planar => "f32-planar"
}
}
///|
/// Parse from string value
pub fn AudioSampleFormat::from_string(s : String) -> AudioSampleFormat? {
match s {
"u8" => Some(AudioSampleFormat::U8)
"s16" => Some(AudioSampleFormat::S16)
"s32" => Some(AudioSampleFormat::S32)
"f32" => Some(AudioSampleFormat::F32)
"u8-planar" => Some(AudioSampleFormat::U8Planar)
"s16-planar" => Some(AudioSampleFormat::S16Planar)
"s32-planar" => Some(AudioSampleFormat::S32Planar)
"f32-planar" => Some(AudioSampleFormat::F32Planar)
_ => None
}
}
///|
/// VideoPixelFormat enum
pub(all) enum VideoPixelFormat {
I420
I420P10
I420P12
I420A
I420AP10
I420AP12
I422
I422P10
I422P12
I422A
I422AP10
I422AP12
I444
I444P10
I444P12
I444A
I444AP10
I444AP12
NV12
RGBA
RGBX
BGRA
BGRX
} derive(Eq, Show)
///|
/// Convert to string value
pub fn VideoPixelFormat::to_string(self : VideoPixelFormat) -> String {
match self {
VideoPixelFormat::I420 => "I420"
VideoPixelFormat::I420P10 => "I420P10"
VideoPixelFormat::I420P12 => "I420P12"
VideoPixelFormat::I420A => "I420A"
VideoPixelFormat::I420AP10 => "I420AP10"
VideoPixelFormat::I420AP12 => "I420AP12"
VideoPixelFormat::I422 => "I422"
VideoPixelFormat::I422P10 => "I422P10"
VideoPixelFormat::I422P12 => "I422P12"
VideoPixelFormat::I422A => "I422A"
VideoPixelFormat::I422AP10 => "I422AP10"
VideoPixelFormat::I422AP12 => "I422AP12"
VideoPixelFormat::I444 => "I444"
VideoPixelFormat::I444P10 => "I444P10"
VideoPixelFormat::I444P12 => "I444P12"
VideoPixelFormat::I444A => "I444A"
VideoPixelFormat::I444AP10 => "I444AP10"
VideoPixelFormat::I444AP12 => "I444AP12"
VideoPixelFormat::NV12 => "NV12"
VideoPixelFormat::RGBA => "RGBA"
VideoPixelFormat::RGBX => "RGBX"
VideoPixelFormat::BGRA => "BGRA"
VideoPixelFormat::BGRX => "BGRX"
}
}
///|
/// Parse from string value
pub fn VideoPixelFormat::from_string(s : String) -> VideoPixelFormat? {
match s {
"I420" => Some(VideoPixelFormat::I420)
"I420P10" => Some(VideoPixelFormat::I420P10)
"I420P12" => Some(VideoPixelFormat::I420P12)
"I420A" => Some(VideoPixelFormat::I420A)
"I420AP10" => Some(VideoPixelFormat::I420AP10)
"I420AP12" => Some(VideoPixelFormat::I420AP12)
"I422" => Some(VideoPixelFormat::I422)
"I422P10" => Some(VideoPixelFormat::I422P10)
"I422P12" => Some(VideoPixelFormat::I422P12)
"I422A" => Some(VideoPixelFormat::I422A)
"I422AP10" => Some(VideoPixelFormat::I422AP10)
"I422AP12" => Some(VideoPixelFormat::I422AP12)
"I444" => Some(VideoPixelFormat::I444)
"I444P10" => Some(VideoPixelFormat::I444P10)
"I444P12" => Some(VideoPixelFormat::I444P12)
"I444A" => Some(VideoPixelFormat::I444A)
"I444AP10" => Some(VideoPixelFormat::I444AP10)
"I444AP12" => Some(VideoPixelFormat::I444AP12)
"NV12" => Some(VideoPixelFormat::NV12)
"RGBA" => Some(VideoPixelFormat::RGBA)
"RGBX" => Some(VideoPixelFormat::RGBX)
"BGRA" => Some(VideoPixelFormat::BGRA)
"BGRX" => Some(VideoPixelFormat::BGRX)
_ => None
}
}
///|
/// VideoColorPrimaries enum
pub(all) enum VideoColorPrimaries {
Bt709
Bt470bg
Smpte170m
Bt2020
Smpte432
} derive(Eq, Show)
///|
/// Convert to string value
pub fn VideoColorPrimaries::to_string(self : VideoColorPrimaries) -> String {
match self {
VideoColorPrimaries::Bt709 => "bt709"
VideoColorPrimaries::Bt470bg => "bt470bg"
VideoColorPrimaries::Smpte170m => "smpte170m"
VideoColorPrimaries::Bt2020 => "bt2020"
VideoColorPrimaries::Smpte432 => "smpte432"
}
}
///|
/// Parse from string value
pub fn VideoColorPrimaries::from_string(s : String) -> VideoColorPrimaries? {
match s {
"bt709" => Some(VideoColorPrimaries::Bt709)
"bt470bg" => Some(VideoColorPrimaries::Bt470bg)
"smpte170m" => Some(VideoColorPrimaries::Smpte170m)
"bt2020" => Some(VideoColorPrimaries::Bt2020)
"smpte432" => Some(VideoColorPrimaries::Smpte432)
_ => None
}
}
///|
/// VideoTransferCharacteristics enum
pub(all) enum VideoTransferCharacteristics {
Bt709
Smpte170m
Iec6196621
Linear
Pq
Hlg
} derive(Eq, Show)
///|
/// Convert to string value
pub fn VideoTransferCharacteristics::to_string(
self : VideoTransferCharacteristics,
) -> String {
match self {
VideoTransferCharacteristics::Bt709 => "bt709"
VideoTransferCharacteristics::Smpte170m => "smpte170m"
VideoTransferCharacteristics::Iec6196621 => "iec61966-2-1"
VideoTransferCharacteristics::Linear => "linear"
VideoTransferCharacteristics::Pq => "pq"
VideoTransferCharacteristics::Hlg => "hlg"
}
}
///|
/// Parse from string value
pub fn VideoTransferCharacteristics::from_string(
s : String,
) -> VideoTransferCharacteristics? {
match s {
"bt709" => Some(VideoTransferCharacteristics::Bt709)
"smpte170m" => Some(VideoTransferCharacteristics::Smpte170m)
"iec61966-2-1" => Some(VideoTransferCharacteristics::Iec6196621)
"linear" => Some(VideoTransferCharacteristics::Linear)
"pq" => Some(VideoTransferCharacteristics::Pq)
"hlg" => Some(VideoTransferCharacteristics::Hlg)
_ => None
}
}
///|
/// VideoMatrixCoefficients enum
pub(all) enum VideoMatrixCoefficients {
Rgb
Bt709
Bt470bg
Smpte170m
Bt2020Ncl
} derive(Eq, Show)
///|
/// Convert to string value
pub fn VideoMatrixCoefficients::to_string(
self : VideoMatrixCoefficients,
) -> String {
match self {
VideoMatrixCoefficients::Rgb => "rgb"
VideoMatrixCoefficients::Bt709 => "bt709"
VideoMatrixCoefficients::Bt470bg => "bt470bg"
VideoMatrixCoefficients::Smpte170m => "smpte170m"
VideoMatrixCoefficients::Bt2020Ncl => "bt2020-ncl"
}
}
///|
/// Parse from string value
pub fn VideoMatrixCoefficients::from_string(
s : String,
) -> VideoMatrixCoefficients? {
match s {
"rgb" => Some(VideoMatrixCoefficients::Rgb)
"bt709" => Some(VideoMatrixCoefficients::Bt709)
"bt470bg" => Some(VideoMatrixCoefficients::Bt470bg)
"smpte170m" => Some(VideoMatrixCoefficients::Smpte170m)
"bt2020-ncl" => Some(VideoMatrixCoefficients::Bt2020Ncl)
_ => None
}
}
///|
/// AudioDataOutputCallback callback interface
pub type AudioDataOutputCallback
///|
/// Create AudioDataOutputCallback from a MoonBit function
pub extern "js" fn AudioDataOutputCallback::from_fn(
handler : (AudioData) -> Unit,
) -> AudioDataOutputCallback =
#| (handler) => (a0) => handler(a0)
///|
/// VideoFrameOutputCallback callback interface
pub type VideoFrameOutputCallback
///|
/// Create VideoFrameOutputCallback from a MoonBit function
pub extern "js" fn VideoFrameOutputCallback::from_fn(
handler : (VideoFrame) -> Unit,
) -> VideoFrameOutputCallback =
#| (handler) => (a0) => handler(a0)
///|
/// EncodedAudioChunkOutputCallback callback interface
pub type EncodedAudioChunkOutputCallback
///|
/// Create EncodedAudioChunkOutputCallback from a MoonBit function
pub extern "js" fn EncodedAudioChunkOutputCallback::from_fn(
handler : (EncodedAudioChunk, EncodedAudioChunkMetadata) -> Unit,
) -> EncodedAudioChunkOutputCallback =
#| (handler) => (a0, a1) => handler(a0, a1)
///|
/// EncodedVideoChunkOutputCallback callback interface
pub type EncodedVideoChunkOutputCallback
///|
/// Create EncodedVideoChunkOutputCallback from a MoonBit function
pub extern "js" fn EncodedVideoChunkOutputCallback::from_fn(
handler : (EncodedVideoChunk, EncodedVideoChunkMetadata) -> Unit,
) -> EncodedVideoChunkOutputCallback =
#| (handler) => (a0, a1) => handler(a0, a1)
///|
/// WebCodecsErrorCallback callback interface
pub type WebCodecsErrorCallback
///|
/// Create WebCodecsErrorCallback from a MoonBit function
pub extern "js" fn WebCodecsErrorCallback::from_fn(
handler : (DOMException) -> Unit,
) -> WebCodecsErrorCallback =
#| (handler) => (a0) => handler(a0)
///|
/// AudioDecoderInit dictionary
pub(all) struct AudioDecoderInit {
output : AudioDataOutputCallback
error : WebCodecsErrorCallback
}
///|
/// Create a new AudioDecoderInit
pub fn AudioDecoderInit::new(
output~ : AudioDataOutputCallback,
error~ : WebCodecsErrorCallback,
) -> AudioDecoderInit {
AudioDecoderInit::{ output, error }
}
///|
extern "js" fn AudioDecoderInit::to_js_ffi(self : AudioDecoderInit) -> JsValue =
#| (self) => ({
#| output: self.output,
#| error: self.error
#| })
///|
/// Convert to JsValue
pub fn AudioDecoderInit::to_js(self : AudioDecoderInit) -> JsValue {
AudioDecoderInit::to_js_ffi(self)
}
///|
extern "js" fn AudioDecoderInit::from_js_ffi(
value : JsValue,
) -> AudioDecoderInit =
#| (v) => ({
#| output: v.output,
#| error: v.error
#| })
///|
/// Convert from JsValue
pub fn AudioDecoderInit::from_js(value : JsValue) -> AudioDecoderInit {
AudioDecoderInit::from_js_ffi(value)
}
///|
/// VideoDecoderInit dictionary
pub(all) struct VideoDecoderInit {
output : VideoFrameOutputCallback
error : WebCodecsErrorCallback
}
///|
/// Create a new VideoDecoderInit
pub fn VideoDecoderInit::new(
output~ : VideoFrameOutputCallback,
error~ : WebCodecsErrorCallback,
) -> VideoDecoderInit {
VideoDecoderInit::{ output, error }
}
///|
extern "js" fn VideoDecoderInit::to_js_ffi(self : VideoDecoderInit) -> JsValue =
#| (self) => ({
#| output: self.output,
#| error: self.error
#| })
///|
/// Convert to JsValue
pub fn VideoDecoderInit::to_js(self : VideoDecoderInit) -> JsValue {
VideoDecoderInit::to_js_ffi(self)
}
///|
extern "js" fn VideoDecoderInit::from_js_ffi(
value : JsValue,
) -> VideoDecoderInit =
#| (v) => ({
#| output: v.output,
#| error: v.error
#| })
///|
/// Convert from JsValue
pub fn VideoDecoderInit::from_js(value : JsValue) -> VideoDecoderInit {
VideoDecoderInit::from_js_ffi(value)
}
///|
/// AudioEncoderInit dictionary
pub(all) struct AudioEncoderInit {
output : EncodedAudioChunkOutputCallback
error : WebCodecsErrorCallback
}
///|
/// Create a new AudioEncoderInit
pub fn AudioEncoderInit::new(
output~ : EncodedAudioChunkOutputCallback,
error~ : WebCodecsErrorCallback,
) -> AudioEncoderInit {
AudioEncoderInit::{ output, error }
}
///|
extern "js" fn AudioEncoderInit::to_js_ffi(self : AudioEncoderInit) -> JsValue =
#| (self) => ({
#| output: self.output,
#| error: self.error
#| })
///|
/// Convert to JsValue
pub fn AudioEncoderInit::to_js(self : AudioEncoderInit) -> JsValue {
AudioEncoderInit::to_js_ffi(self)
}
///|
extern "js" fn AudioEncoderInit::from_js_ffi(
value : JsValue,
) -> AudioEncoderInit =
#| (v) => ({
#| output: v.output,
#| error: v.error
#| })
///|
/// Convert from JsValue
pub fn AudioEncoderInit::from_js(value : JsValue) -> AudioEncoderInit {
AudioEncoderInit::from_js_ffi(value)
}
///|
/// EncodedAudioChunkMetadata dictionary
pub(all) struct EncodedAudioChunkMetadata {
decoderConfig : AudioDecoderConfig?
}
///|
/// Create a new EncodedAudioChunkMetadata with default values
pub fn EncodedAudioChunkMetadata::default() -> EncodedAudioChunkMetadata {
EncodedAudioChunkMetadata::{ decoderConfig: None }
}
///|
extern "js" fn EncodedAudioChunkMetadata::to_js_ffi(
self : EncodedAudioChunkMetadata,
) -> JsValue =
#| (self) => ({
#| decoderConfig: ((() => { const v = self.decoderConfig; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn EncodedAudioChunkMetadata::to_js(
self : EncodedAudioChunkMetadata,
) -> JsValue {
EncodedAudioChunkMetadata::to_js_ffi(self)
}
///|
extern "js" fn EncodedAudioChunkMetadata::from_js_ffi(
value : JsValue,
) -> EncodedAudioChunkMetadata =
#| (v) => ({
#| decoderConfig: (v.decoderConfig === undefined ? { $tag: 0 } : { $tag: 1, _0: v.decoderConfig })
#| })
///|
/// Convert from JsValue
pub fn EncodedAudioChunkMetadata::from_js(
value : JsValue,
) -> EncodedAudioChunkMetadata {
EncodedAudioChunkMetadata::from_js_ffi(value)
}
///|
/// VideoEncoderInit dictionary
pub(all) struct VideoEncoderInit {
output : EncodedVideoChunkOutputCallback
error : WebCodecsErrorCallback
}
///|
/// Create a new VideoEncoderInit
pub fn VideoEncoderInit::new(
output~ : EncodedVideoChunkOutputCallback,
error~ : WebCodecsErrorCallback,
) -> VideoEncoderInit {
VideoEncoderInit::{ output, error }
}
///|
extern "js" fn VideoEncoderInit::to_js_ffi(self : VideoEncoderInit) -> JsValue =
#| (self) => ({
#| output: self.output,
#| error: self.error
#| })
///|
/// Convert to JsValue
pub fn VideoEncoderInit::to_js(self : VideoEncoderInit) -> JsValue {
VideoEncoderInit::to_js_ffi(self)
}
///|
extern "js" fn VideoEncoderInit::from_js_ffi(
value : JsValue,
) -> VideoEncoderInit =
#| (v) => ({
#| output: v.output,
#| error: v.error
#| })
///|
/// Convert from JsValue
pub fn VideoEncoderInit::from_js(value : JsValue) -> VideoEncoderInit {
VideoEncoderInit::from_js_ffi(value)
}
///|
/// EncodedVideoChunkMetadata dictionary
pub(all) struct EncodedVideoChunkMetadata {
decoderConfig : VideoDecoderConfig?
svc : SvcOutputMetadata?
alphaSideData : BufferSource?
}
///|
/// Create a new EncodedVideoChunkMetadata with default values
pub fn EncodedVideoChunkMetadata::default() -> EncodedVideoChunkMetadata {
EncodedVideoChunkMetadata::{
decoderConfig: None,
svc: None,
alphaSideData: None,
}
}
///|
extern "js" fn EncodedVideoChunkMetadata::to_js_ffi(
self : EncodedVideoChunkMetadata,
) -> JsValue =
#| (self) => ({
#| decoderConfig: ((() => { const v = self.decoderConfig; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| svc: ((() => { const v = self.svc; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| alphaSideData: ((() => { const v = self.alphaSideData; if (v === undefined || v.$tag !== 1) return undefined; return v._0.to_js_value(); })())
#| })
///|
/// Convert to JsValue
pub fn EncodedVideoChunkMetadata::to_js(
self : EncodedVideoChunkMetadata,
) -> JsValue {
EncodedVideoChunkMetadata::to_js_ffi(self)
}
///|
extern "js" fn EncodedVideoChunkMetadata::from_js_ffi(
value : JsValue,
) -> EncodedVideoChunkMetadata =
#| (v) => ({
#| decoderConfig: (v.decoderConfig === undefined ? { $tag: 0 } : { $tag: 1, _0: v.decoderConfig }),
#| svc: (v.svc === undefined ? { $tag: 0 } : { $tag: 1, _0: v.svc }),
#| alphaSideData: (v.alphaSideData === undefined ? { $tag: 0 } : { $tag: 1, _0: v.alphaSideData })
#| })
///|
/// Convert from JsValue
pub fn EncodedVideoChunkMetadata::from_js(
value : JsValue,
) -> EncodedVideoChunkMetadata {
EncodedVideoChunkMetadata::from_js_ffi(value)
}
///|
/// SvcOutputMetadata dictionary
pub(all) struct SvcOutputMetadata {
temporalLayerId : Int?
}
///|
/// Create a new SvcOutputMetadata with default values
pub fn SvcOutputMetadata::default() -> SvcOutputMetadata {
SvcOutputMetadata::{ temporalLayerId: None }
}
///|
extern "js" fn SvcOutputMetadata::to_js_ffi(
self : SvcOutputMetadata,
) -> JsValue =
#| (self) => ({
#| temporalLayerId: self.temporalLayerId
#| })
///|
/// Convert to JsValue
pub fn SvcOutputMetadata::to_js(self : SvcOutputMetadata) -> JsValue {
SvcOutputMetadata::to_js_ffi(self)
}
///|
extern "js" fn SvcOutputMetadata::from_js_ffi(
value : JsValue,
) -> SvcOutputMetadata =
#| (v) => ({
#| temporalLayerId: v.temporalLayerId
#| })
///|
/// Convert from JsValue
pub fn SvcOutputMetadata::from_js(value : JsValue) -> SvcOutputMetadata {
SvcOutputMetadata::from_js_ffi(value)
}
///|
/// AudioDecoderSupport dictionary
pub(all) struct AudioDecoderSupport {
supported : Bool?
config : AudioDecoderConfig?
}
///|
/// Create a new AudioDecoderSupport with default values
pub fn AudioDecoderSupport::default() -> AudioDecoderSupport {
AudioDecoderSupport::{ supported: None, config: None }
}
///|
extern "js" fn AudioDecoderSupport::to_js_ffi(
self : AudioDecoderSupport,
) -> JsValue =
#| (self) => ({
#| supported: (self.supported === -1 ? undefined : self.supported),
#| config: ((() => { const v = self.config; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn AudioDecoderSupport::to_js(self : AudioDecoderSupport) -> JsValue {
AudioDecoderSupport::to_js_ffi(self)
}
///|
extern "js" fn AudioDecoderSupport::from_js_ffi(
value : JsValue,
) -> AudioDecoderSupport =
#| (v) => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })
///|
/// Convert from JsValue
pub fn AudioDecoderSupport::from_js(value : JsValue) -> AudioDecoderSupport {
AudioDecoderSupport::from_js_ffi(value)
}
///|
/// VideoDecoderSupport dictionary
pub(all) struct VideoDecoderSupport {
supported : Bool?
config : VideoDecoderConfig?
}
///|
/// Create a new VideoDecoderSupport with default values
pub fn VideoDecoderSupport::default() -> VideoDecoderSupport {
VideoDecoderSupport::{ supported: None, config: None }
}
///|
extern "js" fn VideoDecoderSupport::to_js_ffi(
self : VideoDecoderSupport,
) -> JsValue =
#| (self) => ({
#| supported: (self.supported === -1 ? undefined : self.supported),
#| config: ((() => { const v = self.config; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn VideoDecoderSupport::to_js(self : VideoDecoderSupport) -> JsValue {
VideoDecoderSupport::to_js_ffi(self)
}
///|
extern "js" fn VideoDecoderSupport::from_js_ffi(
value : JsValue,
) -> VideoDecoderSupport =
#| (v) => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })
///|
/// Convert from JsValue
pub fn VideoDecoderSupport::from_js(value : JsValue) -> VideoDecoderSupport {
VideoDecoderSupport::from_js_ffi(value)
}
///|
/// AudioEncoderSupport dictionary
pub(all) struct AudioEncoderSupport {
supported : Bool?
config : AudioEncoderConfig?
}
///|
/// Create a new AudioEncoderSupport with default values
pub fn AudioEncoderSupport::default() -> AudioEncoderSupport {
AudioEncoderSupport::{ supported: None, config: None }
}
///|
extern "js" fn AudioEncoderSupport::to_js_ffi(
self : AudioEncoderSupport,
) -> JsValue =
#| (self) => ({
#| supported: (self.supported === -1 ? undefined : self.supported),
#| config: ((() => { const v = self.config; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn AudioEncoderSupport::to_js(self : AudioEncoderSupport) -> JsValue {
AudioEncoderSupport::to_js_ffi(self)
}
///|
extern "js" fn AudioEncoderSupport::from_js_ffi(
value : JsValue,
) -> AudioEncoderSupport =
#| (v) => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })
///|
/// Convert from JsValue
pub fn AudioEncoderSupport::from_js(value : JsValue) -> AudioEncoderSupport {
AudioEncoderSupport::from_js_ffi(value)
}
///|
/// VideoEncoderSupport dictionary
pub(all) struct VideoEncoderSupport {
supported : Bool?
config : VideoEncoderConfig?
}
///|
/// Create a new VideoEncoderSupport with default values
pub fn VideoEncoderSupport::default() -> VideoEncoderSupport {
VideoEncoderSupport::{ supported: None, config: None }
}
///|
extern "js" fn VideoEncoderSupport::to_js_ffi(
self : VideoEncoderSupport,
) -> JsValue =
#| (self) => ({
#| supported: (self.supported === -1 ? undefined : self.supported),
#| config: ((() => { const v = self.config; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn VideoEncoderSupport::to_js(self : VideoEncoderSupport) -> JsValue {
VideoEncoderSupport::to_js_ffi(self)
}
///|
extern "js" fn VideoEncoderSupport::from_js_ffi(
value : JsValue,
) -> VideoEncoderSupport =
#| (v) => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })
///|
/// Convert from JsValue
pub fn VideoEncoderSupport::from_js(value : JsValue) -> VideoEncoderSupport {
VideoEncoderSupport::from_js_ffi(value)
}
///|
/// AudioDecoderConfig dictionary
pub(all) struct AudioDecoderConfig {
codec : String
sampleRate : Int
numberOfChannels : Int
description : AllowSharedBufferSource?
}
///|
/// Create a new AudioDecoderConfig with default values
pub fn AudioDecoderConfig::default() -> AudioDecoderConfig {
AudioDecoderConfig::{
codec: "",
sampleRate: 0,
numberOfChannels: 0,
description: None,
}
}
///|
extern "js" fn AudioDecoderConfig::to_js_ffi(
self : AudioDecoderConfig,
) -> JsValue =
#| (self) => ({
#| codec: self.codec,
#| sampleRate: self.sampleRate,
#| numberOfChannels: self.numberOfChannels,
#| description: ((() => { const v = self.description; if (v === undefined || v.$tag !== 1) return undefined; return v._0.to_js_value(); })())
#| })
///|
/// Convert to JsValue
pub fn AudioDecoderConfig::to_js(self : AudioDecoderConfig) -> JsValue {
AudioDecoderConfig::to_js_ffi(self)
}
///|
extern "js" fn AudioDecoderConfig::from_js_ffi(
value : JsValue,
) -> AudioDecoderConfig =
#| (v) => ({
#| codec: v.codec,
#| sampleRate: v.sampleRate,
#| numberOfChannels: v.numberOfChannels,
#| description: (v.description === undefined ? { $tag: 0 } : { $tag: 1, _0: v.description })
#| })
///|
/// Convert from JsValue
pub fn AudioDecoderConfig::from_js(value : JsValue) -> AudioDecoderConfig {
AudioDecoderConfig::from_js_ffi(value)
}
///|
/// VideoDecoderConfig dictionary
pub(all) struct VideoDecoderConfig {
codec : String
description : AllowSharedBufferSource?
codedWidth : Int?
codedHeight : Int?
displayAspectWidth : Int?
displayAspectHeight : Int?
colorSpace : VideoColorSpaceInit?
hardwareAcceleration : HardwareAcceleration?
optimizeForLatency : Bool?
rotation : Double?
flip : Bool?
}
///|
/// Create a new VideoDecoderConfig with default values
pub fn VideoDecoderConfig::default() -> VideoDecoderConfig {
VideoDecoderConfig::{
codec: "",
description: None,
codedWidth: None,
codedHeight: None,
displayAspectWidth: None,
displayAspectHeight: None,
colorSpace: None,
hardwareAcceleration: None,
optimizeForLatency: None,
rotation: None,
flip: None,
}
}
///|
extern "js" fn VideoDecoderConfig::to_js_ffi(
self : VideoDecoderConfig,
) -> JsValue =
#| (self) => ({
#| codec: self.codec,
#| description: ((() => { const v = self.description; if (v === undefined || v.$tag !== 1) return undefined; return v._0.to_js_value(); })()),
#| codedWidth: self.codedWidth,
#| codedHeight: self.codedHeight,
#| displayAspectWidth: self.displayAspectWidth,
#| displayAspectHeight: self.displayAspectHeight,
#| colorSpace: ((() => { const v = self.colorSpace; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| hardwareAcceleration: ((() => { const v = self.hardwareAcceleration; if (v === undefined) return undefined; return ['no-preference', 'prefer-hardware', 'prefer-software'][v]; })()),
#| optimizeForLatency: (self.optimizeForLatency === -1 ? undefined : self.optimizeForLatency),
#| rotation: ((() => { const v = self.rotation; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| flip: (self.flip === -1 ? undefined : self.flip)
#| })
///|
/// Convert to JsValue
pub fn VideoDecoderConfig::to_js(self : VideoDecoderConfig) -> JsValue {
VideoDecoderConfig::to_js_ffi(self)
}
///|
extern "js" fn VideoDecoderConfig::from_js_ffi(
value : JsValue,
) -> VideoDecoderConfig =
#| (v) => ({
#| codec: v.codec,
#| description: (v.description === undefined ? { $tag: 0 } : { $tag: 1, _0: v.description }),
#| codedWidth: v.codedWidth,
#| codedHeight: v.codedHeight,
#| displayAspectWidth: v.displayAspectWidth,
#| displayAspectHeight: v.displayAspectHeight,
#| colorSpace: (v.colorSpace === undefined ? { $tag: 0 } : { $tag: 1, _0: v.colorSpace }),
#| hardwareAcceleration: (v.hardwareAcceleration === undefined ? undefined : ['no-preference', 'prefer-hardware', 'prefer-software'].indexOf(v.hardwareAcceleration)),
#| optimizeForLatency: (v.optimizeForLatency === undefined ? -1 : v.optimizeForLatency),
#| rotation: (v.rotation === undefined ? { $tag: 0 } : { $tag: 1, _0: v.rotation }),
#| flip: (v.flip === undefined ? -1 : v.flip)
#| })
///|
/// Convert from JsValue
pub fn VideoDecoderConfig::from_js(value : JsValue) -> VideoDecoderConfig {
VideoDecoderConfig::from_js_ffi(value)
}
///|
/// EncodedAudioChunkInit dictionary
pub(all) struct EncodedAudioChunkInit {
type_ : EncodedAudioChunkType
timestamp : Int64
duration : Int64?
data : AllowSharedBufferSource
transfer : Array[ArrayBuffer]?
}
///|
/// Create a new EncodedAudioChunkInit
pub fn EncodedAudioChunkInit::new(
type_~ : EncodedAudioChunkType,
data~ : AllowSharedBufferSource,
) -> EncodedAudioChunkInit {
EncodedAudioChunkInit::{
type_,
timestamp: 0,
duration: None,
data,
transfer: None,
}
}
///|
extern "js" fn EncodedAudioChunkInit::to_js_ffi(
self : EncodedAudioChunkInit,
) -> JsValue =
#| (self) => ({
#| type: ['key', 'delta'][self.type_],
#| timestamp: self.timestamp,
#| duration: self.duration,
#| data: self.data.to_js_value(),
#| transfer: ((() => { const v = self.transfer; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn EncodedAudioChunkInit::to_js(self : EncodedAudioChunkInit) -> JsValue {
EncodedAudioChunkInit::to_js_ffi(self)
}
///|
extern "js" fn EncodedAudioChunkInit::from_js_ffi(
value : JsValue,
) -> EncodedAudioChunkInit =
#| (v) => ({
#| type_: ['key', 'delta'].indexOf(v.type),
#| timestamp: v.timestamp,
#| duration: v.duration,
#| data: v.data,
#| transfer: (v.transfer === undefined ? { $tag: 0 } : { $tag: 1, _0: v.transfer })
#| })
///|
/// Convert from JsValue
pub fn EncodedAudioChunkInit::from_js(value : JsValue) -> EncodedAudioChunkInit {
EncodedAudioChunkInit::from_js_ffi(value)
}
///|
/// EncodedVideoChunkInit dictionary
pub(all) struct EncodedVideoChunkInit {
type_ : EncodedVideoChunkType
timestamp : Int64
duration : Int64?
data : AllowSharedBufferSource
transfer : Array[ArrayBuffer]?
}
///|
/// Create a new EncodedVideoChunkInit
pub fn EncodedVideoChunkInit::new(
type_~ : EncodedVideoChunkType,
data~ : AllowSharedBufferSource,
) -> EncodedVideoChunkInit {
EncodedVideoChunkInit::{
type_,
timestamp: 0,
duration: None,
data,
transfer: None,
}
}
///|
extern "js" fn EncodedVideoChunkInit::to_js_ffi(
self : EncodedVideoChunkInit,
) -> JsValue =
#| (self) => ({
#| type: ['key', 'delta'][self.type_],
#| timestamp: self.timestamp,
#| duration: self.duration,
#| data: self.data.to_js_value(),
#| transfer: ((() => { const v = self.transfer; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn EncodedVideoChunkInit::to_js(self : EncodedVideoChunkInit) -> JsValue {
EncodedVideoChunkInit::to_js_ffi(self)
}
///|
extern "js" fn EncodedVideoChunkInit::from_js_ffi(
value : JsValue,
) -> EncodedVideoChunkInit =
#| (v) => ({
#| type_: ['key', 'delta'].indexOf(v.type),
#| timestamp: v.timestamp,
#| duration: v.duration,
#| data: v.data,
#| transfer: (v.transfer === undefined ? { $tag: 0 } : { $tag: 1, _0: v.transfer })
#| })
///|
/// Convert from JsValue
pub fn EncodedVideoChunkInit::from_js(value : JsValue) -> EncodedVideoChunkInit {
EncodedVideoChunkInit::from_js_ffi(value)
}
///|
/// AudioDataInit dictionary
pub(all) struct AudioDataInit {
format : AudioSampleFormat
sampleRate : Double
numberOfFrames : Int
numberOfChannels : Int
timestamp : Int64
data : BufferSource
transfer : Array[ArrayBuffer]?
}
///|
/// Create a new AudioDataInit
pub fn AudioDataInit::new(
format~ : AudioSampleFormat,
data~ : BufferSource,
) -> AudioDataInit {
AudioDataInit::{
format,
sampleRate: 0,
numberOfFrames: 0,
numberOfChannels: 0,
timestamp: 0,
data,
transfer: None,
}
}
///|
extern "js" fn AudioDataInit::to_js_ffi(self : AudioDataInit) -> JsValue =
#| (self) => ({
#| format: ['u8', 's16', 's32', 'f32', 'u8-planar', 's16-planar', 's32-planar', 'f32-planar'][self.format],
#| sampleRate: self.sampleRate,
#| numberOfFrames: self.numberOfFrames,
#| numberOfChannels: self.numberOfChannels,
#| timestamp: self.timestamp,
#| data: self.data.to_js_value(),
#| transfer: ((() => { const v = self.transfer; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn AudioDataInit::to_js(self : AudioDataInit) -> JsValue {
AudioDataInit::to_js_ffi(self)
}
///|
extern "js" fn AudioDataInit::from_js_ffi(value : JsValue) -> AudioDataInit =
#| (v) => ({
#| format: ['u8', 's16', 's32', 'f32', 'u8-planar', 's16-planar', 's32-planar', 'f32-planar'].indexOf(v.format),
#| sampleRate: v.sampleRate,
#| numberOfFrames: v.numberOfFrames,
#| numberOfChannels: v.numberOfChannels,
#| timestamp: v.timestamp,
#| data: v.data,
#| transfer: (v.transfer === undefined ? { $tag: 0 } : { $tag: 1, _0: v.transfer })
#| })
///|
/// Convert from JsValue
pub fn AudioDataInit::from_js(value : JsValue) -> AudioDataInit {
AudioDataInit::from_js_ffi(value)
}
///|
/// AudioDataCopyToOptions dictionary
pub(all) struct AudioDataCopyToOptions {
planeIndex : Int
frameOffset : Int?
frameCount : Int?
format : AudioSampleFormat?
}
///|
/// Create a new AudioDataCopyToOptions with default values
pub fn AudioDataCopyToOptions::default() -> AudioDataCopyToOptions {
AudioDataCopyToOptions::{
planeIndex: 0,
frameOffset: None,
frameCount: None,
format: None,
}
}
///|
extern "js" fn AudioDataCopyToOptions::to_js_ffi(
self : AudioDataCopyToOptions,
) -> JsValue =
#| (self) => ({
#| planeIndex: self.planeIndex,
#| frameOffset: self.frameOffset,
#| frameCount: self.frameCount,
#| format: ((() => { const v = self.format; if (v === undefined) return undefined; return ['u8', 's16', 's32', 'f32', 'u8-planar', 's16-planar', 's32-planar', 'f32-planar'][v]; })())
#| })
///|
/// Convert to JsValue
pub fn AudioDataCopyToOptions::to_js(self : AudioDataCopyToOptions) -> JsValue {
AudioDataCopyToOptions::to_js_ffi(self)
}
///|
extern "js" fn AudioDataCopyToOptions::from_js_ffi(
value : JsValue,
) -> AudioDataCopyToOptions =
#| (v) => ({
#| planeIndex: v.planeIndex,
#| frameOffset: v.frameOffset,
#| frameCount: v.frameCount,
#| format: (v.format === undefined ? undefined : ['u8', 's16', 's32', 'f32', 'u8-planar', 's16-planar', 's32-planar', 'f32-planar'].indexOf(v.format))
#| })
///|
/// Convert from JsValue
pub fn AudioDataCopyToOptions::from_js(
value : JsValue,
) -> AudioDataCopyToOptions {
AudioDataCopyToOptions::from_js_ffi(value)
}
///|
/// VideoFrameInit dictionary
pub(all) struct VideoFrameInit {
duration : Int64?
timestamp : Int64?
alpha : AlphaOption?
visibleRect : DOMRectInit?
rotation : Double?
flip : Bool?
displayWidth : Int?
displayHeight : Int?
metadata : VideoFrameMetadata?
}
///|
/// Create a new VideoFrameInit with default values
pub fn VideoFrameInit::default() -> VideoFrameInit {
VideoFrameInit::{
duration: None,
timestamp: None,
alpha: None,
visibleRect: None,
rotation: None,
flip: None,
displayWidth: None,
displayHeight: None,
metadata: None,
}
}
///|
extern "js" fn VideoFrameInit::to_js_ffi(self : VideoFrameInit) -> JsValue =
#| (self) => ({
#| duration: self.duration,
#| timestamp: self.timestamp,
#| alpha: ((() => { const v = self.alpha; if (v === undefined) return undefined; return ['keep', 'discard'][v]; })()),
#| visibleRect: ((() => { const v = self.visibleRect; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| rotation: ((() => { const v = self.rotation; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| flip: (self.flip === -1 ? undefined : self.flip),
#| displayWidth: self.displayWidth,
#| displayHeight: self.displayHeight,
#| metadata: ((() => { const v = self.metadata; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn VideoFrameInit::to_js(self : VideoFrameInit) -> JsValue {
VideoFrameInit::to_js_ffi(self)
}
///|
extern "js" fn VideoFrameInit::from_js_ffi(value : JsValue) -> VideoFrameInit =
#| (v) => ({
#| duration: v.duration,
#| timestamp: v.timestamp,
#| alpha: (v.alpha === undefined ? undefined : ['keep', 'discard'].indexOf(v.alpha)),
#| visibleRect: (v.visibleRect === undefined ? { $tag: 0 } : { $tag: 1, _0: v.visibleRect }),
#| rotation: (v.rotation === undefined ? { $tag: 0 } : { $tag: 1, _0: v.rotation }),
#| flip: (v.flip === undefined ? -1 : v.flip),
#| displayWidth: v.displayWidth,
#| displayHeight: v.displayHeight,
#| metadata: (v.metadata === undefined ? { $tag: 0 } : { $tag: 1, _0: v.metadata })
#| })
///|
/// Convert from JsValue
pub fn VideoFrameInit::from_js(value : JsValue) -> VideoFrameInit {
VideoFrameInit::from_js_ffi(value)
}
///|
/// VideoFrameBufferInit dictionary
pub(all) struct VideoFrameBufferInit {
format : VideoPixelFormat
codedWidth : Int
codedHeight : Int
timestamp : Int64
duration : Int64?
layout : Array[PlaneLayout]?
visibleRect : DOMRectInit?
rotation : Double?
flip : Bool?
displayWidth : Int?
displayHeight : Int?
colorSpace : VideoColorSpaceInit?
transfer : Array[ArrayBuffer]?
metadata : VideoFrameMetadata?
}
///|
/// Create a new VideoFrameBufferInit
pub fn VideoFrameBufferInit::new(
format~ : VideoPixelFormat,
) -> VideoFrameBufferInit {
VideoFrameBufferInit::{
format,
codedWidth: 0,
codedHeight: 0,
timestamp: 0,
duration: None,
layout: None,
visibleRect: None,
rotation: None,
flip: None,
displayWidth: None,
displayHeight: None,
colorSpace: None,
transfer: None,
metadata: None,
}
}
///|
extern "js" fn VideoFrameBufferInit::to_js_ffi(
self : VideoFrameBufferInit,
) -> JsValue =
#| (self) => ({
#| format: ['I420', 'I420P10', 'I420P12', 'I420A', 'I420AP10', 'I420AP12', 'I422', 'I422P10', 'I422P12', 'I422A', 'I422AP10', 'I422AP12', 'I444', 'I444P10', 'I444P12', 'I444A', 'I444AP10', 'I444AP12', 'NV12', 'RGBA', 'RGBX', 'BGRA', 'BGRX'][self.format],
#| codedWidth: self.codedWidth,
#| codedHeight: self.codedHeight,
#| timestamp: self.timestamp,
#| duration: self.duration,
#| layout: ((() => { const v = self.layout; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| visibleRect: ((() => { const v = self.visibleRect; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| rotation: ((() => { const v = self.rotation; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| flip: (self.flip === -1 ? undefined : self.flip),
#| displayWidth: self.displayWidth,
#| displayHeight: self.displayHeight,
#| colorSpace: ((() => { const v = self.colorSpace; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| transfer: ((() => { const v = self.transfer; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| metadata: ((() => { const v = self.metadata; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn VideoFrameBufferInit::to_js(self : VideoFrameBufferInit) -> JsValue {
VideoFrameBufferInit::to_js_ffi(self)
}
///|
extern "js" fn VideoFrameBufferInit::from_js_ffi(
value : JsValue,
) -> VideoFrameBufferInit =
#| (v) => ({
#| format: ['I420', 'I420P10', 'I420P12', 'I420A', 'I420AP10', 'I420AP12', 'I422', 'I422P10', 'I422P12', 'I422A', 'I422AP10', 'I422AP12', 'I444', 'I444P10', 'I444P12', 'I444A', 'I444AP10', 'I444AP12', 'NV12', 'RGBA', 'RGBX', 'BGRA', 'BGRX'].indexOf(v.format),
#| codedWidth: v.codedWidth,
#| codedHeight: v.codedHeight,
#| timestamp: v.timestamp,
#| duration: v.duration,
#| layout: (v.layout === undefined ? { $tag: 0 } : { $tag: 1, _0: v.layout }),
#| visibleRect: (v.visibleRect === undefined ? { $tag: 0 } : { $tag: 1, _0: v.visibleRect }),
#| rotation: (v.rotation === undefined ? { $tag: 0 } : { $tag: 1, _0: v.rotation }),
#| flip: (v.flip === undefined ? -1 : v.flip),
#| displayWidth: v.displayWidth,
#| displayHeight: v.displayHeight,
#| colorSpace: (v.colorSpace === undefined ? { $tag: 0 } : { $tag: 1, _0: v.colorSpace }),
#| transfer: (v.transfer === undefined ? { $tag: 0 } : { $tag: 1, _0: v.transfer }),
#| metadata: (v.metadata === undefined ? { $tag: 0 } : { $tag: 1, _0: v.metadata })
#| })
///|
/// Convert from JsValue
pub fn VideoFrameBufferInit::from_js(value : JsValue) -> VideoFrameBufferInit {
VideoFrameBufferInit::from_js_ffi(value)
}
///|
/// VideoFrameMetadata dictionary
pub(all) struct VideoFrameMetadata {}
///|
/// Create a new VideoFrameMetadata with default values
pub fn VideoFrameMetadata::default() -> VideoFrameMetadata {
VideoFrameMetadata::{ }
}
///|
extern "js" fn VideoFrameMetadata::to_js_ffi(
self : VideoFrameMetadata,
) -> JsValue =
#| (self) => ({
#| })
///|
/// Convert to JsValue
pub fn VideoFrameMetadata::to_js(self : VideoFrameMetadata) -> JsValue {
VideoFrameMetadata::to_js_ffi(self)
}
///|
extern "js" fn VideoFrameMetadata::from_js_ffi(
value : JsValue,
) -> VideoFrameMetadata =
#| (v) => ({
#| })
///|
/// Convert from JsValue
pub fn VideoFrameMetadata::from_js(value : JsValue) -> VideoFrameMetadata {
VideoFrameMetadata::from_js_ffi(value)
}
///|
/// VideoFrameCopyToOptions dictionary
pub(all) struct VideoFrameCopyToOptions {
rect : DOMRectInit?
layout : Array[PlaneLayout]?
format : VideoPixelFormat?
colorSpace : PredefinedColorSpace?
}
///|
/// Create a new VideoFrameCopyToOptions with default values
pub fn VideoFrameCopyToOptions::default() -> VideoFrameCopyToOptions {
VideoFrameCopyToOptions::{
rect: None,
layout: None,
format: None,
colorSpace: None,
}
}
///|
extern "js" fn VideoFrameCopyToOptions::to_js_ffi(
self : VideoFrameCopyToOptions,
) -> JsValue =
#| (self) => ({
#| rect: ((() => { const v = self.rect; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| layout: ((() => { const v = self.layout; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| format: ((() => { const v = self.format; if (v === undefined) return undefined; return ['I420', 'I420P10', 'I420P12', 'I420A', 'I420AP10', 'I420AP12', 'I422', 'I422P10', 'I422P12', 'I422A', 'I422AP10', 'I422AP12', 'I444', 'I444P10', 'I444P12', 'I444A', 'I444AP10', 'I444AP12', 'NV12', 'RGBA', 'RGBX', 'BGRA', 'BGRX'][v]; })()),
#| colorSpace: ((() => { const v = self.colorSpace; if (v === undefined) return undefined; return ['srgb', 'srgb-linear', 'display-p3', 'display-p3-linear'][v]; })())
#| })
///|
/// Convert to JsValue
pub fn VideoFrameCopyToOptions::to_js(
self : VideoFrameCopyToOptions,
) -> JsValue {
VideoFrameCopyToOptions::to_js_ffi(self)
}
///|
extern "js" fn VideoFrameCopyToOptions::from_js_ffi(
value : JsValue,
) -> VideoFrameCopyToOptions =
#| (v) => ({
#| rect: (v.rect === undefined ? { $tag: 0 } : { $tag: 1, _0: v.rect }),
#| layout: (v.layout === undefined ? { $tag: 0 } : { $tag: 1, _0: v.layout }),
#| format: (v.format === undefined ? undefined : ['I420', 'I420P10', 'I420P12', 'I420A', 'I420AP10', 'I420AP12', 'I422', 'I422P10', 'I422P12', 'I422A', 'I422AP10', 'I422AP12', 'I444', 'I444P10', 'I444P12', 'I444A', 'I444AP10', 'I444AP12', 'NV12', 'RGBA', 'RGBX', 'BGRA', 'BGRX'].indexOf(v.format)),
#| colorSpace: (v.colorSpace === undefined ? undefined : ['srgb', 'srgb-linear', 'display-p3', 'display-p3-linear'].indexOf(v.colorSpace))
#| })
///|
/// Convert from JsValue
pub fn VideoFrameCopyToOptions::from_js(
value : JsValue,
) -> VideoFrameCopyToOptions {
VideoFrameCopyToOptions::from_js_ffi(value)
}
///|
/// PlaneLayout dictionary
pub(all) struct PlaneLayout {
offset : Int
stride : Int
}
///|
/// Create a new PlaneLayout with default values
pub fn PlaneLayout::default() -> PlaneLayout {
PlaneLayout::{ offset: 0, stride: 0 }
}
///|
extern "js" fn PlaneLayout::to_js_ffi(self : PlaneLayout) -> JsValue =
#| (self) => ({
#| offset: self.offset,
#| stride: self.stride
#| })
///|
/// Convert to JsValue
pub fn PlaneLayout::to_js(self : PlaneLayout) -> JsValue {
PlaneLayout::to_js_ffi(self)
}
///|
extern "js" fn PlaneLayout::from_js_ffi(value : JsValue) -> PlaneLayout =
#| (v) => ({
#| offset: v.offset,
#| stride: v.stride
#| })
///|
/// Convert from JsValue
pub fn PlaneLayout::from_js(value : JsValue) -> PlaneLayout {
PlaneLayout::from_js_ffi(value)
}
///|
/// VideoColorSpaceInit dictionary
pub(all) struct VideoColorSpaceInit {
primaries : Nullable[VideoColorPrimaries]
transfer : Nullable[VideoTransferCharacteristics]
matrix : Nullable[VideoMatrixCoefficients]
fullRange : Nullable[Bool]
}
///|
/// Create a new VideoColorSpaceInit with default values
pub fn VideoColorSpaceInit::default() -> VideoColorSpaceInit {
VideoColorSpaceInit::{
primaries: Nullable::Undefined,
transfer: Nullable::Undefined,
matrix: Nullable::Undefined,
fullRange: Nullable::Undefined,
}
}
///|
extern "js" fn VideoColorSpaceInit::to_js_ffi(
self : VideoColorSpaceInit,
) -> JsValue =
#| (self) => ({
#| primaries: ((() => { const v = self.primaries; if (v.$tag === 0) return undefined; if (v.$tag === 1) return null; return ['bt709', 'bt470bg', 'smpte170m', 'bt2020', 'smpte432'][v._0]; })()),
#| transfer: ((() => { const v = self.transfer; if (v.$tag === 0) return undefined; if (v.$tag === 1) return null; return ['bt709', 'smpte170m', 'iec61966-2-1', 'linear', 'pq', 'hlg'][v._0]; })()),
#| matrix: ((() => { const v = self.matrix; if (v.$tag === 0) return undefined; if (v.$tag === 1) return null; return ['rgb', 'bt709', 'bt470bg', 'smpte170m', 'bt2020-ncl'][v._0]; })()),
#| fullRange: ((() => { const v = self.fullRange; if (v.$tag === 0) return undefined; if (v.$tag === 1) return null; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn VideoColorSpaceInit::to_js(self : VideoColorSpaceInit) -> JsValue {
VideoColorSpaceInit::to_js_ffi(self)
}
///|
extern "js" fn VideoColorSpaceInit::from_js_ffi(
value : JsValue,
) -> VideoColorSpaceInit =
#| (v) => ({
#| primaries: (v.primaries === undefined ? { $tag: 0 } : v.primaries === null ? { $tag: 1 } : { $tag: 2, _0: ['bt709', 'bt470bg', 'smpte170m', 'bt2020', 'smpte432'].indexOf(v.primaries) }),
#| transfer: (v.transfer === undefined ? { $tag: 0 } : v.transfer === null ? { $tag: 1 } : { $tag: 2, _0: ['bt709', 'smpte170m', 'iec61966-2-1', 'linear', 'pq', 'hlg'].indexOf(v.transfer) }),
#| matrix: (v.matrix === undefined ? { $tag: 0 } : v.matrix === null ? { $tag: 1 } : { $tag: 2, _0: ['rgb', 'bt709', 'bt470bg', 'smpte170m', 'bt2020-ncl'].indexOf(v.matrix) }),
#| fullRange: (v.fullRange === undefined ? { $tag: 0 } : v.fullRange === null ? { $tag: 1 } : { $tag: 2, _0: v.fullRange })
#| })
///|
/// Convert from JsValue
pub fn VideoColorSpaceInit::from_js(value : JsValue) -> VideoColorSpaceInit {
VideoColorSpaceInit::from_js_ffi(value)
}
///|
/// ImageDecoderInit dictionary
pub(all) struct ImageDecoderInit {
type_ : String
data : ImageBufferSource
colorSpaceConversion : ColorSpaceConversion?
desiredWidth : Int?
desiredHeight : Int?
preferAnimation : Bool?
transfer : Array[ArrayBuffer]?
}
///|
/// Create a new ImageDecoderInit
pub fn ImageDecoderInit::new(data~ : ImageBufferSource) -> ImageDecoderInit {
ImageDecoderInit::{
type_: "",
data,
colorSpaceConversion: None,
desiredWidth: None,
desiredHeight: None,
preferAnimation: None,
transfer: None,
}
}
///|
extern "js" fn ImageDecoderInit::to_js_ffi(self : ImageDecoderInit) -> JsValue =
#| (self) => ({
#| type: self.type_,
#| data: self.data.to_js_value(),
#| colorSpaceConversion: ((() => { const v = self.colorSpaceConversion; if (v === undefined) return undefined; return ['none', 'default'][v]; })()),
#| desiredWidth: self.desiredWidth,
#| desiredHeight: self.desiredHeight,
#| preferAnimation: (self.preferAnimation === -1 ? undefined : self.preferAnimation),
#| transfer: ((() => { const v = self.transfer; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })())
#| })
///|
/// Convert to JsValue
pub fn ImageDecoderInit::to_js(self : ImageDecoderInit) -> JsValue {
ImageDecoderInit::to_js_ffi(self)
}
///|
extern "js" fn ImageDecoderInit::from_js_ffi(
value : JsValue,
) -> ImageDecoderInit =
#| (v) => ({
#| type_: v.type,
#| data: v.data,
#| colorSpaceConversion: (v.colorSpaceConversion === undefined ? undefined : ['none', 'default'].indexOf(v.colorSpaceConversion)),
#| desiredWidth: v.desiredWidth,
#| desiredHeight: v.desiredHeight,
#| preferAnimation: (v.preferAnimation === undefined ? -1 : v.preferAnimation),
#| transfer: (v.transfer === undefined ? { $tag: 0 } : { $tag: 1, _0: v.transfer })
#| })
///|
/// Convert from JsValue
pub fn ImageDecoderInit::from_js(value : JsValue) -> ImageDecoderInit {
ImageDecoderInit::from_js_ffi(value)
}
///|
/// ImageDecodeOptions dictionary
pub(all) struct ImageDecodeOptions {
frameIndex : Int?
completeFramesOnly : Bool?
}
///|
/// Create a new ImageDecodeOptions with default values
pub fn ImageDecodeOptions::default() -> ImageDecodeOptions {
ImageDecodeOptions::{ frameIndex: None, completeFramesOnly: None }
}
///|
extern "js" fn ImageDecodeOptions::to_js_ffi(
self : ImageDecodeOptions,
) -> JsValue =
#| (self) => ({
#| frameIndex: self.frameIndex,
#| completeFramesOnly: (self.completeFramesOnly === -1 ? undefined : self.completeFramesOnly)
#| })
///|
/// Convert to JsValue
pub fn ImageDecodeOptions::to_js(self : ImageDecodeOptions) -> JsValue {
ImageDecodeOptions::to_js_ffi(self)
}
///|
extern "js" fn ImageDecodeOptions::from_js_ffi(
value : JsValue,
) -> ImageDecodeOptions =
#| (v) => ({
#| frameIndex: v.frameIndex,
#| completeFramesOnly: (v.completeFramesOnly === undefined ? -1 : v.completeFramesOnly)
#| })
///|
/// Convert from JsValue
pub fn ImageDecodeOptions::from_js(value : JsValue) -> ImageDecodeOptions {
ImageDecodeOptions::from_js_ffi(value)
}
///|
/// ImageDecodeResult dictionary
pub(all) struct ImageDecodeResult {
image : VideoFrame
complete : Bool
}
///|
/// Create a new ImageDecodeResult
pub fn ImageDecodeResult::new(image~ : VideoFrame) -> ImageDecodeResult {
ImageDecodeResult::{ image, complete: false }
}
///|
extern "js" fn ImageDecodeResult::to_js_ffi(
self : ImageDecodeResult,
) -> JsValue =
#| (self) => ({
#| image: self.image,
#| complete: self.complete
#| })
///|
/// Convert to JsValue
pub fn ImageDecodeResult::to_js(self : ImageDecodeResult) -> JsValue {
ImageDecodeResult::to_js_ffi(self)
}
///|
extern "js" fn ImageDecodeResult::from_js_ffi(
value : JsValue,
) -> ImageDecodeResult =
#| (v) => ({
#| image: v.image,
#| complete: v.complete
#| })
///|
/// Convert from JsValue
pub fn ImageDecodeResult::from_js(value : JsValue) -> ImageDecodeResult {
ImageDecodeResult::from_js_ffi(value)
}
///|
/// AudioDecoder interface
pub type AudioDecoder
///|
pub extern "js" fn AudioDecoder::to_js_value(self : AudioDecoder) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to AudioDecoder (unchecked)
pub extern "js" fn AudioDecoder::from_js_value(v : JsValue) -> AudioDecoder =
#| (v) => v
///|
/// Safely cast JsValue to AudioDecoder (checked with instanceof)
pub extern "js" fn AudioDecoder::from_js_value_opt(
v : JsValue,
) -> AudioDecoder? =
#| (v) => (v instanceof AudioDecoder) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to AudioDecoder (checked with instanceof)
pub extern "js" fn JsValue::as_audio_decoder(self : JsValue) -> AudioDecoder? =
#| (self) => (self instanceof AudioDecoder) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to AudioDecoder (unchecked)
pub extern "js" fn JsValue::to_audio_decoder(self : JsValue) -> AudioDecoder =
#| (self) => self
///|
pub extern "js" fn AudioDecoder::to_event_target(
self : AudioDecoder,
) -> EventTarget =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum AudioDecoderConfigureError {
TypeError(JsError)
InvalidStateError(JsError)
NotSupportedError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioDecoderDecodeError {
DataError(JsError)
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioDecoderFlushError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioDecoderIsConfigSupportedError {
TypeError(JsError)
OtherError(JsError)
} derive(Show)
///|
extern "js" fn AudioDecoder::new_ffi(init_ : JsValue) -> AudioDecoder =
#| (init_) => new AudioDecoder(init_)
///|
pub fn AudioDecoder::new(init_ : AudioDecoderInit) -> AudioDecoder {
AudioDecoder::new_ffi(init_.to_js())
}
///|
pub extern "js" fn AudioDecoder::get_state(self : AudioDecoder) -> CodecState =
#| (self) => ['unconfigured', 'configured', 'closed'].indexOf(self.state)
///|
pub extern "js" fn AudioDecoder::get_decode_queue_size(
self : AudioDecoder,
) -> Int =
#| (self) => self.decodeQueueSize
///|
pub extern "js" fn AudioDecoder::set_ondequeue(
self : AudioDecoder,
handler : (Event) -> Unit,
) -> Unit =
#| (self, handler) => { self.ondequeue = (e) => handler(e) }
///|
pub extern "js" fn AudioDecoder::clear_ondequeue(self : AudioDecoder) -> Unit =
#| (self) => { self.ondequeue = null }
///|
extern "js" fn AudioDecoder::configure_ffi(
self : AudioDecoder,
config : JsValue,
) -> Result[Unit, AudioDecoderConfigureError] =
#| (self, config) => (() => { try { self.configure(config); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; if (n === 'NotSupportedError') return { $tag: 2, _0: e }; return { $tag: 3, _0: e }; })() }; } })()
///|
pub fn AudioDecoder::configure(
self : AudioDecoder,
config : AudioDecoderConfig,
) -> Result[Unit, AudioDecoderConfigureError] {
AudioDecoder::configure_ffi(self, config.to_js())
}
///|
pub extern "js" fn AudioDecoder::decode(
self : AudioDecoder,
chunk : EncodedAudioChunk,
) -> Result[Unit, AudioDecoderDecodeError] =
#| (self, chunk) => (() => { try { self.decode(chunk); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'DataError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
pub extern "js" fn AudioDecoder::flush(
self : AudioDecoder,
) -> Promise[Result[Unit, AudioDecoderFlushError]] =
#| (self) => self.flush().then(r => ({ $tag: 1, _0: undefined })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub extern "js" fn AudioDecoder::reset(self : AudioDecoder) -> Unit =
#| (self) => self.reset()
///|
pub extern "js" fn AudioDecoder::close(self : AudioDecoder) -> Unit =
#| (self) => self.close()
///|
extern "js" fn AudioDecoder::is_config_supported_ffi(
config : JsValue,
) -> Promise[Result[AudioDecoderSupport, AudioDecoderIsConfigSupportedError]] =
#| (config) => AudioDecoder.isConfigSupported(config).then(v => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub fn AudioDecoder::is_config_supported(
config : AudioDecoderConfig,
) -> Promise[Result[AudioDecoderSupport, AudioDecoderIsConfigSupportedError]] {
AudioDecoder::is_config_supported_ffi(config.to_js())
}
///|
/// VideoDecoder interface
pub type VideoDecoder
///|
pub extern "js" fn VideoDecoder::to_js_value(self : VideoDecoder) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to VideoDecoder (unchecked)
pub extern "js" fn VideoDecoder::from_js_value(v : JsValue) -> VideoDecoder =
#| (v) => v
///|
/// Safely cast JsValue to VideoDecoder (checked with instanceof)
pub extern "js" fn VideoDecoder::from_js_value_opt(
v : JsValue,
) -> VideoDecoder? =
#| (v) => (v instanceof VideoDecoder) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to VideoDecoder (checked with instanceof)
pub extern "js" fn JsValue::as_video_decoder(self : JsValue) -> VideoDecoder? =
#| (self) => (self instanceof VideoDecoder) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to VideoDecoder (unchecked)
pub extern "js" fn JsValue::to_video_decoder(self : JsValue) -> VideoDecoder =
#| (self) => self
///|
pub extern "js" fn VideoDecoder::to_event_target(
self : VideoDecoder,
) -> EventTarget =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum VideoDecoderConfigureError {
TypeError(JsError)
InvalidStateError(JsError)
NotSupportedError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum VideoDecoderDecodeError {
DataError(JsError)
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum VideoDecoderFlushError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum VideoDecoderIsConfigSupportedError {
TypeError(JsError)
OtherError(JsError)
} derive(Show)
///|
extern "js" fn VideoDecoder::new_ffi(init_ : JsValue) -> VideoDecoder =
#| (init_) => new VideoDecoder(init_)
///|
pub fn VideoDecoder::new(init_ : VideoDecoderInit) -> VideoDecoder {
VideoDecoder::new_ffi(init_.to_js())
}
///|
pub extern "js" fn VideoDecoder::get_state(self : VideoDecoder) -> CodecState =
#| (self) => ['unconfigured', 'configured', 'closed'].indexOf(self.state)
///|
pub extern "js" fn VideoDecoder::get_decode_queue_size(
self : VideoDecoder,
) -> Int =
#| (self) => self.decodeQueueSize
///|
pub extern "js" fn VideoDecoder::set_ondequeue(
self : VideoDecoder,
handler : (Event) -> Unit,
) -> Unit =
#| (self, handler) => { self.ondequeue = (e) => handler(e) }
///|
pub extern "js" fn VideoDecoder::clear_ondequeue(self : VideoDecoder) -> Unit =
#| (self) => { self.ondequeue = null }
///|
extern "js" fn VideoDecoder::configure_ffi(
self : VideoDecoder,
config : JsValue,
) -> Result[Unit, VideoDecoderConfigureError] =
#| (self, config) => (() => { try { self.configure(config); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; if (n === 'NotSupportedError') return { $tag: 2, _0: e }; return { $tag: 3, _0: e }; })() }; } })()
///|
pub fn VideoDecoder::configure(
self : VideoDecoder,
config : VideoDecoderConfig,
) -> Result[Unit, VideoDecoderConfigureError] {
VideoDecoder::configure_ffi(self, config.to_js())
}
///|
pub extern "js" fn VideoDecoder::decode(
self : VideoDecoder,
chunk : EncodedVideoChunk,
) -> Result[Unit, VideoDecoderDecodeError] =
#| (self, chunk) => (() => { try { self.decode(chunk); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'DataError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
pub extern "js" fn VideoDecoder::flush(
self : VideoDecoder,
) -> Promise[Result[Unit, VideoDecoderFlushError]] =
#| (self) => self.flush().then(r => ({ $tag: 1, _0: undefined })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub extern "js" fn VideoDecoder::reset(self : VideoDecoder) -> Unit =
#| (self) => self.reset()
///|
pub extern "js" fn VideoDecoder::close(self : VideoDecoder) -> Unit =
#| (self) => self.close()
///|
extern "js" fn VideoDecoder::is_config_supported_ffi(
config : JsValue,
) -> Promise[Result[VideoDecoderSupport, VideoDecoderIsConfigSupportedError]] =
#| (config) => VideoDecoder.isConfigSupported(config).then(v => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub fn VideoDecoder::is_config_supported(
config : VideoDecoderConfig,
) -> Promise[Result[VideoDecoderSupport, VideoDecoderIsConfigSupportedError]] {
VideoDecoder::is_config_supported_ffi(config.to_js())
}
///|
/// AudioEncoder interface
pub type AudioEncoder
///|
pub extern "js" fn AudioEncoder::to_js_value(self : AudioEncoder) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to AudioEncoder (unchecked)
pub extern "js" fn AudioEncoder::from_js_value(v : JsValue) -> AudioEncoder =
#| (v) => v
///|
/// Safely cast JsValue to AudioEncoder (checked with instanceof)
pub extern "js" fn AudioEncoder::from_js_value_opt(
v : JsValue,
) -> AudioEncoder? =
#| (v) => (v instanceof AudioEncoder) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to AudioEncoder (checked with instanceof)
pub extern "js" fn JsValue::as_audio_encoder(self : JsValue) -> AudioEncoder? =
#| (self) => (self instanceof AudioEncoder) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to AudioEncoder (unchecked)
pub extern "js" fn JsValue::to_audio_encoder(self : JsValue) -> AudioEncoder =
#| (self) => self
///|
pub extern "js" fn AudioEncoder::to_event_target(
self : AudioEncoder,
) -> EventTarget =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum AudioEncoderConfigureError {
TypeError(JsError)
InvalidStateError(JsError)
NotSupportedError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioEncoderEncodeError {
TypeError(JsError)
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioEncoderFlushError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioEncoderIsConfigSupportedError {
TypeError(JsError)
OtherError(JsError)
} derive(Show)
///|
extern "js" fn AudioEncoder::new_ffi(init_ : JsValue) -> AudioEncoder =
#| (init_) => new AudioEncoder(init_)
///|
pub fn AudioEncoder::new(init_ : AudioEncoderInit) -> AudioEncoder {
AudioEncoder::new_ffi(init_.to_js())
}
///|
pub extern "js" fn AudioEncoder::get_state(self : AudioEncoder) -> CodecState =
#| (self) => ['unconfigured', 'configured', 'closed'].indexOf(self.state)
///|
pub extern "js" fn AudioEncoder::get_encode_queue_size(
self : AudioEncoder,
) -> Int =
#| (self) => self.encodeQueueSize
///|
pub extern "js" fn AudioEncoder::set_ondequeue(
self : AudioEncoder,
handler : (Event) -> Unit,
) -> Unit =
#| (self, handler) => { self.ondequeue = (e) => handler(e) }
///|
pub extern "js" fn AudioEncoder::clear_ondequeue(self : AudioEncoder) -> Unit =
#| (self) => { self.ondequeue = null }
///|
extern "js" fn AudioEncoder::configure_ffi(
self : AudioEncoder,
config : JsValue,
) -> Result[Unit, AudioEncoderConfigureError] =
#| (self, config) => (() => { try { self.configure(config); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; if (n === 'NotSupportedError') return { $tag: 2, _0: e }; return { $tag: 3, _0: e }; })() }; } })()
///|
pub fn AudioEncoder::configure(
self : AudioEncoder,
config : AudioEncoderConfig,
) -> Result[Unit, AudioEncoderConfigureError] {
AudioEncoder::configure_ffi(self, config.to_js())
}
///|
pub extern "js" fn AudioEncoder::encode(
self : AudioEncoder,
data : AudioData,
) -> Result[Unit, AudioEncoderEncodeError] =
#| (self, data) => (() => { try { self.encode(data); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
pub extern "js" fn AudioEncoder::flush(
self : AudioEncoder,
) -> Promise[Result[Unit, AudioEncoderFlushError]] =
#| (self) => self.flush().then(r => ({ $tag: 1, _0: undefined })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub extern "js" fn AudioEncoder::reset(self : AudioEncoder) -> Unit =
#| (self) => self.reset()
///|
pub extern "js" fn AudioEncoder::close(self : AudioEncoder) -> Unit =
#| (self) => self.close()
///|
extern "js" fn AudioEncoder::is_config_supported_ffi(
config : JsValue,
) -> Promise[Result[AudioEncoderSupport, AudioEncoderIsConfigSupportedError]] =
#| (config) => AudioEncoder.isConfigSupported(config).then(v => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub fn AudioEncoder::is_config_supported(
config : AudioEncoderConfig,
) -> Promise[Result[AudioEncoderSupport, AudioEncoderIsConfigSupportedError]] {
AudioEncoder::is_config_supported_ffi(config.to_js())
}
///|
/// VideoEncoder interface
pub type VideoEncoder
///|
pub extern "js" fn VideoEncoder::to_js_value(self : VideoEncoder) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to VideoEncoder (unchecked)
pub extern "js" fn VideoEncoder::from_js_value(v : JsValue) -> VideoEncoder =
#| (v) => v
///|
/// Safely cast JsValue to VideoEncoder (checked with instanceof)
pub extern "js" fn VideoEncoder::from_js_value_opt(
v : JsValue,
) -> VideoEncoder? =
#| (v) => (v instanceof VideoEncoder) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to VideoEncoder (checked with instanceof)
pub extern "js" fn JsValue::as_video_encoder(self : JsValue) -> VideoEncoder? =
#| (self) => (self instanceof VideoEncoder) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to VideoEncoder (unchecked)
pub extern "js" fn JsValue::to_video_encoder(self : JsValue) -> VideoEncoder =
#| (self) => self
///|
pub extern "js" fn VideoEncoder::to_event_target(
self : VideoEncoder,
) -> EventTarget =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum VideoEncoderConfigureError {
TypeError(JsError)
InvalidStateError(JsError)
NotSupportedError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum VideoEncoderEncodeError {
DataError(JsError)
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum VideoEncoderFlushError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum VideoEncoderResetError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum VideoEncoderIsConfigSupportedError {
TypeError(JsError)
OtherError(JsError)
} derive(Show)
///|
extern "js" fn VideoEncoder::new_ffi(init_ : JsValue) -> VideoEncoder =
#| (init_) => new VideoEncoder(init_)
///|
pub fn VideoEncoder::new(init_ : VideoEncoderInit) -> VideoEncoder {
VideoEncoder::new_ffi(init_.to_js())
}
///|
pub extern "js" fn VideoEncoder::get_state(self : VideoEncoder) -> CodecState =
#| (self) => ['unconfigured', 'configured', 'closed'].indexOf(self.state)
///|
pub extern "js" fn VideoEncoder::get_encode_queue_size(
self : VideoEncoder,
) -> Int =
#| (self) => self.encodeQueueSize
///|
pub extern "js" fn VideoEncoder::set_ondequeue(
self : VideoEncoder,
handler : (Event) -> Unit,
) -> Unit =
#| (self, handler) => { self.ondequeue = (e) => handler(e) }
///|
pub extern "js" fn VideoEncoder::clear_ondequeue(self : VideoEncoder) -> Unit =
#| (self) => { self.ondequeue = null }
///|
extern "js" fn VideoEncoder::configure_ffi(
self : VideoEncoder,
config : JsValue,
) -> Result[Unit, VideoEncoderConfigureError] =
#| (self, config) => (() => { try { self.configure(config); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; if (n === 'NotSupportedError') return { $tag: 2, _0: e }; return { $tag: 3, _0: e }; })() }; } })()
///|
pub fn VideoEncoder::configure(
self : VideoEncoder,
config : VideoEncoderConfig,
) -> Result[Unit, VideoEncoderConfigureError] {
VideoEncoder::configure_ffi(self, config.to_js())
}
///|
pub extern "js" fn VideoEncoder::encode(
self : VideoEncoder,
frame : VideoFrame,
) -> Result[Unit, VideoEncoderEncodeError] =
#| (self, frame) => (() => { try { self.encode(frame); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'DataError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
extern "js" fn VideoEncoder::encode_with_options_ffi(
self : VideoEncoder,
frame : VideoFrame,
options : JsValue,
) -> Result[Unit, VideoEncoderEncodeError] =
#| (self, frame, options) => (() => { try { self.encode(frame, options); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'DataError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
pub fn VideoEncoder::encode_with_options(
self : VideoEncoder,
frame : VideoFrame,
options : VideoEncoderEncodeOptions,
) -> Result[Unit, VideoEncoderEncodeError] {
VideoEncoder::encode_with_options_ffi(self, frame, options.to_js())
}
///|
pub extern "js" fn VideoEncoder::flush(
self : VideoEncoder,
) -> Promise[Result[Unit, VideoEncoderFlushError]] =
#| (self) => self.flush().then(r => ({ $tag: 1, _0: undefined })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub extern "js" fn VideoEncoder::reset(
self : VideoEncoder,
) -> Result[Unit, VideoEncoderResetError] =
#| (self) => (() => { try { self.reset(); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }; } })()
///|
pub extern "js" fn VideoEncoder::close(self : VideoEncoder) -> Unit =
#| (self) => self.close()
///|
extern "js" fn VideoEncoder::is_config_supported_ffi(
config : JsValue,
) -> Promise[Result[VideoEncoderSupport, VideoEncoderIsConfigSupportedError]] =
#| (config) => VideoEncoder.isConfigSupported(config).then(v => ({
#| supported: (v.supported === undefined ? -1 : v.supported),
#| config: (v.config === undefined ? { $tag: 0 } : { $tag: 1, _0: v.config })
#| })).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub fn VideoEncoder::is_config_supported(
config : VideoEncoderConfig,
) -> Promise[Result[VideoEncoderSupport, VideoEncoderIsConfigSupportedError]] {
VideoEncoder::is_config_supported_ffi(config.to_js())
}
///|
/// EncodedAudioChunk interface
pub type EncodedAudioChunk
///|
pub extern "js" fn EncodedAudioChunk::to_js_value(
self : EncodedAudioChunk,
) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to EncodedAudioChunk (unchecked)
pub extern "js" fn EncodedAudioChunk::from_js_value(
v : JsValue,
) -> EncodedAudioChunk =
#| (v) => v
///|
/// Safely cast JsValue to EncodedAudioChunk (checked with instanceof)
pub extern "js" fn EncodedAudioChunk::from_js_value_opt(
v : JsValue,
) -> EncodedAudioChunk? =
#| (v) => (v instanceof EncodedAudioChunk) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to EncodedAudioChunk (checked with instanceof)
pub extern "js" fn JsValue::as_encoded_audio_chunk(
self : JsValue,
) -> EncodedAudioChunk? =
#| (self) => (self instanceof EncodedAudioChunk) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to EncodedAudioChunk (unchecked)
pub extern "js" fn JsValue::to_encoded_audio_chunk(
self : JsValue,
) -> EncodedAudioChunk =
#| (self) => self
///|
extern "js" fn EncodedAudioChunk::new_ffi(init_ : JsValue) -> EncodedAudioChunk =
#| (init_) => new EncodedAudioChunk(init_)
///|
pub fn EncodedAudioChunk::new(
init_ : EncodedAudioChunkInit,
) -> EncodedAudioChunk {
EncodedAudioChunk::new_ffi(init_.to_js())
}
///|
pub extern "js" fn EncodedAudioChunk::get_type(
self : EncodedAudioChunk,
) -> EncodedAudioChunkType =
#| (self) => ['key', 'delta'].indexOf(self.type)
///|
pub extern "js" fn EncodedAudioChunk::get_timestamp(
self : EncodedAudioChunk,
) -> Int64 =
#| (self) => (() => { const n = self.timestamp; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
pub extern "js" fn EncodedAudioChunk::get_duration(
self : EncodedAudioChunk,
) -> Int64? =
#| (self) => (() => { const v = self.duration; if (v == null) return undefined; const n = v; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
pub extern "js" fn EncodedAudioChunk::get_byte_length(
self : EncodedAudioChunk,
) -> Int =
#| (self) => self.byteLength
///|
pub extern "js" fn EncodedAudioChunk::copy_to(
self : EncodedAudioChunk,
destination : AllowSharedBufferSource,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
pub extern "js" fn EncodedAudioChunk::copy_to_with_array_buffer(
self : EncodedAudioChunk,
destination : ArrayBuffer,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
pub extern "js" fn EncodedAudioChunk::copy_to_with_shared_array_buffer(
self : EncodedAudioChunk,
destination : SharedArrayBuffer,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
pub extern "js" fn EncodedAudioChunk::copy_to_with_array_buffer_view(
self : EncodedAudioChunk,
destination : ArrayBufferView,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
/// EncodedVideoChunk interface
pub type EncodedVideoChunk
///|
pub extern "js" fn EncodedVideoChunk::to_js_value(
self : EncodedVideoChunk,
) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to EncodedVideoChunk (unchecked)
pub extern "js" fn EncodedVideoChunk::from_js_value(
v : JsValue,
) -> EncodedVideoChunk =
#| (v) => v
///|
/// Safely cast JsValue to EncodedVideoChunk (checked with instanceof)
pub extern "js" fn EncodedVideoChunk::from_js_value_opt(
v : JsValue,
) -> EncodedVideoChunk? =
#| (v) => (v instanceof EncodedVideoChunk) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to EncodedVideoChunk (checked with instanceof)
pub extern "js" fn JsValue::as_encoded_video_chunk(
self : JsValue,
) -> EncodedVideoChunk? =
#| (self) => (self instanceof EncodedVideoChunk) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to EncodedVideoChunk (unchecked)
pub extern "js" fn JsValue::to_encoded_video_chunk(
self : JsValue,
) -> EncodedVideoChunk =
#| (self) => self
///|
extern "js" fn EncodedVideoChunk::new_ffi(init_ : JsValue) -> EncodedVideoChunk =
#| (init_) => new EncodedVideoChunk(init_)
///|
pub fn EncodedVideoChunk::new(
init_ : EncodedVideoChunkInit,
) -> EncodedVideoChunk {
EncodedVideoChunk::new_ffi(init_.to_js())
}
///|
pub extern "js" fn EncodedVideoChunk::get_type(
self : EncodedVideoChunk,
) -> EncodedVideoChunkType =
#| (self) => ['key', 'delta'].indexOf(self.type)
///|
pub extern "js" fn EncodedVideoChunk::get_timestamp(
self : EncodedVideoChunk,
) -> Int64 =
#| (self) => (() => { const n = self.timestamp; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
pub extern "js" fn EncodedVideoChunk::get_duration(
self : EncodedVideoChunk,
) -> Int64? =
#| (self) => (() => { const v = self.duration; if (v == null) return undefined; const n = v; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
pub extern "js" fn EncodedVideoChunk::get_byte_length(
self : EncodedVideoChunk,
) -> Int =
#| (self) => self.byteLength
///|
pub extern "js" fn EncodedVideoChunk::copy_to(
self : EncodedVideoChunk,
destination : AllowSharedBufferSource,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
pub extern "js" fn EncodedVideoChunk::copy_to_with_array_buffer(
self : EncodedVideoChunk,
destination : ArrayBuffer,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
pub extern "js" fn EncodedVideoChunk::copy_to_with_shared_array_buffer(
self : EncodedVideoChunk,
destination : SharedArrayBuffer,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
pub extern "js" fn EncodedVideoChunk::copy_to_with_array_buffer_view(
self : EncodedVideoChunk,
destination : ArrayBufferView,
) -> Unit =
#| (self, destination) => self.copyTo(destination)
///|
/// AudioData interface
pub type AudioData
///|
pub extern "js" fn AudioData::to_js_value(self : AudioData) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to AudioData (unchecked)
pub extern "js" fn AudioData::from_js_value(v : JsValue) -> AudioData =
#| (v) => v
///|
/// Safely cast JsValue to AudioData (checked with instanceof)
pub extern "js" fn AudioData::from_js_value_opt(v : JsValue) -> AudioData? =
#| (v) => (v instanceof AudioData) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to AudioData (checked with instanceof)
pub extern "js" fn JsValue::as_audio_data(self : JsValue) -> AudioData? =
#| (self) => (self instanceof AudioData) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to AudioData (unchecked)
pub extern "js" fn JsValue::to_audio_data(self : JsValue) -> AudioData =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum AudioDataConstructorError {
TypeError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioDataCopyToError {
RangeError(JsError)
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
/// Error type for throwing methods
pub(all) enum AudioDataCloneError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
extern "js" fn AudioData::new_ffi(
init_ : JsValue,
) -> Result[AudioData, AudioDataConstructorError] =
#| (init_) => (() => { try { return { $tag: 1, _0: new AudioData(init_) }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'TypeError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }; } })()
///|
pub fn AudioData::new(
init_ : AudioDataInit,
) -> Result[AudioData, AudioDataConstructorError] {
AudioData::new_ffi(init_.to_js())
}
///|
pub extern "js" fn AudioData::get_format(
self : AudioData,
) -> AudioSampleFormat? =
#| (self) => (() => { const v = self.format; return v == null ? undefined : ['u8', 's16', 's32', 'f32', 'u8-planar', 's16-planar', 's32-planar', 'f32-planar'].indexOf(v); })()
///|
pub extern "js" fn AudioData::get_sample_rate(self : AudioData) -> Double =
#| (self) => self.sampleRate
///|
pub extern "js" fn AudioData::get_number_of_frames(self : AudioData) -> Int =
#| (self) => self.numberOfFrames
///|
pub extern "js" fn AudioData::get_number_of_channels(self : AudioData) -> Int =
#| (self) => self.numberOfChannels
///|
pub extern "js" fn AudioData::get_duration(self : AudioData) -> Int64 =
#| (self) => (() => { const n = self.duration; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
pub extern "js" fn AudioData::get_timestamp(self : AudioData) -> Int64 =
#| (self) => (() => { const n = self.timestamp; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
extern "js" fn AudioData::allocation_size_ffi(
self : AudioData,
options : JsValue,
) -> Int =
#| (self, options) => self.allocationSize(options)
///|
pub fn AudioData::allocation_size(
self : AudioData,
options : AudioDataCopyToOptions,
) -> Int {
AudioData::allocation_size_ffi(self, options.to_js())
}
///|
extern "js" fn AudioData::copy_to_ffi(
self : AudioData,
destination : AllowSharedBufferSource,
options : JsValue,
) -> Result[Unit, AudioDataCopyToError] =
#| (self, destination, options) => (() => { try { self.copyTo(destination, options); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'RangeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
pub fn AudioData::copy_to(
self : AudioData,
destination : AllowSharedBufferSource,
options : AudioDataCopyToOptions,
) -> Result[Unit, AudioDataCopyToError] {
AudioData::copy_to_ffi(self, destination, options.to_js())
}
///|
pub extern "js" fn AudioData::clone(
self : AudioData,
) -> Result[AudioData, AudioDataCloneError] =
#| (self) => (() => { try { return { $tag: 1, _0: self.clone() }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }; } })()
///|
pub extern "js" fn AudioData::close(self : AudioData) -> Unit =
#| (self) => self.close()
///|
pub extern "js" fn AudioData::copy_to_with_array_buffer(
self : AudioData,
destination : ArrayBuffer,
options : AudioDataCopyToOptions,
) -> Result[Unit, AudioDataCopyToError] =
#| (self, destination, options) => (() => { try { self.copyTo(destination, options); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'RangeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
pub extern "js" fn AudioData::copy_to_with_shared_array_buffer(
self : AudioData,
destination : SharedArrayBuffer,
options : AudioDataCopyToOptions,
) -> Result[Unit, AudioDataCopyToError] =
#| (self, destination, options) => (() => { try { self.copyTo(destination, options); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'RangeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
pub extern "js" fn AudioData::copy_to_with_array_buffer_view(
self : AudioData,
destination : ArrayBufferView,
options : AudioDataCopyToOptions,
) -> Result[Unit, AudioDataCopyToError] =
#| (self, destination, options) => (() => { try { self.copyTo(destination, options); return { $tag: 1, _0: undefined }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'RangeError') return { $tag: 0, _0: e }; if (n === 'InvalidStateError') return { $tag: 1, _0: e }; return { $tag: 2, _0: e }; })() }; } })()
///|
/// VideoFrame interface
pub type VideoFrame
///|
pub extern "js" fn VideoFrame::to_js_value(self : VideoFrame) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to VideoFrame (unchecked)
pub extern "js" fn VideoFrame::from_js_value(v : JsValue) -> VideoFrame =
#| (v) => v
///|
/// Safely cast JsValue to VideoFrame (checked with instanceof)
pub extern "js" fn VideoFrame::from_js_value_opt(v : JsValue) -> VideoFrame? =
#| (v) => (v instanceof VideoFrame) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to VideoFrame (checked with instanceof)
pub extern "js" fn JsValue::as_video_frame(self : JsValue) -> VideoFrame? =
#| (self) => (self instanceof VideoFrame) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to VideoFrame (unchecked)
pub extern "js" fn JsValue::to_video_frame(self : JsValue) -> VideoFrame =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum VideoFrameCloneError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
pub extern "js" fn VideoFrame::new_with_canvas_image_source(
image : CanvasImageSource,
) -> VideoFrame =
#| (image) => new VideoFrame(image)
///|
extern "js" fn VideoFrame::new_with_canvas_image_source_with_init_ffi(
image : CanvasImageSource,
init_ : JsValue,
) -> VideoFrame =
#| (image, init_) => new VideoFrame(image, init_)
///|
pub fn VideoFrame::new_with_canvas_image_source_with_init(
image : CanvasImageSource,
init_ : VideoFrameInit,
) -> VideoFrame {
VideoFrame::new_with_canvas_image_source_with_init_ffi(image, init_.to_js())
}
///|
extern "js" fn VideoFrame::new_with_allow_shared_buffer_source_ffi(
data : AllowSharedBufferSource,
init_ : JsValue,
) -> VideoFrame =
#| (data, init_) => new VideoFrame(data, init_)
///|
pub fn VideoFrame::new_with_allow_shared_buffer_source(
data : AllowSharedBufferSource,
init_ : VideoFrameBufferInit,
) -> VideoFrame {
VideoFrame::new_with_allow_shared_buffer_source_ffi(data, init_.to_js())
}
///|
pub extern "js" fn VideoFrame::get_format(
self : VideoFrame,
) -> VideoPixelFormat? =
#| (self) => (() => { const v = self.format; return v == null ? undefined : ['I420', 'I420P10', 'I420P12', 'I420A', 'I420AP10', 'I420AP12', 'I422', 'I422P10', 'I422P12', 'I422A', 'I422AP10', 'I422AP12', 'I444', 'I444P10', 'I444P12', 'I444A', 'I444AP10', 'I444AP12', 'NV12', 'RGBA', 'RGBX', 'BGRA', 'BGRX'].indexOf(v); })()
///|
pub extern "js" fn VideoFrame::get_coded_width(self : VideoFrame) -> Int =
#| (self) => self.codedWidth
///|
pub extern "js" fn VideoFrame::get_coded_height(self : VideoFrame) -> Int =
#| (self) => self.codedHeight
///|
pub extern "js" fn VideoFrame::get_coded_rect(
self : VideoFrame,
) -> DOMRectReadOnly? =
#| (self) => (() => { const v = self.codedRect; return v == null ? { $tag: 0 } : { $tag: 1, _0: v }; })()
///|
pub extern "js" fn VideoFrame::get_visible_rect(
self : VideoFrame,
) -> DOMRectReadOnly? =
#| (self) => (() => { const v = self.visibleRect; return v == null ? { $tag: 0 } : { $tag: 1, _0: v }; })()
///|
pub extern "js" fn VideoFrame::get_rotation(self : VideoFrame) -> Double =
#| (self) => self.rotation
///|
pub extern "js" fn VideoFrame::get_flip(self : VideoFrame) -> Bool =
#| (self) => self.flip
///|
pub extern "js" fn VideoFrame::get_display_width(self : VideoFrame) -> Int =
#| (self) => self.displayWidth
///|
pub extern "js" fn VideoFrame::get_display_height(self : VideoFrame) -> Int =
#| (self) => self.displayHeight
///|
pub extern "js" fn VideoFrame::get_duration(self : VideoFrame) -> Int64? =
#| (self) => (() => { const v = self.duration; if (v == null) return undefined; const n = v; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
pub extern "js" fn VideoFrame::get_timestamp(self : VideoFrame) -> Int64 =
#| (self) => (() => { const n = self.timestamp; return { hi: Math.floor(n / 4294967296), lo: n >>> 0 }; })()
///|
pub extern "js" fn VideoFrame::get_color_space(
self : VideoFrame,
) -> VideoColorSpace =
#| (self) => self.colorSpace
///|
pub extern "js" fn VideoFrame::metadata(
self : VideoFrame,
) -> VideoFrameMetadata =
#| (self) => self.metadata()
///|
pub extern "js" fn VideoFrame::allocation_size(self : VideoFrame) -> Int =
#| (self) => self.allocationSize()
///|
extern "js" fn VideoFrame::allocation_size_with_options_ffi(
self : VideoFrame,
options : JsValue,
) -> Int =
#| (self, options) => self.allocationSize(options)
///|
pub fn VideoFrame::allocation_size_with_options(
self : VideoFrame,
options : VideoFrameCopyToOptions,
) -> Int {
VideoFrame::allocation_size_with_options_ffi(self, options.to_js())
}
///|
pub extern "js" fn VideoFrame::copy_to(
self : VideoFrame,
destination : AllowSharedBufferSource,
) -> Promise[Array[PlaneLayout]] =
#| (self, destination) => self.copyTo(destination)
///|
extern "js" fn VideoFrame::copy_to_with_options_ffi(
self : VideoFrame,
destination : AllowSharedBufferSource,
options : JsValue,
) -> Promise[Array[PlaneLayout]] =
#| (self, destination, options) => self.copyTo(destination, options)
///|
pub fn VideoFrame::copy_to_with_options(
self : VideoFrame,
destination : AllowSharedBufferSource,
options : VideoFrameCopyToOptions,
) -> Promise[Array[PlaneLayout]] {
VideoFrame::copy_to_with_options_ffi(self, destination, options.to_js())
}
///|
pub extern "js" fn VideoFrame::clone(
self : VideoFrame,
) -> Result[VideoFrame, VideoFrameCloneError] =
#| (self) => (() => { try { return { $tag: 1, _0: self.clone() }; } catch(e) { return { $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }; } })()
///|
pub extern "js" fn VideoFrame::close(self : VideoFrame) -> Unit =
#| (self) => self.close()
///|
pub extern "js" fn VideoFrame::new_with_html_or_svg_image_element(
image : HTMLOrSVGImageElement,
init_ : VideoFrameInit,
) -> VideoFrame =
#| (image, init_) => new VideoFrame(image, init_)
///|
pub extern "js" fn VideoFrame::new_with_html_video_element(
image : HTMLVideoElement,
init_ : VideoFrameInit,
) -> VideoFrame =
#| (image, init_) => new VideoFrame(image, init_)
///|
pub extern "js" fn VideoFrame::new_with_html_canvas_element(
image : HTMLCanvasElement,
init_ : VideoFrameInit,
) -> VideoFrame =
#| (image, init_) => new VideoFrame(image, init_)
///|
pub extern "js" fn VideoFrame::new_with_image_bitmap(
image : ImageBitmap,
init_ : VideoFrameInit,
) -> VideoFrame =
#| (image, init_) => new VideoFrame(image, init_)
///|
pub extern "js" fn VideoFrame::new_with_offscreen_canvas(
image : OffscreenCanvas,
init_ : VideoFrameInit,
) -> VideoFrame =
#| (image, init_) => new VideoFrame(image, init_)
///|
pub extern "js" fn VideoFrame::new_with_video_frame(
image : VideoFrame,
init_ : VideoFrameInit,
) -> VideoFrame =
#| (image, init_) => new VideoFrame(image, init_)
///|
pub extern "js" fn VideoFrame::new_with_array_buffer(
data : ArrayBuffer,
init_ : VideoFrameBufferInit,
) -> VideoFrame =
#| (data, init_) => new VideoFrame(data, init_)
///|
pub extern "js" fn VideoFrame::new_with_shared_array_buffer(
data : SharedArrayBuffer,
init_ : VideoFrameBufferInit,
) -> VideoFrame =
#| (data, init_) => new VideoFrame(data, init_)
///|
pub extern "js" fn VideoFrame::new_with_array_buffer_view(
data : ArrayBufferView,
init_ : VideoFrameBufferInit,
) -> VideoFrame =
#| (data, init_) => new VideoFrame(data, init_)
///|
pub extern "js" fn VideoFrame::copy_to_with_array_buffer(
self : VideoFrame,
destination : ArrayBuffer,
options : VideoFrameCopyToOptions,
) -> Promise[Array[PlaneLayout]] =
#| (self, destination, options) => self.copyTo(destination, options)
///|
pub extern "js" fn VideoFrame::copy_to_with_shared_array_buffer(
self : VideoFrame,
destination : SharedArrayBuffer,
options : VideoFrameCopyToOptions,
) -> Promise[Array[PlaneLayout]] =
#| (self, destination, options) => self.copyTo(destination, options)
///|
pub extern "js" fn VideoFrame::copy_to_with_array_buffer_view(
self : VideoFrame,
destination : ArrayBufferView,
options : VideoFrameCopyToOptions,
) -> Promise[Array[PlaneLayout]] =
#| (self, destination, options) => self.copyTo(destination, options)
///|
/// VideoColorSpace interface
pub type VideoColorSpace
///|
pub extern "js" fn VideoColorSpace::to_js_value(
self : VideoColorSpace,
) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to VideoColorSpace (unchecked)
pub extern "js" fn VideoColorSpace::from_js_value(
v : JsValue,
) -> VideoColorSpace =
#| (v) => v
///|
/// Safely cast JsValue to VideoColorSpace (checked with instanceof)
pub extern "js" fn VideoColorSpace::from_js_value_opt(
v : JsValue,
) -> VideoColorSpace? =
#| (v) => (v instanceof VideoColorSpace) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to VideoColorSpace (checked with instanceof)
pub extern "js" fn JsValue::as_video_color_space(
self : JsValue,
) -> VideoColorSpace? =
#| (self) => (self instanceof VideoColorSpace) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to VideoColorSpace (unchecked)
pub extern "js" fn JsValue::to_video_color_space(
self : JsValue,
) -> VideoColorSpace =
#| (self) => self
///|
pub extern "js" fn VideoColorSpace::new() -> VideoColorSpace =
#| () => new VideoColorSpace()
///|
extern "js" fn VideoColorSpace::new_with_init_ffi(
init_ : JsValue,
) -> VideoColorSpace =
#| (init_) => new VideoColorSpace(init_)
///|
pub fn VideoColorSpace::new_with_init(
init_ : VideoColorSpaceInit,
) -> VideoColorSpace {
VideoColorSpace::new_with_init_ffi(init_.to_js())
}
///|
pub extern "js" fn VideoColorSpace::get_primaries(
self : VideoColorSpace,
) -> VideoColorPrimaries? =
#| (self) => (() => { const v = self.primaries; return v == null ? undefined : ['bt709', 'bt470bg', 'smpte170m', 'bt2020', 'smpte432'].indexOf(v); })()
///|
pub extern "js" fn VideoColorSpace::get_transfer(
self : VideoColorSpace,
) -> VideoTransferCharacteristics? =
#| (self) => (() => { const v = self.transfer; return v == null ? undefined : ['bt709', 'smpte170m', 'iec61966-2-1', 'linear', 'pq', 'hlg'].indexOf(v); })()
///|
pub extern "js" fn VideoColorSpace::get_matrix(
self : VideoColorSpace,
) -> VideoMatrixCoefficients? =
#| (self) => (() => { const v = self.matrix; return v == null ? undefined : ['rgb', 'bt709', 'bt470bg', 'smpte170m', 'bt2020-ncl'].indexOf(v); })()
///|
pub extern "js" fn VideoColorSpace::get_full_range(
self : VideoColorSpace,
) -> Bool? =
#| (self) => (self.fullRange) ?? undefined
///|
pub extern "js" fn VideoColorSpace::to_json(
self : VideoColorSpace,
) -> VideoColorSpaceInit =
#| (self) => self.toJSON()
///|
/// ImageDecoder interface
pub type ImageDecoder
///|
pub extern "js" fn ImageDecoder::to_js_value(self : ImageDecoder) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to ImageDecoder (unchecked)
pub extern "js" fn ImageDecoder::from_js_value(v : JsValue) -> ImageDecoder =
#| (v) => v
///|
/// Safely cast JsValue to ImageDecoder (checked with instanceof)
pub extern "js" fn ImageDecoder::from_js_value_opt(
v : JsValue,
) -> ImageDecoder? =
#| (v) => (v instanceof ImageDecoder) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to ImageDecoder (checked with instanceof)
pub extern "js" fn JsValue::as_image_decoder(self : JsValue) -> ImageDecoder? =
#| (self) => (self instanceof ImageDecoder) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to ImageDecoder (unchecked)
pub extern "js" fn JsValue::to_image_decoder(self : JsValue) -> ImageDecoder =
#| (self) => self
///|
/// Error type for throwing methods
pub(all) enum ImageDecoderDecodeError {
InvalidStateError(JsError)
OtherError(JsError)
} derive(Show)
///|
extern "js" fn ImageDecoder::new_ffi(init_ : JsValue) -> ImageDecoder =
#| (init_) => new ImageDecoder(init_)
///|
pub fn ImageDecoder::new(init_ : ImageDecoderInit) -> ImageDecoder {
ImageDecoder::new_ffi(init_.to_js())
}
///|
pub extern "js" fn ImageDecoder::get_type(self : ImageDecoder) -> String =
#| (self) => self.type
///|
pub extern "js" fn ImageDecoder::get_complete(self : ImageDecoder) -> Bool =
#| (self) => self.complete
///|
pub extern "js" fn ImageDecoder::get_completed(
self : ImageDecoder,
) -> Promise[Unit] =
#| (self) => self.completed
///|
pub extern "js" fn ImageDecoder::get_tracks(
self : ImageDecoder,
) -> ImageTrackList =
#| (self) => self.tracks
///|
pub extern "js" fn ImageDecoder::decode(
self : ImageDecoder,
) -> Promise[Result[ImageDecodeResult, ImageDecoderDecodeError]] =
#| (self) => self.decode().then(v => ({
#| image: v.image,
#| complete: v.complete
#| })).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
extern "js" fn ImageDecoder::decode_with_options_ffi(
self : ImageDecoder,
options : JsValue,
) -> Promise[Result[ImageDecodeResult, ImageDecoderDecodeError]] =
#| (self, options) => self.decode(options).then(v => ({
#| image: v.image,
#| complete: v.complete
#| })).then(r => ({ $tag: 1, _0: r })).catch(e => ({ $tag: 0, _0: (() => { const n = (e && e.name) || ''; if (n === 'InvalidStateError') return { $tag: 0, _0: e }; return { $tag: 1, _0: e }; })() }))
///|
pub fn ImageDecoder::decode_with_options(
self : ImageDecoder,
options : ImageDecodeOptions,
) -> Promise[Result[ImageDecodeResult, ImageDecoderDecodeError]] {
ImageDecoder::decode_with_options_ffi(self, options.to_js())
}
///|
pub extern "js" fn ImageDecoder::reset(self : ImageDecoder) -> Unit =
#| (self) => self.reset()
///|
pub extern "js" fn ImageDecoder::close(self : ImageDecoder) -> Unit =
#| (self) => self.close()
///|
pub extern "js" fn ImageDecoder::is_type_supported(
type_ : String,
) -> Promise[Bool] =
#| (type_) => ImageDecoder.isTypeSupported(type_)
///|
/// ImageTrackList interface
pub type ImageTrackList
///|
pub extern "js" fn ImageTrackList::to_js_value(
self : ImageTrackList,
) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to ImageTrackList (unchecked)
pub extern "js" fn ImageTrackList::from_js_value(v : JsValue) -> ImageTrackList =
#| (v) => v
///|
/// Safely cast JsValue to ImageTrackList (checked with instanceof)
pub extern "js" fn ImageTrackList::from_js_value_opt(
v : JsValue,
) -> ImageTrackList? =
#| (v) => (v instanceof ImageTrackList) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to ImageTrackList (checked with instanceof)
pub extern "js" fn JsValue::as_image_track_list(
self : JsValue,
) -> ImageTrackList? =
#| (self) => (self instanceof ImageTrackList) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to ImageTrackList (unchecked)
pub extern "js" fn JsValue::to_image_track_list(
self : JsValue,
) -> ImageTrackList =
#| (self) => self
///|
#alias("_[_]")
pub extern "js" fn ImageTrackList::get(
self : ImageTrackList,
index : Int,
) -> ImageTrack =
#| (self, index) => self[index]
///|
pub extern "js" fn ImageTrackList::get_ready(
self : ImageTrackList,
) -> Promise[Unit] =
#| (self) => self.ready
///|
pub extern "js" fn ImageTrackList::get_length(self : ImageTrackList) -> Int =
#| (self) => self.length
///|
pub extern "js" fn ImageTrackList::get_selected_index(
self : ImageTrackList,
) -> Int =
#| (self) => self.selectedIndex
///|
pub extern "js" fn ImageTrackList::get_selected_track(
self : ImageTrackList,
) -> ImageTrack? =
#| (self) => (() => { const v = self.selectedTrack; return v == null ? { $tag: 0 } : { $tag: 1, _0: v }; })()
///|
/// ImageTrack interface
pub type ImageTrack
///|
pub extern "js" fn ImageTrack::to_js_value(self : ImageTrack) -> JsValue =
#| (self) => self
///|
/// Cast JsValue to ImageTrack (unchecked)
pub extern "js" fn ImageTrack::from_js_value(v : JsValue) -> ImageTrack =
#| (v) => v
///|
/// Safely cast JsValue to ImageTrack (checked with instanceof)
pub extern "js" fn ImageTrack::from_js_value_opt(v : JsValue) -> ImageTrack? =
#| (v) => (v instanceof ImageTrack) ? { $tag: 1, _0: v } : { $tag: 0 }
///|
/// Safely cast JsValue to ImageTrack (checked with instanceof)
pub extern "js" fn JsValue::as_image_track(self : JsValue) -> ImageTrack? =
#| (self) => (self instanceof ImageTrack) ? { $tag: 1, _0: self } : { $tag: 0 }
///|
/// Cast JsValue to ImageTrack (unchecked)
pub extern "js" fn JsValue::to_image_track(self : JsValue) -> ImageTrack =
#| (self) => self
///|
pub extern "js" fn ImageTrack::get_animated(self : ImageTrack) -> Bool =
#| (self) => self.animated
///|
pub extern "js" fn ImageTrack::get_frame_count(self : ImageTrack) -> Int =
#| (self) => self.frameCount
///|
pub extern "js" fn ImageTrack::get_repetition_count(
self : ImageTrack,
) -> Double =
#| (self) => self.repetitionCount
///|
pub extern "js" fn ImageTrack::get_selected(self : ImageTrack) -> Bool =
#| (self) => self.selected
///|
pub extern "js" fn ImageTrack::set_selected(
self : ImageTrack,
value : Bool,
) -> Unit =
#| (self, value) => { self.selected = value }