x265源码的入口函数是main(),本文分析main()的主要功能。首先给出main()函数的功能及其代码结构;其次给出main()函数源码以及分析;最后给出main()函数中的主要功能函数的具体功能。
main()函数的主要功能是解析参数并进行编码的一些准备工作,调用了如下几个重要的函数:
(1)cliopt.parse()函数:解析参数
(2)api->encoder_open()函数:打开编码器配置
(3)api->encoder_headers()函数:设置nal相关信息
(4)api->encoder_encode()函数:进入编码函数
(5)api->encoder_close()函数:结束编码并进行总结
注:encoder_open()函数、encoder_headers()函数、encoder_encode()函数与encoder_close()函数均位于api.app中。
对应的函数关系图如下图所示:
main()函数的源码分析如下代码中的注释,代码如下:
cliopt.parse(argc, argv)的主要功能是分析参数,直接调用x265.cpp中的bool clioptions::parse(int argc, char **argv)函数,该函数会打印输入视频的分辨率、帧率、视频格式、所要编码的帧数目以及输出文件名称等,如下图所示:
对应的代码如下:
encoder_open(param)的主要功能是打印编码器的配置信息,直接调用api.cpp中的x265_encoder *x265_encoder_open(x265_param *p),该函数中调用了x265_print_params(param)用以打印编码器配置信息,如下图所示:
对应的代码如下:
到这儿,main()函数的主要功能就分析完毕了。