SVTAV1 编码函数 svt_aom_is_pic_skipped

一 函数 解释

1.1 svt_aom_is_pic_skipped函数的作用是判断当前图片是否可以跳过编码处理。

具体分析如下

函数逻辑

参数说明:函数接收一个指向图片父控制集的指针PictureParentControlSet *pcs, 通过这个指针可以获取与图片相关的各种信息,用于判断是否跳过对当前图片的编码处理。

判断条件:函数内部通过三个条件来决定是否跳过图片编码

!pcs->is_ref 表示当前图片不是参考帧,参考帧通常需要更严格的编码处理,因为它会被后续的其他帧引用进行预测,而非参考帧相对不那么关键,在某些条件下可以考虑跳过以节省编码时间

pcs->scs->rc_stat_gen_pass_mode 表示速率控制统计生成传递模式是否启用,在启用该模式时,编码器可能更注重收集统计信息而不进行完整的编码处理,此时跳过图片编码时合理的。

!pcs->first_frame_in_minigop 表示当前帧不是minigop中的第一帧。minigop是一种编码结构,其第一帧通常需要进行编码处理,而非第一帧在一定条件下可以跳过。

返回值:如果上述三个条件同时满足,则函数返回TRUE,表示可以跳过对当前图片的编码处理,否则返回,FALSE,表示需要对当前图片进行编码处理。

函数意义

提高编码效率:在某些特定的编码模式或场景下,如非参考帧,开启速率控制统计生成传递模式且非minigop第一帧时,跳过对当前图片的编码处理可以减少编码器的计算量,从而提高整体编码效率,节省编码时间。

优化资源分配:通过跳过部分相对不关键的图片编码,编码器可以将更多的计算资源集中在更重要的图片或编码任务上,从而在保证整体编码质量的前提下,实现资源的更优分配,提升编码性能。

1.2 svt_aom_motion_estimation_b64

在AV1编码中,最大编码块Superblock的大小为128x128对于亮度分量,色度分量的最大尺寸为64x64,但svt_aom_motion_estimation_b64 函数用于对64x64块进行运动估计,主要是有以下原因:

64x64块石常见的编码单元:

虽然AV1支持最大128x128的编码块,但在实际编码过程中,64x64块也是一个常用的编码单元,许多编码器在进行运动估计等操作时,会以64x64块为基本单位。这种块大小在编码效率和计算复杂度之间取得了较好的平衡。

符合编码结构层次:

AV1的编码结构时分层的,128x128的编码块可以进一步划分为更小的块,如64x64,32x32等。svt_aom_motion_etimation_b64函数针对64x64块进行运动估计,是整个编码过程的一部分,后续这些64x64块的运动估计结果可以用于更大块的运动估计,或者为更小块的运动估计提供参考和指导。

运动估计的精度和效率考量:

使用64x64块进行运动估计可以在一定程度上平衡运动估计的精度和效率。64x64块相对较小,能够捕捉到更细致的运动信息,有助于提高运动估计的精度,从而提高编码质量。同时,与更小的块(如32x32,16x16等)相比,64x64块的运动估计计算量相对较小,可以在保证一定精度的同时,减少计算复杂度,提高编码效率。

与参考帧数据的匹配:

在运动估计过程中,需要将当前块鱼参考帧中的相应区域进行比较。64x64块的大小与参考帧中存储的数据结构和块大小相匹配,便于进行块匹配操作,提高运动估计的效率和准确性。

支持多种编码模式:

AV1支持多种编码模式和预测策略,64x64块的运动估计结果可以为不同的编码模式提供支持,例如,在帧间预测中,可以根据64x64块的运动矢量选择合适的预测模式,如单向预测,双向预测等,进一步提高编码效率。

相关推荐
君万2 小时前
【LeetCode每日一题】回溯:46. 全排列 78. 子集 39. 组合总和
算法·leetcode·go
Keep_Trying_Go3 小时前
Consistent-Point半监督人群计数算法详解
人工智能·深度学习·算法·计算机视觉·人群计数
在所不辞兄3 小时前
【零基础学智能仿真-69】综合项目——材料参数驱动的仿真研究
人工智能·深度学习·神经网络·算法·机器学习·1024程序员节
怕浪猫5 小时前
Super-agent 在各大模型厂商的应用情况
算法·面试·github
海绵宝宝转agent5 小时前
LeetCode100 二叉树个人题解
算法·leetcode·深度优先
octopus_c5 小时前
C++ 模板详解:函数模板、类模板、特化与分离编译
开发语言·c++·算法
東隅已逝,桑榆非晚5 小时前
算法1. 双指针法-移动零
c++·算法
CQU_JIAKE6 小时前
11.1[A]
算法
小郎君6586 小时前
(六)el-cascader 的展示值为什么不能直接 join:emitPath、路径还原与多选去重
vue.js·算法
郝学胜-神的一滴8 小时前
游戏设计:原型与开发 19:U3D工位布置与性格说明书
人工智能·算法·unity·unreal engine·游戏策划·游戏设计