使用四个未压缩的图面进行解码

下表显示了一种假设情况,即视频解码器需要一个帧时间来解码每个图片。 它解码一个位流,该位流包含数量稳步增加的 B 图片,从初始的 I 图片之后的零 B 图片开始。 B 图片的位流发生在 P 图片对之间。 在此表中,字母显示每个图片 (I、B 或 P) 的类型,下标显示帧显示索引 (每个图片) 的临时显示顺序,上标显示包含图片的缓冲区的编号。

图片解码 图片显示 帧在间隔开始时解码 ()

I⁰₀

0

P¹₁

1

P²₃

I⁰₀

2

B·ʻ

P¹₁

3

P⁰₆

B·ʻ

4

B¹₄

P²₃

5

Bー₅

B¹₄

6

P²₁₀

Bー₅

7

B¹₇

P⁰₆

8

Bー₈

B¹₇

9

B¹₉

Bー₈

10

P⁰₁₅

B¹₉

11

Bー₁₁

P²₁₀

12

B¹₁ー

Bー₁₁

13

Bー₁₃

B¹₁ー

14

B¹₁₄

Bー₁₃

15

P²ー₁

B¹₁₄

16

Bー₁₆

P²ー₁

17

B¹₁₇

Bー₁₆

18

Bー₁₈

B¹₁₇

19

B¹₁₉

Bー₁₈

20

Bーー₀

B¹₁₉

21

P⁰ー₈

Bーー₀

22

上表中的每张 B 图片都需要先按位流顺序解码两张以前的图片,然后才能对其进行解码。 因此,解码器无法开始显示具有适当时间的图片,直到第二张图片被解码 (,即,在第三次解码切片) 。 在此时间段的某个位置,可以开始显示具有适当时间的图片。

开始显示图片可能与屏幕上显示的图片不完全一致。 相反,显示器可能会继续显示发送的图片之前显示的图片,直到到达切换到新图片的适当时间。 为了获得最佳性能,不应覆盖保存第一张 I 图片) 的 surface 0 (以供三帧后到达的 B 图片使用,即使该 B 图片不需要该 B 图片进行引用。 相反,应使用图面 3) (第四个图面来保存该 B 图片。 这样就无需在解码 B 图片之前检查第一张 I 图片的显示周期是否已结束。

解码器 顺序要求 中描述的两个规则要求将前三个解码图片中的每张放置在不同的图面中,因为直到第三个周期 (2) 的某个时间,它们才显示。 然后,第四个解码的图片应放置在第四个图面中,因为第一个显示图片的显示可能尚未结束,直到第四个时间段 (3) 。

解码过程中存在一个重大障碍,因为连续有两张以上的 B 图片。 在上表中遇到第十张解码的图片 (B¹₉) 时,会出现这种情况。 当遇到连续序列中的第三张或后续 B 图片时,将消除显示一张 B 图片和使用图面保存下一张解码的 B 图片之间的时差容差。 主机解码器必须检查在 B¹₇) (前一时间段中显示的 B 图片的显示状态,以确保它已被从显示器中删除, (在必要时等待发生此情况) ,然后它必须立即使用相同的图面对下一个 B 图片进行解码, (用于 B¹₉) 的图面 1。 解码器无法将新 B 图片解码为用于保存其引用 I 或 P 图片的图面 (在本例中,用于 P⁰₆ 和 P²₁₀) 的图面,并且无法将新 B 图片解码为在相同时间间隔内显示的图面 (本例中, 用于 Bー₈) 的 surface 3。 因此,它必须使用在上一时间段中显示的图面 (在这种情况下,surface 1) 。