obs_wrapper/source/
media.rs

1use obs_sys::{
2    obs_media_state, obs_media_state_OBS_MEDIA_STATE_BUFFERING,
3    obs_media_state_OBS_MEDIA_STATE_ENDED, obs_media_state_OBS_MEDIA_STATE_ERROR,
4    obs_media_state_OBS_MEDIA_STATE_NONE, obs_media_state_OBS_MEDIA_STATE_OPENING,
5    obs_media_state_OBS_MEDIA_STATE_PAUSED, obs_media_state_OBS_MEDIA_STATE_PLAYING,
6    obs_media_state_OBS_MEDIA_STATE_STOPPED,
7};
8
9/// OBS media state
10#[derive(Debug, Eq, PartialEq, Copy, Clone)]
11pub enum MediaState {
12    None,
13    Playing,
14    Opening,
15    Buffering,
16    Paused,
17    Stopped,
18    Ended,
19    Error,
20}
21
22impl MediaState {
23    #[allow(dead_code)]
24    pub(crate) fn from_native(state: obs_media_state) -> Option<Self> {
25        match state {
26            obs_media_state_OBS_MEDIA_STATE_NONE => Some(Self::None),
27            obs_media_state_OBS_MEDIA_STATE_PLAYING => Some(Self::Playing),
28            obs_media_state_OBS_MEDIA_STATE_OPENING => Some(Self::Opening),
29            obs_media_state_OBS_MEDIA_STATE_BUFFERING => Some(Self::Buffering),
30            obs_media_state_OBS_MEDIA_STATE_PAUSED => Some(Self::Paused),
31            obs_media_state_OBS_MEDIA_STATE_STOPPED => Some(Self::Stopped),
32            obs_media_state_OBS_MEDIA_STATE_ENDED => Some(Self::Ended),
33            obs_media_state_OBS_MEDIA_STATE_ERROR => Some(Self::Error),
34            _ => None,
35        }
36    }
37
38    pub(crate) fn to_native(self) -> obs_media_state {
39        match self {
40            Self::None => obs_media_state_OBS_MEDIA_STATE_NONE,
41            Self::Playing => obs_media_state_OBS_MEDIA_STATE_PLAYING,
42            Self::Opening => obs_media_state_OBS_MEDIA_STATE_OPENING,
43            Self::Buffering => obs_media_state_OBS_MEDIA_STATE_BUFFERING,
44            Self::Paused => obs_media_state_OBS_MEDIA_STATE_PAUSED,
45            Self::Stopped => obs_media_state_OBS_MEDIA_STATE_STOPPED,
46            Self::Ended => obs_media_state_OBS_MEDIA_STATE_ENDED,
47            Self::Error => obs_media_state_OBS_MEDIA_STATE_ERROR,
48        }
49    }
50}