news 2026/5/1 8:45:39

pd_process.c 文件源码分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pd_process.c 文件源码分析

一 pd_process.c 是SVT-AV1编码器中的Picture Decision处理模块,主要功能包括

核心功能

1 图片决策上下文管理,创建和管理PD处理所需要的数据结构

--创建和销毁Picture Decision上下文

--管理图片决策过程中的各种数据结构和缓冲区

2 场景转换检测:使用直方图差异检测场景切换和突然变化

--检测视频序列中的场景切换

--检测突然变化(如闪光灯效果)

--使用直方图差异(AHD - Average Historgram Difference)进行检测

3 参考图片集管理:填充,统计信息收集等

--生成的管理参考图片集信息

--设置参考图片列表List0和List1

--处理参考图片的POC Picture Order Count 和显示顺序

4 图片预处理:填充,统计信息收集等

--图片填充(padding)到SuperBlock尺寸的倍数

--图片填充到最小块尺寸的倍数

--图片统计信息收集

5 Mini GOP管理:管理图片组的结构和配置

--管理Mini GOP的结构和配置

--处理Mini GOP内的图片顺序和依赖关系

--评估Mini GOP的活动度(Activity)

6 时域滤波处理:管理时域滤波相关的图片缓冲区

--管理时域滤波相关的图片缓冲区

--处理低延迟模式下的时域滤波

--多级时域滤波 MCTF

7 预测结构设置:根据配置设置预测结构

--根据编码配置设置预测结构

--支持多种预测结构:Flat, Hierarchical等

--设置关键帧 Key Frame, 和S帧 S-Frame

8 图片决策主循环:处理图片并发送到后续模块

--处理来自Picture Analysis的结果

--为每个图片设置编码参数

--将处理后的图片发送到后续处理阶段ME,TF等

9 屏幕内容检测

--检测输入内容是否为屏幕内容,Screen Content

-- 平米内容需要特殊的编码策略

10 自适应量化 Adaptive Quantization

-- 初始化循环刷新 Cycle Refresh

-- 管理AQ相关的参数

在编码流程中的位置

输入:来自Picture Analysis Porcess的结果

输出:发送到Motion Estimation和Temporal Filtering模块

关键数据结构

-PictureDecisionContext: 图片决策上下文,包含所有决策相关的状态信息

PictureParentControlSet: 图片父控制集,包含图片的所有编码参数

SequenceControlSet 序列控制集,包含序列级别的配置。

与其他模块的关系

输入:来自Picture Analysis Process的结果

输出:发送到Motion Estimation 和Temporal Filterting 模块

处理流程:

1 接收Picture Analysis 的结果

2 进行场景转换检测

3 设置预测结构和参考图片集

4 进行图片预处理和统计信息收集

5 管理Mini GOP结构

6 设置图片编码参数

7 发送到后续处理阶段

性能优化:

使用多线程处理

支持低延迟模式

支持多级时域滤波

支持自适应量化

/*

Defines 定义常量

层级偏移量定义,用于预测结构中的层级索引

这些偏移用于在分层预测结构中定位不同层级的图片

函数名:calc_ahd

功能:计算平均直方图差异,Average Histogram Difference, AHD

该函数用于场景转换检测,通过比较当前图片和参考图片的直方图差异来判断

场景是否发生变化,AHD值越大,表示两帧之间的差异越大

参数:

scs 序列控制集,包含序列级别的配置信息

input_pcs 输入图片的控制集,当前要分析的图片

ref_pcs: 参考图片的控制集,用于比较的参考图片

active_region_cnt 输出参数,统计活跃区域的数量。

ahd 计算得到的平均直方图差异值

算法说明:

1 将图片成多个区域

2 对每个区域,计算其直方图与参考图片对应区域直方图的差异

3 累加所有区域的差异值得到总的AHD

4 如果某个区域的差异超过阈值,则将其标记为活跃区域

*/

static uint32_t calc_ahd(

SequenceControlSet *scs, #序列控制集指针

PictureParentControlSet *input_pcs, #输入图片控制集指针

PictureParentControlSet *ref_pcs, #参考图片控制集指针

uint8_t *active_region_cnt #活跃区域计数指针

)

{

uint32_t ahd = 0;//初始化AHD值为0,用于累加所有区域的直方图差异

//计算每个区域的宽度和高度

//区域宽度 = 图片宽度 / 水平方向区域数量

uint32_t region_width = ref_pcs->enhance_pic->width / scs->picture_analysis_number_of_regions_per_width;

//区域高度=图片高度/垂直方向区域数量

uint32_tregion_height=ref_pcs->enhance_pic->height/scs->picture_analysis_number_of_regions_per_height;

//遍历图片所有区域

//外层循环遍历水平方向所有区域

for(int i = 0; i<width;i++)

for(int j = 0; j<height; j++){

uint32_tahd_per_region=0;

for(int bin = 0; bin < 255; bin++){

//计算当前区域指定bin直方图差异

//取绝对值,累加到当前区域AHD

ahd_per_region += ABS((int32_t)input_pcs->picture_histogram[region_in_picture_width_index][region_in_picture_height_index][bin] - (int32_t)ref_pcs->picture_histogram[region_in_picture_width_index][region_in_picture_height_index][bin]);

}

ahd+=ahd_per_region;//当前区域AHD累加AHD

//如果当前区域AHD超过阈值区域面积则认为活跃区域

//活跃区域表示区域发生显著变化

if(ahd_per_region > (region_width * region_height))

(*active_region_cnt)++;//增加活跃区域计算

}

}

returnahd;//返回计算得到ahd

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/26 13:08:51

单体架构的黄金时代与终结:优势、瓶颈与拆分解构

文章目录单体架构的黄金时代与终结&#xff1a;优势、瓶颈与拆分解构发布、扩展、协作成本拐点深度分析与拆分时机决策框架&#x1f4cb; 目录&#x1f3db;️ 一、单体架构的黄金时代&#x1f4a1; 单体架构的历史地位&#x1f3af; 单体架构的核心价值⚖️ 二、单体架构的隐藏…

作者头像 李华
网站建设 2026/4/20 6:18:08

键盘快捷键大全:提升你在LobeChat的操作效率

键盘快捷键大全&#xff1a;提升你在LobeChat的操作效率 在日常使用 AI 聊天工具时&#xff0c;你是否曾因为频繁点击“发送”按钮而感到操作繁琐&#xff1f;或者在多个会话间来回切换时&#xff0c;鼠标移动打断了你的思考节奏&#xff1f;对于像 LobeChat 这样功能丰富、交互…

作者头像 李华
网站建设 2026/4/29 20:47:15

Vue可视化打印插件hiprint终极使用手册:从零构建专业级打印系统

还在为Vue项目中的打印功能发愁吗&#xff1f;vue-plugin-hiprint让你彻底告别传统打印的繁琐操作&#xff01;这款基于jQuery的打印插件完美支持Vue2和Vue3&#xff0c;通过直观的拖拽设计界面&#xff0c;轻松实现从简单标签到复杂报表的全方位打印需求。 【免费下载链接】vu…

作者头像 李华
网站建设 2026/4/16 21:36:18

非农报告罕见“数据融合式发布”,失业率存在AI模型预测的上行风险

摘要&#xff1a;本文通过构建多维度AI数据预测模型&#xff0c;结合历史经济数据特征提取与异常波动检测算法&#xff0c;分析美国非农就业报告“二合一”发布模式下的就业数据预测偏差、失业率波动风险及劳动力市场结构性变化。非农报告罕见“数据融合式发布”&#xff0c;失…

作者头像 李华
网站建设 2026/4/27 16:13:31

华为CANN算子UT测试体系深度解析与实战指南

历经13年异构计算研发&#xff0c;我深刻体会到&#xff1a;“算子测试不是质量检查&#xff0c;而是硬件行为的精确验证”。本文将带你穿透CANN UT测试体系的代码表象&#xff0c;直抵达芬奇架构的物理本质&#xff0c;掌握从单元测试到工业级验证的全链路实战技能。 目录 &a…

作者头像 李华
网站建设 2026/5/1 7:14:10

电商内容生产革命:极睿iClip如何以AI重构短视频效率天花板?

一、市场趋势与需求痛点&#xff1a;当4.2亿创作者遭遇效率困局据IDC《2024年全球新媒体技术与内容生产白皮书》显示&#xff0c;全球短视频创作者规模已达4.2亿&#xff0c;但行业正深陷效率与成本的双重困境。Statista 2025年报告进一步揭示&#xff0c;中国电商短视频市场规…

作者头像 李华