当前位置: 首页 > news >正文

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

roi

  1. aom_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;
  1. 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;

scale

  1. aom_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 info

  1. aom_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;

tune

  1. aom_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;
  1. aom_tune_metric 枚举
    • 解释:微调参数模型,用于指定编码器在进行率失真(Rate-Distortion,RD)优化时应该针对的特定输入材料类型。这种调整可以帮助编码器针对特定的视频质量评估指标进行优化。
    • 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_PSNR=0,AOM_TUNE_SSIM=1,/* NOTE: enums 2 and 3 unused */AOM_TUNE_VMAF_WITH_PREPROCESSING=4,AOM_TUNE_VMAF_WITHOUT_PREPROCESSING=5,AOM_TUNE_VMAF_MAX_GAIN=6,AOM_TUNE_VMAF_NEG_MAX_GAIN=7,AOM_TUNE_BUTTERAUGLI=8,AOM_TUNE_VMAF_SALIENCY_MAP=9,}aom_tune_metric;
  1. aom_dist_metric 枚举
    • 解释:用于指定在率失真(Rate-Distortion,RD)优化过程中使用的失真度量方法。
    • AOM_DIST_METRIC_PSNR:使用峰值信噪比(PSNR)作为块内RD优化的失真度量。PSNR是一种常用的视频质量评估指标,它测量的是原始视频和压缩视频之间的差异。
    • AOM_DIST_METRIC_QM_PSNR:使用量化矩阵加权的PSNR作为块内RD优化的失真度量。这种方法考虑了量化矩阵对不同区域的加权,以更准确地评估失真。如果编译时没有指定 --enable-qm=1,则此选项会退回到与 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-qm=1 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;

svc

  1. aom_svc_layer_id_t 结构体
    • 解释:空域和时域的层 ID
    • spatial_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;
  1. 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;
  1. 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(替代参考帧2)
      • reference[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;
  1. 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;
  1. 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;
http://www.jsqmd.com/news/898331/

相关文章:

  • 告别论文熬夜!okbiye AI 毕业论文功能:从选题到定稿的 “懒人通关指南”
  • 思源宋体实战指南:4种高效部署方案与跨平台字体配置深度解析
  • WeChatPad终极指南:快速实现微信平板模式,轻松突破单设备登录限制
  • 如何快速构建你的智能网络收音机:YoRadio开源项目实战指南
  • 2026论文写作工具红黑榜:AI论文写作工具怎么选?一篇讲透:
  • 【企业级ChatGPT落地白皮书】:从零起草用户手册到通过等保2.0审核,仅需48小时(含GDPR/《生成式AI服务管理暂行办法》双合规检查清单)
  • 为什么选择nfqws-keenetic?5大核心功能让网络访问更自由
  • 【AI开源】codegraph 完整使用教程(2026最新版)
  • 伊辛机硬件加速抽取式文本摘要:原理、映射与能效优势
  • Unpaywall浏览器扩展:学术论文免费获取的终极指南
  • 实测 okbiye AI 毕业论文功能:把导师的 “格式重改” 警告彻底关掉
  • 别再乱编译OpenSSL了!聊聊CentOS/RHEL 8里那些‘专有’的坑与正确升级姿势
  • 百万学费几年收回?2026 美英加澳港新 IT 毕业生“净剩资产”真实财务测算「蒸汽求职分享」
  • 国家中小学智慧教育平台电子课本下载工具:一键获取全学科教材PDF
  • LiveTalking数字人引擎:构建实时AI交互系统的5大关键技术
  • Miner-8B-i1-GGUF性能优化指南:从2.2GB到6.8GB的量化策略
  • RAG与GraphRAG深度对比:从语义检索到知识图谱推理的技术选型指南
  • ProperTree:跨平台plist文件编辑的5个效率提升策略
  • 软考机考和笔试相比,答题技巧有什么不同?需要注意哪些细节?
  • AI70年就绕不开150个概念?其实核心就这几类
  • 一站式C++游戏开发实战:从零构建植物大战僵尸重制版
  • 终极免费Minecraft启动器:PrismLauncher新手完全指南 [特殊字符]
  • CIC-IDS-2017数据集预处理实战:从原始流量到机器学习就绪数据
  • MATLAB与STK互联实战:向量几何工具在卫星姿态与轨道分析中的应用
  • 如何彻底解决微信QQ消息撤回问题:RevokeMsgPatcher终极实战指南
  • RDS-SLAM:解锁动态场景新思路,并行语义线程如何实现实时鲁棒SLAM
  • Unity 2D物理画线避坑指南:从LineRenderer到EdgeCollider2D,5分钟搞定可交互的涂鸦系统
  • 如何永久保存微信聊天记录?这个开源工具给你完整解决方案
  • 实时语音识别延迟优化:从RTF到端到端延迟的评估与实战
  • 终极视频下载解决方案:一键保存微信视频号、抖音、小红书等平台资源