pub mod constraints;
mod manager;
pub mod track;
use derive_more::with_trait::Display;
use medea_client_api_proto::MediaType;
#[doc(inline)]
pub use self::{
constraints::{
AudioSource, DeviceAudioTrackConstraints, DeviceVideoTrackConstraints,
DisplayAudioTrackConstraints, DisplayVideoTrackConstraints, FacingMode,
LocalTracksConstraints, MediaStreamSettings, MediaTrackConstraints,
MultiSourceTracksConstraints, NoiseSuppressionLevel, RecvConstraints,
TrackConstraints, VideoSource,
},
manager::{
EnumerateDevicesError, EnumerateDisplaysError, GetDisplayMediaError,
GetUserMediaError, HandleDetachedError, InitLocalTracksError,
InvalidOutputAudioDeviceIdError, MediaManager, MediaManagerHandleImpl,
MicVolumeError,
},
track::{
AudioLevelError, AudioProcessingError, MediaSourceKind,
MediaStreamTrackState, remote::MediaDirection,
},
};
#[derive(Clone, Copy, Debug, Display, Eq, PartialEq)]
#[repr(u8)]
pub enum MediaKind {
#[display("audio")]
Audio = 0,
#[display("video")]
Video = 1,
}
impl MediaKind {
#[must_use]
pub const fn as_str(self) -> &'static str {
match self {
Self::Audio => "audio",
Self::Video => "video",
}
}
}
impl From<&TrackConstraints> for MediaKind {
fn from(media_type: &TrackConstraints) -> Self {
match media_type {
TrackConstraints::Audio(_) => Self::Audio,
TrackConstraints::Video(_) => Self::Video,
}
}
}
impl From<&MediaType> for MediaKind {
fn from(media_type: &MediaType) -> Self {
match media_type {
MediaType::Audio(_) => Self::Audio,
MediaType::Video(_) => Self::Video,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(u8)]
pub enum MediaDeviceKind {
AudioInput = 0,
VideoInput = 1,
AudioOutput = 2,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
#[repr(u8)]
pub enum AudioDeviceKind {
EarSpeaker = 0,
Speakerphone = 1,
WiredHeadphones = 2,
WiredHeadset = 3,
UsbHeadphones = 4,
UsbHeadset = 5,
BluetoothHeadphones = 6,
BluetoothHeadset = 7,
}
impl TryFrom<i64> for AudioDeviceKind {
type Error = ();
fn try_from(value: i64) -> Result<Self, Self::Error> {
Ok(match value {
0 => Self::EarSpeaker,
1 => Self::Speakerphone,
2 => Self::WiredHeadphones,
3 => Self::WiredHeadset,
4 => Self::UsbHeadphones,
5 => Self::UsbHeadset,
6 => Self::BluetoothHeadphones,
7 => Self::BluetoothHeadset,
_ => return Err(()),
})
}
}