Skip to main content

linux_media/
media_interface_type.rs

1use linux_media_sys as media;
2use serde::{Deserialize, Serialize};
3
4use crate::error;
5
6#[derive(Debug, Copy, Clone, PartialEq, PartialOrd, Eq, Ord, Serialize, Deserialize)]
7pub enum MediaInterfaceType {
8    /// Device node interface for the Digital TV frontend
9    /// typically, /dev/dvb/adapter?/frontend?
10    DigitalTVFrontEnd,
11    /// Device node interface for the Digital TV demux
12    /// typically, /dev/dvb/adapter?/demux?
13    DigitalTVDemux,
14    /// Device node interface for the Digital TV DVR
15    /// typically, /dev/dvb/adapter?/dvr?
16    DigitalTVDVR,
17    /// Device node interface for the Digital TV Conditional Access
18    /// typically, /dev/dvb/adapter?/ca?
19    DigitalTVConditionalAccess,
20    /// Device node interface for the Digital TV network control
21    /// typically, /dev/dvb/adapter?/net?
22    DigitalTVNetworkControl,
23    /// Device node interface for video (V4L)
24    /// typically, /dev/video?
25    V4LVideo,
26    /// Device node interface for VBI (V4L)
27    /// typically, /dev/vbi?
28    V4LVBI,
29    /// Device node interface for radio (V4L)
30    /// typically, /dev/radio?
31    V4LRadio,
32    /// Device node interface for a V4L subdevice
33    /// typically, /dev/v4l-subdev?
34    V4LSubdev,
35    /// Device node interface for Software Defined Radio (V4L)
36    /// typically, /dev/swradio?
37    V4LSoftwareDefinedRadio,
38    /// Device node interface for Touch device (V4L)
39    /// typically, /dev/v4l-touch?
40    V4LTouchDevice,
41    /// Device node interface for ALSA PCM Capture
42    /// typically, /dev/snd/pcmC?D?c
43    ALSAPCMCapture,
44    /// Device node interface for ALSA PCM Playback
45    /// typically, /dev/snd/pcmC?D?p
46    ALSAPCMPlayback,
47    /// Device node interface for ALSA Control
48    /// typically, /dev/snd/controlC?
49    ALSAControl,
50    /// Device node interface for ALSA Compress
51    /// typically, /dev/snd/compr?
52    ALSACompress,
53    /// Device node interface for ALSA Raw MIDI
54    /// typically, /dev/snd/midi?
55    ALSARawMIDI,
56    /// Device node interface for ALSA Hardware Dependent
57    /// typically, /dev/snd/hwC?D?
58    ALSAHardwareDependent,
59    /// Device node interface for ALSA Sequencer
60    /// typically, /dev/snd/seq
61    ALSASequencer,
62    /// Device node interface for ALSA Timer
63    /// typically, /dev/snd/timer
64    ALSATimer,
65}
66
67impl Into<u32> for MediaInterfaceType {
68    fn into(self: Self) -> u32 {
69        use MediaInterfaceType::*;
70        match self {
71            DigitalTVFrontEnd => media::MEDIA_INTF_T_DVB_FE,
72            DigitalTVDemux => media::MEDIA_INTF_T_DVB_DEMUX,
73            DigitalTVDVR => media::MEDIA_INTF_T_DVB_DVR,
74            DigitalTVConditionalAccess => media::MEDIA_INTF_T_DVB_CA,
75            DigitalTVNetworkControl => media::MEDIA_INTF_T_DVB_NET,
76            V4LVideo => media::MEDIA_INTF_T_V4L_VIDEO,
77            V4LVBI => media::MEDIA_INTF_T_V4L_VBI,
78            V4LRadio => media::MEDIA_INTF_T_V4L_RADIO,
79            V4LSubdev => media::MEDIA_INTF_T_V4L_SUBDEV,
80            V4LSoftwareDefinedRadio => media::MEDIA_INTF_T_V4L_SWRADIO,
81            V4LTouchDevice => media::MEDIA_INTF_T_V4L_TOUCH,
82            ALSAPCMCapture => media::MEDIA_INTF_T_ALSA_PCM_CAPTURE,
83            ALSAPCMPlayback => media::MEDIA_INTF_T_ALSA_PCM_PLAYBACK,
84            ALSAControl => media::MEDIA_INTF_T_ALSA_CONTROL,
85            ALSACompress => media::MEDIA_INTF_T_ALSA_COMPRESS,
86            ALSARawMIDI => media::MEDIA_INTF_T_ALSA_RAWMIDI,
87            ALSAHardwareDependent => media::MEDIA_INTF_T_ALSA_HWDEP,
88            ALSASequencer => media::MEDIA_INTF_T_ALSA_SEQUENCER,
89            ALSATimer => media::MEDIA_INTF_T_ALSA_TIMER,
90        }
91    }
92}
93
94impl TryFrom<u32> for MediaInterfaceType {
95    type Error = error::Error;
96    fn try_from(v: u32) -> std::result::Result<Self, Self::Error> {
97        use MediaInterfaceType::*;
98        match v {
99            media::MEDIA_INTF_T_DVB_FE => Ok(DigitalTVFrontEnd),
100            media::MEDIA_INTF_T_DVB_DEMUX => Ok(DigitalTVDemux),
101            media::MEDIA_INTF_T_DVB_DVR => Ok(DigitalTVDVR),
102            media::MEDIA_INTF_T_DVB_CA => Ok(DigitalTVConditionalAccess),
103            media::MEDIA_INTF_T_DVB_NET => Ok(DigitalTVNetworkControl),
104            media::MEDIA_INTF_T_V4L_VIDEO => Ok(V4LVideo),
105            media::MEDIA_INTF_T_V4L_VBI => Ok(V4LVBI),
106            media::MEDIA_INTF_T_V4L_RADIO => Ok(V4LRadio),
107            media::MEDIA_INTF_T_V4L_SUBDEV => Ok(V4LSubdev),
108            media::MEDIA_INTF_T_V4L_SWRADIO => Ok(V4LSoftwareDefinedRadio),
109            media::MEDIA_INTF_T_V4L_TOUCH => Ok(V4LTouchDevice),
110            media::MEDIA_INTF_T_ALSA_PCM_CAPTURE => Ok(ALSAPCMCapture),
111            media::MEDIA_INTF_T_ALSA_PCM_PLAYBACK => Ok(ALSAPCMPlayback),
112            media::MEDIA_INTF_T_ALSA_CONTROL => Ok(ALSAControl),
113            media::MEDIA_INTF_T_ALSA_COMPRESS => Ok(ALSACompress),
114            media::MEDIA_INTF_T_ALSA_RAWMIDI => Ok(ALSARawMIDI),
115            media::MEDIA_INTF_T_ALSA_HWDEP => Ok(ALSAHardwareDependent),
116            media::MEDIA_INTF_T_ALSA_SEQUENCER => Ok(ALSASequencer),
117            media::MEDIA_INTF_T_ALSA_TIMER => Ok(ALSATimer),
118            _ => Err(error::Error::InterfaceTypeParseError { from: v }),
119        }
120    }
121}