购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 随机访问点

一般来说,随机访问点是比特流中可以开始解码的位置。在视频编码中,随机访问点是一种特殊的编码帧,它可以使解码器在这个位置开始解码,而不需要解码之前的数据。这样可以提高视频的随机访问性能,使用户可以快速地跳转到视频的任意位置进行播放。

AV1定义了3种随机访问点。为了满足最基本的功能要求,解码器必须支持这3种随机访问点。但是,在实现过程中,解码器可以选择支持更多类型的随机访问点。AV1定义的3种随机访问点包括:关键帧随机访问点(Key Frame Random Access Point,KFRAP)、延迟随机访问点(Delayed Random Access Point,DRAP)和关键帧依赖恢复点(Key Frame Dependent Recovery Point,KFDRP)。它们的定义如下:

❍关键帧随机访问点是一个满足下述条件的帧:

●frame_type=KEY_FRAME。

●show_frame=1。

●包含关键帧随机访问点的时间单元包含序列头OBU。

❍延迟随机访问点是一个满足下述条件的帧:

●frame_type=KEY_FRAME。

●show_frame=0。

●包含延迟随机访问点的时间单元包含序列头OBU。

❍关键帧依赖恢复点是一个满足下述条件的帧:

●show_existing_frame=1。

●frame_to_show_map_idx指定了一个要输出的帧,这个帧是一个延迟随机访问点。

从上述定义可见,延迟随机访问点和关键帧依赖恢复点需要搭配使用才可以实现随机访问。从关键帧随机访问点开始解码是很简单的,因为如果关键帧随机访问点之前的时间单元被丢弃,剩余的时间单元仍然构成一个有效的比特流。但是,从延迟随机访问点开始解码的行为却很难定义。这是因为:

1)如果在关键帧依赖恢复点之前的所有时间单元都被丢弃了,那么在这种情况下,由于关键帧依赖恢复点依赖于其前面的延迟随机访问点,并且相关的延迟随机访问点已经被丢弃,因此不能正常解码。

2)如果在延迟随机访问点之前的所有时间单元都被丢弃了,那么,对位于延迟随机访问点和关键帧依赖恢复点之间的帧应该如何处理并没有明确规定,比如有些应用可能希望丢弃这些帧,而其他应用可能希望保留这些帧。

综合这两种情况,由于从延迟随机访问点开始解码并不是从一个显示关键帧开始解码,因此剩余的时间单元不构成一个有效的比特流。为了支持不同的操作模式,需要一个符合规范的解码器来解码下面的比特流:

❍包含一个延迟随机访问点的时间单元。

❍包含相关的关键帧依赖恢复点的时间单元。

❍可选的额外时间单元。

也就是说,符合规范的解码器要能够解码上述结构的比特流。这将是否丢弃中间时间单元(位于延迟随机访问点和关键帧依赖恢复点之间的时间单元)的操作从规范定义的解码过程中转移到了特定应用的行为上。这允许应用程序根据应用场景和特定解码器实现的能力选择使用哪种行为。

实际上,预期解码器实现能够在中间时间单元仍然存在的情况下,从延迟随机访问点开始解码比特流。解码器应该从下一个关键帧或关键帧依赖恢复点开始,正确地解码产生所有要输出的帧。而下一个关键帧或关键帧依赖恢复点之前的视频帧则由具体的编码器实现来决定如何处理。例如,当参考帧不可用时,由于流媒体解码器能够容忍输出视频有一些错误,因此流媒体解码器可能选择解码并显示所有帧。而低延迟解码器可能选择解码并显示所有保证正确的帧,即输出那些仅以关键帧依赖恢复点为参考帧的帧间预测帧。媒体播放器解码器可能选择仅从关键帧或关键帧依赖恢复点开始解码和显示帧,以保证流畅播放。 iH3h+6CzSo37p6DyxltBTRweHMq65WZjKEmrXD6+suHJNuLRtHVOrvQfjdTtyg0F

点击中间区域
呼出菜单
上一章
目录
下一章
×