close

每个 VCL NAL unit都有一个PPS的id;
每个PPS都有一个SPS的id.
这样很小的数据量(id)就可以代表整个parameter set, 不用每次在VCL NAL unit中重复这些信息.
这个做法很聪明!!!

-------------------------------------

H.264中如何判斷某一段是否為SPS(Sequence Parameter Set)或PPS(Picture Parameter Set)
在H.264中,無論是SPS、PPS或者是slice data,都是由一個NAL unit所組成。一個NAL unit的開始皆為00 00 00 01,下一個byte的值將決定這個NAL unit是屬於SPS或者是PPS還是slice data。

事實上下一個byte的值是由三個部份所組成,包括forbidden_bit、nal_reference_idc和nal_unit_type。其中forbidden_bit佔1bit,一般來說其值為0。而nal_reference_idc佔2bit,其值用來表示此NAL在重建過程中重要程度。至於佔了5bit的nal_unit_type就比較重要了,用來表示該NAL unit是屬於何種類型。

下表是H.264標準中定義所有NAL的類型
#define NALU_TYPE_SLICE 1
#define NALU_TYPE_DPA 2
#define NALU_TYPE_DPB 3
#define NALU_TYPE_DPC 4
#define NALU_TYPE_IDR 5
#define NALU_TYPE_SEI 6
#define NALU_TYPE_SPS 7
#define NALU_TYPE_PPS 8
#define NALU_TYPE_AUD 9
#define NALU_TYPE_EOSEQ 10
#define NALU_TYPE_EOSTREAM 11
#define NALU_TYPE_FILL 12
因此當nal_unit_type值為7時,則這個NAL unit即為SPS。而值為8時,這個NAL unit為PPS。

舉例來說,若擷取某一段H.264 bitstream為00 00 00 01 67 42 e0 14 da 05 82 51。
因為67 = 0 11 00111,nal_unit_tye = 00111 = 7,所以這一段為SPS。
又另一例00 00 00 01 68 ce 30 c4 80 00 00 00 00 00 00 00
68 = 01000,nal_unit_tye = 01000 = 8,所以這一段為PPS。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 丘猴子 的頭像
    丘猴子

    轉貼部落格

    丘猴子 發表在 痞客邦 留言(0) 人氣()