homerHEVC代码阅读(7)——基础结构之hvenc_engine_t
来源:互联网 发布:iis7批量绑定域名工具 编辑:程序博客网 时间:2024/05/21 15:47
hvenc_engine_t表示一个编码器引擎,一个编码器可以有多个编码器引擎。每一个编码器引擎中包含了一组编码线程,进行实际的编码工作。
// 编码器引擎struct hvenc_engine_t{ // 索引 intindex; // 已经编码的帧数 intnum_encoded_frames; // 该引擎已经编码的帧数 intnum_encoded_frames_in_engine; // 编码器句柄 hvenc_enc_t*hvenc;//parent encoder layer // 编码线程 henc_thread_t*thread[MAX_NUM_THREADS];//*encoders_list; // 编码线程句柄 hmr_thread_ththreads[MAX_NUM_THREADS]; //? intdbg_num_posts[MAX_NUM_THREADS]; // 片的nal单元列表 nalu_tslice_nalu_list[STREAMS_PER_ENGINE];//slice // 片的nal单元 nalu_t*slice_nalu;//slice // 片的比特流 bitstream_tslice_bs;//slice information previous to nalu_ebsp conversion // 当启用wfpp的时候的比特流 bitstream_t*aux_bs;//list of bitstreams for coef wfpp encoding //bitstream_t*bc_bs;//list of bitstreams for coef wfpp encoding // 子流的数量 intnum_sub_streams; // 子流的入口点 uint*sub_streams_entry_point_list; //Encoder Cfg //Encoding layer // 一个GOP内I帧的周期 intintra_period; // 最后一个I帧 uint32_tlast_intra; // 最后一个重新初始化的GOP uint32_tlast_gop_reinit; // gop的大小 intgop_size; // 当屏幕改变时是否重新初始化gop intgop_reinit_on_scene_change; // B帧数量还是比特的数量? intnum_b; // 一致性模式 uintconformance_mode; // 扩展/收缩步长 uintpad_left, pad_right; uintpad_top, pad_bottom; // 下面几个变量还不是很清楚!!! intpict_width[3], pict_height[3]; intpict_width_in_ctu, pict_height_in_ctu; intpict_total_ctu; intctu_width[3], ctu_height[3]; //statistics for scene change detection // 平均的失真? doubleavg_dist; // 屏幕是否改变 intis_scene_change; //cfg // 帧率 floatframe_rate; // 最大的CU尺寸 intmax_cu_size; intmax_cu_size_shift;//log2 of cu max size intmax_cu_size_shift_chroma;//log2 of cu chroma max size // 帧内预测的变换块的最大深度 intmax_intra_tr_depth; // 帧间预测的变换块的最大深度 intmax_inter_tr_depth; // 预测编码的最大分割深度 intmax_pred_partition_depth;//, max_inter_pred_depth;//max depth for prediction // 运动估计的精确度 intmotion_estimation_precision; // mvp的候选数量 intnum_merge_mvp_candidates; // 是否启用wfpp intwfpp_enable; // 如果启用了wfpp,改变了表示wfpp的线程数 intwfpp_num_threads; // 一个cu中的分割数 intnum_partitions_in_cu; intnum_partitions_in_cu_shift; intmincu_mintr_shift_diff;//log2//g_uiAddCUDepth // cu的最大深度 intmax_cu_depth;//m_uiMaxCUDepth // 最小的cu尺寸 intmin_cu_size; intmin_cu_size_shift;//log2 // 变换单元的最大/最小尺寸 intmin_tu_size_shift;//log2 intmax_tu_size_shift;//log2 // 起始的分割深度 intpartition_depth_start[MAX_PARTITION_DEPTH];//start of depths in the partition_info list // 比特深度,一般是8bit,也有可能是10比特 intbit_depth; // 最大的子时域层 intmax_sublayers; // 最大的时域层 intmax_layers; //sao cfg int calculate_preblock_stats; intslice_enabled[NUM_PICT_COMPONENTS]; //current picture_t Config // 当前的帧 picture_tcurrent_pict; // 当前的参考帧 video_frame_t*curr_reference_frame; wnd_tsao_aux_wnd; // 最后的poc,即帧的数量 intlast_poc, last_idr;//, num_pictures; // 参考列表的数量 intnum_ref_lists; intnum_refs_idx_active_list[2]; // 参考的帧数 intnum_ref_frames; //intra predicition // ctu信息 ctu_info_t*ctu_info;//[MAX_MB_GROUP_SIZE]; // 性能模式 intperformance_mode; // 率失真模式 intrd_mode; // 比特率模式 intbitrate_mode; // 比特率 doublebitrate; doublevbv_size; doublevbv_init; // 最小的量化步长 intqp_min; // 量化深度 intqp_depth;//granularity of qp diff intpict_qp, chroma_qp_offset;//for fixed qp mode or initial qp in cbr or vbr //scan tables //-------these are for abs_index partitions--------------------- // 地址映射数组 uint16_t*abs2raster_table; //g_auiZscanToRaster en HM uint16_t*raster2abs_table; //g_auiRasterToZscan en HM //-------------------------------------------------------------- // 用于帧内角度预测的表格 const uint16_t*ang_table;//for angular intra prediction const uint16_t*inv_ang_table;//for angular intra prediction //arithmetic coding // 编码环境 intnum_ee; enc_env_t**ee_list;//encoding enviroment list intnum_ec; enc_env_t*ec_list;//enconding context list //rate distortion // rd——率失真 rate_distortion_trd; doublesao_lambdas[NUM_PICT_COMPONENTS]; //rate control // 速率控制 rate_control_trc; //input and output // 一些信号量 // 输入信号 hmr_sem_tinput_sem; hmr_sem_ptrinput_signal; hmr_sem_ptrinput_wait; // 输出信号 hmr_sem_toutput_sem; hmr_sem_ptroutput_signal; hmr_sem_ptroutput_wait;#ifdef COMPUTE_METRICS doublecurrent_psnr[3]; doubleaccumulated_psnr[3]; //FILE*f_psnr;#endif //FILE*debug_file; // sao调试模式 intsao_debug_mode[3]; // sao调试类型 intsao_debug_type[5];};
0 0
- homerHEVC代码阅读(7)——基础结构之hvenc_engine_t
- homerHEVC代码阅读(12)——基础结构之其他结构
- homerHEVC代码阅读(3)——基础结构之HVENC_Cfg
- homerHEVC代码阅读(4)——基础结构之stream_t
- homerHEVC代码阅读(5)——基础结构之bitstream_t与nalu_t
- homerHEVC代码阅读(6)——基础结构之hvenc_enc_t
- homerHEVC代码阅读(8)——基础结构之henc_thread_t
- homerHEVC代码阅读(9)——基础结构之low_level_funcs_t
- homerHEVC代码阅读(10)——基础结构之picture_t、slice_t、ctu_info_t
- homerHEVC代码阅读(11)——基础结构之output_set_t、video_frame_t
- homerHEVC代码阅读(13)——基础结构之encoder_in_out_t
- homerHEVC代码阅读(14)——基础结构之ref_pic_set_t、rate_control_t、rate_distortion_t
- homerHEVC代码阅读(15)——基础结构之enc_env_t
- homerHEVC代码阅读(16)——基础结构之entropy_model_t、context_model_buff_t、context_model_t、binary_model_t
- homerHEVC代码阅读(17)——基础结构之cu_partition_info_t
- homerHEVC代码阅读(18)——基础结构之mv_candiate_list_t,motion_vector_t,temporal_info_t,wnd_t
- homerHEVC代码阅读(19)——基础结构之vps_t,sps_t,pps_t
- homerHEVC代码阅读(20)——基础结构之profiler_t,profile_tier_t,profile_tier_level_t
- ThinkPHP框架三 空操作和跨控制器调用
- Power of Two
- Win7+Ubuntu双系统时间不一致问题
- 11. pring Security 匿名认证
- sql语法大全
- homerHEVC代码阅读(7)——基础结构之hvenc_engine_t
- js中console命令的使用
- 网络通信(TCP和UDP)
- 发布iOS企业分发(三)(生成ipa及下载链接)
- ClippingNode的简单使用
- solr5.3.1从mysql导入索引
- Android 使用SystemBarTint设置状态栏颜色
- 我看Java虚拟机(5)---虚拟机加载机制
- linux使用Xmanager连接CentOS 5.5