#![allow(clippy::new_without_default)]
use derive_more::{From, Into};
use wasm_bindgen::prelude::*;
use crate::{api::FacingMode, media};
#[wasm_bindgen]
#[derive(Clone, Debug, From, Into)]
pub struct MediaStreamSettings(media::MediaStreamSettings);
#[wasm_bindgen]
impl MediaStreamSettings {
#[must_use]
#[wasm_bindgen(constructor)]
pub fn new() -> Self {
media::MediaStreamSettings::new().into()
}
pub fn audio(&mut self, constraints: AudioTrackConstraints) {
self.0.audio(constraints.into());
}
pub fn device_video(&mut self, constraints: DeviceVideoTrackConstraints) {
self.0.device_video(constraints.into());
}
pub fn display_video(&mut self, constraints: DisplayVideoTrackConstraints) {
self.0.display_video(constraints.into());
}
}
#[wasm_bindgen]
#[derive(Debug, From, Into)]
pub struct AudioTrackConstraints(media::AudioTrackConstraints);
#[wasm_bindgen]
impl AudioTrackConstraints {
#[must_use]
#[wasm_bindgen(constructor)]
pub fn new() -> Self {
media::AudioTrackConstraints::new().into()
}
pub fn device_id(&mut self, device_id: String) {
self.0.device_id(device_id);
}
pub fn exact_auto_gain_control(&mut self, auto_gain_control: bool) {
self.0.exact_auto_gain_control(auto_gain_control);
}
pub fn ideal_auto_gain_control(&mut self, auto_gain_control: bool) {
self.0.ideal_auto_gain_control(auto_gain_control);
}
}
#[wasm_bindgen]
#[derive(Debug, From, Into)]
pub struct DeviceVideoTrackConstraints(media::DeviceVideoTrackConstraints);
#[wasm_bindgen]
impl DeviceVideoTrackConstraints {
#[must_use]
#[wasm_bindgen(constructor)]
pub fn new() -> Self {
media::DeviceVideoTrackConstraints::new().into()
}
pub fn device_id(&mut self, device_id: String) {
self.0.device_id(device_id);
}
pub fn exact_facing_mode(&mut self, facing_mode: FacingMode) {
self.0.exact_facing_mode(facing_mode.into());
}
pub fn ideal_facing_mode(&mut self, facing_mode: FacingMode) {
self.0.ideal_facing_mode(facing_mode.into());
}
pub fn exact_height(&mut self, height: u32) {
self.0.exact_height(height);
}
pub fn ideal_height(&mut self, height: u32) {
self.0.ideal_height(height);
}
pub fn height_in_range(&mut self, min: u32, max: u32) {
self.0.height_in_range(min, max);
}
pub fn exact_width(&mut self, width: u32) {
self.0.exact_width(width);
}
pub fn ideal_width(&mut self, width: u32) {
self.0.ideal_width(width);
}
pub fn width_in_range(&mut self, min: u32, max: u32) {
self.0.width_in_range(min, max);
}
}
#[wasm_bindgen]
#[derive(Clone, Debug, From, Into)]
pub struct DisplayVideoTrackConstraints(media::DisplayVideoTrackConstraints);
#[wasm_bindgen]
impl DisplayVideoTrackConstraints {
#[must_use]
#[wasm_bindgen(constructor)]
pub fn new() -> Self {
media::DisplayVideoTrackConstraints::new().into()
}
pub fn exact_height(&mut self, height: u32) {
self.0.exact_height(height);
}
pub fn ideal_height(&mut self, height: u32) {
self.0.ideal_height(height);
}
pub fn exact_width(&mut self, width: u32) {
self.0.exact_width(width);
}
pub fn ideal_width(&mut self, width: u32) {
self.0.ideal_width(width);
}
pub fn exact_frame_rate(&mut self, frame_rate: u32) {
self.0.exact_frame_rate(frame_rate);
}
pub fn ideal_frame_rate(&mut self, frame_rate: u32) {
self.0.ideal_frame_rate(frame_rate);
}
}