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_*/
|