11. DVB Demux Header File¶
11.1. dmx.h¶
/* * dmx.h * * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> * & Ralph Metzler <ralph@convergence.de> * for convergence integrated media GmbH * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * */ #ifndef _UAPI_DVBDMX_H_ #define _UAPI_DVBDMX_H_ #include <linux/types.h> #ifndef __KERNEL__ #include <time.h> #endif #define DMX_FILTER_SIZE 16 enumdmx_output
{ 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 */ }; typedef enumdmx_output
dmx_output_t
; typedefdmx_input
{DMX_IN_FRONTEND
, /* Input from a front-end device. */DMX_IN_DVR
/* Input from the logical DVR device. */ }dmx_input_t
; typedefdmx_ts_pes
{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
; #define DMX_PES_AUDIODMX_PES_AUDIO0
#define DMX_PES_VIDEODMX_PES_VIDEO0
#define DMX_PES_TELETEXTDMX_PES_TELETEXT0
#define DMX_PES_SUBTITLEDMX_PES_SUBTITLE0
#define DMX_PES_PCRDMX_PES_PCR0
typedef structdmx_filter
{ __u8 filter[DMX_FILTER_SIZE]; __u8 mask[DMX_FILTER_SIZE]; __u8 mode[DMX_FILTER_SIZE]; }dmx_filter_t
; structdmx_sct_filter_params
{ __u16 pid;dmx_filter_t
filter; __u32 timeout; __u32 flags; #defineDMX_CHECK_CRC
1 #defineDMX_ONESHOT
2 #defineDMX_IMMEDIATE_START
4 #defineDMX_KERNEL_CLIENT
0x8000 }; structdmx_pes_filter_params
{ __u16 pid;dmx_input_t
input;dmx_output_t
output;dmx_pes_type_t
pes_type; __u32 flags; }; typedef structdmx_caps
{ __u32 caps; int num_decoders; }dmx_caps_t
; typedefdmx_source
{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
; structdmx_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 */ }; #define DMX_START _IO('o', 41) #define DMX_STOP _IO('o', 42) #define DMX_SET_FILTER _IOW('o', 43, structdmx_sct_filter_params
) #define DMX_SET_PES_FILTER _IOW('o', 44, structdmx_pes_filter_params
) #define DMX_SET_BUFFER_SIZE _IO('o', 45) #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5]) #define DMX_GET_CAPS _IOR('o', 48,dmx_caps_t
) #define DMX_SET_SOURCE _IOW('o', 49,dmx_source_t
) #define DMX_GET_STC _IOWR('o', 50, structdmx_stc
) #define DMX_ADD_PID _IOW('o', 51, __u16) #define DMX_REMOVE_PID _IOW('o', 52, __u16) #endif /* _UAPI_DVBDMX_H_ */