视频编解码面试问题汇总——框架类

一、框架类问题

1. 熟悉264还是265,挑一个简单介绍下编码框架

以HEVC为例,一个视频帧首先进行块划分,然后以CTU为单位进行预测、变换、量化和熵编码:
块划分:CTU大小为64,会递归四叉树划分,编码结构中还包括PU、TU,两者独立互不影响。
预测:帧内预测,在空域内进行块匹配和模式决策,帧间预测,在时域上进行运动估计和运动补偿;最终得到的是残差块;
变换:对残差块进行DCT、DST变换,将残差值转换到变换域,为了能量集中起来进一步消除冗余;
量化:对变换系数进行均匀量化实现采样,这也是编码损失最大的地方;
熵编码:对量化系数进行CABAC编码,转化成二进制码流用于传输;
然后就是解码段的 熵解码、反量化、反变换、预测等,重构成帧后会经过 Deblocking+SAO,分别去除块效应和振铃效应。

2. 介绍下264和265的区别

块划分:264是以宏块为单位,最大16x16;265是以CTU为单位,最大64x64;是为了适应更高分辨率的视频而增加了编码单元的尺寸,因为高清超高清这些具有更多平滑块;另外265增加了PU、TU,使得预测和变换分离开,使得模式选择能够更加适应块内内容。
预测:264的帧内预测只有9种(8角度+DC),而265增加到了35种(33角度+DC+planar);
264运动估计采用基于预测子集的搜索算法,265运动估计新增TZSearch算法。
265帧间预测增加了MV的预测过程,包括merge和AMVP模式;
265新增一种无损编码模式——PCM模式,就是直接传输CU的像素值而不进行预测变换等操作。
变换:(1)变换尺寸有变化。264变换以4x4和16x16为主,8x8比较少用到; 265变换从4x4 ~ 32x32遍历;
(2)整数化时放大倍数有不同。264和265都是采用的证书DCT,但是264仅放大了2-3.16倍,265放大了128倍,更加接近浮点型DCT。
(3)增加了DST(适用于Luma4x4块,具体为什么,应该是实验试出来的?)
量化:量化步长有增加到52个,量化系数矩阵有所改进
熵编码
后处理:新增SAO模块,解决量化造成的振铃效应。

3. HEVC有哪些并行处理的设计?

(1)Slice和Tile。便于数据并行处理。在不同的Slice和Tile中,数据信息相互独立,可以分配给不同的运算单元处理。
详解Tile:HEVC新增,矩形区域,独立编码,互补参考。Tile内的各个CTB按照光栅顺序扫描。
a. 比Slice具有更好的编码效率,因为Tile中的像素比Slice中的像素具有更高的相关性(Slice横向跨度较大,Tile比Slice更规则)。
b. Tile的引入减少了运动预测所需要的缓冲数量。一般进行帧间预测时,需要存储MCP所需的参考信息,直到参考它的区域解码完成。举例:以CTB为单位,为了补偿第二行的首个CTB,第一行所有的CTB都会缓存着;但是引入Tile后,在Tile内各个CTB参考完之后,不会再被其他Tile的CTB参考,即可清除缓存。
(2)WPP。对于比Slice和Tile更小的划分单元,HEVC支持波前并行处理,这是对于相互具有依赖关系的图像单元进行数据并行处理的方法。

WPP允许多行CTB并行处理,但是后一行的处理要比前一行的滞后两个CTB,这样可以在不破坏相关性的前提下进行并行解码。

(3)层级并行
GOP级并行、图像级并行(B帧)、Slice级并行、Tile级并行、CTB级并行(WPP)。

你可能感兴趣的:(视频编解码求职之路)