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块的运动矢量选择合适的预测模式,如单向预测,双向预测等,进一步提高编码效率。

相关推荐
jghhh0113 小时前
基于C#实现与三菱FX系列PLC串口通信
开发语言·算法·c#·信息与通信
ada7_13 小时前
LeetCode(python)22.括号生成
开发语言·数据结构·python·算法·leetcode·职场和发展
曹轲恒13 小时前
JVM之垃圾回收算法(GC)
jvm·算法
YuTaoShao14 小时前
【LeetCode 每日一题】1161. 最大层内元素和——BFS
算法·leetcode·宽度优先
黛色正浓14 小时前
leetCode-热题100-子串合集(JavaScript)
javascript·算法·leetcode
Z1Jxxx14 小时前
字符串翻转
开发语言·c++·算法
闻缺陷则喜何志丹14 小时前
【前缀和 期望】P7875 「SWTR-7」IOI 2077|普及+
c++·算法·前缀和·洛谷·期望
CoovallyAIHub14 小时前
超越Sora的开源思路:如何用预训练组件高效训练你的视频扩散模型?(附训练代码)
深度学习·算法·计算机视觉
源来猿往14 小时前
yolov8n结构化剪枝
算法·yolo·剪枝
tongxianchao14 小时前
MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning
算法·机器学习·剪枝