2011-04-22 13 views
5

Estoy analizando unidades h264 NAL. En mi secuencia, hay unidades NAL con parámetros de imagen configurados, parámetros de secuencia establecidos, I cuadros (también son IDR) y cuadros P (marcos I y P consiste en un solo corte). (No hay marcos B en absoluto)sintaxis h264 (detalles de sintaxis de cuadros P)

Así que tienen la secuencia de unidades NAL se parece a:

[SPS] [PPS] [I(IDR)] [P] [P] [P] ... [P] [P] [SPS] [PPS] [I(IDR)] [P] [P] [P] .... 

Cada cuadro I en mi flujo es también el marco IDR, por lo que su FRAME_NUM es 0 (según h. 264 estándar).

También cada cuadro P tiene frame_num por unidad mayor que el cuadro anterior.

Pero, estoy confundido acerca de pic_order_cnt_lsb.

¿Qué representa pic_order_cnt_lsb?

En mi secuencia:

  • si P tiene frame_num==2 marco de su pic_order_cnt_lsb==4
  • si la trama P tiene frame_num==3 su pic_order_cnt_lsb==6
  • si P marco tiene frame_num==4 su pic_order_cnt_lsb==8
  • etc .. . (en mi situación pic_order_cnt_lsb == 2*frame_num)

¿Y por qué existe tal correlación entre frame_num y pic_order_cnt_lsb?

Gracias,

Respuesta

1

Parece que usted ha entrelazado de datos. Con datos entrelazados, un cuadro está compuesto por dos campos. El otro campo de cada cuadro tendrá los valores impares para pic_order_cnt_lsb.

pic_order_cnt_lsb son solo los bits menos significativos de un contador que sigue el orden de las imágenes. Si (como en los datos entrelazados típicos) tiene dos imágenes por fotograma, aumentará en dos por cada cambio en el frame_num. Si su flujo era progresivo en lugar de entrelazado, los dos aumentarían juntos.