use bitflags::bitflags;
use strum::FromRepr;
pub use {
DmxOutput::*,
DmxInput::*,
DmxTsPes::*,
};
#[repr(u32)]
#[allow(non_camel_case_types)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, FromRepr)]
pub enum DmxOutput {
DMX_OUT_DECODER = 0,
DMX_OUT_TAP = 1,
DMX_OUT_TS_TAP = 2,
DMX_OUT_TSDEMUX_TAP = 3
}
#[repr(u32)]
#[allow(non_camel_case_types)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, FromRepr)]
pub enum DmxInput {
DMX_IN_FRONTEND = 0,
DMX_IN_DVR = 1
}
#[repr(u32)]
#[allow(non_camel_case_types)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, FromRepr)]
pub enum DmxTsPes {
DMX_PES_AUDIO0 = 0,
DMX_PES_VIDEO0 = 1,
DMX_PES_TELETEXT0 = 2,
DMX_PES_SUBTITLE0 = 3,
DMX_PES_PCR0 = 4,
DMX_PES_AUDIO1 = 5,
DMX_PES_VIDEO1 = 6,
DMX_PES_TELETEXT1 = 7,
DMX_PES_SUBTITLE1 = 8,
DMX_PES_PCR1 = 9,
DMX_PES_AUDIO2 = 10,
DMX_PES_VIDEO2 = 11,
DMX_PES_TELETEXT2 = 12,
DMX_PES_SUBTITLE2 = 13,
DMX_PES_PCR2 = 14,
DMX_PES_AUDIO3 = 15,
DMX_PES_VIDEO3 = 16,
DMX_PES_TELETEXT3 = 17,
DMX_PES_SUBTITLE3 = 18,
DMX_PES_PCR3 = 19,
DMX_PES_OTHER = 20,
}
bitflags! {
#[repr(C)]
pub struct DmxFilterFlags : u32 {
const DMX_CHECK_CRC = 1;
const DMX_ONESHOT = 2;
const DMX_IMMEDIATE_START = 4;
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DmxPesFilterParams {
pub pid: u16,
pub input: DmxInput,
pub output: DmxOutput,
pub pes_type: DmxTsPes,
pub flags: DmxFilterFlags,
}
pub const DMX_FILTER_SIZE: usize = 16;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DmxFilter {
pub filter: [u8; DMX_FILTER_SIZE],
pub mask: [u8; DMX_FILTER_SIZE],
pub mode: [u8; DMX_FILTER_SIZE],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DmxSctFilterParams {
pub pid: u16,
pub filter: DmxFilter,
pub timeout: u32,
pub flags: DmxFilterFlags
}