libaom 编码参数详细介绍:扩展编码参数解析

发布时间:2026/5/27 18:31:08

libaom 编码参数详细介绍:扩展编码参数解析 roiaom_roi_map 结构体解释aom 感兴趣区域映射ROI映射是一种技术用于标识帧中用户认为重要的区域以便编码器可以对这些区域进行优化编码例如提高这些区域的编码质量或分配更多的比特率。*roi_map指向一个数组用于为每个8x8区域分配一个ID。每个ID对应一个特定的ROI用于标识该区域的重要性。rows行的数量表示感兴趣区域的宽。cols列的数量表示感兴趣区域的高。delta_q为每个ROI段指定量化器增量Quantizer deltas。量化器增量用于调整该段内区域的量化级别。最大值为AOM_MAX_SEGMENTS即为 8表示一帧最多有 8 个 ROI。delta_lf为每个ROI段指定循环滤波器增量Loop filter deltas。循环滤波器增量用于调整该段内区域的去块效应和其它滤波处理。最大值为AOM_MAX_SEGMENTS即为 8。static_threshold为每个ROI段指定静态跳出阈值Static breakout threshold。这个阈值用于控制编码器在该段内进行更复杂编码处理的触发条件。/*!\brief aom region of interest map * * These defines the data structures for the region of interest map * * TODO(yaowu): create a unit test for ROI map related APIs * */typedefstructaom_roi_map{/*! An id between 0 and 7 for each 8x8 region within a frame. */unsignedchar*roi_map;unsignedintrows;/** Number of rows. */unsignedintcols;/** Number of columns. */intdelta_q[AOM_MAX_SEGMENTS];/** Quantizer deltas. */intdelta_lf[AOM_MAX_SEGMENTS];/** Loop filter deltas. *//*! Static breakout threshold for each segment. */unsignedintstatic_threshold[AOM_MAX_SEGMENTS];}aom_roi_map_t;aom_active_map_t 结构体解释AOM 活动区域映射活动区域映射active region map是一种技术用于标识帧中包含重要内容如运动或细节的区域以便编码器可以集中资源对这些区域进行编码从而提高编码效率。*active_map指向一个数组用于标识每个16x16区域是否为活动区域。数组中的每个元素对应帧中的一个16x16区域值为1表示该区域是活动的值为0表示该区域是非活动的。rows行的数量表示活动区域的宽。cols列的数量表示活动区域的高。/*!\brief aom active region map * * These defines the data structures for active region map * */typedefstructaom_active_map{/*!\brief specify an on (1) or off (0) each 16x16 region within a frame */unsignedchar*active_map;unsignedintrows;/** number of rows */unsignedintcols;/** number of cols */}aom_active_map_t;scaleaom_scaling_mode_t 结构体解释指定图像的水平和垂直缩放模式。h_scaling_mode表示水平方向上的缩放模式。v_scaling_mode表示垂直方向上的缩放模式。/*!\brief aom image scaling mode * * This defines the data structure for image scaling mode * */typedefstructaom_scaling_mode{AOM_SCALING_MODE h_scaling_mode;/** horizontal scaling mode */AOM_SCALING_MODE v_scaling_mode;/** vertical scaling mode */}aom_scaling_mode_t;timing infoaom_timing_info_type_t 枚举解释用于AV1编码器中指定时间信息的类型。时间信息类型用于告诉解码器帧与帧之间的时间关系这有助于确保视频播放时的时间准确性。AOM_TIMING_UNSPECIFIED不指定时间信息。在这种情况下解码器可能需要依赖于默认设置或者其他外部信息来确定帧的时间关系。AOM_TIMING_EQUAL指定所有帧具有相同的持续时间。这可以用于那些帧率恒定的视频。AOM_TIMING_DEC_MODEL使用解码器模型来指定时间信息。这允许编码器为解码器提供一个模型解码器可以使用这个模型来计算帧之间的时间间隔。/*!brief AV1 encoder timing info type signaling */typedefenum{AOM_TIMING_UNSPECIFIED,AOM_TIMING_EQUAL,AOM_TIMING_DEC_MODEL}aom_timing_info_type_t;tuneaom_tune_content 枚举解释AV1 编码器内容类型根据视频内容的不同编码器可以进行不同的优化以提高编码效率和视频质量。AOM_CONTENT_DEFAULT默认的内容类型。如果编码器不能确定视频内容的具体类型或者没有指定内容类型将使用这种默认设置。AOM_CONTENT_SCREEN屏幕内容。这种类型通常用于编码屏幕录制、动画或图形密集型视频。这些视频通常包含更多的文字、颜色块和细节纹理编码器会针对这些特点进行优化。AOM_CONTENT_FILM电影内容。这种类型通常用于编码真实拍摄的电影或电视剧。这些视频通常包含更多的自然场景、复杂的纹理和运动模糊编码器会针对这些特点进行优化。AOM_CONTENT_INVALID说明无效的内容类型。这通常用作错误检查以确保内容类型的值在有效范围内。/*!brief AV1 encoder content type */typedefenum{AOM_CONTENT_DEFAULT,AOM_CONTENT_SCREEN,AOM_CONTENT_FILM,AOM_CONTENT_INVALID}aom_tune_content;aom_tune_metric 枚举解释微调参数模型用于指定编码器在进行率失真Rate-DistortionRD优化时应该针对的特定输入材料类型。这种调整可以帮助编码器针对特定的视频质量评估指标进行优化。AOM_TUNE_PSNR调整编码器以优化峰值信噪比PSNR。AOM_TUNE_SSIM调整编码器以优化结构相似性SSIM。AOM_TUNE_VMAF_WITH_PREPROCESSING调整编码器以优化视频多方法评估融合VMAF得分同时包括预处理步骤。AOM_TUNE_VMAF_WITHOUT_PREPROCESSING调整编码器以优化VMAF得分但不包括预处理步骤。AOM_TUNE_VMAF_MAX_GAIN调整编码器以最大化VMAF得分的增益。AOM_TUNE_VMAF_NEG_MAX_GAIN调整编码器以最大化VMAF得分的负增益。AOM_TUNE_BUTTERAUGLI调整编码器以优化Butteraugli得分。Butteraugli是一种基于多尺度结构相似性指数MS-SSIM的评估指标。AOM_TUNE_VMAF_SALIENCY_MAP调整编码器以优化VMAF得分同时考虑视觉显著性图。视觉显著性图是一种表示图像中哪些区域更吸引视觉注意力的图像。/*!\brief Model tuning parameters * * Changes the encoder to tune for certain types of input material. * */typedefenum{AOM_TUNE_PSNR0,AOM_TUNE_SSIM1,/* NOTE: enums 2 and 3 unused */AOM_TUNE_VMAF_WITH_PREPROCESSING4,AOM_TUNE_VMAF_WITHOUT_PREPROCESSING5,AOM_TUNE_VMAF_MAX_GAIN6,AOM_TUNE_VMAF_NEG_MAX_GAIN7,AOM_TUNE_BUTTERAUGLI8,AOM_TUNE_VMAF_SALIENCY_MAP9,}aom_tune_metric;aom_dist_metric 枚举解释用于指定在率失真Rate-DistortionRD优化过程中使用的失真度量方法。AOM_DIST_METRIC_PSNR使用峰值信噪比PSNR作为块内RD优化的失真度量。PSNR是一种常用的视频质量评估指标它测量的是原始视频和压缩视频之间的差异。AOM_DIST_METRIC_QM_PSNR使用量化矩阵加权的PSNR作为块内RD优化的失真度量。这种方法考虑了量化矩阵对不同区域的加权以更准确地评估失真。如果编译时没有指定 --enable-qm1则此选项会退回到与 AOM_DIST_METRIC_PSNR 相同的行为。/*!\brief Distortion metric to use for RD optimization. * * Changes the encoder to use a different distortion metric for RD search. Note * that this value operates on a lower level compared to aom_tune_metric - it * affects the distortion metric inside a block, while aom_tune_metric only * affects RD across blocks. * */typedefenum{// Use PSNR for in-block rate-distortion optimization.AOM_DIST_METRIC_PSNR,// Use quantization matrix-weighted PSNR for in-block rate-distortion// optimization. If --enable-qm1 is not specified, this falls back to// behaving in the same way as AOM_DIST_METRIC_PSNR.AOM_DIST_METRIC_QM_PSNR,}aom_dist_metric;svcaom_svc_layer_id_t 结构体解释空域和时域的层 IDspatial_layer_id表示空间层的ID。空间层ID用于区分不同的空间分辨率层。temporal_layer_id表示时间层的ID。时间层ID用于区分不同的帧率层。/*!brief Struct for spatial and temporal layer ID */typedefstructaom_svc_layer_id{intspatial_layer_id;/** Spatial layer ID */inttemporal_layer_id;/** Temporal layer ID */}aom_svc_layer_id_t;aom_svc_params_t 结构体解释svc 编码的参数类型配置number_spatial_layers表示空间层的数量。空间层允许视频在不同的分辨率下进行编码libaom 设置空间层的最大值是MAX_NUM_SPATIAL_LAYERS即 4。number_temporal_layers表示时间层的数量。时间层允许视频在不同的帧率下进行编码最大值根据不同的libaom 版本有不同的设置一般不超过 AOM_MAX_TS_LAYERS即 8。max_quantizers[AOM_MAX_LAYERS]为每个层指定最大量化器。量化器控制编码的压缩率和质量大小为AOM_MAX_LAYERS即 32即表示最大的层为 32空间最大层为 4那么时域最大层即为 8。min_quantizers[AOM_MAX_LAYERS]为每个层指定最小量化器大小为AOM_MAX_LAYERS即 32。scaling_factor_num[AOM_MAX_SS_LAYERS]表示空间层的缩放因子的分子大小为AOM_MAX_SS_LAYERS即 4。scaling_factor_den[AOM_MAX_SS_LAYERS]表示空间层的缩放因子的分母大小为AOM_MAX_SS_LAYERS即 4。layer_target_bitrate[AOM_MAX_LAYERS]为每一层设置的目标码率单位是每秒kilobits大小为AOM_MAX_LAYERS即 32。framerate_factor[AOM_MAX_TS_LAYERS]为每个时域层设置的帧率因子大小为AOM_MAX_TS_LAYERS即 8。/*!brief Parameter type for SVC * * In the arrays of size AOM_MAX_LAYERS, the index for spatial layer sl and * temporal layer tl is sl * number_temporal_layers tl. * */typedefstructaom_svc_params{intnumber_spatial_layers;/** Number of spatial layers */intnumber_temporal_layers;/** Number of temporal layers */intmax_quantizers[AOM_MAX_LAYERS];/** Max Q for each layer */intmin_quantizers[AOM_MAX_LAYERS];/** Min Q for each layer */intscaling_factor_num[AOM_MAX_SS_LAYERS];/** Scaling factor-numerator */intscaling_factor_den[AOM_MAX_SS_LAYERS];/** Scaling factor-denominator *//*! Target bitrate for each layer, in kilobits per second */intlayer_target_bitrate[AOM_MAX_LAYERS];/*! Frame rate factor for each temporal layer */intframerate_factor[AOM_MAX_TS_LAYERS];}aom_svc_params_t;aom_svc_ref_frame_config_t 结构体解释配置视频编码中的参考帧设置。reference[7]用于指示每个参考帧是否被使用。reference[0]last最近编码的帧reference[1]last2第二近编码的帧reference[2]last3第三近编码的帧reference[3]golden关键帧或长期参考帧reference[4]bwdref反向参考帧reference[5]altref2替代参考帧2reference[6]altref替代参考帧ref_idx[7]为上面每个参考帧指定缓冲区槽位索引。refresh[8]用于指示每个缓冲区槽位是否需要刷新。刷新通常意味着将当前帧的内容复制到参考帧缓冲区中。/*!brief Parameters for setting ref frame config */typedefstructaom_svc_ref_frame_config{// 7 references: The index 0 - 6 refers to the references:// last(0), last2(1), last3(2), golden(3), bwdref(4), altref2(5), altref(6).intreference[7];/** Reference flag for each of the 7 references. *//*! Buffer slot index for each of 7 references indexed above. */intref_idx[7];intrefresh[8];/** Refresh flag for each of the 8 slots. */}aom_svc_ref_frame_config_t;aom_svc_ref_frame_comp_pred_t 结构体解释svc 编码中参考帧复合预测设置参数use_comp_pred[0]指示是否使用 GOLDEN_LAST 参考帧对通常指的是关键帧Golden Frame和最近编码的帧Last Frame。use_comp_pred[1]指示是否使用 LAST2_LAST 参考帧对指的是两个连续的最近编码的帧。use_comp_pred[2]指示是否使用 ALTREF_LAST 参考帧对指的是一个替代参考帧通常用于平滑场景变化和最近编码的帧。/*!brief Parameters for setting ref frame compound prediction */typedefstructaom_svc_ref_frame_comp_pred{// Use compound prediction for the ref_frame pairs GOLDEN_LAST (0),// LAST2_LAST (1), and ALTREF_LAST (2).intuse_comp_pred[3];/**Compound reference flag. */}aom_svc_ref_frame_comp_pred_t;AOM_SVC_FRAME_DROP_MODE 枚举解释空域/质量域层 svc 的帧丢弃模式AOM_LAYER_DROP表示任何空间层都可以丢弃帧。在这种模式下编码器可以基于当前的网络条件或资源状况选择丢弃某个空间层的帧。AOM_FULL_SUPERFRAME_DROP表示只有完整的超帧superframe可以被丢弃。超帧是一组帧的集合它们一起编码以实现更好的编码效率。在这种模式下编码器不会丢弃超帧中的单个帧而是选择丢弃整个超帧。/*!brief Frame drop modes for spatial/quality layer SVC */typedefenum{AOM_LAYER_DROP,/** Any spatial layer can drop. */AOM_FULL_SUPERFRAME_DROP,/** Only full superframe can drop. */}AOM_SVC_FRAME_DROP_MODE;

相关新闻