本文分析FFmpeg的H.264解码器的熵解码(Entropy Decoding)部分的源代码。FFmpeg的H.264解码器调用decode_slice()函数完成了解码工作。这些解码工作可以大体上分为3个步骤:熵解码,宏块解码以及环路滤波。本文分析这3个步骤中的第1个步骤。...
分类:
其他好文 时间:
2015-04-18 17:43:54
阅读次数:
322
本文分析FFmpeg的H.264解码器的主干部分。“主干部分”是相对于“熵解码”、“宏块解码”、“环路滤波”这些细节部分而言的。它包含了H.264解码器直到decode_slice()前面的函数调用关系(decode_slice()后面就是H.264解码器的细节部分,主要包含了“熵解码”、“宏块解码”、“环路滤波”3个部分)。...
分类:
其他好文 时间:
2015-04-14 16:42:14
阅读次数:
429
X264支持输入NV12格式
一般编码器(例如JM)输入格式是YUV420(YV12),H.264标准也介绍的是YUV420的输入。X264编码器的输入也一般是YUV420格式,但是在内部帧的存储方式上x264采用的是NV12。因为一般编码器对U,V两通道的处理方式是相同的,例如他们有相同的QP,宏块划分,参考帧ID,运动矢量。因此对于U,V两通道的数据读取是一致的,这样NV12 UV两通道...
分类:
其他好文 时间:
2015-01-23 18:25:01
阅读次数:
722
Intra Luma Prediction
在宏块的帧内预测过程中,有四种宏块类型:I_4x4,I_8x8,I16x16,I_PCM。他们都需要在相邻块做去块滤波之前进行帧内预测。
I_4x4 & I_8x8
1-4获取当前block的帧内预测模式的预测,5-7获得最佳预测模式并对应预测模式的预测做...
分类:
其他好文 时间:
2014-12-28 23:44:36
阅读次数:
386
帧内预测依赖于当前宏块的相邻宏块,如果任何一个相邻宏块不可用,那么会直接影响到当前宏块的预测方式。 那么宏块怎么才谓之可用? 满足以下几个条件的相邻宏块为不可用:相邻宏块超出边界,即(xPicWidthInMbs),(yPicHeightInMbs) 相邻宏块与当前处理的宏块不在同一slic...
分类:
其他好文 时间:
2014-12-07 22:59:33
阅读次数:
467
第四章 视频编码基础1. 压缩码流语法:码流中各个元素的位置关系01001001…图像编码类型(01),宏块类型(00),编码系数1001等语义:每个语法元素所表达的意义。例如:图像编码类型2. 编码层次序列(Sequence)图像组(Group of Pictures,GOP)图像(Picture...
分类:
其他好文 时间:
2014-11-24 16:40:05
阅读次数:
281
在H.264 中,句法元素共被组织成序列、图像、片、宏块、子宏块五个层次。在这样的结构中,每一层的头部和它的数据部分形成管理与被管理的强依赖关系,头部的句法元素是该层数据的核心,而一旦头部丢失,数据部分的信息几乎不可能再被正确解码出来,尤其在序列层及图像层。在 H.264 中,分层结构最大的不同是取...
分类:
其他好文 时间:
2014-11-12 09:17:24
阅读次数:
183
帧间预测主要包括运动估计(运动搜索方法、运动估计准则、亚像素插值和运动矢量估计)和运动补偿。对于H.264,是对16x16的亮度块和8x8的色度块进行帧间预测编码。A、树状结构分块 H.264的宏块,对于16x16的亮度宏块,可以分成16x16、16x8、8x16和8x8的子块进行帧间预测。对于8....
分类:
其他好文 时间:
2014-10-13 03:13:08
阅读次数:
312
此处记录学习AVC过程中的一些基本概念,不定时更新。frame:帧,相当于一幅图像,包含一个亮度矩阵和两个色度矩阵。field:场,一帧图像,通过隔行扫描得到奇偶两场,分别称为顶场和底场或奇场和偶场。macroblock/MB:宏块,H.264中处理(预测、变换、量化)的基本单元,大小16*16个像...
分类:
其他好文 时间:
2014-10-12 01:38:07
阅读次数:
182
第四章 视频编码基础1. 压缩码流语法:码流中各个元素的位置关系01001001…图像编码类型(01),宏块类型(00),编码系数1001等语义:每个语法元素所表达的意义。例如:图像编码类型2. 编码层次序列(Sequence)图像组(Group of Pictures,GOP)图像(Picture...
分类:
其他好文 时间:
2014-06-26 17:41:21
阅读次数:
240