1. 程式人生 > >源碼分析系列(四)x264_nal_dataflow

源碼分析系列(四)x264_nal_dataflow

以及 生成 taf inf enc logs can data 碼率

http://www.cnblogs.com/xkfz007/articles/2616158.html

NAL部分關鍵函數

4.1 int x264_nal_encode( void *, int *, int b_annexeb, x264_nal_t *nal )

功能

對一個片進行NAL編碼。

輸入項目

一個片的RBSP的數據流。

輸出項目

一個NAL單元。

算法

從SODB到RBSP的生成過程:

如果SODB內容是空,生成的RBSP也是空的。

否則,RBSP由如下的方式產生:

RBSP的第一個字節直接取自SODB的第1~8個比特(RBSP字節內的比特按照從左到右對應為從高到低的順序排列,most significant),依此類推,RBSP的其余的每個字節都直接取自SODB的相應比特。RBSP的最後一個字節包含SODB的最後幾個比特,及如下的rbsp_trailing_bits()。

Rbsp_trailing_bits()的第一個比特是1,接下來填充0,直到字節對齊。

最後添加若幹個cabac_zero_word(其值等於0x0000)。

4.2 int x264_nal_decode( x264_nal_t *nal, void *, int )

功能

對一個片進行NAL解碼。

輸入項目

一個NAL單元。

輸出項目

一個片的RBSP的數據流。

程序邏輯

如附圖12所示:

技術分享

附圖12: x264_nal_decode流程圖

4.3 static void x264_nal_start( x264_t *h, int i_type, int i_ref_idc )

功能

初使化nal的結構:設置nal的優先級i_ref_idc,設置nal單元的類型i_type,使nal->p_payload指向h->out.p_bitstream。

輸入項目

x264_t *h

輸出項目

x264_t *h

4.4 Int x264_ratecontrol_new( x264_t *h )

功能

(1)開始碼率控制,設置碼率控制的參數的初始值;

(2)設置輸出緩沖區的參數;

(3)根據碼率以及幀率調整qp的值。

輸入項目

x264_t *h

輸出項目

x264_t *h

程序邏輯

如附圖13所示:

技術分享

附圖13: x264_ratecontrol_new流程圖

分類: X264

源碼分析系列(四)x264_nal_dataflow