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对于亮度分量色度分量最大尺寸64x64svt_aom_motion_estimation_b64 函数用于64x64进行运动估计主要是以下原因

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

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

符合编码结构层次:

AV1编码结构分层128x128编码块可以进一步划分更小64x6432x32svt_aom_motion_etimation_b64函数针对64x64进行运动估计整个编码过程一部分后续这些64x64运动估计结果可以用于更大运动估计或者更小运动估计提供参考指导

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

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

与参考帧数据的匹配:

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

支持多种编码模式:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值