Chapter 10. DVB Demux Device
Prev | Part II. LINUX DVB API | Next

## Chapter 10. DVB Demux Device

The DVB demux device controls the filters of the DVB hardware/software. It can be accessed through /dev/adapter0/demux0. Data types and and ioctl definitions can be accessed by including linux/dvb/dmx.h in your application.

## Demux Data Types

### dmx_output_t

    typedef enum
    {
    	DMX_OUT_DECODER, /⋆ Streaming directly to decoder. ⋆/
    	DMX_OUT_TAP,     /⋆ Output going to a memory buffer ⋆/
    			 /⋆ (to be retrieved via the read command).⋆/
    	DMX_OUT_TS_TAP,  /⋆ Output multiplexed into a new TS  ⋆/
    			 /⋆ (to be retrieved by reading from the ⋆/
    			 /⋆ logical DVR device).                 ⋆/
    	DMX_OUT_TSDEMUX_TAP /⋆ Like TS_TAP but retrieved from the DMX device ⋆/
    } dmx_output_t;

DMX_OUT_TAP delivers the stream output to the demux device on which the ioctl is called.

DMX_OUT_TS_TAP routes output to the logical DVR device /dev/dvb/adapter0/dvr0, which delivers a TS multiplexed from all filters for which DMX_OUT_TS_TAP was specified.

### dmx_input_t

    typedef enum
    {
    	DMX_IN_FRONTEND, /⋆ Input from a front-end device.  ⋆/
    	DMX_IN_DVR       /⋆ Input from the logical DVR device.  ⋆/
    } dmx_input_t;

### dmx_pes_type_t

    typedef enum
    {
    	DMX_PES_AUDIO0,
    	DMX_PES_VIDEO0,
    	DMX_PES_TELETEXT0,
    	DMX_PES_SUBTITLE0,
    	DMX_PES_PCR0,

    	DMX_PES_AUDIO1,
    	DMX_PES_VIDEO1,
    	DMX_PES_TELETEXT1,
    	DMX_PES_SUBTITLE1,
    	DMX_PES_PCR1,

    	DMX_PES_AUDIO2,
    	DMX_PES_VIDEO2,
    	DMX_PES_TELETEXT2,
    	DMX_PES_SUBTITLE2,
    	DMX_PES_PCR2,

    	DMX_PES_AUDIO3,
    	DMX_PES_VIDEO3,
    	DMX_PES_TELETEXT3,
    	DMX_PES_SUBTITLE3,
    	DMX_PES_PCR3,

    	DMX_PES_OTHER
    } dmx_pes_type_t;

### struct dmx_filter

     typedef struct dmx_filter
    {
    	__u8  filter[DMX_FILTER_SIZE];
    	__u8  mask[DMX_FILTER_SIZE];
    	__u8  mode[DMX_FILTER_SIZE];
    } dmx_filter_t;

### struct dmx_sct_filter_params

    struct dmx_sct_filter_params
    {
    	__u16          pid;
    	dmx_filter_t   filter;
    	__u32          timeout;
    	__u32          flags;
    #define DMX_CHECK_CRC       1
    #define DMX_ONESHOT         2
    #define DMX_IMMEDIATE_START 4
    #define DMX_KERNEL_CLIENT   0x8000
    };

### struct dmx_pes_filter_params

    struct dmx_pes_filter_params
    {
    	__u16          pid;
    	dmx_input_t    input;
    	dmx_output_t   output;
    	dmx_pes_type_t pes_type;
    	__u32          flags;
    };

### struct dmx_event

     struct dmx_event
     {
    	 dmx_event_t          event;
    	 time_t               timeStamp;
    	 union
    	 {
    		 dmx_scrambling_status_t scrambling;
    	 } u;
     };

### struct dmx_stc

    struct dmx_stc {
    	unsigned int num;	/⋆ input : which STC? 0..N ⋆/
    	unsigned int base;	/⋆ output: divisor for stc to get 90 kHz clock ⋆/
    	__u64 stc;		/⋆ output: stc in 'base'⋆90 kHz units ⋆/
    };

### struct dmx_caps

     typedef struct dmx_caps {
    	__u32 caps;
    	int num_decoders;
    } dmx_caps_t;

### enum dmx_source_t

    typedef enum {
    	DMX_SOURCE_FRONT0 = 0,
    	DMX_SOURCE_FRONT1,
    	DMX_SOURCE_FRONT2,
    	DMX_SOURCE_FRONT3,
    	DMX_SOURCE_DVR0   = 16,
    	DMX_SOURCE_DVR1,
    	DMX_SOURCE_DVR2,
    	DMX_SOURCE_DVR3
    } dmx_source_t;

Prev | Up | Next
`FE_GET_PROPERTY/FE_SET_PROPERTY` | Home | Demux Function Calls