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
原创粉丝点击