当前位置: 首页 > web >正文

AV1到达开始和约束时间

AV1解码器模型比特流到达平滑缓冲区速率只有两种恒定速度BitRate到达缓冲区或者速率0到达缓冲区其中BitRate峰值比特率BitRate= MaxBitrate * BitrateProfileFactor其中MaxBitrateBitrateProfileFactor Profile来确定参数BitRate具体设置方式参考AV1标准文档A.3AV1解码器模型使用变量FirstBitArrival[i] 表示DFG i第一个比特到达平滑缓冲区时间使用变量LastBitArrival[i]表示DFG i一个比特平滑缓冲区时间使用变量ScheduledRemoval[i]表示计划DFG i从平滑缓冲区删除时间

对于DFG i,第一个比特必须最迟截止时间之前到达平滑缓冲区这样才能抱枕DFG i,比特能够DFG i对应预定解码时间之前完整接收FirstBitArrival[i]计算方式如下

FirstBitArrival[i] = max(LastBitArrival[i-1], LastestArrivalTime[i])

其中LatestArrivalTime[i] 是指DFG i第一个比特必须到达平滑缓冲区最晚时间确保预定移除时间ScheduledRemoval[i]来到整个DFG 处于完整可用状态默认情况这个时间单位接收一组解码模型参数这个时间解码模型参数定义解码时钟周期DecCT单位因此LatestArrivalTime[i]计算方式如下

LatestArrivalTime[i] = ScheduledRemoval[i] - (encoder_buffer_delay + decoder_buffer_delay) / 90000

其中语法元素decoder_buffer_delay指定第一个比特到达平滑缓冲区时刻第一个编码帧数据平滑缓冲区移除时刻之间时间间隔语法元素encoder_buffer_delay指定解码帧第一个比特到达平滑缓冲区时间

DFG i最后一个比特到达缓冲区时间LastBitArrival[i]计算方式如下

LastBitArrival[i] = FirstBitArrival[i] + CodedBits[i] / BitRate

其中CodedBits表示编码DFG i花费比特总数

2 移除时间

每个DFG都会一个平滑缓冲区预计移除时间ScheduledRemoval[i]平滑缓冲区实际移除时间Removal[i],解码器模型DFG i平滑缓冲区移除那一刻开始解码一个视频帧所以实际移除时间Removal[i]也可以视为一个视频解码时刻AV1两种不同的模式确定ScheduledRemoval[i],分别是解码调度模式Decoding Schedule Mode 资源可用性模式

1)解码调度模式

解码调度模式下编码器使用语法元素buffer_removal_time[i]编码传输DFG i平滑缓冲区预计移除时间假设ScheduledRemovalTiming[i]DFG i平滑缓冲区预计移除时间buffer_removal_time[i]ScheduledRemovalTiming[i]之间关系如下

ScheduledRemovalTiming[0] = decoder_buffer_delay / 90000

ScheduledRemovalTiming[i] = ScheduledRemovalTiming[0] + buffer_removal_time[i] * DecCT

其中decoder_buffer_delay 第一个DFG平滑缓冲区移除时间因此buffer_removal_time[i]可以视为DFG i平滑缓冲区预计移除时间ScheduledRemovalTiming[i] 相对于ScheduledRemovalTiming[0]时间偏移量

buffer_removal_time[i] = (ScheduledRemovalTiming[i] - ScheduledRemovalTiming[0]) / DecCT

解码调度模式下实际移除时间Removal[i]预计移除时间ScheduledRemoval[i] 可能是不解码调度模式两种模式确定实际移除时间Removal[i] 具体来讲

当操作点low_delay_mode_flag设置0解码器按照严格到达模式进行操作这种模式下DFG会在预计移除时间ScheduledRemoval[i]准时平滑缓冲区移除

Removal[i] = ScheduledRemovalTiming[i]

当操作点low_delay_mode_flag 设置为1解码器进入低延迟模式low Delay Mode在此模式下DFG数据可能无法预定移除时间ScheduledRemovalTiming[i]之前完全到达平滑缓冲区也就是说最后一个比特到达时间LastBitArrival[i]预计移除时间ScheduledRemovalTiming[i]LastBitArriall[i] 因此DFG i移除操作将被延后直到整个DFG数据完全加载平滑缓冲区之后下一个解码时钟周期解码器才开始DFG i平滑缓冲区移除因此实际移除时间Removal[i]计算如下

Removal[i] = ceil(LastBitArrival[i] / DecCT) * DecCT

如果整个DFG预定移除时间ScheduledRemovalTiming[i] 之前已经平滑缓冲区可用ScheduledRemvalTiming[i] 大于LastBitArrival[i] 那么DFG将在预定移除时间ScheduledRemovalTiming[i] 平滑缓冲区移除

Removal[i] = ScheduledRemovalTiming[i]

解码调度模式灵活定义了何时平滑缓冲区移除DFG何时开始解码何时现实使用恒定帧率之外解码调度模式还可以通过显示编码传输解码帧呈现时间支持变化帧率AV1 标准文档E3.2 描述解码调度模式参数设置方法为了使用解码调度模式编码器需要比特流传输以下参数

timing_info_present_flag = 1, decdoer_model_info_present_flag = 1, decoder_model_present_for_this_op = 1 除了上述参数之外编码器还需要传输decoder_buffer_delay, encoder_buffer_delay 以及解码器时钟周期相关语法元素num_units_in_decoding_tick另外比妈妈气还需要每帧传输ScheduledRemoval呈现时间相关语法元素buffer_removal_timeframe_presentation_time

http://www.xdnf.cn/news/19020.html

相关文章:

  • 分治法——二分答案
  • XFile v2 系统架构文档
  • Ansible 核心模块与实操练习
  • 第十三章项目资源管理--13.3 规划资源管理
  • Apifox 8 月更新|新增测试用例、支持自定义请求示例代码、提升导入/导出 OpenAPI/Swagger 数据的兼容性
  • 手写MyBatis第37弹: 深入MyBatis MapperProxy:揭秘SQL命令类型与动态方法调用的完美适配
  • AI赋能前端性能优化:核心技术与实战策略
  • Swift 解法详解 LeetCode 364:嵌套列表加权和 II
  • 713 乘积小于k的子数组
  • git学习 分支管理(branching)合并分支
  • golang13 单元测试
  • Office 2024 长期支持版(Mac中文)Word、Execl、PPT
  • Node.js 多版本管理工具 nvm 的安装与使用教程(含镜像加速与常见坑)
  • 共识算法如何保障网络安全
  • Java全栈开发面试实战:从基础到微服务的深度探索
  • k8s集群Prometheus部署
  • 1 vs 10000:如何用AI智能体与自动化系统,重构传统销售客户管理上限?
  • Wi-Fi数据包发送机制:从物理层到MAC层的深度解析
  • 记录使用ruoyi-flowable开发部署中出现的问题以及解决方法(二)
  • 贴片式TE卡 +北京君正+Rk瑞芯微的应用
  • 直线拟合方法全景解析:最小二乘、正交回归与 RANSAC
  • Transformer实战(15)——使用PyTorch微调Transformer语言模型
  • 了解迁移学习吗?大模型中是怎么运用迁移学习的?
  • 达梦数据库配置文件-COMPATIBLE_MODE
  • 数据结构青铜到王者第七话---队列(Queue)
  • 《websocketpp使用指北》
  • ModuleNotFoundError: No module named ‘dbgpt_app‘
  • Python音频分析与线性回归:探索声音中的数学之美
  • 学习游戏制作记录(存档点和丢失货币的保存以及敌人的货币掉落)8.27
  • 计算机网络——DNS,ARP,RARP,DHCP,ICMP