[原創(chuàng)] 圖像、幀、片、NALU圖像、幀、片、NALU 是學(xué)習(xí) H.264 的人常常感到困惑的一些概念,我在這里對自己的理解做一些闡述,歡迎大家討論:
H.264 是一次概念的革新,它打破常規(guī),完全沒有 I 幀、P幀、B 幀的概念,也沒有 IDR 幀的概念。對于 H.264 中出現(xiàn)的一些概念從大到小排序依次是:序列、圖像、片組、片、NALU、宏塊、亞宏塊、塊、像素。這里有幾點(diǎn)值得說明: (1)、在 H.264 協(xié)議中圖像是個(gè)集合概念,頂場、底場、幀都可以稱為圖像(本文后面內(nèi)容用到圖像概念時(shí)都是集合概念,不再重復(fù)說明)。因此我們可以知道,對于 H.264 協(xié)議來說,我們平常所熟悉的那些稱呼,例如:I 幀、P 幀、B 幀等等,實(shí)際上都是我們把圖像這個(gè)概念具體化和細(xì)小化了。我們在 H.264 里提到的“幀”通常就是指不分場的圖像; (2)、如果不采用 FMO(靈活宏塊排序) 機(jī)制,則一幅圖像只有一個(gè)片組; (3)、如果不使用多個(gè)片,則一個(gè)片組只有一個(gè)片; (4)、如果不采用 DP(數(shù)據(jù)分割)機(jī)制,則一個(gè)片就是一個(gè) NALU,一個(gè) NALU 也就是一個(gè)片。否則,一個(gè)片由三個(gè) NALU 組成(即標(biāo)準(zhǔn)“表7-1”中 nal_unit_type 值為 2、3、4 的三個(gè) NALU 屬于一個(gè)片); (5)、以上所述的片和 NALU 的大小關(guān)系并不是抽象概念上的從屬關(guān)系。從概念的從屬關(guān)系上來看,NALU其實(shí)又是片的一個(gè)集合概念,例如:標(biāo)準(zhǔn)“表7-1”中 nal_unit_type 值為 5 的 NALU 包括 I 片或者 SI 片。 一幅圖像根據(jù)組成它的片類型來分,可以分為標(biāo)準(zhǔn)“表7-5”中的 8 種類型。我們平常應(yīng)用中所最常見到的其實(shí)是這些類型的特例。例如:我們平常所謂的“I 幀”和“IDR 幀”,其實(shí)是 primary_pic_type 值為 0 的圖像,我們平常所謂的“P幀”其實(shí)是 primary_pic_type 值為 1 的圖像的特例,我們平常所謂的“B幀”其實(shí)是 primary_pic_type 值為 2 的圖像的特例。 一幅圖像根據(jù)概念來分可以分為兩種:IDR 圖像和非 IDR 圖像。一幅圖像是否是 IDR 圖像是由組成該圖像的 NALU 決定的,如果組成該圖像的 NALU 為標(biāo)準(zhǔn)“表7-1”中 nal_unit_type 值為 5 的 NALU,則該圖像為 IDR 圖像,否則為非 IDR 圖像。這里也有幾點(diǎn)值得說明: (1)、nal_unit_type 值為 5 的 NALU 只會(huì)出現(xiàn)在 IDR 圖像中,而 IDR 圖像中的所有 NALU 都是nal_unit_type 值為 5 的 NALU; (2)、我們以組成一幅圖像的片的類型來區(qū)分該圖像是否是 IDR 圖像是錯(cuò)誤的。例如:一幅圖像中的所有片都是 I 片并不代表這幅圖像就是 IDR 圖像。因?yàn)?I 片也可以從屬于 nal_unit_type 值為 1 的 NALU 也即非IDR圖像有機(jī)會(huì)全部包含I片。只不過我們平常最常見到的形式是:所有片都是 I 片的圖像就是 IDR 圖像。其實(shí)這個(gè)時(shí)候 IDR 圖像的概念也被我們具體化和細(xì)小化了。 但I(xiàn)DR圖像必定全部包含I片或SI片,不過只有用NALU的類型才能判斷是不是IDR圖像 一幅圖像由 1~N 個(gè)片組組成,而每一個(gè)片組又由一個(gè)或若干個(gè)片組成 一個(gè)片由一個(gè)NALU或三個(gè)NALU(假如有數(shù)據(jù)分割)組成。圖像解碼過程中總是按照片進(jìn)行解碼,然后按照片組將解碼宏塊重組成圖像。從這種意義上講,片實(shí)際是最大 的解碼單元。而一個(gè)片又包含哪些類型的宏塊呢?標(biāo)準(zhǔn)“表7-10”做了最好的說明。一個(gè) I 宏塊又分為哪些類型呢?標(biāo)準(zhǔn)“表7-11”做了最好的說明。一個(gè) P 宏塊又分為哪些類型呢?標(biāo)準(zhǔn)“表7-13”做了最好的說明。一個(gè) B 宏塊又分為哪些類型呢?標(biāo)準(zhǔn)“表7-14”做了最好的說明。一個(gè) P 宏塊的亞宏塊又分為哪些類型呢?標(biāo)準(zhǔn)“表7-17”做了最好的說明。一個(gè) B 宏塊的亞宏塊又分為哪些類型呢?標(biāo)準(zhǔn)“表7-18”做了最好的說明。 |
|