读《H.264_mpeg-4_part_10_white_paper》后感

    花了大概两个星期左右的时间把《H.264_mpeg-4_part_10_white_paper》读了一遍,英文和中文穿插起来阅读的,英文看不懂的地方看看中文,有的地方看了中文还是不明白,而且那个中文翻译到一半都没有了,到了后面的CAVLC编码部分就没有了,所以就对着毕厚杰那本书看了下。

    总体收获是H.264的总体编码和解码部分了解了一遍,大概就是分为编码和解码两部分来展开讲解的。围绕着那个大的框架,然后对其中的每一步来进行讲解,运动估计,运动补偿,DCT变换,量化,帧内帧间的预测,后面就是解码框架,就是反向的过程。

    主要的就是理解了它里面编码传输的是残差值,然后需要预测值与需要传输的原始宏块的值进行相减,就得到了残差值,把残差值来进行DCT变换,然后进行量化进行传输的,这里有一个地方不明白,那么第一个宏块的预测值是哪里来的,用的是帧内预测么?如果帧间预测的话,在它之前没有宏块进行预测呀。不懂。。。。然后运动矢量也是要进行传输的,这样在最后才能够恢复出图像宏块,运动矢量又有好几种预测方式,主要有B片预测,P片预测,还有什么直接预测,挺多的。知道了那个亮度块和色度块的比值是2:1的关系。运动补偿是个大的问题,之前也有一篇文章介绍过这个,据说是好多的运算量消耗在运动补偿里面了。最后的话就是一个熵编码了,有那个CAVLC,CABAC这俩个方法是将转换,量化后的码流进行编码的,据说是由于这些码流呈现出的一些特性,所以我们采取了这些编码方法,能够大大滴降低编码的大小。忘了,有个哈德码变换,这个貌似是用到直流系数的变换量化的,搞不清楚为什么要用这个东西,反正就是对直流系数进行变换量化就是了,管他干什么用呢。然后那个CAVLC我貌似也不是很看懂,里面具体细节有点不明白,就是那个对幅值进行编码那块不懂,还有一个程序框图的,个人觉得反正编码JM平台里面也有这个代码,自己看不懂就算了,里面具体计算的时候还要查询码表的,这个编码程序用了快2K行,编出来的人实在是太牛逼了,怎么想出来的,我连框图都不是很理解,这就是差距啊,逗比。。。。还那个CABAC编码,经过前面那个教训,这个也不忍直视了,反正就是弄成二进制数来进行编码的0,1编码,具体过程我是不详了,不求甚解了。最后有个SP,SI片,这个貌似是用在切换解码流的时候用的,它反正给了你一个框图,你按照程序那样来理解就好了。

   总结一下,看了这个以后对H.264大致的框架有了解,知道了编码和解码部分各包括神马东东,具体的细节以及程序,我想离我还好远好远啊!(接下去我就看具体平台代码实现吧,那个理论东西看了又忘记了,还是看看JM平台好了。)

你可能感兴趣的:(读《H.264_mpeg-4_part_10_white_paper》后感)