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

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.dtcms.com/a/352846.html

相关文章:

  • 如何避免绕过WAF 直接访问云主机
  • 从 WPF 到 Avalonia 的迁移系列实战篇1:依赖属性的异同点与迁移技巧
  • 学术/报告场景实测:从申请OpenAI API Key获取并实现GPT-5 PDF分析机器人(含源码)
  • 【Linux】从0到1掌握进程控制:终止、等待与替换的核心逻辑
  • 音频中的噪音门
  • 视频加水印_带gif 加动态水印 gif水印 视频浮动水印
  • 2025年03月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 《MongoDB 常用命令详解:从数据库操作到高级查询》
  • mongodb influxdb
  • Vue JS安装部署与使用方法(保姆级教程)
  • Java 实现 MongoDB ObjectId 算法
  • Python常见设计模式3: 行为型模式
  • 数据分析与数据挖掘
  • 【技术教程】如何为ONLYOFFICE协作空间开发文件过滤UI插件
  • string类的学习及模拟
  • vue拖动排序,vue使用 HTML5 的draggable拖放 API实现内容拖并排序,并更新数组数据
  • 【无标题】淘宝直播间详情数据
  • 云原生安全架构设计与零信任实践
  • 三格电子——高频一体式工业级RFID读写器的应用
  • 核心内涵解析:销采一体化 CRM 是什么?
  • 贴片式TE卡 +北京君正+Rk瑞芯微的应用
  • 亚马逊ASIN定投广告的智能化突破:从人工苦力到数据驱动的华丽转身
  • Part 1️⃣:相机几何与单视图几何-第六章:相机模型
  • Android中点击链接跳转到对应App页面的底层原理
  • Linux 云服务器日志清理自动化方法
  • 第二阶段Winfrom-8:特性和反射,加密和解密,单例模式
  • 点评项目(Redis中间件)第一部分Redis基础
  • golang 12 package 和 module
  • SegEarth-R1: Geospatial Pixel Reasoning via Large Language Model
  • week5-[字符数组]长度和