2026/5/26 22:14:07
网站建设
项目流程
网站建设项目外包,国内做的好的电商网站有哪些,ppt模板免费下载 素材百度网盘,服装配件网站建设 中企动力一 pd_process.c 是SVT-AV1编码器中的Picture Decision处理模块#xff0c;主要功能包括核心功能1 图片决策上下文管理#xff0c;创建和管理PD处理所需要的数据结构--创建和销毁Picture Decision上下文--管理图片决策过程中的各种数据结构和缓冲区2 场景转换检测#xff1a…一 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 时域滤波处理管理时域滤波相关的图片缓冲区--管理时域滤波相关的图片缓冲区--处理低延迟模式下的时域滤波--多级时域滤波 MCTF7 预测结构设置根据配置设置预测结构--根据编码配置设置预测结构--支持多种预测结构:Flat, Hierarchical等--设置关键帧 Key Frame, 和S帧 S-Frame8 图片决策主循环处理图片并发送到后续模块--处理来自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 累加所有区域的差异值得到总的AHD4 如果某个区域的差异超过阈值则将其标记为活跃区域*/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_heightref_pcs-enhance_pic-height/scs-picture_analysis_number_of_regions_per_height;//遍历图片中的所有区域//外层循环遍历水平方向的所有区域for(int i 0; iwidth;i)for(int j 0; jheight; j){uint32_tahd_per_region0;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]);}ahdahd_per_region;//将当前区域的AHD值累加到总AHD值中//如果当前区域的AHD值超过阈值区域面积则认为是活跃区域//活跃区域表示该区域发生了显著变化if(ahd_per_region (region_width * region_height))(*active_region_cnt);//增加活跃区域计算}}returnahd;//返回计算得到总的ahd值}