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

📄 macroblock.h

📁 由bmp生成mpeg2 的I_frame 数据
💻 H
字号:
/*******************************************************************
                     macroblock layer interface
 *******************************************************************/
#ifndef MACROBLOCK_H
#define MACROBLOCK_H

#include "video_stream.h"
#include "block.h"
#include "mc.h"

typedef struct {
	int macroblock_quant;
	int macroblock_motion_forward;
	int macroblock_motion_backward;
	int macroblock_pattern;
	int macroblock_intra;
	int spatial_temporal_weight_code_flag;
	int spatial_temporal_weight[2]; /* 0: top, 1: bottom */ 
	int spatial_temporal_weight_class;
	int spatial_temporal_integer_weight;
	int prediction_type;
	int motion_vector_count;
	int motion_vector_format;
	int dual_prime_motion_vector;
	int motion_vertical_field_select[2][2];
	int PMV[2][2][2];
	int DMV[2][2];
	int dct_type;
	int quantizer_scale_code;
	int block_count;
	READ_BLOCK read_block[12];
} MACROBLOCK;

typedef struct {
	/* mpeg1 flag */
	int mpeg1;
		
	/* in sequence_header ->
	        sequence_extension */
	int chroma_format;

	/* in sequence_header -> 
	        sequence_scalable_extension */
	int scalable_mode;

	/* in picture_header */
	int picture_coding_type;

	/* in picture_header ->
	        picture_coding_extension */
	int picture_structure;
	int top_field_first;
	int frame_predictive_frame_dct;
	int concealment_motion_vectors;
	int f_code[2][2];
	int full_pel_vector[2];

	/* in picture_header ->
	        picture_spatial_scalable_extension */
	int spatial_temporal_weight_code_table_index;

	int (* read_macroblock_type)(VIDEO_STREAM *in, MACROBLOCK *out);

} READ_MACROBLOCK_OPTION;

#ifdef __cplusplus
extern "C" {
#endif

#ifndef MACROBLOCK_C
extern int read_macroblock(VIDEO_STREAM *in, MACROBLOCK *out, READ_MACROBLOCK_OPTION *opt);
extern int get_macroblock_address_increment(VIDEO_STREAM *in);
extern int macroblock_to_read_block_option(MACROBLOCK *in, READ_BLOCK_OPTION *out);
extern int macroblock_to_mc_parameter(MACROBLOCK *in, MC_PARAMETER *out);
extern int macroblock_to_error_concealment_mc_parameter(MACROBLOCK *in, MC_PARAMETER *out);
extern int reset_motion_vector_predictor(MACROBLOCK *p);
extern int read_macroblock_type_snr_scalability(VIDEO_STREAM *in, MACROBLOCK *out);
extern int read_macroblock_type_b_spatial_scalability(VIDEO_STREAM *in, MACROBLOCK *out);
extern int read_macroblock_type_p_spatial_scalability(VIDEO_STREAM *in, MACROBLOCK *out);
extern int read_macroblock_type_i_spatial_scalability(VIDEO_STREAM *in, MACROBLOCK *out);
extern int read_macroblock_type_b(VIDEO_STREAM *in, MACROBLOCK *out);
extern int read_macroblock_type_p(VIDEO_STREAM *in, MACROBLOCK *out);
extern int read_macroblock_type_i(VIDEO_STREAM *in, MACROBLOCK *out);
extern int read_macroblock_type_d(VIDEO_STREAM *in, MACROBLOCK *out);
#endif

#ifdef __cplusplus
}
#endif
	
#endif

⌨️ 快捷键说明

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