x264代码剖析
文章平均质量分 89
H.264/AVC对应的x264平台的代码分析。
成长Bar
人生為棋,我願為卒,行動雖慢,可誰見我後退過一步!
展开
-
x264代码剖析笔记
x264代码剖析笔记 x264的基本框架仍是采用基于预测+变换的混合编码框架,如下图所示,主要包括:帧内预测、帧间预测、变换与量化、熵编码、滤波等。 下面列举了x264代码剖析的系列文章:《x264代码剖析(一):图文详解x264在Windows平台上的搭建》《x264代码剖析(二):如何编译运行x264以及x264代码基原创 2016-04-07 10:15:25 · 2622 阅读 · 1 评论 -
x264代码剖析(十八):核心算法之滤波
x264代码剖析(十八):核心算法之滤波 H.264/MPEG-4 AVC视频编码标准中,在编解码器反变换量化后,图像会出现方块效应,主要原因是:1)基于块的帧内和帧间预测残差的DCT变换,变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数有误差,会造成在图像块边界上的视觉不连续;2)运动补偿可能是从不是同一帧的不同位置上内插样点数据复制而来,因为运动补偿块的匹配不可原创 2016-04-06 17:05:39 · 3102 阅读 · 1 评论 -
x264代码剖析(十七):核心算法之熵编码(Entropy Encoding)
x264代码剖析(十七):核心算法之熵编码(Entropy Encoding) 熵编码是无损压缩编码方法,它生产的码流可以经解码无失真地恢复出原始数据。熵编码是建立在随机过程的统计特性基础上的。本文对熵编码中的CAVLC(基于上下文自适应的可变长编码)和CABAC(基于上下文的自适应二进制算术熵编码)进行简单介绍,并给出x264中熵编码对应的代码分析。 在H.264的CAV原创 2016-03-31 15:16:42 · 3708 阅读 · 0 评论 -
x264代码剖析(十六):核心算法之宏块编码中的量化编码
x264代码剖析(十六):核心算法之宏块编码中的量化编码 为了进一步节省图像的传输码率,需要对图像进行压缩,通常采用变换编码及量化来消除图像中的相关性以减少图像编码的动态范围。本文主要介绍量化的相关内容,并给出x264中量化编码的代码分析。 1、量化编码 量化过程就是根据图像的动态范围大小确定量化参数,既保留图像必要的细节,又可以减少码流。在原创 2016-03-25 11:28:52 · 2659 阅读 · 0 评论 -
x264代码剖析(十五):核心算法之宏块编码中的变换编码
x264代码剖析(十五):核心算法之宏块编码中的变换编码 为了进一步节省图像的传输码率,需要对图像进行压缩,通常采用变换编码及量化来消除图像中的相关性以减少图像编码的动态范围。本文主要介绍变换编码的相关内容,并给出x264中变换编码的代码分析。 1、变换编码 变换编码将图像时域信号变换成频域信号,在频域中图像信号能量大部分集中在低频区域,相对原创 2016-03-23 21:58:35 · 2577 阅读 · 2 评论 -
x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode() 宏块编码函数x264_macroblock_encode()是完成变换与量化的主要函数,而x264_macroblock_encode()调用了x264_macroblock_encode_internal()函数,在x264_macroblock_encode_interna原创 2016-03-22 23:05:27 · 2657 阅读 · 0 评论 -
x264代码剖析(十三):核心算法之帧间预测函数x264_mb_analyse_inter_*()
x264代码剖析(十三):核心算法之帧间预测函数x264_mb_analyse_inter_*() 帧间预测是指利用视频时间域相关性,使用临近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。由于视频序列通常包括较强的时域相关性,因此预测残差值接近于0,将残差信号作为后续模块的输入进行变换、量化、扫描及熵编码,可实现对视频信号的高效压缩。原创 2016-03-17 21:39:12 · 3999 阅读 · 0 评论 -
x264代码剖析(十二):核心算法之帧内预测函数x264_mb_analyse_intra()
x264代码剖析(十二):核心算法之帧内预测函数x264_mb_analyse_intra() 在帧内预测模式中,预测块是基于已编码重建块和当前块形成的,编码器通常选取预测块与编码块之间差异最小的预测模式。H.264帧内预测则是参考预测块左方或者上方的已编码块的临近像素点被引入空间域。 对于亮度像素而言,预测块用于16*16或4*4大小宏块的相关操作原创 2016-03-14 20:58:57 · 3431 阅读 · 1 评论 -
x264代码剖析(十一):核心算法之宏块分析函数x264_macroblock_analyse()
x264代码剖析(十一):核心算法之宏块分析函数x264_macroblock_analyse() x264的 x264_slice_write()函数中调用了宏块分析函数x264_macroblock_analyse(),该模块主要完成2大任务:一是对于帧内宏块,分析帧内预测模式;二是对于帧间宏块,进行运动估计,分析帧间预测模式。 如下图所示是x2原创 2016-03-13 12:22:44 · 3557 阅读 · 0 评论 -
x264代码剖析(十):x264核心算法框架
x264代码剖析(十):x264核心算法框架 在正式介绍H.264/AVC核心编码算法之前,首先分析一下其编码结构或者编码流程,后续我们可以根据编码的各个模块分别进行介绍,这样有利于对H.264/AVC视频编码算法的更深入了解。 H.264并没有明确规定一个编解码器如何实现,而是规定了一个编码后的视频比特流的句法和比特流的解码方法,在实现上有较大的灵原创 2016-03-12 11:25:56 · 4367 阅读 · 2 评论 -
x264代码剖析(九):x264_encoder_encode()函数之x264_slice's'_write()函数
x264代码剖析(九):x264_encoder_encode()函数之x264_slice's'_write()函数 x264_encoder_encode()函数的核心函数就是x264_slices_write()函数。在x264_slices_write()函数中,最主要的工作就是调用了x264_slice_write()函数(注意“x264_slices_write原创 2016-03-10 20:25:43 · 3409 阅读 · 0 评论 -
x264代码剖析(八):encode()函数之x264_encoder_close()函数
x264代码剖析(八):encode()函数之x264_encoder_close()函数 encode()函数是x264的主干函数,主要包括x264_encoder_open()函数、x264_encoder_headers()函数、x264_encoder_encode()函数与x264_encoder_close()函数四大部分,其中x264_encoder_enco原创 2016-03-10 15:37:57 · 2579 阅读 · 0 评论 -
x264代码剖析(七):encode()函数之x264_encoder_encode()函数
x264代码剖析(七):encode()函数之x264_encoder_encode()函数 encode()函数是x264的主干函数,主要包括x264_encoder_open()函数、x264_encoder_headers()函数、x264_encoder_encode()函数与x264_encoder_close()函数四大部分,其中x264_encoder_enc原创 2016-03-10 11:32:26 · 8909 阅读 · 0 评论 -
x264代码剖析(六):encode()函数之x264_encoder_headers()函数
x264代码剖析(六):encode()函数之x264_encoder_headers()函数 encode()函数是x264的主干函数,主要包括x264_encoder_open()函数、x264_encoder_headers()函数、x264_encoder_encode()函数与x264_encoder_close()函数四大部分,其中x264_encoder_en原创 2016-03-09 21:59:20 · 4514 阅读 · 1 评论 -
x264代码剖析(五):encode()函数之x264_encoder_open()函数
x264代码剖析(五):encode()函数之x264_encoder_open()函数 我们知道x264源码从主观上分为两大块,一是解析函数parse(),另一个是编码函数encode()。解析函数parse()较简单,并且不涉及H.264编码算法,故不是重点,所以我们要学习的重点自然而然地就是编码函数encode()了。 encode()函数是x原创 2016-03-09 10:19:21 · 4983 阅读 · 3 评论 -
x264代码剖析(四):vs2010编译x264错误集锦
x264代码剖析(四):vs2010编译x264错误集锦 支持VC++平台的x264的最新版本是x264-20091006,接下来就以该版本为例分析编译运行x264过程中遇到的问题以及解决办法。 1、error C2143: syntax error : missing ';' before 'type' 错误提示:错误原因:MS原创 2016-03-07 22:22:16 · 3117 阅读 · 0 评论 -
x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode()
x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode() x264的入口函数为main()。main()函数首先调用parse()解析输入的参数,然后调用encode()编码YUV数据。parse()首先调用x264_param_default()为保存参数的x264_param_t结构体赋默认值;然后在一个大循环中通过getopt_long(原创 2016-03-07 17:14:47 · 4993 阅读 · 0 评论 -
x264代码剖析(二):如何编译运行x264以及x264代码基本框架
x264代码剖析(二):如何编译运行x264以及x264代码基本框架 x264工程在x265出现之前一直在更新,但是自x264-20091007(含)不再支持VC++平台,也就是说支持VC++平台的x264的最新版本是x264-20091006。接下来就以该版本为例简单介绍如何编译运行x264以及x264代码的基本框架。 首先下载x264-20091原创 2016-03-04 21:11:39 · 5347 阅读 · 3 评论 -
x264代码剖析(一):图文详解x264在Windows平台上的搭建
x264代码剖析(一):图文详解x264在Windows平台上的搭建 X264源码下载地址:http://ftp.videolan.org/pub/videolan/x264/ 平台:win7 PC、VS2010 1、MinGW的下载、安装与配置 MinGW的下载地址:http://sourceforge.net/projects/m原创 2016-03-02 15:21:41 · 4759 阅读 · 3 评论