// Generated from WebIDL - DO NOT EDIT
// Source: @webref/idl/webcodecs-aac-codec-registration
///|
/// AacBitstreamFormat enum
pub(all) enum AacBitstreamFormat {
Aac
Adts
} derive(Eq, Show)
///|
/// Convert to string value
pub fn AacBitstreamFormat::to_string(self : AacBitstreamFormat) -> String {
match self {
AacBitstreamFormat::Aac => "aac"
AacBitstreamFormat::Adts => "adts"
}
}
///|
/// Parse from string value
pub fn AacBitstreamFormat::from_string(s : String) -> AacBitstreamFormat? {
match s {
"aac" => Some(AacBitstreamFormat::Aac)
"adts" => Some(AacBitstreamFormat::Adts)
_ => None
}
}
///|
/// AudioEncoderConfig dictionary
pub(all) struct AudioEncoderConfig {
aac : AacEncoderConfig?
flac : FlacEncoderConfig?
opus : OpusEncoderConfig?
codec : String
sampleRate : Int
numberOfChannels : Int
bitrate : Int64?
bitrateMode : BitrateMode?
}
///|
/// Create a new AudioEncoderConfig with default values
pub fn AudioEncoderConfig::default() -> AudioEncoderConfig {
AudioEncoderConfig::{
aac: None,
flac: None,
opus: None,
codec: "",
sampleRate: 0,
numberOfChannels: 0,
bitrate: None,
bitrateMode: None,
}
}
///|
extern "js" fn AudioEncoderConfig::to_js_ffi(
self : AudioEncoderConfig,
) -> JsValue =
#| (self) => ({
#| aac: ((() => { const v = self.aac; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| flac: ((() => { const v = self.flac; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| opus: ((() => { const v = self.opus; if (v === undefined || v.$tag !== 1) return undefined; return v._0; })()),
#| codec: self.codec,
#| sampleRate: self.sampleRate,
#| numberOfChannels: self.numberOfChannels,
#| bitrate: self.bitrate,
#| bitrateMode: ((() => { const v = self.bitrateMode; if (v === undefined) return undefined; return ['constant', 'variable'][v]; })())
#| })
///|
/// Convert to JsValue
pub fn AudioEncoderConfig::to_js(self : AudioEncoderConfig) -> JsValue {
AudioEncoderConfig::to_js_ffi(self)
}
///|
extern "js" fn AudioEncoderConfig::from_js_ffi(
value : JsValue,
) -> AudioEncoderConfig =
#| (v) => ({
#| aac: (v.aac === undefined ? { $tag: 0 } : { $tag: 1, _0: v.aac }),
#| flac: (v.flac === undefined ? { $tag: 0 } : { $tag: 1, _0: v.flac }),
#| opus: (v.opus === undefined ? { $tag: 0 } : { $tag: 1, _0: v.opus }),
#| codec: v.codec,
#| sampleRate: v.sampleRate,
#| numberOfChannels: v.numberOfChannels,
#| bitrate: v.bitrate,
#| bitrateMode: (v.bitrateMode === undefined ? undefined : ['constant', 'variable'].indexOf(v.bitrateMode))
#| })
///|
/// Convert from JsValue
pub fn AudioEncoderConfig::from_js(value : JsValue) -> AudioEncoderConfig {
AudioEncoderConfig::from_js_ffi(value)
}
///|
/// AacEncoderConfig dictionary
pub(all) struct AacEncoderConfig {
format : AacBitstreamFormat?
}
///|
/// Create a new AacEncoderConfig with default values
pub fn AacEncoderConfig::default() -> AacEncoderConfig {
AacEncoderConfig::{ format: None }
}
///|
extern "js" fn AacEncoderConfig::to_js_ffi(self : AacEncoderConfig) -> JsValue =
#| (self) => ({
#| format: ((() => { const v = self.format; if (v === undefined) return undefined; return ['aac', 'adts'][v]; })())
#| })
///|
/// Convert to JsValue
pub fn AacEncoderConfig::to_js(self : AacEncoderConfig) -> JsValue {
AacEncoderConfig::to_js_ffi(self)
}
///|
extern "js" fn AacEncoderConfig::from_js_ffi(
value : JsValue,
) -> AacEncoderConfig =
#| (v) => ({
#| format: (v.format === undefined ? undefined : ['aac', 'adts'].indexOf(v.format))
#| })
///|
/// Convert from JsValue
pub fn AacEncoderConfig::from_js(value : JsValue) -> AacEncoderConfig {
AacEncoderConfig::from_js_ffi(value)
}