⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp4_header.h

📁 MPEG4编解码的C语言源代码
💻 H
字号:
/**************************************************************************
 *                                                                        *
 * This code has been developed by Andrea Graziani. This software is an   *
 * implementation of a part of one or more MPEG-4 Video tools as          *
 * specified in ISO/IEC 14496-2 standard.  Those intending to use this    *
 * software module in hardware or software products are advised that its  *
 * use may infringe existing patents or copyrights, and any such use      *
 * would be at such party's own risk.  The original developer of this     *
 * software module and his/her company, and subsequent editors and their  *
 * companies (including Project Mayo), will have no liability for use of  *
 * this software or modifications or derivatives thereof.                 *
 *                                                                        *
 * Project Mayo gives users of the Codec a license to this software       *
 * module or modifications thereof for use in hardware or software        *
 * products claiming conformance to the MPEG-4 Video Standard as          *
 * described in the Open DivX license.                                    *
 *                                                                        *
 * The complete Open DivX license can be found at                         *
 * http://www.projectmayo.com/opendivx/license.php                        *
 *                                                                        *
 **************************************************************************/
/**
*  Copyright (C) 2001 - Project Mayo
 *
 * Andrea Graziani (Ag)
 *
 * DivX Advanced Research Center <darc@projectmayo.com>
*
**/
// mp4_header.h //

#ifndef _MP4_HEADER_H_
#define _MP4_HEADER_H_

#define VO_START_CODE		0x8
#define VOL_START_CODE	0x12
#define GOP_START_CODE  0x1b3
#define VOP_START_CODE	0x1b6

#define I_VOP		0
#define P_VOP		1
#define B_VOP		2

#define RECTANGULAR				0
#define BINARY						1
#define BINARY_SHAPE_ONLY 2 
#define GRAY_SCALE				3

#define STATIC_SPRITE			1

#define USER_DATA_START_CODE	0x01b2

#define NOT_CODED -1
#define INTER			0
#define INTER_Q	  1
#define INTER4V		2
#define INTRA			3
#define INTRA_Q	 	4
#define STUFFING	7

/*** *** ***/

typedef struct _mp4_header {

	// vol
	int ident;
	int random_accessible_vol;
	int type_indication;
	int is_object_layer_identifier;
	int visual_object_layer_verid;
	int visual_object_layer_priority;
	int aspect_ratio_info;
	int vol_control_parameters;
	int chroma_format;
	int low_delay;
	int vbv_parameters;
	int first_half_bit_rate;
	int latter_half_bit_rate;
	int first_half_vbv_buffer_size;
	int latter_half_vbv_buffer_size;
	int first_half_vbv_occupancy;
	int latter_half_vbv_occupancy;
	int shape;
	int time_increment_resolution;
	int fixed_vop_rate;
	int fixed_vop_time_increment;
	int width;
	int height;
	int interlaced;
	int obmc_disable;
	int sprite_usage;
	int not_8_bit;
	int quant_precision;
	int bits_per_pixel;
	int quant_type;
	int load_intra_quant_matrix;
	int load_nonintra_quant_matrix;
	int quarter_pixel;
	int complexity_estimation_disable;
	int error_res_disable;
	int data_partitioning;
	int intra_acdc_pred_disable;
	int scalability;

	// gop
	int time_code;
	int closed_gov;
	int broken_link;

	// vop
	int prediction_type;
	int time_base;
	int time_inc;
	int vop_coded;
	int rounding_type;
	int hor_spat_ref;
	int ver_spat_ref;
	int change_CR_disable;
	int constant_alpha;
	int constant_alpha_value;
	int intra_dc_vlc_thr;
	int quantizer;
	int fcode_for;
	int shape_coding_type;

	// macroblock
	int not_coded;
	int mcbpc;
	int derived_mb_type;
	int cbpc;
	int ac_pred_flag;
	int cbpy;
	int dquant;
	int cbp;

	// extra/derived
	int mba_size;
	int mb_xsize;
	int mb_ysize;
	int picnum;
	int mba;
	int mb_xpos;
	int mb_ypos;
	int dc_scaler;

	int intrablock_rescaled;

} mp4_header;

/*** *** ***/

extern int getvolhdr();
extern int getgophdr();
extern int getvophdr();

extern int __inline nextbits(int nbits);
extern int __inline bytealigned(int nbits);
extern void __inline next_start_code();
extern int __inline nextbits_bytealigned(int nbit);

#endif // _MP4_HEADER_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -