root/drivers/media/pci/ttpci/dvb_filter.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  17 #ifndef _DVB_FILTER_H_
  18 #define _DVB_FILTER_H_
  19 
  20 #include <linux/slab.h>
  21 
  22 #include <media/demux.h>
  23 
  24 typedef int (dvb_filter_pes2ts_cb_t) (void *, unsigned char *);
  25 
  26 struct dvb_filter_pes2ts {
  27         unsigned char buf[188];
  28         unsigned char cc;
  29         dvb_filter_pes2ts_cb_t *cb;
  30         void *priv;
  31 };
  32 
  33 void dvb_filter_pes2ts_init(struct dvb_filter_pes2ts *p2ts, unsigned short pid,
  34                             dvb_filter_pes2ts_cb_t *cb, void *priv);
  35 
  36 int dvb_filter_pes2ts(struct dvb_filter_pes2ts *p2ts, unsigned char *pes,
  37                       int len, int payload_start);
  38 
  39 
  40 #define PROG_STREAM_MAP  0xBC
  41 #define PRIVATE_STREAM1  0xBD
  42 #define PADDING_STREAM   0xBE
  43 #define PRIVATE_STREAM2  0xBF
  44 #define AUDIO_STREAM_S   0xC0
  45 #define AUDIO_STREAM_E   0xDF
  46 #define VIDEO_STREAM_S   0xE0
  47 #define VIDEO_STREAM_E   0xEF
  48 #define ECM_STREAM       0xF0
  49 #define EMM_STREAM       0xF1
  50 #define DSM_CC_STREAM    0xF2
  51 #define ISO13522_STREAM  0xF3
  52 #define PROG_STREAM_DIR  0xFF
  53 
  54 #define DVB_PICTURE_START    0x00
  55 #define DVB_USER_START       0xb2
  56 #define DVB_SEQUENCE_HEADER  0xb3
  57 #define DVB_SEQUENCE_ERROR   0xb4
  58 #define DVB_EXTENSION_START  0xb5
  59 #define DVB_SEQUENCE_END     0xb7
  60 #define DVB_GOP_START        0xb8
  61 #define DVB_EXCEPT_SLICE     0xb0
  62 
  63 #define SEQUENCE_EXTENSION           0x01
  64 #define SEQUENCE_DISPLAY_EXTENSION   0x02
  65 #define PICTURE_CODING_EXTENSION     0x08
  66 #define QUANT_MATRIX_EXTENSION       0x03
  67 #define PICTURE_DISPLAY_EXTENSION    0x07
  68 
  69 #define I_FRAME 0x01
  70 #define B_FRAME 0x02
  71 #define P_FRAME 0x03
  72 
  73 /* Initialize sequence_data */
  74 #define INIT_HORIZONTAL_SIZE        720
  75 #define INIT_VERTICAL_SIZE          576
  76 #define INIT_ASPECT_RATIO          0x02
  77 #define INIT_FRAME_RATE            0x03
  78 #define INIT_DISP_HORIZONTAL_SIZE   540
  79 #define INIT_DISP_VERTICAL_SIZE     576
  80 
  81 
  82 //flags2
  83 #define PTS_DTS_FLAGS    0xC0
  84 #define ESCR_FLAG        0x20
  85 #define ES_RATE_FLAG     0x10
  86 #define DSM_TRICK_FLAG   0x08
  87 #define ADD_CPY_FLAG     0x04
  88 #define PES_CRC_FLAG     0x02
  89 #define PES_EXT_FLAG     0x01
  90 
  91 //pts_dts flags
  92 #define PTS_ONLY         0x80
  93 #define PTS_DTS          0xC0
  94 
  95 #define TS_SIZE        188
  96 #define TRANS_ERROR    0x80
  97 #define PAY_START      0x40
  98 #define TRANS_PRIO     0x20
  99 #define PID_MASK_HI    0x1F
 100 //flags
 101 #define TRANS_SCRMBL1  0x80
 102 #define TRANS_SCRMBL2  0x40
 103 #define ADAPT_FIELD    0x20
 104 #define PAYLOAD        0x10
 105 #define COUNT_MASK     0x0F
 106 
 107 // adaptation flags
 108 #define DISCON_IND     0x80
 109 #define RAND_ACC_IND   0x40
 110 #define ES_PRI_IND     0x20
 111 #define PCR_FLAG       0x10
 112 #define OPCR_FLAG      0x08
 113 #define SPLICE_FLAG    0x04
 114 #define TRANS_PRIV     0x02
 115 #define ADAP_EXT_FLAG  0x01
 116 
 117 // adaptation extension flags
 118 #define LTW_FLAG       0x80
 119 #define PIECE_RATE     0x40
 120 #define SEAM_SPLICE    0x20
 121 
 122 
 123 #define MAX_PLENGTH 0xFFFF
 124 #define MMAX_PLENGTH (256*MAX_PLENGTH)
 125 
 126 #ifndef IPACKS
 127 #define IPACKS 2048
 128 #endif
 129 
 130 struct ipack {
 131         int size;
 132         int found;
 133         u8 *buf;
 134         u8 cid;
 135         u32 plength;
 136         u8 plen[2];
 137         u8 flag1;
 138         u8 flag2;
 139         u8 hlength;
 140         u8 pts[5];
 141         u16 *pid;
 142         int mpeg;
 143         u8 check;
 144         int which;
 145         int done;
 146         void *data;
 147         void (*func)(u8 *buf,  int size, void *priv);
 148         int count;
 149         int repack_subids;
 150 };
 151 
 152 struct dvb_video_info {
 153         u32 horizontal_size;
 154         u32 vertical_size;
 155         u32 aspect_ratio;
 156         u32 framerate;
 157         u32 video_format;
 158         u32 bit_rate;
 159         u32 comp_bit_rate;
 160         u32 vbv_buffer_size;
 161         s16 vbv_delay;
 162         u32 CSPF;
 163         u32 off;
 164 };
 165 
 166 #define OFF_SIZE 4
 167 #define FIRST_FIELD 0
 168 #define SECOND_FIELD 1
 169 #define VIDEO_FRAME_PICTURE 0x03
 170 
 171 struct mpg_picture {
 172         int       channel;
 173         struct dvb_video_info vinfo;
 174         u32      *sequence_gop_header;
 175         u32      *picture_header;
 176         s32       time_code;
 177         int       low_delay;
 178         int       closed_gop;
 179         int       broken_link;
 180         int       sequence_header_flag;
 181         int       gop_flag;
 182         int       sequence_end_flag;
 183 
 184         u8        profile_and_level;
 185         s32       picture_coding_parameter;
 186         u32       matrix[32];
 187         s8        matrix_change_flag;
 188 
 189         u8        picture_header_parameter;
 190   /* bit 0 - 2: bwd f code
 191      bit 3    : fpb vector
 192      bit 4 - 6: fwd f code
 193      bit 7    : fpf vector */
 194 
 195         int       mpeg1_flag;
 196         int       progressive_sequence;
 197         int       sequence_display_extension_flag;
 198         u32       sequence_header_data;
 199         s16       last_frame_centre_horizontal_offset;
 200         s16       last_frame_centre_vertical_offset;
 201 
 202         u32       pts[2]; /* [0] 1st field, [1] 2nd field */
 203         int       top_field_first;
 204         int       repeat_first_field;
 205         int       progressive_frame;
 206         int       bank;
 207         int       forward_bank;
 208         int       backward_bank;
 209         int       compress;
 210         s16       frame_centre_horizontal_offset[OFF_SIZE];
 211                   /* [0-2] 1st field, [3] 2nd field */
 212         s16       frame_centre_vertical_offset[OFF_SIZE];
 213                   /* [0-2] 1st field, [3] 2nd field */
 214         s16       temporal_reference[2];
 215                   /* [0] 1st field, [1] 2nd field */
 216 
 217         s8        picture_coding_type[2];
 218                   /* [0] 1st field, [1] 2nd field */
 219         s8        picture_structure[2];
 220                   /* [0] 1st field, [1] 2nd field */
 221         s8        picture_display_extension_flag[2];
 222                   /* [0] 1st field, [1] 2nd field */
 223                   /* picture_display_extenion() 0:no 1:exit*/
 224         s8        pts_flag[2];
 225                   /* [0] 1st field, [1] 2nd field */
 226 };
 227 
 228 struct dvb_audio_info {
 229         int layer;
 230         u32 bit_rate;
 231         u32 frequency;
 232         u32 mode;
 233         u32 mode_extension ;
 234         u32 emphasis;
 235         u32 framesize;
 236         u32 off;
 237 };
 238 
 239 int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr);
 240 
 241 
 242 #endif

/* [<][>][^][v][top][bottom][index][help] */