上一篇写了x264库的编译安装、测试,那么这个库怎么为自己所用呢?在下载好的x264源码top目录下,使用了
./x264这个小程序进行了例子验证,下面分析下这个x264.c 文件,看看如果我们要在代码中使用x264库编码,该怎么做:

本来想慢慢自己分析下,却已经百度到相关的内容,权且当个拿来主义者,毕竟,还是不要重复造轮子的好:下面附上别人的解析链接:(相当齐全)

《x264代码剖析(一):图文详解x264在Windows平台上的搭建
<http://blog.csdn.net/frd2009041510/article/details/50777691?spm=a2c4e.11153940.blogcont31059.3.42fa18db40uyt8>


《x264代码剖析(二):如何编译运行x264以及x264代码基本框架
<http://blog.csdn.net/frd2009041510/article/details/50805395>》

《x264代码剖析(三):主函数main()、解析函数parse()与编码函数encode()
<http://blog.csdn.net/frd2009041510/article/details/50820491?spm=a2c4e.11153940.blogcont31059.5.42fa18db40uyt8>


《x264代码剖析(四):vs2010编译x264错误集锦
<http://blog.csdn.net/frd2009041510/article/details/50822847>》

《x264代码剖析(五):encode()函数之x264_encoder_open()函数
<http://blog.csdn.net/frd2009041510/article/details/50833141>》

《x264代码剖析(六):encode()函数之x264_encoder_headers()函数
<http://blog.csdn.net/frd2009041510/article/details/50839114>》

《x264代码剖析(七):encode()函数之x264_encoder_encode()函数
<http://blog.csdn.net/frd2009041510/article/details/50845057>》

《x264代码剖析(八):encode()函数之x264_encoder_close()函数
<http://blog.csdn.net/frd2009041510/article/details/50847271>》

《x264代码剖析(九):x264_encoder_encode()函数之x264_slice's'_write()函数
<http://blog.csdn.net/frd2009041510/article/details/50849722>》

《x264代码剖析(十):x264核心算法框架
<http://blog.csdn.net/frd2009041510/article/details/50864479>》

《x264代码剖析(十一):核心算法之宏块分析函数x264_macroblock_analyse()
<http://blog.csdn.net/frd2009041510/article/details/50877029>》

《x264代码剖析(十二):核心算法之帧内预测函数x264_mb_analyse_intra()
<http://blog.csdn.net/frd2009041510/article/details/50889684>》

《x264代码剖析(十三):核心算法之帧间预测函数x264_mb_analyse_inter_*()
<http://blog.csdn.net/frd2009041510/article/details/50917282>》

《x264代码剖析(十四):核心算法之宏块编码函数x264_macroblock_encode()
<http://blog.csdn.net/frd2009041510/article/details/50959404>》

《x264代码剖析(十五):核心算法之宏块编码中的变换编码
<http://blog.csdn.net/frd2009041510/article/details/50966924>》

《x264代码剖析(十六):核心算法之宏块编码中的量化编码
<http://blog.csdn.net/frd2009041510/article/details/50978089>》

《x264代码剖析(十七):核心算法之熵编码(Entropy Encoding)
<http://blog.csdn.net/frd2009041510/article/details/51026583>》

《x264代码剖析(十八):核心算法之滤波
<http://blog.csdn.net/frd2009041510/article/details/51076471>》






上面的第三篇,即本文的主题,不过,个人觉得讲得太过呆滞,有点于拘泥于细节而忽视了整体,这里补充点个人的看法:

Main()

{

Parse();

Encode();

}

 

在encode()函数中,进行编码:

X264_encoder_open(param);

x264_encoder_parameters( h, param );

x264_encoder_headers

x264_encoder_encode

其他的一些收尾工作

 

整个分析过程,其实是一个剥离的过程,将x264_encoder 函数和调用者剥离,因为我们要明白的是调用关系,x264_encoder_ 
开头的函数我们暂时不去追究其源码,其实只在工程中全局搜索下x264_encorder_  就可以简短的看到全部关于库函数的调用。搞清楚怎么去使用
x264_encoder api 。 其他的部分,即用户调用者要自己实现的部分。

 

大体的结构是:

初始化->读源文件->获得一帧数据->编码->写目标文件->收尾

结果我们在看到它在获取一帧源数据部分使用到一个  filter。 这是该程序自己实现的类似一个文件管理器的玩意, 直接就从这个里面getframe
了,可以肯定,之前已经初始化了这个结构体,(这有点op的思想),具体怎么获取一帧,追踪即可看到源码。




友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信