T264关键数据结构解析

 
2007-01-28 12:11

struct T264_t
{
T264_frame_t refn[MAX_REFFRAMES];//单向参考帧
T264_frame_t* ref[2][MAX_REFFRAMES];//双向参考帧
int32_t refl0_num;//LIST0参考表序号
int32_t refl1_num;//LIST1参考表序号
T264_frame_t cur;//当前帧
T264_frame_t* rec;//记录帧
int32_t width;//16*宏块宽度
int32_t height;//16*宏块高度
int32_t stride;//亮度块搜索范围宽度
int32_t stride_uv;// 色度块搜索范围宽度
int32_t edged_stride;//亮度块搜索范围边缘宽度
int32_t edged_stride_uv;// 色度块搜索范围边缘宽度
int32_t edged_width;
int32_t edged_height;
int32_t qp_y, qp_uv;//亮度量化参数,色度量化参数
void* bs;//边缘强度
uint8_t* bs_buf;//边缘强度存储区
uint32_t flags;//选择编码模式标志,由输入参数params确定
int32_t mb_width, mb_height;//宏块宽度和高度
int32_t mb_stride;//宏块范围
uint32_t idr_pic_id;//idr图像ID
uint32_t frame_id;帧ID,在整个编码过程该序号唯一(统计意义)
uint32_t frame_num;//码流层面的帧序号,用于输出码流
uint32_t frame_no;
//当前编码GOP中的帧编号,用于决定条类型(Slice type)
uint32_t last_i_frame_id;//最后一个关键帧id号,
uint32_t poc;//POC号
uint32_t slice_type;//条类型
int32_t skip;//SKIP类型
uint32_t sad_all;//用于码率控制
T264_frame_t pending_bframes[MAX_BREFNUMS]; //待处理的B帧存放在该数组中
int32_t pending_bframes_num;//待处理B帧序号

int32_t header_bits;//
int32_t frame_bits;

//解码部分数据结构
uint8_t* src_buf; /*源图像缓冲区开头*/
uint8_t* src_end; /*源图像缓冲区结尾*/

uint8_t* nal_buf; /* 一个NAL单元缓冲区 */
int32_t nal_len; /*一个NAL单元长度 */

uint32_t shift; /*用于NAL单元解码 */
uint32_t shift1;

action_t action;//

int32_t need_deblock;//是否支持去块效应滤波
T264_frame_t* cur_frame;//当前帧

/*帧速率信息 */
int32_t aspect_ratio;
int32_t video_format;//视频格式
T264_frame_t output;//输出帧
/* 解码部分 */

T264_param_t param;//解码参数
T264_nal_t nal;//NAL单元
T264_seq_set_t ss;//顺序参数集
T264_pic_set_t ps;//图像参数集
T264_slice_t slice;//条块信息
T264_stat_t stat;//统计信息

T264_mb_t mb;//宏块信息
int16_t subpel_pts;//子像素像素数
T264_plugin_t plugins[MAX_PLUGINS];

T264_cabac_t cabac;//CABAC解码信息

int32_t plug_num;

T264_predict_16x16_mode_t pred16x16[4 + 3];//7种INTRA16*16模式
T264_predict_8x8_mode_t pred8x8[4 + 3];//7中INTRA8*8模式
T264_predict_4x4_mode_t pred4x4[9 + 3];//12种INTRA4*4模式
T264_cmp_t cmp[8];//SATD函数数组
T264_cmp_t sad[8];//SAD函数数组
T264_pia_t pia[9]; //平均像素函数数组for pixel avearage func

//快速DCT变换部分数据结构
T264_dct_t fdct4x4;
T264_dct_t fdct4x4dc;
T264_dct_t fdct2x2dc;
逆DCT变换部分数据结构
T264_dct_t idct4x4;
T264_dct_t idct4x4dc;
T264_dct_t idct2x2dc;

量化部分数据结构
T264_quant4x4_t quant4x4;
T264_quant4x4dc_t quant4x4dc;
T264_quant2x2dc_t quant2x2dc;
T264_iquant_t iquant4x4;
T264_iquant_t iquant4x4dc;
T264_iquant_t iquant2x2dc;

/*用于生成残差数据和重建的函数*/
expand8to16_t expand8to16;
contract16to8_t contract16to8;
expand8to16sub_t expand8to16sub;
contract16to8add_t contract16to8add;
memcpy_stride_u_t memcpy_stride_u;

//像素插值信息
T264_eighth_pixel_mc_u_t eighth_pixel_mc_u;
T264_interpolate_halfpel_t interpolate_halfpel_h;
T264_interpolate_halfpel_t interpolate_halfpel_v;
T264_interpolate_halfpel_t interpolate_halfpel_hv;
T264_pixel_avg_t pixel_avg;// 平均像素结构
T264_satd_i16x16_u_t T264_satd_16x16_u;//SATD码率控制信息
T264_search_t search;//搜索参数定义
T264_emms_t emms;//
};
T264_param_t结构
{
int32_t width, height;//宏块高度和宽度
int32_t qp;//量化参数
int32_t bitrate;//码率
float framerate;//帧速率
int32_t iframe; // I 帧间距
int32_t idrframe; // idr 间距
int32_t ref_num; // 参考帧数目
int32_t b_num; // b frame num
int32_t flags;//编码模式
int32_t cpu;//CPU是否支持
int32_t search_x;//搜索区域水平方向大小
int32_t search_y;//搜索区域垂直方向大小
int32_t block_size;//宏块大小
int32_t disable_filter;//是否支持去块效应滤波器
int32_t aspect_ratio;//比例
int32_t video_format;//视频格式
int32_t luma_coeff_cost;//量化系数损失
int32_t min_qp;//最小量化参数
int32_t max_qp;//最大量化参数
int32_t enable_rc;//是否支持码率控制
int32_t enable_stat;//是否支持统计
int32_t direct_flag;//是否支持运动矢量直接预测
int32_t cabac;//CABAC模式
void* rec_name;//记录文件
} T264_param_t;

你可能感兴趣的:(数据结构,iframe,video,header,search,plugins)