linux/drivers/staging/media/av7110/dvb_filter.h
<<
>>
Prefs
   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
  24typedef int (dvb_filter_pes2ts_cb_t) (void *, unsigned char *);
  25
  26struct dvb_filter_pes2ts {
  27        unsigned char buf[188];
  28        unsigned char cc;
  29        dvb_filter_pes2ts_cb_t *cb;
  30        void *priv;
  31};
  32
  33void dvb_filter_pes2ts_init(struct dvb_filter_pes2ts *p2ts, unsigned short pid,
  34                            dvb_filter_pes2ts_cb_t *cb, void *priv);
  35
  36int 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
 130struct 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
 152struct 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
 171struct 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
 228struct 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
 239int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr);
 240
 241
 242#endif
 243