• No se han encontrado resultados

Abreviaturas, siglas o acrónimos

4.1 CABAC: Codificación aritmética binaria adaptativa basada en el contexto (context-based

adaptive binary arithmetic coding)

4.2 CAVLC: Codificación de longitud variable adaptativa basada en el contexto (context-based

adaptive variable length coding)

4.3 CBR: Velocidad binaria constante (constant bit rate)

4.4 CPB: Memoria intermedia de imagen codificada (coded picture buffer) 4.5 DPB: Memoria intermedia de imagen decodificada (decoded picture buffer) 4.6 DUT: Decodificador en prueba (decoder under test)

4.7 FIFO: Primero en entrar, primero en salir (first-in, first-out)

4.8 HRD: Decodificador ficticio de referencia (hypothetical reference decoder) 4.9 HSS: Planificador ficticio de tren (hypothetical stream scheduler)

4.10 IDR: Regeneración de decodificación instantánea (instantaneous decoding refresh) 4.11 LSB: Bit menos significativo (least significant bit)

4.12 MB: Macrobloque (macroblock)

4.13 MBAFF: Codificación de cuadro-campo adaptativa por macrobloque

(macroblock-adaptive frame-field coding)

4.14 MSB: Bit más significativo (most significant bit)

4.15 NAL: Capa de abstracción de red (network abstraction layer)

4.16 RBSP: Cabida útil de secuencia de bytes en bruto (raw byte sequence payload)

4.17 SEI: Información de perfeccionamiento complementaria (supplemental enhancement

information)

4.18 SODB: Cadena de bits de datos (string of data bits)

4.19 UUID: Identificador único universal (universal unique identifier) 4.20 VBR: Velocidad binaria variable (universal unique identifier) 4.21 VCL: Capa de codificación de vídeo (video coding layer)

4.22 VLC: Codificación de longitud variable (variable length coding) 4.23 VUI: Información de utilización de vídeo (video usability information)

5 Convenios

NOTA – Los operadores matemáticos utilizados en esta Especificación son similares a los del lenguaje de programación C. Además se definen los operadores de división entera y desplazamiento aritmético. Por convenio, al enumerar y contar se empieza generalmente desde 0.

5.1 Operadores aritméticos

Se definen los siguientes operadores aritméticos: + Suma

– Resta (cuando se especifican dos argumentos) o negación (como operador de prefijo unario)

* Multiplicación

x y Exponencial. Significa x a la potencia y. En otros contextos esta notación se utiliza para indicar un superíndice, y no se ha de interpretar como una exponencial.

/ División entera en la que se descartan los decimales. Ejemplo, 7/4 y –7/–4 valen 1 y –7/4 y 7/–4 valen –1.

÷ División, se utiliza en ecuaciones matemáticas y no se descartan los decimales ni se redondea.

y x

División, se utiliza en ecuaciones matemáticas y no se descartan los decimales ni se redondea.

= y x i i

f )( Sumatorio de f( i ), donde i toma todos los valores enteros comprendidos entre x e y inclusive.

x % y Módulo. Se obtiene el resto de dividir x por y; está definido sólo para valores enteros de x e y, siendo x >= 0 e y > 0.

Si no se utilizan paréntesis para indicar explícitamente el orden de precedencia, se aplican las siguientes reglas:

– la multiplicación y la división se realizan antes que la suma y la resta;

– la multiplicación y la división en una expresión se calculan por orden de izquierda a derecha;

– la suma y la resta en una expresión se calculan por orden de izquierda a derecha. 5.2 Operadores lógicos

Se definen los siguientes operadores lógicos

x && y función lógica booleana "and" entre x e y x | | y función lógica booleana "or" entre x e y ! función lógica booleana "not"

x ? y : z si x es TRUE (verdadero) o distinto de 0, toma el valor de y; en caso contrario, toma el valor de z.

5.3 Operadores relacionales

Se definen los siguientes operadores relacionales > mayor que

< menor que

<= menor o igual que = = igual a

!= distinto de. 5.4 Operadores de bit

Se definen los siguientes operadores de bit:

& Función lógica "and" bit a bit. Cuando se aplica a números enteros, se toma la representación en complemento a dos de los números enteros. Cuando se aplica entre dos números binarios con distinto número de bits, al más corto se le añaden ceros a la izquierda, se rellenan con 0 los bits más significativos.

| Función lógica "or" bit a bit. Cuando se aplica a números enteros, se toma la representación en complemento a dos de los números enteros. Cuando se aplica entre dos números binarios con distinto número de bits, al más corto se le añaden ceros a la izquierda, se rellenan con 0 los bits más significativos.

x >> y Desplaza y posiciones hacia la derecha los bits de x, estando x expresado en complemento a dos. Esta función sólo esta definida para valores enteros positivos de y. El valor de los MSB de x es el mismo antes y después del desplazamiento. x << y Desplaza y posiciones hacia la izquierda los bits de x, estando x expresado en

complemento a dos. Esta función sólo esta definida para valores enteros positivos de y. Al aplicar el desplazamiento, los bits añadidos en los LSB tiene un valor igual a 0.

5.5 Operadores de asignación

Se definen los siguientes operadores de asignación: = Οperador de asignación.

+ + Aumento: x+ + significa x = x + 1; cuando se utiliza en un índice de una matriz, el valor de la variable se toma antes de aplicar el operador aumento.

– – Disminución: x– – significa x = x – 1; cuando se utiliza en un índice de una matriz, el valor de la variable se toma antes de aplicar el operador disminución.

+= Aumento por un valor determinado: x += 3 significa x = x + 3, y x += (–3) significa x = x + (–3).

–= Disminución por un valor determinado: x –= 3 significa x = x – 3, y x –= (–3) significa x = x – (–3).

5.6 Notación para indicar una gama de valores

Se utiliza la siguiente notación para indicar una gama de valores

x = y .. z x puede tener cualquier valor comprendido entre "y" y "z" inclusive, siendo x, y, z números enteros.

5.7 Funciones matemáticas

Se definen las siguientes funciones matemáticas: Abs( x ) = < >= 0 x ; x 0 x ; x (5-1)

Clip1( x ) = Clip3( 0, 255, x ) (5-3) Clip3( x, y, z ) = > < otros ; ; ; z y z y x z x (5-4)

Floor( x ) calcula el entero más grande que es menor o igual a x. (5-5) InverseRasterScan( a, b, c, d, e ) =    == == 1 ; * )) / /( ( 0 ; * )) / %( ( e c b d a e b b d a (5-6)

Log2( x ) calcula el logaritmo en base 2 de x (5-7)

Log10( x ) calcula el logaritmo en base 10 de x (5-8)

Luma4x4BlkScan( x, y ) = ( x / 2 ) * 4 + ( y / 2 ) * 8 + RasterScan( x % 2, y % 2, 2 ) (5-9) Median( x, y, z ) = x + y + z – Mín( x, Mín( y, z ) ) – Máx( x, Máx( y, z ) ) (5-10) Mín( x, y ) = > <= y x ; y y x ; x (5-11) Máx( x, y ) = < >= y x ; y y x ; x (5-12) RasterScan( x, y, nx ) = x + y * nx (5-13)

Round( x ) = Sign( x ) * Floor( Abs( x ) + 0,5 ) (5-14)

Sign( x ) = < >= 0 x ; 1 0 x ; 1 (5-15) Sqrt( x ) = x (5-16)

5.8 Variables, elementos sintácticos y cuadros

Los elementos sintácticos en el tren de bits se representan en negritas. Cada elemento sintáctico se describe por su nombre (en minúsculas y con el carácter subrayado), su categoría o sus dos categorías sintácticas, y uno o dos descriptores de su método de representación codificada. El proceso de decodificación se lleva a cabo de acuerdo con el valor del elemento sintáctico y de los valores de los elementos sintácticos decodificados previamente. Cuando el valor de un elemento sintáctico se utiliza en los cuadros de sintaxis o en el texto, aparece en letra normal (es decir, no está en negritas).

Quizá en algunos casos los cuadros sintácticos utilicen los valores de otras variables derivadas de los valores de los segmentos sintácticos. Estas variables aparecen en los cuadros de sintaxis o en el texto en una combinación de mayúsculas y minúsculas y sin el carácter subrayado. Las variables que empiecen con mayúscula se obtienen para la decodificación de la estructura sintáctica considerada y todas las estructuras sintácticas dependientes. Las variables que empiezan con mayúscula se pueden utilizar en el proceso de decodificación de estructuras sintácticas posteriores que mencionen la estructura sintáctica original de la variable. Las variables que empiezan con minúscula sólo se utilizan en la subcláusula en que tiene su origen.

En algunos casos, se utilizan indistintamente nombres "nemotécnicos" o sus valores numéricos para referirse a los valores de los elementos sintácticos o valores variables. Algunas veces se utilizan nombres "nemotécnicos" que no tienen asociados valores numéricos. La relación entre valores y nombres se especifican en el texto. Los nombres están formados por un grupo de letras o varios grupos separados por un carácter subrayado. Cada grupo empieza con mayúscula aunque puede contener varias letras mayúsculas.

Las funciones se describen mediante un nombre, cuya forma es la de los nombres de elementos sintácticos, y entre paréntesis encierra los nombres de las variables (para su definición) o valores (para su utilización), separados por comas (en caso de que haya más de una variable).

Los corchetes se utilizan para la indexación de listas o matrices. Éstas pueden ser elementos sintácticos o variables. A veces las matrices bidimensionales se especifican también mediante una notación matricial cuyos índices se indican mediante subíndices.

NOTA – El orden de los índices de las matrices bidimensionales que utilizan corchetes y subíndices es intercambiable. Una muestra cuya posición horizontal es x, y cuya posición vertical es y, que en una matriz de muestras bidimensional se indica mediante s[ x, y ] se podría representar en notación matricial como syx.

La notación binaria se indica poniendo la cadena de bits entre comillas sencillas. Por ejemplo, '01000001' representa una cadena de ocho bits en la que sólo vale 1 el segundo bit y el último. Cuando el número de bits es un múltiplo entero de cuatro, en lugar de la notación binaria se puede utilizar notación hexadecimal, que se indica mediante el prefijo "0x", antes del número hexadecimal. Por ejemplo, 0x41 representa una cadena de ocho bits en la que sólo vale 1 el segundo bit y el último.

Los valores numéricos que no están entre comillas sencillas y que no tienen el prefijo "0x" son valores decimales.

El valor 0 representa la condición FALSE (FALSO) en una expresión condicional. El valor TRUE (VERDADERO) se representa por cualquier otro valor distinto de cero.

5.9 Descripción mediante texto de operaciones lógicas

La expresión de operaciones lógicas que en seudocódigo se describirían como: if( condición 0 )

expresión 0

else if ( condición 1 ) expresión 1

else /* observación sobre las condiciones restantes */ expresión n

en el texto se escribe del modo siguiente:

... del modo siguiente /... se aplica lo siguiente. – Si condición 0, expresión 0

– De lo contrario, si condición 1, expresión 1 – …

– De lo contrario (observación sobre las condiciones restantes), expresión n

Cada expresión "Si...de lo contrario, si...de lo contrario, ..." en el texto empieza con "... del modo siguiente" o "... se aplica lo siguiente" seguido inmediatamente de "Si ...". La última condición del "Si...de lo contrario, si... de lo contrario, ..." siempre es un "De lo contrario, ...". El intercalado de expresiones "Si...de lo contrario, si...de lo contrario, ..." se puede identificar por que empieza con "... del modo siguiente " o "... se aplica lo siguiente" y termina con el último "De lo contrario, ...". La expresión de operaciones lógicas que en seudocódigo se describirían mediante:

if( condición 0a && condición 0b ) expresión 0

else

expresión n

en el texto se escribe del siguiente modo:

... del modo siguiente / ... se aplica lo siguiente.

– Si se cumplen todas las condiciones siguientes, expresión 0 – condición 0a

– condición 0b

– De lo contrario, si se cumple alguna de las siguientes condiciones, expresión 1 – condición 1a

– condición 1b – …

– De lo contrario, expresión n

La expresión de operaciones lógicas que en seudocódigo se escriben como if( condición 0 )

expresión 0 if( condición 1 ) expresión 1

en el texto se escriben de la siguiente manera: si condición 0, expresión 0

si condición 1, expresión 1 5.10 Procesos

Los procesos se utilizan para describir la decodificación de elementos sintácticos. La especificación y la activación de un proceso son independientes. Todos los elementos sintácticos y las variables en mayúsculas que pertenecen a la estructura sintáctica en cuestión y las estructuras sintácticas dependientes están disponibles en la especificación y la activación del proceso. Dicha especificación puede tener además una variable en minúsculas que se especifica explícitamente como entrada o argumento. Cada especificación de proceso tiene especificada explícitamente una salida o resultado que es una variable que puede representarse en minúsculas o en mayúsculas. La asignación de variables se especifica del modo siguiente:

– Cuando se activa un proceso, a las variables se les asignan explícitamente variables de entrada o salida en minúsculas de la especificación del proceso, en caso de que no tengan el mismo nombre.

– De lo contrario (cuando las variables en la activación y la especificación del proceso tienen el mismo nombre), la asignación es implícita.

En la especificación de un proceso, se puede hacer referencia a un macrobloque particular mediante el nombre de la variable cuyo valor es la dirección del macrobloque en cuestión.

6 Formato de los datos fuente, codificados, decodificados y de salida, proceso de barrido