Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * dvb_filter.h
  3  *
  4  * Copyright (C) 2003 Convergence GmbH
  5  *
  6  * This program is free software; you can redistribute it and/or
  7  * modify it under the terms of the GNU Lesser General Public License
  8  * as published by the Free Software Foundation; either version 2.1
  9  * of the License, or (at your option) any later version.
 10  *
 11  * This program is distributed in the hope that it will be useful,
 12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 14  * GNU General Public License for more details.
 15  *
 16  * You should have received a copy of the GNU Lesser General Public License
 17  * along with this program; if not, write to the Free Software
 18  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 19  */
 20 
 21 #ifndef _DVB_FILTER_H_
 22 #define _DVB_FILTER_H_
 23 
 24 #include <linux/slab.h>
 25 
 26 #include "demux.h"
 27 
 28 typedef int (dvb_filter_pes2ts_cb_t) (void *, unsigned char *);
 29 
 30 struct dvb_filter_pes2ts {
 31         unsigned char buf[188];
 32         unsigned char cc;
 33         dvb_filter_pes2ts_cb_t *cb;
 34         void *priv;
 35 };
 36 
 37 void dvb_filter_pes2ts_init(struct dvb_filter_pes2ts *p2ts, unsigned short pid,
 38                             dvb_filter_pes2ts_cb_t *cb, void *priv);
 39 
 40 int dvb_filter_pes2ts(struct dvb_filter_pes2ts *p2ts, unsigned char *pes,
 41                       int len, int payload_start);
 42 
 43 
 44 #define PROG_STREAM_MAP  0xBC
 45 #define PRIVATE_STREAM1  0xBD
 46 #define PADDING_STREAM   0xBE
 47 #define PRIVATE_STREAM2  0xBF
 48 #define AUDIO_STREAM_S   0xC0
 49 #define AUDIO_STREAM_E   0xDF
 50 #define VIDEO_STREAM_S   0xE0
 51 #define VIDEO_STREAM_E   0xEF
 52 #define ECM_STREAM       0xF0
 53 #define EMM_STREAM       0xF1
 54 #define DSM_CC_STREAM    0xF2
 55 #define ISO13522_STREAM  0xF3
 56 #define PROG_STREAM_DIR  0xFF
 57 
 58 #define DVB_PICTURE_START    0x00
 59 #define DVB_USER_START       0xb2
 60 #define DVB_SEQUENCE_HEADER  0xb3
 61 #define DVB_SEQUENCE_ERROR   0xb4
 62 #define DVB_EXTENSION_START  0xb5
 63 #define DVB_SEQUENCE_END     0xb7
 64 #define DVB_GOP_START        0xb8
 65 #define DVB_EXCEPT_SLICE     0xb0
 66 
 67 #define SEQUENCE_EXTENSION           0x01
 68 #define SEQUENCE_DISPLAY_EXTENSION   0x02
 69 #define PICTURE_CODING_EXTENSION     0x08
 70 #define QUANT_MATRIX_EXTENSION       0x03
 71 #define PICTURE_DISPLAY_EXTENSION    0x07
 72 
 73 #define I_FRAME 0x01
 74 #define B_FRAME 0x02
 75 #define P_FRAME 0x03
 76 
 77 /* Initialize sequence_data */
 78 #define INIT_HORIZONTAL_SIZE        720
 79 #define INIT_VERTICAL_SIZE          576
 80 #define INIT_ASPECT_RATIO          0x02
 81 #define INIT_FRAME_RATE            0x03
 82 #define INIT_DISP_HORIZONTAL_SIZE   540
 83 #define INIT_DISP_VERTICAL_SIZE     576
 84 
 85 
 86 //flags2
 87 #define PTS_DTS_FLAGS    0xC0
 88 #define ESCR_FLAG        0x20
 89 #define ES_RATE_FLAG     0x10
 90 #define DSM_TRICK_FLAG   0x08
 91 #define ADD_CPY_FLAG     0x04
 92 #define PES_CRC_FLAG     0x02
 93 #define PES_EXT_FLAG     0x01
 94 
 95 //pts_dts flags
 96 #define PTS_ONLY         0x80
 97 #define PTS_DTS          0xC0
 98 
 99 #define TS_SIZE        188
100 #define TRANS_ERROR    0x80
101 #define PAY_START      0x40
102 #define TRANS_PRIO     0x20
103 #define PID_MASK_HI    0x1F
104 //flags
105 #define TRANS_SCRMBL1  0x80
106 #define TRANS_SCRMBL2  0x40
107 #define ADAPT_FIELD    0x20
108 #define PAYLOAD        0x10
109 #define COUNT_MASK     0x0F
110 
111 // adaptation flags
112 #define DISCON_IND     0x80
113 #define RAND_ACC_IND   0x40
114 #define ES_PRI_IND     0x20
115 #define PCR_FLAG       0x10
116 #define OPCR_FLAG      0x08
117 #define SPLICE_FLAG    0x04
118 #define TRANS_PRIV     0x02
119 #define ADAP_EXT_FLAG  0x01
120 
121 // adaptation extension flags
122 #define LTW_FLAG       0x80
123 #define PIECE_RATE     0x40
124 #define SEAM_SPLICE    0x20
125 
126 
127 #define MAX_PLENGTH 0xFFFF
128 #define MMAX_PLENGTH (256*MAX_PLENGTH)
129 
130 #ifndef IPACKS
131 #define IPACKS 2048
132 #endif
133 
134 struct ipack {
135         int size;
136         int found;
137         u8 *buf;
138         u8 cid;
139         u32 plength;
140         u8 plen[2];
141         u8 flag1;
142         u8 flag2;
143         u8 hlength;
144         u8 pts[5];
145         u16 *pid;
146         int mpeg;
147         u8 check;
148         int which;
149         int done;
150         void *data;
151         void (*func)(u8 *buf,  int size, void *priv);
152         int count;
153         int repack_subids;
154 };
155 
156 struct dvb_video_info {
157         u32 horizontal_size;
158         u32 vertical_size;
159         u32 aspect_ratio;
160         u32 framerate;
161         u32 video_format;
162         u32 bit_rate;
163         u32 comp_bit_rate;
164         u32 vbv_buffer_size;
165         s16 vbv_delay;
166         u32 CSPF;
167         u32 off;
168 };
169 
170 #define OFF_SIZE 4
171 #define FIRST_FIELD 0
172 #define SECOND_FIELD 1
173 #define VIDEO_FRAME_PICTURE 0x03
174 
175 struct mpg_picture {
176         int       channel;
177         struct dvb_video_info vinfo;
178         u32      *sequence_gop_header;
179         u32      *picture_header;
180         s32       time_code;
181         int       low_delay;
182         int       closed_gop;
183         int       broken_link;
184         int       sequence_header_flag;
185         int       gop_flag;
186         int       sequence_end_flag;
187 
188         u8        profile_and_level;
189         s32       picture_coding_parameter;
190         u32       matrix[32];
191         s8        matrix_change_flag;
192 
193         u8        picture_header_parameter;
194   /* bit 0 - 2: bwd f code
195      bit 3    : fpb vector
196      bit 4 - 6: fwd f code
197      bit 7    : fpf vector */
198 
199         int       mpeg1_flag;
200         int       progressive_sequence;
201         int       sequence_display_extension_flag;
202         u32       sequence_header_data;
203         s16       last_frame_centre_horizontal_offset;
204         s16       last_frame_centre_vertical_offset;
205 
206         u32       pts[2]; /* [0] 1st field, [1] 2nd field */
207         int       top_field_first;
208         int       repeat_first_field;
209         int       progressive_frame;
210         int       bank;
211         int       forward_bank;
212         int       backward_bank;
213         int       compress;
214         s16       frame_centre_horizontal_offset[OFF_SIZE];
215                   /* [0-2] 1st field, [3] 2nd field */
216         s16       frame_centre_vertical_offset[OFF_SIZE];
217                   /* [0-2] 1st field, [3] 2nd field */
218         s16       temporal_reference[2];
219                   /* [0] 1st field, [1] 2nd field */
220 
221         s8        picture_coding_type[2];
222                   /* [0] 1st field, [1] 2nd field */
223         s8        picture_structure[2];
224                   /* [0] 1st field, [1] 2nd field */
225         s8        picture_display_extension_flag[2];
226                   /* [0] 1st field, [1] 2nd field */
227                   /* picture_display_extenion() 0:no 1:exit*/
228         s8        pts_flag[2];
229                   /* [0] 1st field, [1] 2nd field */
230 };
231 
232 struct dvb_audio_info {
233         int layer;
234         u32 bit_rate;
235         u32 frequency;
236         u32 mode;
237         u32 mode_extension ;
238         u32 emphasis;
239         u32 framesize;
240         u32 off;
241 };
242 
243 int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr);
244 
245 
246 #endif
247 
  This page was automatically generated by the LXR engine.