天天看點

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()函數的主要功能就分析完畢了。

繼續閱讀