作者回复: 回答的非常棒
作者回复: 单纯从编码压缩性能来说是模式当然是越多越好。但是我们还要兼顾编码速度的。16 x 16的块一般用在相对平坦的区域,也就是细节相对少一些的区域,模式少一点对编码速度会好一些。而对于细节多的地方,我们需要更精细化编码,所以块也更小、模式也更多。
作者回复: 所以一般会有多种编码速度供你选择,在快速档会有一些快速算法根据块和周边块的像素特点提前判断编码模式,得到的就不一定是最优解。在慢速档就可能会每种模式都遍历得到的就是最优解。这也是我在第一节课说的,不是码率高就清晰度高。
作者回复: 1、模式的选择其实最后是看cost的,其实在选择的时候并不会看平不平坦,因为一个16x16的块如果划分的话,要划分成16个4x4的块,每一个块都需要带模式等额外的信息也需要消耗码率,所以如果图像区域确实是平坦的,在模式选择的时候16x16的块计算出来的cost会比16个4x4总cost要小。所以我们一般会说平坦区域更适合16x16的大小,但实际上最后还是通过cost大小来判断的。 2、编码速度可以通过编码器的参数设置,比如x264可以通过preset来设置。设置速度快的话编码器内部会把一些编码工具关闭不使用它们。这样速度就快了,但是编码效果就差一些。
作者回复: 四舍五入
作者回复: 因为编码器代码一般都是用移位操作的,养成这个习惯吧。
作者回复: 如果只有一个参考帧,那么就没有选择的余地。如果是多个参考帧的话,那么就会遍历所有的参考帧,选择cost最小的
作者回复: 是不一样的
作者回复: 是的,因为其他方向对应的位置的块是没有编码,因此不能用来做参考
作者回复: 预测使用的参考像素都是已经编码好了的像素,就是编码模式已经定了的。这些参考像素在编码的时候也是预测编码得到的。