xchg_mb_border()
顾名思义, xchg_mb_border() 交换 MB 边界的像素。 阅读代码可知,交换双方为边界缓存 (left_border,top_borders) 与重建图象中的相应数据。 其中 xchg 参数是否为 1 决定,在从边界缓存赋值到重建图象的同时,是否保存重建图象的数据到边界缓存。 此函数仅用于 I 块解码。 ⒈ 边界缓存仅在 xchg_mb_border() 与 backup_mb_border() 中使用。 ⒉ xchg_mb_border() 函数在图象重建过程中调用两次。 预测前,调用一次, xchg 参数为 1 ;补偿后,调用一次, xchg 参数为 0 。 ⒊ backup_mb_border() 备份的是对应于下一宏块的边界像素。 ⒋ backup_mb_border() 仅在滤波前调用。 结论: 上一宏块: ⒈ 备份滤波前的下一宏块边缘像素。 ⒉ 滤波。 当前宏块(I块): ⒈ 交换边界缓存与重建图象相应数据。 ⒉ 帧内预测、补偿。 ⒊ 从边界缓存恢复数据到重建图象。 如此往复。 8.3 帧内预测过程 |