obs_wrapper/source/
media.rs1use 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#[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}