7 Sintaxis y semántica

7.4 Semántica

} i++

} while( i < numCoeff - 1 )

coeff_abs_level_minus1[ numCoeff - 1 ] 3 | 4 ae(v)

coeff_sign_flag[ numCoeff - 1 ] 3 | 4 ae(v)

coeffLevel[ numCoeff - 1 ] =

( coeff_abs_level_minus1[ numCoeff – 1 ] + 1 ) * ( 1 – 2 * coeff_sign_flag[ numCoeff – 1 ] ) for( i = numCoeff - 2; i >= 0; i-- )

if( significant_coeff_flag[ i ] ) { coeff_abs_level_minus1[ i ] 3 | 4 ae(v) coeff_sign_flag[ i ] 3 | 4 ae(v) coeffLevel[ i ] = ( coeff_abs_level_minus1[ i ] + 1 ) * ( 1 – 2 * coeff_sign_flag[ i ] ) } else coeffLevel[ i ] = 0 } else

for( i = 0; i < maxNumCoeff; i++ ) coeffLevel[ i ] = 0

}

7.4 Semántica

La semántica correspondiente a las estructuras sintácticas y a los elementos sintácticos dentro de esas estructuras, se especifica en esta subcláusula. Cuando la semántica de un elemento sintáctico se especifica mediante un cuadro o un conjunto de cuadros, todo valor no especificado en los cuadros no deberá estar en el tren de datos, salvo si se indica otra cosa en esta Recomendación | Norma Internacional.

7.4.1 Semántica de las unidades NAL

NOTA 1 – La VCL representa eficientemente el contenido de los datos vídeo. La NAL da formato a esos datos y proporciona información de cabecera adaptada al transporte por diversos canales de comunicación o el almacenamiento en diferentes medios. Todos los datos se incluyen en unidades NAL, las cuales contienen un número entero de bytes. La unidad NAL tiene un formato genérico que se puede utilizar en sistemas por paquetes y en sistemas de tren de bits. La diferencia estriba en que en el formato tren de bytes cada unidad NAL puede tener un prefijo código de inicio y bytes de relleno adicionales.

NumBytesInNALunit indica el tamaño de la unidad NAL en bytes. Este valor es necesario para decodificar la unidad NAL. Es necesario delimitar de alguna manera las unidades NAL para poder deducir NumBytesInNALunit. En el anexo B se especifica un método de delimitación para el formato tren de bytes. Otros posibles métodos de delimitación quedan fuera del alcance de esta Recomendación | Norma Internacional.

nal_ref_idc será distinto de 0 en las unidades NAL que contienen un conjunto de parámetros secuencia, una extensión de conjunto de parámetros secuencia o un conjunto de parámetros imagen. Cuando nal_ref_idc es igual a 0 para una unidad NAL de un sector o de una partición de datos de sector de una determinada imagen, será igual a 0 para todas las unidades NAL del sector o partición de datos de sector de la imagen.

nal_ref_idc será distinto de 0 para las unidades NAL IDR, es decir, unidades NAL con nal_unit_type igual a 5. nal_ref_idc será igual a 0 para todas las unidades NAL cuyo nal_unit_type sea igual a 6, 9, 10, 11 ó 12.

nal_unit_type especifica el tipo de estructura de datos de la RBSP contenida en la unidad NAL, según se especifica en el cuadro 7-1. Las unidades NAL VCL se definen como aquellas unidades NAL cuyo nal_unit_type está entre 1 y 5, inclusive. Las demás unidades NAL se denominan unidades NAL no VCL.

La columna "C" en el cuadro 7-1 enumera las categorías de elementos sintácticos que pueden aparecer en la unidad NAL. Además, puede haber elementos sintácticos cuya categoría sintáctica sea "todas", según la sintaxis y la semántica de la estructura de datos RBSP. La presencia o no de elementos sintácticos en una determinada categoría enumerada depende de la sintaxis y la semántica de la estructura de datos RBSP correspondiente. El nal_unit_type será distinto de 3 y 4 salvo cuando haya algún elemento sintáctico en la estructura de datos RBSP que tenga una categoría de elemento sintáctico de valor igual al de nal_unit_type y su categoría no sea "todas".

Cuadro 7-1 – Códigos de tipos de unidades NAL

nal_unit_type Contenido de la unidad NAL y de la

estructura sintáctica RBSP C

0 No especificado

1 Sector codificado de una imagen que no es IDR

slice_layer_without_partitioning_rbsp( ) 2, 3, 4 2 Partición A de datos de sector codificado

slice_data_partition_a_layer_rbsp( ) 2 3 Partición B de datos de sector codificado

slice_data_partition_b_layer_rbsp( ) 3 4 Partición C de datos de sector codificado

slice_data_partition_c_layer_rbsp( ) 4 5 Sector codificado de una imagen IDR

slice_layer_without_partitioning_rbsp( ) 2, 3 6 Información de mejora suplementaria (SEI)

sei_rbsp( ) 5

7 Conjunto de parámetros secuencia

seq_parameter_set_rbsp( ) 0

8 Conjunto de parámetros imagen

pic_parameter_set_rbsp( ) 1

9 Delimitador de unidades de acceso

access_unit_delimiter_rbsp( ) 6 10 Fin de secuencia end_of_seq_rbsp( ) 7 11 Fin de tren end_of_stream_rbsp( ) 8 12 Datos de relleno filler_data_rbsp( ) 9

13 Extensión de conjunto de parámetros secuencia

seq_parameter_set_extension_rbsp( ) 10 14..18 Reservado

19 Sector codificado de una imagen con codificación auxiliar sin partición

slice_layer_without_partitioning_rbsp( ) 2, 3, 4 20..23 Reservado

24..31 No especificado

Las unidades NAL cuyo nal_unit_type sea igual a 13 y 19 pueden ser descartadas por los decodificadores, sin afectar al proceso de decodificación de las unidades NAL cuyo nal_unit_type no sea igual a 13 ó 19, y sin afectar a la conformidad con esta Recomendación | Norma Internacional.

Las unidades NAL cuyo nal_unit_type sea igual a 0 o esté en la gama de 24..31, inclusive, no afectarán al proceso de decodificación especificado en esta Recomendación | Norma Internacional.

NOTA 2 – La utilización de los tipos de unidades NAL 0 y 24..31 es específica de la aplicación. En esta Recomendación | Norma Internacional no se especifica el proceso de decodificación para estos valores de nal_unit_type.

Los decodificadores harán caso omiso (eliminarán del tren de bits y descartarán) del contenido de todas las unidades NAL que utilicen valores reservados de nal_unit_type.

NOTA 3 – De este modo se podrá definir en el futuro extensiones compatibles con esta Recomendación | Norma Internacional. En el texto, por unidad NAL de sector codificado se entiende un sector codificado de una unidad NAL de imagen que no es IDR o un sector codificado de una unidad NAL de imagen IDR.

Cuando el valor de nal_unit_type es 5 para una unidad NAL que contiene un sector de una imagen codificada, el valor de nal_unit_type será 5 en todas las demás unidades NAL VCL de la misma imagen codificada. Las imágenes de este tipo se denominan imágenes IDR.

NOTA 4 – No se pueden utilizar las particiones de datos de sector en imágenes IDR.

rbsp_byte[ i ] es el i-ésimo byte de una RBSP. Las RBSP se definen como una secuencia ordenada de bytes, del modo siguiente.

La RBSP contiene una SODB de modo que:

− Si la SODB está vacía (es decir, su longitud es de cero bits), la RBSP también está vacía. − De lo contrario, la RBSP contiene la SODB de modo que:

1) El primer byte de la RBSP contiene los ocho bits de la SODB (siendo el más significativo el de más a la izquierda); el siguiente byte de la RBSP contiene los siguientes ocho bits de la SODB, etc., hasta que queden menos de ocho bits de la SODB.

2) rbsp_trailing_bits( ) está presente después de la SODB del modo siguiente:

i) los primeros bits (siendo el más significativo el de más a la izquierda) del último byte de la RBSP contienen los bits restantes de la SODB (si los hubiere),

ii) el siguiente bit consta de un solo rbsp_stop_one_bit igual a 1, y

iii) cuando el rbsp_stop_one_bit no es el último bit del byte alineado por byte, habrá algún rbsp_alignment_zero_bit para realizar el alineamiento de byte.

3) Es posible que haya algún elemento sintáctico de 16 bits cabac_zero_word igual a 0x0000 en algunas RBSP después de rbsp_trailing_bits( ) al final de la RBSP.

Las estructuras sintácticas que tienen estas propiedades RBSP se indican mediante el sufijo "_rbsp" en los cuadros de sintaxis. Estas estructuras estarán contenidas en los bytes de datos rbsp_byte[ i ] de las unidades NAL. La asociación de estructuras sintácticas RBSP con las unidades NAL se especifica en el cuadro 7-1.

NOTA 5 – Cuando se conocen los límites de la RBSP, el decodificador puede extraer la SODB de la RBSP concatenando los bits de los bytes de la RBSP y descartando el rbsp_stop_one_bit, que es el último bit (el menos significativo, el que está más a la derecha) igual a 1, y descartará los siguientes bits (los menos significativos, más a la derecha), que serán todos 0. Los datos necesarios para el proceso de decodificación están contenidos en la parte SODB de la RBSP.

emulation_prevention_three_byte es un byte de valor 0x03. Si hay un emulation_prevention_three_byte en la unidad NAL, el proceso de decodificación lo descartará.

El último byte de la unidad NAL no será igual a 0x00.

En la unidad NAL no aparecerá ninguna de las siguientes secuencias de tres bytes en posición alguna alineada por byte: – 0x000000

– 0x000001 – 0x000002

7.4.1.1 Encapsulado de una SODB dentro de una RBSP (informativa)

Esta subcláusula no es parte integrante de esta Recomendación | Norma Internacional.

A continuación se especifica el encapsulado de una SODB dentro de una RBSP y la utilización del emulation_prevention_three_byte para el encapsulado de una RBSP dentro de una unidad NAL, con objeto de:

– evitar la emulación de códigos de inicio dentro de unidades NAL y además permitir la representación de cualquier SODB dentro de una unidad NAL,

– permitir la identificación del final de la SODB dentro de la unidad NAL mediante la búsqueda en la RBSP del rbsp_stop_one_bit que aparece al final de la RBSP, y

– permitir que la unidad NAL tenga un tamaño mayor que la SODB en ciertas circunstancias (para lo cual se utilizará alguna cabac_zero_word).

El codificador puede producir la unidad NAL a partir de la RBSP mediante el siguiente procedimiento: Se busca en los datos de la RBSP los bits alineados por byte que tengan el siguiente patrón binario:

'00000000 00000000 000000xx' (donde xx representa cualquier patrón de 2 bits: 00, 01, 10, u 11), y se inserta el byte 0x03 de modo que el patrón de bits queda

'00000000 00000000 00000011 000000xx',

y, por último, cuando el último byte de los datos de la RBSP sea igual a 0x00 (lo cual sólo puede ocurrir cuando la RBSP termina en una cabac_zero_word) se añade al final de los datos el byte 0x03.

Se inserta al principio de la secuencia de bytes resultantes el primer byte de la unidad NAL que contiene la indicación del tipo de estructura de datos RBSP contenida. De este modo se da formato a toda la unidad NAL.

Mediante este proceso es posible representar cualquier SODB en una unidad NAL garantizando además que: – no se produce emulación de un prefijo de código de inicio alineado por byte dentro de la unidad NAL, y

– no se produce emulación de secuencia alguna de 8 bits de valor cero seguidos de un prefijo de código de inicio, independientemente de si están o no alineados por byte, dentro de la unidad NAL.

7.4.1.2 Orden de unidades NAL y asociación con imágenes codificadas, unidades de acceso y secuencias de vídeo

En esta subcláusula se especifican las restricciones del orden de unidades NAL en el tren de bits. Los órdenes de unidades NAL en el tren de bits que obedezcan a estas pautas se denominarán en el documento como orden de decodificación de unidades NAL. Dentro de una unidad NAL, la sintaxis de las subcláusulas 7.3, D.1 y E.1 especifican el orden de decodificación de elementos sintácticos. Los decodificadores conformes con esta Recomendación | Norma Internacional serán capaces de recibir unidades NAL y sus elementos sintácticos en el orden de decodificación.

7.4.1.2.1 Orden de las RBSP de conjunto de parámetros imagen y secuencia y su activación

NOTA 1 – El mecanismo de conjunto de parámetros imagen y secuencia separa la transmisión de información que cambia con poca frecuencia de la transmisión de datos de macrobloques codificados. En algunas aplicaciones, los conjuntos de parámetros imagen y secuencia se pueden transmitir "fuera de banda" utilizando un mecanismo de transporte fiable.

La RBSP del conjunto de parámetros imagen incluye parámetros a los cuales se puede hacer referencia en unidades NAL del sector codificado o en unidades NAL de la partición A de datos del sector codificado de una o más imágenes codificadas. Al comienzo del proceso de decodificación se considera no activa cada RBSP del conjunto de parámetros imagen. En cualquier momento dado durante el proceso de decodificación se considera activa a lo sumo una RBSP del conjunto de parámetros imagen, y la activación de cualquier RBSP del conjunto de parámetros imagen particular da como resultado la desactivación de la RBSP del conjunto de parámetros imagen que se encontraba previamente activa (si la había).

Cuando se hace referencia a una RBSP, que no está activa, de conjunto de parámetros imagen (con un determinado valor de pic_parameter_set_id) mediante una unidad NAL de sector codificado o una unidad NAL de partición de datos de sector codificado (mediante ese valor de pic_parameter_set_id), se activa esta RBSP. Esta RBSP de conjunto de parámetros imagen es la RBSP de conjunto de parámetros imagen activa hasta que queda desactivada por la activación de otra RBSP de conjunto de parámetros imagen. Las RBSP de conjunto de parámetros imagen, con ese determinado valor de pic_parameter_set_id, deberán estar disponibles para el proceso de decodificación antes de su activación.

Toda unidad NAL de conjunto de parámetros imagen que contenga el valor de pic_parameter_set_id correspondiente a la RBSP de conjuntos de parámetros imagen activa deberá tener el mismo contenido que la de la RBSP de conjunto de parámetros imagen activa, a no ser que esté después de la última unidad NAL VCL y antes de la primera unidad NAL VCL de otra imagen codificada.

La RBSP de conjunto de parámetros secuencia incluye parámetros a los cuales se puede hacer referencia en una o más RBSP de conjunto de parámetros imagen o en una o más unidades NAL SEI que contienen un mensaje SEI de periodo de almacenamiento intermedio. Al comienzo del proceso de decodificación se considera no activa cada RBSP del conjunto de parámetros de secuencia. En cualquier momento dado durante el proceso de decodificación se considera activa a lo sumo una RBSP del conjunto de parámetros de secuencia, y la activación de cualquier RBSP del conjunto de parámetros de secuencia da como resultado la desactivación de la RBSP del conjunto de parámetros de secuencia que estaba previamente activa (si la había).

Cuando se hace referencia a una RBSP de conjunto de parámetros secuencia (con un determinado valor de seq_parameter_set_id) que no está activa mediante la activación de una RBSP de conjunto de parámetros imagen (que utiliza ese valor de seq_parameter_set_id) o en una unidad NAL SEI que contiene un mensaje SEI de periodo de almacenamiento intermedio (que utiliza ese valor de seq_parameter_set_id), se activa esa RBSP. Esta RBSP de conjunto de parámetros secuencia se conoce como la RBSP de conjunto de parámetros secuencia activa hasta que quede desactivada por la activación de otra RBSP de conjunto de parámetros secuencia. Las RBSP de conjuntos de parámetros de secuencia, con un determinado valor de seq_parameter_set_id, estarán disponibles para el proceso de decodificación antes de su activación. La RBSP de conjunto de parámetros de secuencia activa permanecerá activa para toda la secuencia de vídeo codificado.

NOTA 2 – Debido a que una unidad de acceso IDR inicia una nueva secuencia de vídeo codificado y a que una RBSP del conjunto de parámetros de secuencia activa debe permanecer activa durante toda la secuencia de vídeo codificado, un mensaje SEI del periodo de almacenamiento puede activar una RBSP del conjunto de parámetros de secuencia únicamente cuando el mensaje SEI del periodo de almacenamiento forma parte de una unidad de acceso IDR.

Toda unidad NAL de conjunto de parámetros secuencia que contenga el valor de seq_parameter_set_id correspondiente a la RBSP de conjunto de parámetros secuencia activa deberá tener el mismo contenido que la RBSP de conjunto de parámetros secuencia activa, a no ser que esté después de la última unidad de acceso de una secuencia vídeo codificada y antes de la primera unidad NAL VCL y de la primera unidad NAL SEI que contiene un mensaje SEI de periodo de almacenamiento intermedio (si lo hubiera) de otra secuencia de vídeo codificado.

NOTA 3 – Si la RBSP de conjunto de parámetros imagen o la RBSP de conjunto de parámetros secuencia se transmite dentro del tren de bits, estas restricciones imponen unas pautas aplicables al orden de unidades NAL que contienen la RBSP de conjunto de parámetros imagen o la RBSP de conjunto de parámetros secuencia, respectivamente. De lo contrario (es decir la RBSP de conjunto de parámetro imagen o la RBSP de conjunto de parámetros secuencia se transmiten por otros medios no especificados en esta Recomendación | Norma Internacional), deberán estar disponibles para el proceso de decodificación en el momento adecuado de manera que se sigan estas pautas.

Cuando está presente, una RBSP de extensión de conjunto de parámetros secuencia incluye parámetros que tienen una función similar a la de aquellos de la RBSP de conjunto de parámetros secuencia. Para establecer las restricciones relativas a los elementos sintácticos de la RBSP de extensión de conjunto de parámetros secuencia, y para determinar la activación de una RBSP de extensión de conjunto de parámetros secuencia, la RBSP de extensión deberá considerarse parte de la RBSP de conjunto de parámetros secuencia precedente con el mismo valor de seq_parameter_set_id. Cuando hay presente una RBSP de conjunto de parámetros secuencia que no vaya seguida de una RBSP de extensión de conjunto de parámetros secuencia con el mismo valor seq_parameter_set_id anterior a la activación de la RBSP de conjunto de parámetros secuencia, se considerará que la RBSP de extensión de conjunto de parámetros secuencia y sus elementos sintácticos no están presentes para la RBSP de conjunto de parámetros secuencia activo.

Toda restricción que recaiga sobre la relación entre los valores de los elementos sintácticos (y los valores de las variables que se derivan de esos elementos sintácticos) de los conjuntos de parámetros de secuencia y de los conjuntos de parámetros de imagen, con otros elementos sintácticos, es una restricción que se aplica sólo a los conjuntos activos de parámetros de imagen y de parámetros de secuencia. Si está presente una RBSP del conjunto de parámetros de secuencia que no se activa en el tren de bits sus elementos sintácticos tendrán valores que deben cumplir con las restricciones especificadas, al igual que si ésta es activada por referencia en otro tren de bits de conformación. Si está presente una RBSP del conjunto de parámetros de imagen que no se activa en el tren de bits sus elementos sintácticos

7.4.1.2.2 Orden de unidades de acceso y asociación a secuencias de vídeo codificado

Los trenes de bits conformes con esta Recomendación | Norma Internacional constan de una o más secuencias de vídeo codificado.

Una secuencia de vídeo codificado está formada de una o más unidades de acceso. El orden de las unidades NAL y de las imágenes codificadas y su relación con las unidades de acceso se describe en la subcláusula 7.4.1.2.3.

In document SERIE H: SISTEMAS AUDIOVISUALES Y MULTIMEDIOS Infraestructura de los servicios audiovisuales Codificación de imágenes vídeo en movimiento (página 61-104)