天天看点

x265探索与研究(六):main()函数x265探索与研究(六):main()函数

        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中。

        对应的函数关系图如下图所示:

x265探索与研究(六):main()函数x265探索与研究(六):main()函数

        main()函数的源码分析如下代码中的注释,代码如下:

        cliopt.parse(argc, argv)的主要功能是分析参数,直接调用x265.cpp中的bool clioptions::parse(int argc, char **argv)函数,该函数会打印输入视频的分辨率、帧率、视频格式、所要编码的帧数目以及输出文件名称等,如下图所示:

x265探索与研究(六):main()函数x265探索与研究(六):main()函数

        对应的代码如下:

        encoder_open(param)的主要功能是打印编码器的配置信息,直接调用api.cpp中的x265_encoder *x265_encoder_open(x265_param *p),该函数中调用了x265_print_params(param)用以打印编码器配置信息,如下图所示:

x265探索与研究(六):main()函数x265探索与研究(六):main()函数

对应的代码如下:

x265探索与研究(六):main()函数x265探索与研究(六):main()函数

到这儿,main()函数的主要功能就分析完毕了。

继续阅读