1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * dmx.h 3*53ee8cc1Swenshuai.xi * 4*53ee8cc1Swenshuai.xi * Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> 5*53ee8cc1Swenshuai.xi * & Ralph Metzler <ralph@convergence.de> 6*53ee8cc1Swenshuai.xi * for convergence integrated media GmbH 7*53ee8cc1Swenshuai.xi * 8*53ee8cc1Swenshuai.xi * This program is free software; you can redistribute it and/or 9*53ee8cc1Swenshuai.xi * modify it under the terms of the GNU Lesser General Public License 10*53ee8cc1Swenshuai.xi * as published by the Free Software Foundation; either version 2.1 11*53ee8cc1Swenshuai.xi * of the License, or (at your option) any later version. 12*53ee8cc1Swenshuai.xi * 13*53ee8cc1Swenshuai.xi * This program is distributed in the hope that it will be useful, 14*53ee8cc1Swenshuai.xi * but WITHOUT ANY WARRANTY; without even the implied warranty of 15*53ee8cc1Swenshuai.xi * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*53ee8cc1Swenshuai.xi * GNU General Public License for more details. 17*53ee8cc1Swenshuai.xi * 18*53ee8cc1Swenshuai.xi * You should have received a copy of the GNU Lesser General Public License 19*53ee8cc1Swenshuai.xi * along with this program; if not, write to the Free Software 20*53ee8cc1Swenshuai.xi * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 21*53ee8cc1Swenshuai.xi * 22*53ee8cc1Swenshuai.xi */ 23*53ee8cc1Swenshuai.xi 24*53ee8cc1Swenshuai.xi #ifndef _DVBDMX_H_ 25*53ee8cc1Swenshuai.xi #define _DVBDMX_H_ 26*53ee8cc1Swenshuai.xi 27*53ee8cc1Swenshuai.xi #include <asm/types.h> 28*53ee8cc1Swenshuai.xi #include <time.h> 29*53ee8cc1Swenshuai.xi 30*53ee8cc1Swenshuai.xi 31*53ee8cc1Swenshuai.xi #define DMX_FILTER_SIZE 16 32*53ee8cc1Swenshuai.xi 33*53ee8cc1Swenshuai.xi typedef enum 34*53ee8cc1Swenshuai.xi { 35*53ee8cc1Swenshuai.xi DMX_OUT_DECODER, /* Streaming directly to decoder. */ 36*53ee8cc1Swenshuai.xi DMX_OUT_TAP, /* Output going to a memory buffer */ 37*53ee8cc1Swenshuai.xi /* (to be retrieved via the read command).*/ 38*53ee8cc1Swenshuai.xi DMX_OUT_TS_TAP, /* Output multiplexed into a new TS */ 39*53ee8cc1Swenshuai.xi /* (to be retrieved by reading from the */ 40*53ee8cc1Swenshuai.xi /* logical DVR device). */ 41*53ee8cc1Swenshuai.xi DMX_OUT_TSDEMUX_TAP /* Like TS_TAP but retrieved from the DMX device */ 42*53ee8cc1Swenshuai.xi } dmx_output_t; 43*53ee8cc1Swenshuai.xi 44*53ee8cc1Swenshuai.xi 45*53ee8cc1Swenshuai.xi typedef enum 46*53ee8cc1Swenshuai.xi { 47*53ee8cc1Swenshuai.xi DMX_IN_FRONTEND, /* Input from a front-end device. */ 48*53ee8cc1Swenshuai.xi DMX_IN_DVR /* Input from the logical DVR device. */ 49*53ee8cc1Swenshuai.xi } dmx_input_t; 50*53ee8cc1Swenshuai.xi 51*53ee8cc1Swenshuai.xi 52*53ee8cc1Swenshuai.xi typedef enum 53*53ee8cc1Swenshuai.xi { 54*53ee8cc1Swenshuai.xi DMX_PES_AUDIO0, 55*53ee8cc1Swenshuai.xi DMX_PES_VIDEO0, 56*53ee8cc1Swenshuai.xi DMX_PES_TELETEXT0, 57*53ee8cc1Swenshuai.xi DMX_PES_SUBTITLE0, 58*53ee8cc1Swenshuai.xi DMX_PES_PCR0, 59*53ee8cc1Swenshuai.xi 60*53ee8cc1Swenshuai.xi DMX_PES_AUDIO1, 61*53ee8cc1Swenshuai.xi DMX_PES_VIDEO1, 62*53ee8cc1Swenshuai.xi DMX_PES_TELETEXT1, 63*53ee8cc1Swenshuai.xi DMX_PES_SUBTITLE1, 64*53ee8cc1Swenshuai.xi DMX_PES_PCR1, 65*53ee8cc1Swenshuai.xi 66*53ee8cc1Swenshuai.xi DMX_PES_AUDIO2, 67*53ee8cc1Swenshuai.xi DMX_PES_VIDEO2, 68*53ee8cc1Swenshuai.xi DMX_PES_TELETEXT2, 69*53ee8cc1Swenshuai.xi DMX_PES_SUBTITLE2, 70*53ee8cc1Swenshuai.xi DMX_PES_PCR2, 71*53ee8cc1Swenshuai.xi 72*53ee8cc1Swenshuai.xi DMX_PES_AUDIO3, 73*53ee8cc1Swenshuai.xi DMX_PES_VIDEO3, 74*53ee8cc1Swenshuai.xi DMX_PES_TELETEXT3, 75*53ee8cc1Swenshuai.xi DMX_PES_SUBTITLE3, 76*53ee8cc1Swenshuai.xi DMX_PES_PCR3, 77*53ee8cc1Swenshuai.xi 78*53ee8cc1Swenshuai.xi DMX_PES_OTHER 79*53ee8cc1Swenshuai.xi } dmx_pes_type_t; 80*53ee8cc1Swenshuai.xi 81*53ee8cc1Swenshuai.xi #define DMX_PES_AUDIO DMX_PES_AUDIO0 82*53ee8cc1Swenshuai.xi #define DMX_PES_VIDEO DMX_PES_VIDEO0 83*53ee8cc1Swenshuai.xi #define DMX_PES_TELETEXT DMX_PES_TELETEXT0 84*53ee8cc1Swenshuai.xi #define DMX_PES_SUBTITLE DMX_PES_SUBTITLE0 85*53ee8cc1Swenshuai.xi #define DMX_PES_PCR DMX_PES_PCR0 86*53ee8cc1Swenshuai.xi 87*53ee8cc1Swenshuai.xi 88*53ee8cc1Swenshuai.xi typedef struct dmx_filter 89*53ee8cc1Swenshuai.xi { 90*53ee8cc1Swenshuai.xi __u8 filter[DMX_FILTER_SIZE]; 91*53ee8cc1Swenshuai.xi __u8 mask[DMX_FILTER_SIZE]; 92*53ee8cc1Swenshuai.xi __u8 mode[DMX_FILTER_SIZE]; 93*53ee8cc1Swenshuai.xi } dmx_filter_t; 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi 96*53ee8cc1Swenshuai.xi struct dmx_sct_filter_params 97*53ee8cc1Swenshuai.xi { 98*53ee8cc1Swenshuai.xi __u16 pid; 99*53ee8cc1Swenshuai.xi dmx_filter_t filter; 100*53ee8cc1Swenshuai.xi __u32 timeout; 101*53ee8cc1Swenshuai.xi __u32 flags; 102*53ee8cc1Swenshuai.xi #define DMX_CHECK_CRC 1 103*53ee8cc1Swenshuai.xi #define DMX_ONESHOT 2 104*53ee8cc1Swenshuai.xi #define DMX_IMMEDIATE_START 4 105*53ee8cc1Swenshuai.xi #define DMX_KERNEL_CLIENT 0x8000 106*53ee8cc1Swenshuai.xi }; 107*53ee8cc1Swenshuai.xi 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi struct dmx_pes_filter_params 110*53ee8cc1Swenshuai.xi { 111*53ee8cc1Swenshuai.xi __u16 pid; 112*53ee8cc1Swenshuai.xi dmx_input_t input; 113*53ee8cc1Swenshuai.xi dmx_output_t output; 114*53ee8cc1Swenshuai.xi dmx_pes_type_t pes_type; 115*53ee8cc1Swenshuai.xi __u32 flags; 116*53ee8cc1Swenshuai.xi }; 117*53ee8cc1Swenshuai.xi 118*53ee8cc1Swenshuai.xi typedef struct dmx_caps { 119*53ee8cc1Swenshuai.xi __u32 caps; 120*53ee8cc1Swenshuai.xi int num_decoders; 121*53ee8cc1Swenshuai.xi } dmx_caps_t; 122*53ee8cc1Swenshuai.xi 123*53ee8cc1Swenshuai.xi typedef enum { 124*53ee8cc1Swenshuai.xi DMX_SOURCE_FRONT0 = 0, 125*53ee8cc1Swenshuai.xi DMX_SOURCE_FRONT1, 126*53ee8cc1Swenshuai.xi DMX_SOURCE_FRONT2, 127*53ee8cc1Swenshuai.xi DMX_SOURCE_FRONT3, 128*53ee8cc1Swenshuai.xi DMX_SOURCE_DVR0 = 16, 129*53ee8cc1Swenshuai.xi DMX_SOURCE_DVR1, 130*53ee8cc1Swenshuai.xi DMX_SOURCE_DVR2, 131*53ee8cc1Swenshuai.xi DMX_SOURCE_DVR3 132*53ee8cc1Swenshuai.xi } dmx_source_t; 133*53ee8cc1Swenshuai.xi 134*53ee8cc1Swenshuai.xi struct dmx_stc { 135*53ee8cc1Swenshuai.xi unsigned int num; /* input : which STC? 0..N */ 136*53ee8cc1Swenshuai.xi unsigned int base; /* output: divisor for stc to get 90 kHz clock */ 137*53ee8cc1Swenshuai.xi __u64 stc; /* output: stc in 'base'*90 kHz units */ 138*53ee8cc1Swenshuai.xi }; 139*53ee8cc1Swenshuai.xi 140*53ee8cc1Swenshuai.xi 141*53ee8cc1Swenshuai.xi #define DMX_START _IO('o', 41) 142*53ee8cc1Swenshuai.xi #define DMX_STOP _IO('o', 42) 143*53ee8cc1Swenshuai.xi #define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params) 144*53ee8cc1Swenshuai.xi #define DMX_SET_PES_FILTER _IOW('o', 44, struct dmx_pes_filter_params) 145*53ee8cc1Swenshuai.xi #define DMX_SET_BUFFER_SIZE _IO('o', 45) 146*53ee8cc1Swenshuai.xi #define DMX_GET_PES_PIDS _IOR('o', 47, __u16[5]) 147*53ee8cc1Swenshuai.xi #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t) 148*53ee8cc1Swenshuai.xi #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t) 149*53ee8cc1Swenshuai.xi #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) 150*53ee8cc1Swenshuai.xi 151*53ee8cc1Swenshuai.xi #endif /*_DVBDMX_H_*/ 152