~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to include/linux/dvb/dmx.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

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