summaryrefslogtreecommitdiff
path: root/dvb-spec/API/dvb_api/dmx.h
blob: e12056514298f95659bc3dd02da929b3af1ed90b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* 
 * 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 General Public License
 * as published by the Free Software Foundation; either version 2
 * 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 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 _OST_DMX_H_
#define _OST_DMX_H_

/* pid_t conflicts with linux/include/linux/types.h !!!*/

typedef uint16_t dvb_pid_t;  

#define DMX_FILTER_SIZE 16

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).                 */
} dmxOutput_t;


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


typedef enum
{
        DMX_PES_AUDIO,
	DMX_PES_VIDEO,
	DMX_PES_TELETEXT,
	DMX_PES_SUBTITLE,
	DMX_PES_PCR,
	DMX_PES_OTHER
} dmxPesType_t;


typedef enum
{
        DMX_SCRAMBLING_EV,
        DMX_FRONTEND_EV
} dmxEvent_t;


typedef enum
{
	DMX_SCRAMBLING_OFF,
	DMX_SCRAMBLING_ON
} dmxScramblingStatus_t;


typedef struct dmxFilter
{
	uint8_t         filter[DMX_FILTER_SIZE];
	uint8_t         mask[DMX_FILTER_SIZE];
} dmxFilter_t;

struct dmxFrontEnd
{
  //TBD             tbd;
};

struct dmxSctFilterParams
{
	dvb_pid_t                    pid;
	dmxFilter_t                  filter;
	uint32_t                     timeout;
	uint32_t                     flags;
#define DMX_CHECK_CRC       1
#define DMX_ONESHOT         2
#define DMX_IMMEDIATE_START 4
};


struct dmxPesFilterParams
{
	dvb_pid_t                    pid;
	dmxInput_t                   input;
	dmxOutput_t                  output;
	dmxPesType_t                 pesType;
	uint32_t                     flags;
};


struct dmxEvent
{
	dmxEvent_t                  event;
	time_t                      timeStamp;
	union
	{
		dmxScramblingStatus_t              scrambling;
	        //TBD;
	} u;
};


#define DMX_START                _IOW('o',41,void) 
#define DMX_STOP                 _IOW('o',42,void)
#define DMX_SET_FILTER           _IOW('o',43,struct dmxSctFilterParams *)
#define DMX_SET_PES_FILTER       _IOW('o',44,struct dmxPesFilterParams *)
#define DMX_SET_BUFFER_SIZE      _IOW('o',45,unsigned long)
#define DMX_GET_EVENT            _IOR('o',46,struct dmxEvent *)



#endif /*_OST_DMX_H_*/