linux_media/
media_interface_type.rs1use 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 DigitalTVFrontEnd,
11 DigitalTVDemux,
14 DigitalTVDVR,
17 DigitalTVConditionalAccess,
20 DigitalTVNetworkControl,
23 V4LVideo,
26 V4LVBI,
29 V4LRadio,
32 V4LSubdev,
35 V4LSoftwareDefinedRadio,
38 V4LTouchDevice,
41 ALSAPCMCapture,
44 ALSAPCMPlayback,
47 ALSAControl,
50 ALSACompress,
53 ALSARawMIDI,
56 ALSAHardwareDependent,
59 ALSASequencer,
62 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}