// Generated from WebIDL - DO NOT EDIT
// Source: @webref/idl/webcodecs-vp9-codec-registration

///|
/// VideoEncoderEncodeOptionsForVp9 dictionary
pub(all) struct VideoEncoderEncodeOptionsForVp9 {
  quantizer : Nullable[Int]
}

///|
/// Create a new VideoEncoderEncodeOptionsForVp9 with default values
pub fn VideoEncoderEncodeOptionsForVp9::default() -> VideoEncoderEncodeOptionsForVp9 {
  VideoEncoderEncodeOptionsForVp9::{ quantizer: Nullable::Undefined }
}

///|
extern "js" fn VideoEncoderEncodeOptionsForVp9::to_js_ffi(
  self : VideoEncoderEncodeOptionsForVp9,
) -> JsValue =
  #| (self) => ({
  #|   quantizer: ((() => { const v = self.quantizer; if (v.$tag === 0) return undefined; if (v.$tag === 1) return null; return v._0; })())
  #| })

///|
/// Convert to JsValue
pub fn VideoEncoderEncodeOptionsForVp9::to_js(
  self : VideoEncoderEncodeOptionsForVp9,
) -> JsValue {
  VideoEncoderEncodeOptionsForVp9::to_js_ffi(self)
}

///|
extern "js" fn VideoEncoderEncodeOptionsForVp9::from_js_ffi(
  value : JsValue,
) -> VideoEncoderEncodeOptionsForVp9 =
  #| (v) => ({
  #|   quantizer: (v.quantizer === undefined ? { $tag: 0 } : v.quantizer === null ? { $tag: 1 } : { $tag: 2, _0: v.quantizer })
  #| })

///|
/// Convert from JsValue
pub fn VideoEncoderEncodeOptionsForVp9::from_js(
  value : JsValue,
) -> VideoEncoderEncodeOptionsForVp9 {
  VideoEncoderEncodeOptionsForVp9::from_js_ffi(value)
}