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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值