cregit-Linux how code gets into the kernel

Release 4.11 drivers/media/pci/ttpci/dvb_filter.h

/*
 * dvb_filter.h
 *
 * Copyright (C) 2003 Convergence GmbH
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 2.1
 * 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.
 */

#ifndef _DVB_FILTER_H_

#define _DVB_FILTER_H_

#include <linux/slab.h>

#include "demux.h"


typedef int (dvb_filter_pes2ts_cb_t) (void *, unsigned char *);


struct dvb_filter_pes2ts {
	
unsigned char buf[188];
	
unsigned char cc;
	
dvb_filter_pes2ts_cb_t *cb;
	
void *priv;
};

void dvb_filter_pes2ts_init(struct dvb_filter_pes2ts *p2ts, unsigned short pid,
			    dvb_filter_pes2ts_cb_t *cb, void *priv);

int dvb_filter_pes2ts(struct dvb_filter_pes2ts *p2ts, unsigned char *pes,
		      int len, int payload_start);



#define PROG_STREAM_MAP  0xBC

#define PRIVATE_STREAM1  0xBD

#define PADDING_STREAM   0xBE

#define PRIVATE_STREAM2  0xBF

#define AUDIO_STREAM_S   0xC0

#define AUDIO_STREAM_E   0xDF

#define VIDEO_STREAM_S   0xE0

#define VIDEO_STREAM_E   0xEF

#define ECM_STREAM       0xF0

#define EMM_STREAM       0xF1

#define DSM_CC_STREAM    0xF2

#define ISO13522_STREAM  0xF3

#define PROG_STREAM_DIR  0xFF


#define DVB_PICTURE_START    0x00

#define DVB_USER_START       0xb2

#define DVB_SEQUENCE_HEADER  0xb3

#define DVB_SEQUENCE_ERROR   0xb4

#define DVB_EXTENSION_START  0xb5

#define DVB_SEQUENCE_END     0xb7

#define DVB_GOP_START        0xb8

#define DVB_EXCEPT_SLICE     0xb0


#define SEQUENCE_EXTENSION           0x01

#define SEQUENCE_DISPLAY_EXTENSION   0x02

#define PICTURE_CODING_EXTENSION     0x08

#define QUANT_MATRIX_EXTENSION       0x03

#define PICTURE_DISPLAY_EXTENSION    0x07


#define I_FRAME 0x01

#define B_FRAME 0x02

#define P_FRAME 0x03

/* Initialize sequence_data */

#define INIT_HORIZONTAL_SIZE        720

#define INIT_VERTICAL_SIZE          576

#define INIT_ASPECT_RATIO          0x02

#define INIT_FRAME_RATE            0x03

#define INIT_DISP_HORIZONTAL_SIZE   540

#define INIT_DISP_VERTICAL_SIZE     576


//flags2

#define PTS_DTS_FLAGS    0xC0

#define ESCR_FLAG        0x20

#define ES_RATE_FLAG     0x10

#define DSM_TRICK_FLAG   0x08

#define ADD_CPY_FLAG     0x04

#define PES_CRC_FLAG     0x02

#define PES_EXT_FLAG     0x01

//pts_dts flags

#define PTS_ONLY         0x80

#define PTS_DTS          0xC0


#define TS_SIZE        188

#define TRANS_ERROR    0x80

#define PAY_START      0x40

#define TRANS_PRIO     0x20

#define PID_MASK_HI    0x1F
//flags

#define TRANS_SCRMBL1  0x80

#define TRANS_SCRMBL2  0x40

#define ADAPT_FIELD    0x20

#define PAYLOAD        0x10

#define COUNT_MASK     0x0F

// adaptation flags

#define DISCON_IND     0x80

#define RAND_ACC_IND   0x40

#define ES_PRI_IND     0x20

#define PCR_FLAG       0x10

#define OPCR_FLAG      0x08

#define SPLICE_FLAG    0x04

#define TRANS_PRIV     0x02

#define ADAP_EXT_FLAG  0x01

// adaptation extension flags

#define LTW_FLAG       0x80

#define PIECE_RATE     0x40

#define SEAM_SPLICE    0x20



#define MAX_PLENGTH 0xFFFF

#define MMAX_PLENGTH (256*MAX_PLENGTH)

#ifndef IPACKS

#define IPACKS 2048
#endif


struct ipack {
	
int size;
	
int found;
	
u8 *buf;
	
u8 cid;
	
u32 plength;
	
u8 plen[2];
	
u8 flag1;
	
u8 flag2;
	
u8 hlength;
	
u8 pts[5];
	
u16 *pid;
	
int mpeg;
	
u8 check;
	
int which;
	
int done;
	
void *data;
	
void (*func)(u8 *buf,  int size, void *priv);
	
int count;
	
int repack_subids;
};


struct dvb_video_info {
	
u32 horizontal_size;
	
u32 vertical_size;
	
u32 aspect_ratio;
	
u32 framerate;
	
u32 video_format;
	
u32 bit_rate;
	
u32 comp_bit_rate;
	
u32 vbv_buffer_size;
	
s16 vbv_delay;
	
u32 CSPF;
	
u32 off;
};


#define OFF_SIZE 4

#define FIRST_FIELD 0

#define SECOND_FIELD 1

#define VIDEO_FRAME_PICTURE 0x03


struct mpg_picture {
	
int       channel;
	
struct dvb_video_info vinfo;
	
u32      *sequence_gop_header;
	
u32      *picture_header;
	
s32       time_code;
	
int       low_delay;
	
int       closed_gop;
	
int       broken_link;
	
int       sequence_header_flag;
	
int       gop_flag;
	
int       sequence_end_flag;

	
u8        profile_and_level;
	
s32       picture_coding_parameter;
	
u32       matrix[32];
	
s8        matrix_change_flag;

	
u8        picture_header_parameter;
  /* bit 0 - 2: bwd f code
     bit 3    : fpb vector
     bit 4 - 6: fwd f code
     bit 7    : fpf vector */

	
int       mpeg1_flag;
	
int       progressive_sequence;
	
int       sequence_display_extension_flag;
	
u32       sequence_header_data;
	
s16       last_frame_centre_horizontal_offset;
	
s16       last_frame_centre_vertical_offset;

	
u32       pts[2]; /* [0] 1st field, [1] 2nd field */
	
int       top_field_first;
	
int       repeat_first_field;
	
int       progressive_frame;
	
int       bank;
	
int       forward_bank;
	
int       backward_bank;
	
int       compress;
	
s16       frame_centre_horizontal_offset[OFF_SIZE];
		  /* [0-2] 1st field, [3] 2nd field */
	
s16       frame_centre_vertical_offset[OFF_SIZE];
		  /* [0-2] 1st field, [3] 2nd field */
	
s16       temporal_reference[2];
		  /* [0] 1st field, [1] 2nd field */

	
s8        picture_coding_type[2];
		  /* [0] 1st field, [1] 2nd field */
	
s8        picture_structure[2];
		  /* [0] 1st field, [1] 2nd field */
	
s8        picture_display_extension_flag[2];
		  /* [0] 1st field, [1] 2nd field */
		  /* picture_display_extenion() 0:no 1:exit*/
	
s8        pts_flag[2];
		  /* [0] 1st field, [1] 2nd field */
};


struct dvb_audio_info {
	
int layer;
	
u32 bit_rate;
	
u32 frequency;
	
u32 mode;
	
u32 mode_extension ;
	
u32 emphasis;
	
u32 framesize;
	
u32 off;
};

int dvb_filter_get_ac3info(u8 *mbuf, int count, struct dvb_audio_info *ai, int pr);


#endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Alan Cox65290.43%350.00%
Michael Hunold659.02%116.67%
Andrew Morton30.42%116.67%
Sakari Ailus10.14%116.67%
Total721100.00%6100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.