ES2687945T3 - Inicialización de contexto basada en memoria intermedia de imágenes de decodificador - Google Patents

Inicialización de contexto basada en memoria intermedia de imágenes de decodificador Download PDF

Info

Publication number
ES2687945T3
ES2687945T3 ES12804051.6T ES12804051T ES2687945T3 ES 2687945 T3 ES2687945 T3 ES 2687945T3 ES 12804051 T ES12804051 T ES 12804051T ES 2687945 T3 ES2687945 T3 ES 2687945T3
Authority
ES
Spain
Prior art keywords
segment
entropy
bins
segments
context
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES12804051.6T
Other languages
English (en)
Inventor
Kiran Misra
Christopher A. Segall
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Velos Media International Ltd
Original Assignee
Velos Media International Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Velos Media International Ltd filed Critical Velos Media International Ltd
Application granted granted Critical
Publication of ES2687945T3 publication Critical patent/ES2687945T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/174Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

Un método para seleccionar un método de inicialización para inicializar un contexto de codificación aritmética binaria adaptativa al contexto, CABAC, comprendiendo el método: (a) recibir un segmento en un decodificador de vídeo; (b) identificar (4302, 4304) un tipo del segmento como uno de al menos un tipo de segmento B y un tipo de segmento P; (c) recibir un identificador cuando el tipo del segmento es el tipo de segmento B y se somete el segmento a predicción hacia delante, utilizándose el identificador para seleccionar o bien una primera técnica de inicialización o bien una segunda técnica de inicialización; e (d) inicializar el contexto de CABAC asociado con el segmento usando una técnica de inicialización seleccionada según el tipo del segmento y, cuando el tipo del segmento es el tipo de segmento B y se somete el segmento a predicción hacia delante, el valor del identificador; en el que la etapa de inicializar el contexto de CABAC asociado con el segmento usa la primera técnica de inicialización como técnica de inicialización, en un caso en que el tipo de segmento indica el tipo de segmento B y se somete el segmento a predicción hacia delante y el valor del identificador es igual a un primer valor; la etapa de inicializar el contexto de CABAC asociado con el segmento usa la segunda técnica de inicialización como técnica de inicialización, en un caso en que el tipo de segmento indica el tipo de segmento B y se somete el segmento a predicción hacia delante y el valor del identificador es igual a un segundo valor, en el que el segundo valor difiere del primer valor; y se usa la primera técnica de inicialización para inicializar el contexto de CABAC asociado con el segmento si el tipo del segmento es el tipo de segmento B y no se somete el segmento a predicción hacia delante; se usa la segunda técnica de inicialización para inicializar el contexto de CABAC asociado con el segmento si el tipo del segmento es el tipo de segmento P.

Description

5
10
15
20
25
30
35
40
45
DESCRIPCION
Inicialización de contexto basada en memoria intermedia de imágenes de decodificador Campo técnico
Las realizaciones de la presente invención se refieren, en general, a codificación de vídeo y, en particular, algunas realizaciones de la presente invención se refieren a técnicas para la inicialización de contexto.
Técnica anterior
Los métodos y normas de codificación de vídeo del estado de la técnica, por ejemplo, H.264/MPEG-4 AVC (H.264/AVC) y JCT-VC, Modelo de prueba en consideración (TMuC), pueden proporcionar mayor eficiencia de codificación que métodos y normas más antiguos a costa de una mayor complejidad. El aumento de los requisitos de calidad y los requisitos de resolución en los métodos y normas de codificación de vídeo también puede aumentar su complejidad. Los decodificadores que soportan la decodificación paralela pueden mejorar las velocidades de decodificación y reducir los requisitos de memoria. Adicionalmente, los avances en los procesadores multinúcleo pueden hacer que sean deseables los codificadores y los decodificadores que soportan la decodificación paralela.
H.264/MPEG-4 AVC [Equipo mixto de vídeo de VCEG de ITU-T y MPEG de ISO/IEC, “H.264: Advanced video coding for generic audiovisual services” (Codificación de vídeo avanzada para servicios audiovisuales genéricos), ITU-T Rec. H.264 e ISO/IEC 14496-10 (MPEG4 - Parte 10), noviembre de 2007], es una especificación de códec de vídeo (codificador/decodificador) que usa predicción macrobloque seguida por codificación residual para reducir la redundancia temporal y espacial en una secuencia de vídeo para eficiencia de compresión.
El modelo de prueba en consideración (TMuC) [JCT-VC A205, “Test Model under Consideration”, 16 de junio de 2010] es el modelo de prueba inicial de JCT-VC. TMuC, usando una unidad de codificación básica denominada bloque de árbol de codificación (CTB) que puede tener tamaños variables, puede proporcionar más flexibilidad que H.264/AVC.
“Errata report and drafting update for ITU-T Rec. H.264 | ISO/IEC 14496-10” de Heiko Schwarz et al. (32. JVT meeting; - ; Ginebra; (Equipo mixto de vídeo de JTC1/SC29/WG11 de ISO/IEC y SG.16 de ITU- T); URL:
http://wftp3.itu.int/av-arch/ivt-site/. - ISSN 0000-0072; n.°: JVT-AF 11) especifica la Recomendación de ITU-T, H-264 I normal internacional de ISO/IEC, ISO/IEC 14496-10 Advanced video coding (codificación de vídeo avanzada).
“Tiles for Parallel Decoding” de Kiran Misra et al. (96. MPEG meeting; 21-3-2011 - 25-3-2011; Ginebra; (Grupo de expertos de imágenes en movimiento o JTC1/SC29/WG11 de ISO/IEC), 20110319; n.°: m19950) propone una extensión del concepto mosaico que se propone en JCTVC-E408.
“New results for periodic initis for wavefront coding functionality” de Kiran Misra et al. (96. MPEG MEETING; 21-32011 - 25-3-2011; Ginebra; (GRUPO DE EXPERTOS DE IMÁGENES EN MOVIMIENTO O JTC1/SC29/WG11 de ISO/IEC), n.° m19947, 19 de marzo de 2011 ()) notifica nuevos resultados para reinicializar el motor de CABAC al inicio de cada fila unitaria de codificación mayor.
Sumario de la invención
El contenido de la presente invención está definido por la reivindicación independiente.
Los objetivos, características y ventajas anteriores y otros de la invención se entenderán más fácilmente teniendo en consideración la siguiente descripción detallada de la invención tomada conjuntamente con los dibujos adjuntos.
Breve descripción de los dibujos
La figura 1 es una imagen que muestra un codificador de vídeo H.264/AVC (técnica anterior);
la figura 2 es una imagen que muestra un decodificador de vídeo H.264/AVC (técnica anterior);
la figura 3 es una imagen que muestra una estructura de segmentos a modo de ejemplo (técnica anterior);
la figura 4 es una imagen que muestra una estructura de grupos de segmentos a modo de ejemplo (técnica anterior);
la figura 5 es una imagen que muestra una partición de segmentos a modo de ejemplo según los ejemplos, en la que
puede someterse a partición una imagen en al menos un segmento de reconstrucción y un segmento de reconstrucción puede someterse a partición en más de un segmento de entropía;
la figura 6 es un diagrama que muestra ejemplos que comprenden un segmento de entropía;
la figura 7 es un diagrama que muestra ejemplos que comprenden decodificación de entropía paralela de múltiples segmentos de entropía seguida por reconstrucción de segmentos;
5
10
15
20
25
30
35
40
45
50
la figura 8 es un diagrama que muestra ejemplos que comprenden multiplexación de datos de predicción/datos residuales a nivel de imagen para la construcción de segmentos de entropía;
la figura 9 es un diagrama que muestra ejemplos que comprenden multiplexación en el plano de color a nivel de imagen para la construcción de segmentos de entropía;
la figura 10 es un diagrama que muestra ejemplos que comprenden la transcodificación de un flujo de bits mediante decodificación de entropía, formando segmentos de entropía y codificación de entropía;
la figura 11 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el número de bins (contenedores) asociados con cada segmento de entropía en la pluralidad de segmentos de entropía no supera un número predefinido de bins;
la figura 12 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que pueden asociarse bins con un segmento de entropía hasta que el número de bins en el segmento de entropía supera un umbral basado en un número máximo predefinido de bins;
la figura 13 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el número de bins asociados con cada segmento de entropía en la pluralidad de segmentos de entropía no supera un número predefinido de bins y cada segmento de reconstrucción no contiene más de un número predefinido de macrobloques;
la figura 14 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que pueden asociarse bins con un segmento de entropía hasta que el número de bins en el segmento de entropía supera un umbral basado en un número máximo predefinido de bins y cada segmento de reconstrucción no contiene más de un número predefinido de macrobloques;
la figura 15 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el número de bits asociados con cada segmento de entropía en la pluralidad de segmentos de entropía no supera un número predefinido de bits;
la figura 16 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que pueden asociarse bits con un segmento de entropía hasta que el número de bits en los segmentos de entropía supera un umbral basado en un número máximo predefinido de bits;
la figura 17 es una imagen que representa ejemplos que comprenden múltiples codificadores de bin;
la figura 18 es una imagen que representa ejemplos que comprenden múltiples unidades de adaptación al contexto;
la figura 19 es una imagen que representa ejemplos que comprenden múltiples codificadores de bin y múltiples unidades de adaptación al contexto;
la figura 20 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que se restringe el tamaño de un segmento de entropía para limitar el número de bins sobre los que actúa, en el segmento de entropía, cada unidad de codificador de entropía restringida;
la figura 21 es un diagrama que muestra ejemplos que comprenden la partición de un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que se restringe el tamaño de un segmento de entropía para limitar el número de bins sobre los que actúa, en el segmento de entropía, cada unidad de codificador de entropía restringida;
la figura 22 es una imagen que representa ejemplos que comprenden una pluralidad de decodificadores de bin;
la figura 23 es una imagen que representa ejemplos que comprenden una pluralidad de unidades de adaptación al contexto;
la figura 24 es una imagen que representa ejemplos que comprenden múltiples decodificadores de bin y múltiples unidades de adaptación al contexto;
la figura 25 es una imagen que muestra una partición a modo de ejemplo de un bloque de reconstrucción en una pluralidad de segmentos de entropía en los que los macrobloques dentro de un segmento de entropía son contiguos;
la figura 26 es una imagen que muestra una partición a modo de ejemplo de un bloque de reconstrucción en una pluralidad de segmentos de entropía en los que los macrobloques dentro de un segmento de entropía no son contiguos;
5
10
15
20
25
30
35
40
45
la figura 27 es una imagen que ilustra bloques vecinos no contiguos, usados en decodificación de entropía, para una partición a modo de ejemplo de un bloque de reconstrucción en una pluralidad de segmentos de entropía en los que los macrobloques dentro de un segmento de entropía no son contiguos;
la figura 28 es una imagen que ilustra bloques vecinos usados en decodificación de entropía y reconstrucción de un bloque dentro de un segmento de entropía para una partición a modo de ejemplo de un bloque de reconstrucción en una pluralidad de segmentos de entropía en los que los macrobloques dentro de un segmento de entropía no son contiguos;
la figura 29 es una representación gráfica de una parte a modo de ejemplo de un flujo de bits a modo de ejemplo que presenta restricciones de ubicación de cabecera de segmento de entropía;
la figura 30 es una representación gráfica de una parte a modo de ejemplo de un flujo de bits a modo de ejemplo que presenta restricciones de ubicación de cabecera de segmento de entropía;
la figura 31 es un diagrama que muestra ejemplos que comprenden un decodificador de entropía que procesa una parte restringida de un flujo de bits para identificar una cabecera de segmento de entropía;
la figura 32 es un diagrama que muestra ejemplos que comprenden un decodificador de entropía que procesa una parte restringida de un flujo de bits para identificar una cabecera de segmento de entropía;
la figura 33 es un diagrama que muestra ejemplos que comprenden un decodificador de entropía que procesa una parte restringida de un flujo de bits para identificar una cabecera de segmento de entropía;
la figura 34 es una imagen que ilustra un esquema de inicialización de tabla de contexto a modo de ejemplo dentro de segmentos de entropía;
la figura 35 es una imagen que ilustra la adaptación de barrido;
la figura 36 es un diagrama que muestra ejemplos que comprenden un codificador de entropía con recuperación de contexto desacoplada del orden de barrido de coeficientes;
la figura 37 es un diagrama que muestra ejemplos que comprenden un decodificador de entropía con recuperación de contexto desacoplada del orden de barrido de coeficientes;
la figura 38 es un diagrama que muestra ejemplos que comprenden adaptación al contexto basada en recuento de bins;
la figura 39 es una imagen que ilustra una partición disjunta a modo de ejemplo de varios bins procesados;
la figura 40 es un diagrama que muestra ejemplos que comprenden adaptación al contexto basada en parámetros de cuantificación;
la figura 41 ilustra una técnica de inicialización de contexto; la figura 42 ilustra otra técnica de inicialización de contexto; y la figura 43 ilustra una técnica de inicialización de contexto.
Descripción de realizaciones
La mejor manera de entender las realizaciones de la presente invención será haciendo referencia a los dibujos, en los que se designan partes similares mediante números de referencia similares en su totalidad. Las figuras enumeradas anteriormente se incorporan expresamente como parte de esta descripción detallada.
Se entenderá fácilmente que los componentes de la presente invención, tal como se describen e ilustran en general en las figuras en el presente documento, podrían disponerse y diseñarse en una amplia variedad de configuraciones diferentes. Por tanto, no se pretende que la siguiente descripción más detallada de las realizaciones de los métodos y sistemas de la presente invención limite el alcance de la invención, sino que es meramente representativa de las realizaciones preferidas actualmente de la invención.
Pueden materializarse elementos de realizaciones de la presente invención en forma de hardware, firmware y/o software. Aunque realizaciones a modo de ejemplo reveladas en el presente documento pueden describir sólo una de estas formas, ha de entenderse que un experto en la técnica podría realizar estos elementos en cualquiera de estas formas mientras sigue estando dentro del alcance de la presente invención.
Aunque cualquier codificador/decodificador de vídeo (códec) que use codificación/decodificación de entropía puede estar incluido por realizaciones de la presente invención, se ilustrarán muchas realizaciones a modo de ejemplo de la presente invención en relación con un codificador H.264/AVC y un decodificador H.264/AVC. Esto es a título de ilustración de realizaciones de la presente invención y no como limitación.
5
10
15
20
25
30
35
40
45
50
55
60
Pueden describirse muchas realizaciones a modo de ejemplo de la presente invención en relación con un macrobloque como unidad elemental. Esto es a título de ilustración y no como limitación.
La solicitud de patente estadounidense n.° 12/058.301, titulada “Methods and Systems for Parallel Video Encoding and Decoding”, presentada el 28 de marzo de 2008, se incorpora como referencia al presente documento, en su totalidad. La solicitud de patente estadounidense n.° 12/579.236, titulada “Methods and Systems for Parallel Video Encoding and Decoding”, presentada el 14 de octubre de 2009, se incorpora como referencia al presente documento, en su totalidad.
Los métodos y normas de codificación de vídeo del estado de la técnica, por ejemplo, H.264/AVC y TMuC, pueden proporcionar mayor eficiencia de codificación que métodos y normas más antiguos a costa de mayor complejidad. El aumento de los requisitos de calidad y los requisitos de resolución en los métodos y normas de codificación de vídeo también puede aumentar su complejidad. Los decodificadores que soportan la decodificación paralela pueden mejorar las velocidades de decodificación y reducir los requisitos de memoria. Adicionalmente, los avances en los procesadores multinúcleo pueden hacer que sean deseables los codificadores y los decodificadores que soportan la decodificación paralela.
H.264/AVC, y muchas otras normas y métodos de codificación de vídeo, se basan en un enfoque de codificación de vídeo híbrido basado en bloques, en el que el algoritmo de codificación de fuente es un híbrido de predicción entre imágenes, también considerada entre fotogramas, predicción intraimagen, también considerada intrafotograma, y codificación de transformación de un residuo de predicción. La predicción entre fotogramas puede aprovechar redundancias temporales, y la codificación de transformación e intrafotograma del residuo de predicción puede aprovechar redundancias espaciales.
La figura 1 muestra un diagrama de bloques de un codificador de vídeo H.264/AVC 2 a modo de ejemplo. Una imagen de entrada 4, también considerada un fotograma, puede presentarse para codificación. Pueden producirse una señal predicha 6 y una señal residual 8, en las que la señal predicha 6 puede estar basada o bien en una predicción entre fotogramas 10 o bien en una predicción intrafotograma 12. La predicción entre fotogramas 10 puede determinarse mediante una sección de compensación de movimiento 14 usando una imagen de referencia, almacenada 16, también considerada fotograma de referencia, e información de movimiento 19 determinada mediante un proceso de la sección de estimación de movimiento 18 entre el fotograma de entrada 4 y el fotograma de referencia 16. La predicción intrafotograma 12 puede determinarse mediante una sección de predicción intrafotograma 20 usando una señal decodificada 22. La señal residual 8 puede determinarse sustrayendo la entrada 4 de la predicción 6. La señal residual 8 se transforma, se modifica a escala y se cuantifica mediante una sección de transformación/modificación a escala/cuantificación 24, produciendo de ese modo coeficientes de transformación, cuantificados 26. La señal decodificada 22 puede generarse añadiendo la señal predicha 6 a una señal 28 generada por una sección (de transformación/modificación a escala/cuantificación) inversa 30 usando los coeficientes de transformación, cuantificados 26. La información de movimiento 19 y los coeficientes de transformación, cuantificados 26 pueden someterse a codificación de entropía 32 mediante una sección de codificación de entropía 32 y escribirse en el flujo de bits de vídeo comprimido 34. Una región de imagen de salida 38, por ejemplo, una parte del fotograma de referencia, puede generarse en el codificador 2 mediante un filtro de desbloqueo 36 usando la señal filtrada previamente, reconstruida 22.
La figura 2 muestra un diagrama de bloques de un decodificador de vídeo H.264/AVC 50 a modo de ejemplo. Una señal de entrada 52, también considerada un flujo de bits, puede presentarse para decodificación. Los símbolos recibidos pueden someterse a decodificación de entropía mediante una sección de codificación de entropía 54, produciendo de ese modo información de movimiento 56 y coeficientes de transformación, modificados a escala y cuantificados 58. La información de movimiento 56 puede combinarse mediante una sección de compensación de movimiento 60 con una parte de un fotograma de referencia 84 que puede residir en la memoria de fotogramas 64, y puede generarse una predicción entre fotogramas 68. Los coeficientes de transformación, modificados a escala y cuantificados 58 pueden cuantificarse de manera inversa, modificarse a escala y someterse a transformación inversa mediante una sección (de transformación/modificación a escala/cuantificación) 62, produciendo de ese modo una señal residual decodificada 70. La señal residual 70 puede añadirse a una señal de predicción 78: o bien la señal de predicción entre fotogramas 68 o bien una señal de predicción intrafotograma 76. La señal de predicción intrafotograma 76 puede predecirse mediante una sección de predicción intrafotograma 74 a partir de información decodificada previamente en el fotograma actual 72. La señal combinada 72 puede filtrarse mediante un filtro de desbloqueo 80 y la señal filtrada 82 puede escribirse en la memoria de fotogramas 64.
En H.264/AVC, una imagen de entrada se somete a partición en macrobloques de tamaño fijo, en los que cada macrobloque cubre un área de imagen rectangular de 16*16 muestras de la componente de luma y 8*8 muestras de cada una de las dos componentes de croma. En otros códecs y normas, puede usarse una unidad elemental, o unidad de codificación básica, diferente a un macrobloque, por ejemplo, un bloque de árbol de codificación. El proceso de decodificación de la norma H.264/AVC se especifica para unidades de procesamiento que son macrobloques. El decodificador de entropía 54 analiza los elementos sintácticos del flujo de bits de vídeo comprimido 52 y los demultiplexa. H.264/AVC especifica dos métodos alternativos de decodificación de entropía: una técnica de baja complejidad que se basa en el uso de conjuntos cambiados de manera adaptativa al contexto de códigos de longitud variable, denominados CAVLC, y el algoritmo más exigente a nivel computacional de
5
10
15
20
25
30
35
40
45
50
55
60
codificación aritmética binaria de manera adaptativa basada en el contexto, denominado CABAC. En ambos métodos de decodificación de entropía, la decodificación de un símbolo actual puede basarse en símbolos decodificados correctamente, de manera previa y modelos de contexto actualizado de manera adaptativa. Además, puede multiplexarse conjuntamente diferente información de datos, por ejemplo, información de datos de predicción, información de datos residuales y diferentes planos de color. La demultiplexación no puede realizarse hasta que los elementos se someten a decodificación de entropía.
Después de la decodificación de entropía, puede reconstruirse un macrobloque obteniéndose: la señal residual a través de cuantificación inversa y la transformación inversa, y la señal de predicción, o bien la señal de predicción intrafotograma o bien la señal de predicción entre fotogramas. Puede reducirse la distorsión de bloqueo aplicando un filtro de desbloqueo a cada macrobloque decodificado. No puede comenzar el procesamiento hasta que la señal de entrada se somete a decodificación de entropía, haciendo de ese modo que la decodificación de entropía sea un posible cuello de botella en la decodificación.
De manera similar, en códecs en los que pueden permitirse mecanismos de predicción alternativos, por ejemplo, predicción entre capas en H.264/AVC o predicción entre capas en otros códecs escalables, la decodificación de entropía puede ser un requisito antes de todo procesamiento en el decodificador, haciendo de ese modo que la decodificación de entropía sea un posible cuello de botella.
En H.264/AVC, una imagen de entrada que comprende una pluralidad de macrobloques puede someterse a partición en uno o varios segmentos (slices). Los valores de las muestras en el área de la imagen que representa un segmento (slice) puede decodificarse correctamente sin el uso de datos procedentes de otros segmentos siempre que las imágenes de referencia usadas en el codificador y el decodificador sean idénticas. Por tanto, la decodificación de entropía y la reconstrucción de macrobloques para un segmento no dependen de otros segmentos. En particular, el estado de codificación de entropía se restablece al inicio de cada segmento. Los datos en otros segmentos se marcan como no disponibles cuando se define la disponibilidad de vecinos tanto para la decodificación de entropía como para la reconstrucción. En H.264/AVC, pueden someterse segmentos a decodificación de entropía y reconstruirse en paralelo. No se permiten la predicción intra y la predicción de vector de movimiento a través del límite de segmento. El filtrado de desbloqueo puede usar información a través de límites de segmento.
La figura 3 muestra una imagen de vídeo 90 a modo de ejemplo que comprende once macrobloques en la dirección horizontal y nueve macrobloques en la dirección vertical (nueve macrobloques a modo de ejemplo marcados como 91-99). La figura 3 muestra tres segmentos a modo de ejemplo: un primer segmento indicado como “SEGMENTO N.° 0” 100, un segundo segmento indicado como “SEGMENTO N.° 1” 101 y un tercer segmento indicado como “SEGMENTO N.° 2” 102. Un decodificador H.264/AVC puede decodificar y reconstruir los tres segmentos 100, 101, 102 en paralelo. Al comienzo del proceso de decodificación/reconstrucción para cada segmento, se inicializan o restablecen modelos de contexto y se marcan macrobloques en otros segmentos como no disponibles tanto para la decodificación de entropía como para la reconstrucción de macrobloques. Por tanto, para un macrobloque, por ejemplo, el macrobloque marcado como 93, en el “SEGMENTO N.° 1”, pueden no usarse macrobloques (por ejemplo, los macrobloques marcados como 91 y 92) en el “SEGMENTO N.° 0” para la selección o reconstrucción de modelos de contexto. Mientras tanto, para un macrobloque, por ejemplo, el macrobloque marcado como 95, en el “SEGMENTO N.° 1”, otros macrobloques (por ejemplo, macrobloques marcados como 93 y 94) en el “SEGMENTO N.° 1” pueden usarse para la selección o reconstrucción de modelos de contexto. Por tanto, la decodificación de entropía y la reconstrucción de macrobloques deben proceder en serie dentro de un segmento. A menos que se definan segmentos usando ordenación flexible de macrobloques (FMO), se procesan macrobloques dentro de un segmento en el orden de un barrido de tramas (ráster sean).
La ordenación flexible de macrobloques define un grupo de segmentos para modificar cómo se somete una imagen a partición en segmentos. Los macrobloques en un grupo de segmentos están definidos por un mapa de macrobloque con respecto a grupo de segmentos, que se señaliza mediante el contenido del conjunto de parámetros de imagen e información adicional en las cabeceras de segmento. El mapa de macrobloque con respecto a grupo de segmentos consiste en un número de identificación de grupo de segmentos para cada macrobloque en la imagen. El número de identificación de grupo de segmentos especifica a qué grupo de segmentos pertenece el macrobloque asociado. Cada grupo de segmentos puede someterse a partición en uno o más segmentos, en los que un segmento es una secuencia de macrobloques dentro del mismo grupo de segmentos que se procesa en el orden de un barrido de tramas dentro del conjunto de macrobloques de un grupo de segmentos particular. La decodificación de entropía y la reconstrucción de macrobloques deben proceder en serie dentro de un segmento.
La figura 4 representa una asignación de macrobloques a modo de ejemplo en tres grupos de segmentos: un primer grupo de segmentos indicado como “GRUPO DE SEGMENTOS N.° 0” 103, un segundo grupo de segmentos indicado como “GRUPO DE SEGMENTOS N.° 1” 104 y un tercer grupo de segmentos indicado como “GRUPO DE SEGMENTOS N.° 2” 105. Estos grupos de segmentos 103, 104, 105 pueden estar asociados con dos regiones en primer plano y una región de fondo, respectivamente, en la imagen 90.
Algunas realizaciones de la presente invención pueden comprender la partición de una imagen en uno o más
5
10
15
20
25
30
35
40
45
50
segmentos de reconstrucción, en los que un segmento de reconstrucción puede estar autocontenido en el sentido de que los valores de las muestras en el área de la imagen que representa el segmento de reconstrucción pueden reconstruirse correctamente sin el uso de datos procedentes de otros segmentos de reconstrucción, siempre que las imágenes de referencia usadas sean idénticas en el codificador y el decodificador. Todos los macrobloques reconstruidos dentro de un segmento de reconstrucción pueden estar disponibles en la definición de vecinos para la reconstrucción.
Algunas realizaciones de la presente invención pueden comprender la partición de un segmento de reconstrucción en más de un segmento de entropía, en el que un segmento de entropía puede estar autocontenido en el sentido de que los valores simbólicos en el área de la imagen que representa el segmento de entropía pueden someterse correctamente a decodificación de entropía sin el uso de datos procedentes de otros segmentos de entropía. En algunas realizaciones de la presente invención, el estado de codificación de entropía puede restablecerse al inicio de la decodificación de cada segmento de entropía. En algunas realizaciones de la presente invención, los datos en otros segmentos de entropía pueden marcarse como no disponibles cuando se define la disponibilidad de vecinos para decodificación de entropía. En algunas realizaciones de la presente invención, pueden no usarse macrobloques en otros segmentos de entropía en una selección de modelo de contexto del bloque actual. En algunas realizaciones de la presente invención, pueden actualizarse los modelos de contexto sólo dentro de un segmento de entropía. En estas realizaciones de la presente invención, cada decodificador de entropía asociado con un segmento de entropía puede mantener su propio conjunto de modelos de contexto.
Se hace referencia a la contribución 405 del grupo de estudio 16 del Sector de Normalización de las Telecomunicaciones de ITU titulada “Entropy slices for parallel entropy decoding”, abril de 2008.
Algunas realizaciones de la presente invención pueden comprender codificación/decodificación CABAC. El proceso de codificación CABAC incluye las siguientes cuatro etapas elementales: binarización; selección de modelo de contexto; codificación aritmética binaria; y actualización de probabilidad.
Binarización:
Un símbolo de valor no binario (por ejemplo, un coeficiente de transformación, un vector de movimiento, u otros datos de codificación) se convierte en un código binario, también denominado una cadena de bins o un símbolo binarizado. Cuando se facilita un elemento sintáctico de valor binario, puede sortearse la etapa de binarización inicial. Un elemento sintáctico de valor binario o un elemento de un símbolo binarizado pueden denominarse un bin.
Para cada bin, puede realizarse lo siguiente:
Selección de modelo de contexto:
Un modelo de contexto es un modelo de probabilidad para uno o más bins. El modelo de contexto comprende, para cada bin, la probabilidad de que el bin sea un “1” o un “0.” El modelo puede elegirse para una selección de modelos disponibles dependiendo de la estadística de símbolos de datos codificados recientemente, habitualmente basándose en los símbolos vecinos izquierdo y superior, si están disponibles.
Codificación aritmética binaria:
Un codificador aritmético codifica cada bin según el modelo de probabilidad seleccionado y se basa en subdivisión recursiva en intervalos.
Actualización de probabilidad:
El modelo de contexto seleccionado se actualiza basándose en el valor codificado real.
La adaptación al contexto puede referirse al proceso de seleccionar, basándose en valores simbólicos vecinos, un estado de modelo de contexto, también denominado estado, asociado con un bin y actualizar una distribución de probabilidad de modelo asignada a los símbolos dados. La ubicación de los símbolos vecinos puede definirse según una plantilla de contexto.
En algunas realizaciones de la presente invención que comprenden codificación/decodificación CABAC, al inicio de la decodificación de un segmento de entropía, todos los modelos de contexto pueden inicializarse o restablecerse en modelos predefinidos.
Algunas realizaciones de la presente invención pueden entenderse en relación con la figura 5. La figura 5 muestra un fotograma de vídeo 110 a modo de ejemplo que comprende once macrobloques en la dirección horizontal y nueve macrobloques en la dirección vertical (nueve macrobloques a modo de ejemplo marcados como 115-123). La figura 5 muestra tres segmentos de reconstrucción a modo de ejemplo: un primer segmento de reconstrucción indicado como “R_SEGMENTO N.° 0” 111, un segundo segmento de reconstrucción indicado como “R_SEGMENTO N.° 1” 112 y un tercer segmento de reconstrucción indicado como “R_SEGMENTO N.° 2” 113. La figura 5 muestra además una partición del segundo segmento de reconstrucción “R_SEGMENTO N.° 1” 112 en tres segmentos de entropía: un primer segmento de entropía indicado como “E_SEGMENTO N.° 0” mostrado con entramado 114, un
5
10
15
20
25
30
35
40
45
50
55
60
segundo segmento de entropía indicado como “E_SEGMENTO N.° 1” mostrado con líneas verticales 115 y un tercer segmento de entropía indicado como “E_SEGMENTO N.° 2” mostrado con líneas oblicuas 116. Cada segmento de entropía 114, 115, 116 puede someterse a decodificación de entropía en paralelo.
En algunas realizaciones de la presente invención, pueden estar disponibles sólo datos de macrobloques dentro de un segmento de entropía para la selección de modelo de contexto durante la decodificación de entropía del segmento de entropía. Todos los demás macrobloques pueden marcarse como no disponibles. Para esta partición a modo de ejemplo, los macrobloques marcados como 117 y 118 no están disponibles para la selección de modelo de contexto cuando se decodifican símbolos correspondientes al área del macrobloque marcado como 119 porque los macrobloques marcados como 117 y 118 están fuera del segmento de entropía que contiene el macrobloque 119. Sin embargo, estos macrobloques 117, 118 están disponibles cuando se reconstruye el macrobloque 119.
En algunas realizaciones de la presente invención, un codificador puede determinar si se somete a partición o no un segmento de reconstrucción en segmentos de entropía, y el codificador puede señalizar la decisión en el flujo de bits. En algunas realizaciones de la presente invención, la señal puede comprender un identificador (flag) de segmento de entropía, que puede indicarse como “entropy_slice_flag” en algunas realizaciones de la presente invención.
Algunas realizaciones de decodificador de la presente invención pueden describirse en relación con la figura 6. En estas realizaciones, un identificador de segmento de entropía puede examinarse 130, y si el identificador de segmento de entropía indica que no existen 132 segmentos de entropía asociados con una imagen, o un segmento de reconstrucción, entonces la cabecera puede analizarse 134 como cabecera de segmento normal. El estado del decodificador de entropía puede restablecerse 136, y la información sobre vecinos para la decodificación de entropía y la reconstrucción puede definirse 138. Los datos de segmento entonces pueden someterse a decodificación de entropía 140, y el segmento puede reconstruirse 142. Si el identificador de segmento de entropía indica que existen 146 segmentos de entropía asociados con una imagen, o un segmento de reconstrucción, entonces la cabecera puede analizarse 148 como cabecera de segmento de entropía. El estado del decodificador de entropía puede restablecerse 150, la información sobre vecinos para decodificación de entropía puede definirse 152 y los datos de segmento de entropía pueden someterse a decodificación de entropía 154. La información sobre vecinos para la reconstrucción puede entonces definirse 156, y el segmento puede reconstruirse 142. Después de la reconstrucción de segmentos 142, el segmento, o imagen, siguiente puede examinarse 158.
Algunas realizaciones de decodificador alternativas de la presente invención pueden describirse en relación con la figura 7. En estas realizaciones, el decodificador puede ser capaz de producir decodificación paralela y puede definir su propio grado de paralelismo, por ejemplo, considérese un decodificador que comprende la capacidad de decodificar N segmentos de entropía en paralelo. El decodificador puede identificar 170 N segmentos de entropía. En algunas realizaciones de la presente invención, si están disponibles menos de N segmentos de entropía en la imagen, o segmento de reconstrucción, actual el decodificador puede decodificar segmentos de entropía de imágenes, o segmentos de reconstrucción, posteriores si están disponibles. En realizaciones alternativas, el decodificador puede esperar hasta que la imagen, o segmento de reconstrucción, actual se procesa por completo antes de decodificar partes de una imagen, o segmento de reconstrucción, posterior. Después de identificar 170 hasta N segmentos de entropía, cada uno de los segmentos de entropía identificados puede someterse independientemente a decodificación de entropía. Un primer segmento de entropía puede decodificarse 172-176. La decodificación 172-176 del primer segmento de entropía puede comprender restablecer el estado de decodificador 172. En algunas realizaciones que comprenden decodificación de entropía CABAC, puede restablecerse el estado de CABAC. La información sobre vecinos para la decodificación de entropía del primer segmento de entropía puede definirse 174, y los primeros datos de segmento de entropía pueden decodificarse 176. Para cada uno de los hasta N segmentos de entropía, estas etapas pueden realizarse (178-182 para el segmento de entropía de orden N). En algunas realizaciones de la presente invención, el decodificador puede reconstruir 184 los segmentos de entropía cuando todos los segmentos de entropía se someten a decodificación de entropía. En realizaciones alternativas de la presente invención, el decodificador puede comenzar la reconstrucción 184 después de decodificarse uno o más segmentos de entropía.
En algunas realizaciones de la presente invención, cuando existen más de N segmentos de entropía, un subproceso de decodificación puede comenzar la decodificación de entropía de un segmento de entropía siguiente tras completarse la decodificación de entropía de un segmento de entropía. Por tanto, cuando un subproceso finaliza la decodificación de entropía de un segmento de entropía de baja complejidad, el subproceso puede comenzar la decodificación de segmentos de entropía adicionales sin esperar a que finalicen otros subprocesos su decodificación.
En algunas realizaciones de la presente invención que pueden adaptarse a una norma o un método existentes, un segmento de entropía puede compartir la mayor parte de los atributos de segmento de un segmento normal según la norma o el método. Por tanto, un segmento de entropía puede requerir una cabecera pequeña. En algunas realizaciones de la presente invención, la cabecera de segmento de entropía puede permitir que un decodificador identifique el inicio de un segmento de entropía e inicie la decodificación de entropía. En algunas realizaciones, al inicio de una imagen, o un segmento de reconstrucción, la cabecera de segmento de entropía puede ser la cabecera normal, o una cabecera de segmento de reconstrucción.
5
10
15
20
25
30
35
40
45
En algunas realizaciones de la presente invención que comprenden un códec H.264/AVC, un segmento de entropía puede señalizarse añadiendo un nuevo bit, “entropy_slice_flag” a la cabecera de segmento existente. La tabla 1 enumera la sintaxis para una cabecera de segmento de entropía según las realizaciones de la presente invención, en la que C indica Categoría y Descriptor u(1), ue(v) indican algunos métodos de codificación de longitud fija o longitud variable. Realizaciones de la presente invención que comprenden un “entropy_slice_flag” pueden producir una eficiencia de codificación mejorada.
“first_mb_in_slice” especifica la dirección del primer macrobloque en el segmento de entropía asociado con la cabecera de segmento de entropía. En algunas realizaciones, el segmento de entropía puede comprender una secuencia de macrobloques.
“cabac_init_idc” especifica el índice para determinar la tabla de inicialización usada en el proceso de inicialización para el modo de contexto.
slice header( ) {
C Descriptor
entropy slice flag
2 u(1)
si (entropy slice flag) {
first mb in slice
2 ue(v)
si (entropy_coding_mode_flag && slice type != I && slice type != SI)
cabac init idc
2 ue(v)
}
}
si no {
una cabecera de segmento normal ...
}
}
Tabla 1: Tabla de sintaxis a modo de ejemplo para cabecera de segmento de entropía
En algunas realizaciones de la presente invención, a un segmento de entropía puede asignársele un tipo de unidad de capa de abstracción de red (NAL) diferente de los segmentos normales. En estas realizaciones, un decodificador puede distinguir entre segmentos normales y segmentos de entropía basándose en el tipo de unidad NAL. En estas realizaciones, no se requiere el campo de bit “entropy_slice_flag”.
En algunas realizaciones de la presente invención, el campo de bit “entropy_slice_flag” puede no transmitirse en todos los perfiles. En algunas realizaciones de la presente invención, el campo de bit “entropy_slice_flag” puede no transmitirse en un perfil de referencia, pero puede transmitirse el campo de bit “entropy_slice_flag” en perfiles mayores tales como un perfil principal, uno ampliado o uno profesional. En algunas realizaciones de la presente invención, el campo de bit “entropy_slice_flag” sólo puede transmitirse en flujos de bits asociados con características mayores que un valor característico fijo. Las características a modo de ejemplo pueden incluir resolución espacial, velocidad de fotogramas, profundidad de bit, velocidad de transmisión de bits y otras características de flujo de bits. En algunas realizaciones de la presente invención, el campo de bit “entropy_slice_flag” sólo puede transmitirse en flujos de bits asociados con resoluciones espaciales mayores de 1920*1080 de manera entrelazada. En algunas realizaciones de la presente invención, el campo de bit “entropy_slice_flag” sólo puede transmitirse en flujos de bits asociados con resoluciones espaciales mayores de 1920*1080 de manera progresiva. En algunas realizaciones de la presente invención, si no se transmite el campo de bit “entropy_slice_flag”, puede usarse un valor por defecto.
En algunas realizaciones de la presente invención, puede construirse un segmento de entropía alterando la multiplexación de datos. En algunas realizaciones de la presente invención, el grupo de símbolos contenido en un segmento de entropía puede multiplexarse a nivel de macrobloque. En realizaciones alternativas de la presente invención, el grupo de símbolos contenido en un segmento de entropía puede multiplexarse a nivel de imagen. En otras realizaciones alternativas de la presente invención, el grupo de símbolos contenido en un segmento de entropía puede multiplexarse según el tipo de datos. En realizaciones aún alternativas de la presente invención, el grupo de símbolos contenido en un segmento de entropía puede multiplexarse en una combinación de lo anterior.
Algunas realizaciones de la presente invención que comprenden la construcción de segmento de entropía basándose en multiplexación a nivel de imagen pueden entenderse en relación con la figura 8 y la figura 9. En algunas realizaciones de la presente invención mostradas en la figura 8, datos de predicción 190 y datos residuales 192 pueden someterse a codificación de entropía mediante un codificador de predicción 194 y un codificador residual 196 por separado, y multiplexarse a nivel de imagen mediante un multiplexador a nivel de imagen 198. En algunas realizaciones de la presente invención, los datos de predicción para una imagen 190 pueden asociarse con un primer segmento de entropía, y los datos residuales para una imagen 192 pueden asociarse con un segundo segmento de entropía. Los datos de predicción codificados y los datos de entropía codificados pueden decodificarse en paralelo. En algunas realizaciones de la presente invención, cada partición que comprende datos de predicción o datos residuales puede someterse a partición en segmentos de entropía que pueden decodificarse en paralelo.
En algunas realizaciones de la presente invención mostradas en la figura 9, el residuo de cada plano de color, por ejemplo, el residuo de luma 200 y los dos residuos de croma 202, 204, pueden someterse a codificación de entropía mediante un codificador Y 206, un codificador U 208 y un codificador V 210 por separado, y los residuos sometidos a codificación de entropía pueden multiplexarse a nivel de imagen mediante un multiplexador a nivel de imagen 212.
5 En algunas realizaciones de la presente invención, el residuo de luma para una imagen 200 puede asociarse con un primer segmento de entropía, el primer residuo de croma para una imagen 202 puede asociarse con un segundo segmento de entropía, y el segundo residuo para una imagen 204 puede asociarse con un tercer segmento de entropía. Los datos residuales codificados para los tres planos de color pueden decodificarse en paralelo. En algunas realizaciones de la presente invención, cada partición que comprende datos residuales de plano de color 10 puede someterse a partición en segmentos de entropía que pueden decodificarse en paralelo. En algunas realizaciones de la presente invención, el residuo de luma 200 puede tener relativamente más segmentos de entropía en comparación con los residuos de croma 202, 204.
En algunas realizaciones de la presente invención, un flujo de bits de vídeo comprimido puede someterse a transcodificación para que comprenda segmentos de entropía, permitiendo de ese modo la decodificación de 15 entropía paralela a la que se adaptan realizaciones de la presente invención descritas anteriormente. Algunas realizaciones de la presente invención pueden describirse en relación con la figura 10. Puede procesarse imagen por imagen un flujo de bits de entrada sin segmentos de entropía según la figura 10. En estas realizaciones de la presente invención, una imagen del flujo de bits de entrada puede someterse a decodificación de entropía 220. Pueden obtenerse los datos que se habían codificado, por ejemplo, datos de modo, información de movimiento, 20 información residual y otros datos. Pueden construirse 222 segmentos de entropía uno cada vez a partir de los datos. Una cabecera de segmento de entropía correspondiente a un segmento de entropía puede insertarse 224 en un nuevo flujo de bits. El estado de codificador puede restablecerse y la información sobre vecinos definirse 226. El segmento de entropía puede someterse a codificación de entropía 228 y escribirse en el nuevo flujo de bits. Si existen datos de imagen que no hayan sido consumidos 232 por los segmentos de entropía construidos, entonces 25 otro segmento de entropía puede construirse 222, y el proceso 224-230 puede continuar hasta que todos los datos de imagen hayan sido consumidos 234 por los segmentos de entropía construidos, y entonces puede procesarse la imagen siguiente.
En algunas realizaciones de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía en los que el tamaño de cada segmento de entropía 30 puede ser menor que, o puede no superar, un número fijo de bins. En algunas realizaciones en las que el codificador puede restringir el tamaño de cada segmento de entropía, el número máximo de bins puede señalizarse en el flujo de bits. En realizaciones alternativas en las que el codificador puede restringir el tamaño de cada segmento de entropía, el número máximo de bins puede definirse mediante el perfil y punto de cumplimiento de nivel del codificador. Por ejemplo, el Anexo A de la especificación de codificación de vídeo de H.264/AVC puede ampliarse 35 para que comprenda una definición del número máximo de bins permitidos en un segmento de entropía.
En algunas realizaciones de la presente invención, el número máximo de bins permitidos en un segmento de entropía puede indicarse para cada punto de cumplimiento de nivel del codificador según una tabla, por ejemplo, tal como se muestra en la tabla 2, donde Mm.n indica el número máximo de bins permitidos en un segmento de entropía para un punto de cumplimiento m.n de nivel.
Nivel
Número máximo de bins por segmento de entropía
1.1
M1.1
1.2
M1.2
m.n
Mm.n
5.1
M5.1
40 Tabla 2: Número máximo de bins por segmento de entropía para cada nivel
El número máximo de bins permitidos a modo de ejemplo en un segmento de entropía son M1.1 = 1.000 bins, M1.2 = 2.000 bins, ..., y M51 = 40.000 bins. Otro número máximo de bins permitidos a modo de ejemplo en un segmento de entropía son M1.1 = 2.500 bins, M1.2 = 4.200 bins, .y M5.1 = 150.000 bins.
En algunas realizaciones, un conjunto de número máximo de bins permitidos en un segmento de entropía puede 45 determinarse para todos los niveles basándose en la velocidad de transmisión de bits, tamaño de imagen, número de macrobloques y otros parámetros de codificación. En algunas realizaciones de la presente invención, el número máximo de bins permitidos en un segmento de entropía puede ser el conjunto para el mismo número para todos los niveles. Valores a modo de ejemplo son 38.000 bins y 120.000 bins.
En algunas realizaciones de la presente invención, un codificador puede determinar un número en el peor caso de
5
10
15
20
25
30
35
40
45
50
55
bins asociados con un macrobloque, y el codificador puede escribir los bins asociados con:
ESLICE _ MaxNumberBins BinsPerMB
macrobloques para cada segmento de entropía, donde ESLICE_MaxNumberBins puede indicar el número máximo de bins permitidos en un segmento de entropía y BinsPerMB puede indicar el número en el peor caso de bins asociados con un macrobloque. En algunas realizaciones, los macrobloques pueden seleccionarse en orden de barrido de tramas. En realizaciones alternativas, los macrobloques pueden seleccionarse en otro orden predefinido. En algunas realizaciones, el número en el peor caso de bins asociados con un macrobloque puede ser un número fijo. En realizaciones alternativas, el codificador puede actualizar el número en el peor caso basándose en mediciones de los tamaños de macrobloques procesados previamente.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 11. En estas realizaciones, un codificador puede, para un segmento de reconstrucción, someter a partición el segmento de reconstrucción en una pluralidad de segmentos de entropía en los que ningún segmento de entropía puede ser de mayor tamaño que un número predeterminado de bins. El codificador puede inicializar 240 a cero un contador asociado con el número de bins en un segmento de entropía actual. El valor de contador puede indicarse como A con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 11. Los elementos sintácticos para un macrobloque siguiente pueden obtenerse 242. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 244 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. El número de bins asociados con el macrobloque puede determinarse 246. El número de bins asociados con el macrobloque puede incluir los bins en las cadenas de bins asociados con los elementos sintácticos no binarios además de los elementos sintácticos binarios, y el número de bins asociados con el macrobloque puede indicarse como num con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 11.
Si el número de bins asociados con el macrobloque puede añadirse 248 al número de bins ya acumulados asociados con el segmento de entropía actual sin 249 superar un número máximo de bins permitidos para un segmento de entropía, entonces el número de bins acumulados asociados con el segmento de entropía actual puede actualizarse 250 para que incluya los bins asociados con el macrobloque, y los bins asociados con el macrobloque pueden escribirse 252, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 242, y el proceso de partición puede continuar.
Si la suma 248 del número de bins asociados con el macrobloque y el número de bins ya acumulados asociados con el segmento de entropía actual supera 253 el número máximo de bins permitidos para un segmento de entropía, entonces el codificador puede iniciar 254 un nuevo segmento de entropía asociado con el segmento de reconstrucción actual, y puede terminar el segmento de entropía actual. Entonces el contador asociado con el número de bins en el nuevo segmento de entropía, ahora actual, puede inicializarse 256 a cero. El número de bins acumulados asociados con el segmento de entropía actual puede actualizarse 250 para que incluya los bins asociados con el macrobloque, y los bins asociados con el macrobloque pueden escribirse 252, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 242, y el proceso de partición puede continuar.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 12. En estas realizaciones, un codificador puede, para un segmento de reconstrucción, someter a partición el segmento de reconstrucción en una pluralidad de segmentos de entropía en los que ningún segmento de entropía puede ser de mayor tamaño que un número máximo predeterminado de bins. En estas realizaciones, el codificador puede asociar elementos sintácticos de macrobloque con un segmento de entropía hasta que el tamaño del segmento de entropía alcance un umbral asociado con el número máximo predeterminado de bins permitidos en un segmento de entropía. En algunas realizaciones, el umbral puede ser un porcentaje del número máximo de bins permitidos en un segmento de entropía. En una realización a modo de ejemplo, el umbral puede ser el 90% del número máximo de bins permitidos en un segmento de entropía, suponiendo que el mayor número de bins esperado en un macrobloque es menor del 10% del número máximo de bins. En otra realización a modo de ejemplo, el umbral puede ser un porcentaje del número máximo de bins permitidos en un segmento de entropía en el que el porcentaje puede estar basado en el mayor número de bins esperado en un macrobloque. En estas realizaciones, una vez que el tamaño de un segmento de entropía supera un tamaño umbral, entonces puede crearse otro segmento de entropía. El tamaño umbral puede seleccionarse para garantizar que el segmento de entropía no supera el número máximo de bins permitidos en un segmento de entropía. En algunas realizaciones, el tamaño umbral puede ser una función del número máximo de bins permitidos en un segmento de entropía y una estimación del número máximo de bins
5
10
15
20
25
30
35
40
45
50
55
60
esperado para un macrobloque.
El codificador puede inicializar 270 a cero un contador asociado con el número de bins en un segmento de entropía actual. El valor de contador puede indicarse como A con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 12. Los elementos sintácticos para un macrobloque siguiente pueden obtenerse 272. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 274 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. Los bins asociados con el macrobloque pueden escribirse 276, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual. El número de bins asociados con el macrobloque puede determinarse 278, y el número de bins acumulados asociados con el segmento de entropía actual puede actualizarse 280 para que incluya los bins asociados con el macrobloque. Si 282 el número de bins acumulados asociados con el segmento de entropía actual es mayor 284 que un umbral, que puede indicarse como TH(MaxNumBins), basado en el número máximo de bins permitidos en un segmento de entropía, entonces el codificador puede iniciar 286 un nuevo segmento de entropía y puede terminar el segmento de entropía actual. Entonces el codificador puede inicializar 288 a cero el contador asociado con el número de bins en el nuevo segmento de entropía, ahora actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 272, y el proceso de partición puede continuar. Si el número de bins acumulados asociados con el segmento de entropía actual no es mayor 283 que el umbral basado en el número máximo de bins permitidos en un segmento de entropía, entonces los elementos sintácticos para el macrobloque siguiente pueden obtenerse 272, y el proceso de partición puede continuar.
En algunas realizaciones de la presente invención, un codificador puede terminar el segmento de reconstrucción actual e iniciar un nuevo segmento de reconstrucción cuando se ha asignado un número predeterminado de macrobloques al segmento de reconstrucción actual.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 13. En estas realizaciones, un codificador puede terminar el segmento de reconstrucción actual e iniciar un nuevo segmento de reconstrucción cuando se ha asignado un número predeterminado de macrobloques al segmento de reconstrucción actual. El codificador puede inicializar 300 a cero un contador asociado con el número de macrobloques en un segmento de reconstrucción actual. El valor de contador puede indicarse como AMB con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 13. El codificador puede inicializar 310 a cero un contador asociado con el número de bins en un segmento de entropía actual. El valor de contador puede indicarse como ABin con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 13. Si 312 el valor de contador del contador asociado con el número de macrobloques en el segmento de reconstrucción actual no es menor 331 que un número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, entonces un nuevo segmento de entropía puede iniciarse 332 y un nuevo segmento de reconstrucción puede iniciarse 334, terminando el segmento de reconstrucción actual y el segmento de entropía actual. El número máximo de macrobloques permitidos en un segmento de reconstrucción pueden indicarse como MaxMBperRSIice con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 13.
Si el valor de contador del contador asociado con el número de macrobloques en el segmento de reconstrucción actual es menor 313 que el número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, entonces los elementos sintácticos para un macrobloque siguiente pueden obtenerse 314. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 316 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. El número de bins asociados con el macrobloque puede determinarse 318. El número de bins asociados con el macrobloque puede incluir los bins en las cadenas de bins asociados con los elementos sintácticos no binarios además de los elementos sintácticos binarios, y el número de bins asociados con el macrobloque puede indicarse como num con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 13.
Si el número de bins asociados con el macrobloque puede añadirse 320 al número de bins ya acumulados asociados con el segmento de entropía actual sin 321 superar un número máximo de bins permitidos para un segmento de entropía, entonces el número de bins acumulados asociados con el segmento de entropía actual puede actualizarse 322 para que incluya los bins asociados con el macrobloque, los bins asociados con el macrobloque pueden escribirse 324, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual, y el número de macrobloques asociados con el segmento de reconstrucción actual puede incrementarse 326. El número de macrobloques asociados con el segmento de reconstrucción actual puede compararse 312 con el número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, y el proceso de partición puede continuar.
Si 320 la suma del número de bins asociados con el macrobloque y el número de bins ya acumulados asociados
5
10
15
20
25
30
35
40
45
50
55
60
con el segmento de entropía actual supera 327 el número máximo de bins permitidos para un segmento de entropía, entonces el codificador puede iniciar 328 un nuevo segmento de entropía, ahora actual, asociado con el segmento de reconstrucción actual, y el contador asociado con el número de bins en el segmento de entropía actual puede inicializarse 330 a cero. El número de bins acumulados asociados con el segmento de entropía actual puede actualizarse 322 para que incluya los bins asociados con el macrobloque, los bins asociados con el macrobloque pueden escribirse 324, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual, y el número de macrobloques asociados con el segmento de reconstrucción actual puede incrementarse 326. El número de macrobloques asociados con el segmento de reconstrucción actual puede compararse 312 con el número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, y el proceso de partición puede continuar.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 14. En estas realizaciones, un codificador puede iniciar un nuevo segmento de reconstrucción cuando se ha asignado un número predeterminado de macrobloques al segmento de reconstrucción actual. En estas realizaciones, el codificador puede asociar elementos sintácticos de macrobloque con un segmento de entropía hasta que el tamaño del segmento de entropía alcance un umbral asociado con el número máximo predeterminado de bins permitidos en un segmento de entropía. En algunas realizaciones, el umbral puede ser un porcentaje del número máximo de bins permitidos en un segmento de entropía. En una realización a modo de ejemplo, el umbral puede ser el 90% del número máximo de bins permitidos en un segmento de entropía, suponiendo que el mayor número de bins esperados en un macrobloque es menor que el 10% del número máximo de bins. En otra realización a modo de ejemplo, el umbral puede ser un porcentaje del número máximo de bins permitidos en un segmento de entropía en el que el porcentaje puede estar basado en el mayor número de bins esperados en un macrobloque. En estas realizaciones, una vez que el tamaño de un segmento de entropía supera un tamaño umbral, entonces puede crearse otro segmento de entropía. El tamaño umbral puede seleccionarse para garantizar que el segmento de entropía no supera el número máximo de bins permitidos en un segmento de entropía. En algunas realizaciones, el tamaño umbral puede ser una función del número máximo de bins permitidos en un segmento de entropía y una estimación del número máximo de bins esperados para un macrobloque.
El codificador puede inicializar 350 a cero un contador asociado con el número de macrobloques en un segmento de reconstrucción actual. El valor de contador puede indicarse como AMB con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 14. El codificador puede inicializar 352 a cero un contador asociado con el número de bins en un segmento de entropía actual. El valor de contador puede indicarse como ABin con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 14. Si 354 el valor de contador del contador asociado con el número de macrobloques en el segmento de reconstrucción actual no es menor 373 que un número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, entonces un nuevo segmento de entropía puede iniciarse 374, y un nuevo segmento de reconstrucción puede iniciarse 376. El número máximo de macrobloques permitidos en un segmento de reconstrucción pueden indicarse como MaxMBperRSIice con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 14.
Si el valor de contador del contador asociado con el número de macrobloques en el segmento de reconstrucción actual es menor 355 que el número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, entonces los elementos sintácticos para un macrobloque siguiente pueden obtenerse 356. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 358 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. Los bins asociados con el macrobloque pueden escribirse 360, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual. El número de bins asociados con el macrobloque puede determinarse 362, y el número de bins acumulados asociados con el segmento de entropía actual puede actualizarse 364 para que incluya los bins asociados con el macrobloque. Si 366 el número de bins acumulados asociados con el segmento de entropía actual es mayor 369 que un umbral, que puede indicarse como TH(MaxNumBins), basado en el número máximo de bins permitidos en un segmento de entropía, entonces el codificador puede iniciar 370 un nuevo segmento de entropía, e inicializar 372 a cero el contador asociado con el número de bins en un segmento de entropía actual. El número de macrobloques asociados con el segmento de reconstrucción actual puede incrementarse 368. El número de macrobloques asociados con el segmento de reconstrucción actual puede compararse 354 con el número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, y el proceso de partición puede continuar. Si el número de bins acumulados asociados con el segmento de entropía actual no es mayor 367 que el umbral basado en el número máximo de bins permitidos en un segmento de entropía, entonces el número de macrobloques asociados con el segmento de reconstrucción actual puede incrementarse 368, y el número de macrobloques asociados con el segmento de reconstrucción actual puede compararse 354 con el número máximo predeterminado de macrobloques permitidos en un segmento de reconstrucción, y el proceso de partición puede continuar.
En realizaciones alternativas de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que cada segmento de entropía puede asociarse
5
10
15
20
25
30
35
40
45
50
55
60
con no más de un número predefinido de bits.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 15. En estas realizaciones, un codificador puede, para un segmento de reconstrucción, someter a partición el segmento de reconstrucción en una pluralidad de segmentos de entropía en los que ningún segmento de entropía puede ser de mayor tamaño que un número predeterminado de bits. El codificador puede inicializar 400 a cero un contador asociado con el número de bits en un segmento de entropía actual. El valor de contador puede indicarse como A con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 15. Los elementos sintácticos para un macrobloque siguiente pueden obtenerse 402. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 404 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. Los bins, elementos no binarios convertidos y elementos binarios, asociados con el macrobloque pueden presentarse al codificador de entropía, y los bins pueden someterse a codificación de entropía 406. El número de bits asociados con el macrobloque puede determinarse 408. El número de bits asociados con el macrobloque puede indicarse como num con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 15.
Si el número de bits asociados con el macrobloque puede añadirse 410 al número de bits ya acumulados asociados con el segmento de entropía actual sin 411 superar un número máximo de bits permitidos para un segmento de entropía, entonces el número de bits acumulados asociados con el segmento de entropía actual puede actualizarse 412 para que incluya los bits asociados con el macrobloque, y los bits asociados con el macrobloque pueden escribirse 414 en el flujo de bits y asociarse con el segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 402, y el proceso de partición puede continuar.
Si 410 la suma del número de bits asociados con el macrobloque y el número de bits ya acumulados asociados con el segmento de entropía actual supera 415 el número máximo de bits permitidos para un segmento de entropía, entonces el codificador puede iniciar 416 un nuevo segmento de entropía asociado con el segmento de reconstrucción actual, y el contador asociado con el número de bits en el segmento de entropía actual puede inicializarse 418 a cero. El número de bits acumulados asociados con el segmento de entropía actual puede actualizarse 412 para que incluya los bits asociados con el macrobloque, y los bits asociados con el macrobloque pueden escribirse 414 en el flujo de bits y asociarse con el segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 402, y el proceso de partición puede continuar.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 16. En estas realizaciones, un codificador puede, para un segmento de reconstrucción, someter a partición el segmento de reconstrucción en una pluralidad de segmentos de entropía en los que ningún segmento de entropía puede ser de mayor tamaño que un número máximo predeterminado de bits. En estas realizaciones, el codificador puede asociar elementos sintácticos de macrobloque con un segmento de entropía hasta que el tamaño del segmento de entropía alcance un umbral asociado con el número máximo predeterminado de bits permitidos en un segmento de entropía. En algunas realizaciones, el umbral puede ser un porcentaje del número máximo de bits permitido en un segmento de entropía. En una realización a modo de ejemplo, el umbral puede ser el 90% del número máximo de bits permitidos en un segmento de entropía, suponiendo que el mayor número de bits esperados en un macrobloque es menor que el 10% del número máximo de bits. En otra realización a modo de ejemplo, el umbral puede ser un porcentaje del número máximo de bits permitidos en un segmento de entropía en el que el porcentaje puede estar basado en el mayor número de bits esperados en un macrobloque. En estas realizaciones, una vez que el tamaño de un segmento de entropía supera un tamaño umbral, entonces puede crearse otro segmento de entropía. El tamaño umbral puede seleccionarse para garantizar que el segmento de entropía no supera el número máximo de bits permitidos en un segmento de entropía. En algunas realizaciones, el tamaño umbral puede ser una función del número máximo de bits permitidos en un segmento de entropía y una estimación del número máximo de bits esperados para un macrobloque.
El codificador puede inicializar 440 a cero un contador asociado con el número de bits en un segmento de entropía actual. El valor de contador puede indicarse como A con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 16. Los elementos sintácticos para un macrobloque siguiente pueden obtenerse 442. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 444 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. Los bins asociados con el macrobloque pueden someterse a codificación de entropía 446, y el número de bins asociados con el macrobloque puede determinarse 448. El número de bits acumulados asociados con el segmento de entropía actual puede actualizarse 450 para que incluya los bins asociados con el macrobloque, y los bins sometidos a codificación de entropía asociados con el macrobloque pueden escribirse 452 en el flujo de bits. Si 454 el número de bits acumulados asociados con el segmento de entropía actual es mayor 456 que un umbral basado en el número máximo de bits permitidos en un segmento de entropía, entonces el codificador puede iniciar 458 un nuevo segmento de entropía, e inicializar 460 a cero el contador asociado con el número de bits en un
5
10
15
20
25
30
35
40
45
50
55
segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 442, y el proceso de partición puede continuar. Si el número de bits acumulados asociados con el segmento de entropía actual no es mayor 455 que un umbral basado en el número máximo de bits permitidos en un segmento de entropía, entonces los elementos sintácticos para el macrobloque siguiente pueden obtenerse 442, y el proceso de partición puede continuar.
En realizaciones alternativas de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que cada segmento de entropía puede asociarse con no más de un número predefinido de macrobloques.
En algunas realizaciones de la presente invención, puede imponerse una restricción sobre el número máximo de macrobloques en un segmento de reconstrucción además de una restricción sobre el tamaño de un segmento de entropía.
En algunas realizaciones de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía puede restringirse para ser menor que un número predefinido de macrobloques y menor que un número predefinido de bins.
En algunas realizaciones de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía puede restringirse para ser menor que un número predefinido de macrobloques y menor que un número predefinido de bits.
En algunas realizaciones de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía puede restringirse para ser menor que un número predefinido de macrobloques, menor que un número predefinido de bins y menor que un número predefinido de bits.
En algunas realizaciones de la presente invención, la codificación de bin dentro de un codificador de entropía puede paralelizarse permitiendo la codificación paralela de más de un bin, lo que puede reducir el tiempo de codificación. Estas realizaciones de la presente invención pueden entenderse en relación con un codificador de entropía a modo de ejemplo representado en la figura 17. En estas realizaciones, el codificador de entropía 480 puede comprender una unidad de adaptación al contexto 482, un selector de codificador de bin basado en el estado 484 y una pluralidad de codificadores de bin, también considerados unidades de codificador de bin, (se muestran tres) 486, 488, 500 que pueden hacerse funcionar en paralelo. Los bins 502 pueden ponerse a disposición del codificador de entropía 480 desde un binarizador 504 que puede generar los bins 502 a partir de símbolos de entrada 506. Los bins 502 pueden ponerse a disposición de la unidad de adaptación al contexto 482 y el selector de codificador de bin basado en el estado 484. La unidad de adaptación al contexto 482 puede realizar adaptación al contexto y generar un estado modelo, también denominado estado, 508 que puede usarse para seleccionar un codificador de bin al que puede dirigirse un bin 502 entre los codificadores de bin 486, 488, 500. El selector de codificador de bin basado en el estado 484 puede seleccionar el codificador de bin asociado con el estado modelo generado 508 entre los codificadores de bin 486, 488, 500 para codificar el bin 502. En algunas realizaciones (no mostradas), el estado generado 508 puede ponerse a disposición del codificador de bin seleccionado. Pueden generarse bits de salida 510, 512, 514 mediante los codificadores de bin 486, 488, 500, y los bits de salida 510, 512, 514 pueden incorporarse en un flujo de bits. En algunas realizaciones de la presente invención, los bits de salida 510, 512, 514 pueden almacenarse en memoria intermedia e incorporarse en el flujo de bits mediante concatenación. En realizaciones alternativas, los bits de salida 510, 512, 514 pueden almacenarse en memoria intermedia e incorporarse en el flujo de bits según un esquema de entrelazado.
Según las realizaciones de la presente invención descritas en relación con la figura 17, un primer bin puede enviarse a un primer codificador de bin en respuesta a un primer estado modelo generado en relación con el primer bin. La unidad de adaptación al contexto 482, tras completarse el procesamiento del primer bin, puede comenzar el procesamiento de un segundo bin, enviando el segundo bin a un segundo codificador de bin en respuesta a un segundo estado modelo generado en relación con el segundo bin, permitiendo de ese modo el procesamiento sustancialmente paralelo de más de un bin.
En realizaciones alternativas de la presente invención, un codificador de entropía puede comprender una pluralidad de unidades de adaptación al contexto que pueden hacerse funcionar en paralelo y un único codificador de bin. En sistemas en los que las unidades de adaptación al contexto requieren un tiempo de procesamiento más largo que el codificador de bin, una pluralidad de unidades de adaptación al contexto que funcionan en paralelo pueden reducir el tiempo de codificación. Algunas de estas realizaciones de la presente invención pueden entenderse en relación con un codificador de entropía a modo de ejemplo representado en la figura 18. En estas realizaciones, el codificador de entropía 530 puede comprender una pluralidad de unidades de adaptación al contexto (se muestran tres) 532, 534, 536, un selector de unidad de adaptación al contexto 538, un selector de estado 540 y un codificador de bin 542. Los bins 544 pueden ponerse a disposición del codificador de entropía 530 desde un binarizador 546 que puede generar los bins 544 a partir de símbolos de entrada 548. Los bins 544 pueden ponerse a disposición del selector de unidad
5
10
15
20
25
30
35
40
45
50
55
60
de adaptación al contexto 538, el selector de estado 540 y el codificador de bin 542. El selector de unidad de adaptación al contexto 538 puede usarse para seleccionar, o para planificar, una unidad de adaptación al contexto 532, 534, 536 a la que puede dirigirse un bin 544 y desde la que puede generarse un valor de estado 550, 552, 554. En algunas realizaciones a modo de ejemplo, el selector de unidad de adaptación al contexto 538 puede seleccionar una unidad de adaptación al contexto entre las unidades de adaptación al contexto 532, 534, 536 basándose en la sintaxis asociada con el bin, por ejemplo, puede asociarse un identificador de unidad de adaptación al contexto con un bin que identifica la unidad de adaptación al contexto a la que puede dirigirse el bin para su procesamiento. En realizaciones a modo de ejemplo alternativas, el selector de unidad de adaptación al contexto 538 puede seleccionar una unidad de adaptación al contexto entre las unidades de adaptación al contexto 532, 534, 536 basándose en un protocolo de planificación o restricción de equilibrio de carga asociados con las unidades de adaptación al contexto 532, 534, 536. En algunas realizaciones, puede seleccionarse el valor de estado generado mediante el selector de estado 540, según el criterio usado en el selector de unidad de adaptación al contexto 538, en el momento apropiado en que ha de hacerse pasar al codificador de bin 542. El codificador de bin 542 puede usar el valor de estado 556 que se hace pasar por el selector de estado 540 en la codificación del bin 544. En realizaciones alternativas de la presente invención (no mostradas), el codificador de bin puede no requerir el valor de estado y, por tanto, no ponerse a disposición del codificador de bin. Pueden generarse bits de salida 558 mediante el codificador de bin 542, y los bits de salida 558 pueden incorporarse en un flujo de bits. En algunas realizaciones de la presente invención, los bits de salida 558 pueden almacenarse en memoria intermedia e incorporarse en el flujo de bits mediante concatenación. En realizaciones alternativas, los bits de salida 558 pueden almacenarse en memoria intermedia e incorporarse en el flujo de bits según un esquema de entrelazado.
En realizaciones aún alternativas de la presente invención, un codificador de entropía puede comprender una pluralidad de unidades de adaptación al contexto que pueden hacerse funcionar en paralelo y una pluralidad de codificadores de bin que pueden hacerse funcionar en paralelo. Estas realizaciones de la presente invención pueden entenderse en relación con un codificador de entropía a modo de ejemplo representado en la figura 19. En estas realizaciones, el codificador de entropía 570 puede comprender una pluralidad de unidades de adaptación al contexto (se muestran tres) 572, 574, 576, un selector de unidad de adaptación al contexto 578, un selector de estado 580, un selector de codificador de bin basado en el estado 582 y una pluralidad de codificadores de bin (se muestran tres) 584, 586, 588. Los bins 590 pueden ponerse a disposición del codificador de entropía 570 desde un binarizador 592 que puede generar los bins 590 a partir de símbolos de entrada 594. Los bins 590 pueden ponerse a disposición del selector de unidad de adaptación al contexto 578, el selector de estado 580 y el selector de codificador de bin 582. El selector de unidad de adaptación al contexto 578 puede usarse para seleccionar, o para planificar, una unidad de adaptación al contexto 572, 574, 576 a la que puede dirigirse un bin 590 y desde la que puede generarse un valor de estado 596, 598, 600. Puede seleccionarse el valor de estado generado mediante el selector de estado 580 en el momento apropiado en que ha de hacerse pasar al selector de codificador de bin basado en el estado 582. El selector de codificador de bin basado en el estado 582 puede usar el valor de estado 602 que se hace pasar por el selector de estado 580 para seleccionar el codificador de bin 584, 586, 588 a la que puede dirigirse un bin 590. En realizaciones alternativas (no mostradas), el valor de estado 602 puede ponerse a disposición del codificador de bin seleccionado. El codificador de bin seleccionado puede usar el valor de estado 602 en la codificación del bin 590. En realizaciones alternativas de la presente invención (no mostradas), el codificador de bin puede no requerir el valor de estado y, por tanto, no ponerse a disposición del codificador de bin. Pueden generarse bits de salida 604, 606, 608 mediante los codificadores de bin 584, 586, 588 y los bits de salida 604, 606, 608 pueden incorporarse en un flujo de bits. En algunas realizaciones de la presente invención, los bits de salida 604, 606, 608 pueden almacenarse en memoria intermedia e incorporarse en el flujo de bits mediante concatenación. En realizaciones alternativas, los bits de salida 604, 606, 608 pueden almacenarse en memoria intermedia e incorporarse en el flujo de bits según un esquema de entrelazado
Una realización a modo de ejemplo de la presente invención puede comprender una pluralidad de códecs de codificación de longitud variable que pueden hacerse funcionar en paralelo.
En una realización a modo de ejemplo de la presente invención, un codificador de bin puede comprender codificación aritmética binaria. En otra realización a modo de ejemplo de la presente invención, un codificador de bin puede comprender codificación de longitud variable. En aún otra realización a modo de ejemplo de la presente invención, un codificador de bin puede comprender codificación de longitud fija.
En general, un codificador de entropía puede comprender Nca unidades de adaptación al contexto y Nbc, unidades de codificador de bin, donde Nca es un número entero mayor de, o igual a, uno y Nbc es un número entero mayor de, o igual a, uno.
En algunas realizaciones de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía puede restringirse de tal manera que una, o más, de las Nca unidades de adaptación al contexto y Nbc unidades de codificador de bin pueden hacerse funcionar cada una con no más de un número limitado de bins durante el procesamiento del segmento de entropía. Las unidades de adaptación al contexto y unidades de codificador de bin con tal restricción pueden denominarse unidades de codificador de entropía restringidas.
En algunas realizaciones de la presente invención, un codificador puede someter a partición un segmento de
5
10
15
20
25
30
35
40
45
50
55
60
reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía
puede restringirse de tal manera que ninguna de las Nca unidades de adaptación al contexto pueda hacerse
funcionar con más de Bca bins durante el procesamiento de un segmento de entropía. En algunas realizaciones de la presente invención, el valor de Bca puede señalizarse, por ejemplo, en un flujo de bits, restricción de perfil, restricción de nivel u otro mecanismo normativo.
En realizaciones alternativas de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía
puede restringirse de tal manera que ninguna de las Nbc unidades de codificador de bin pueda hacerse funcionar con
más de Bbc bins durante el procesamiento de un segmento de entropía. En algunas realizaciones de la presente invención, el valor de Bbc puede señalizarse, por ejemplo, en un flujo de bits, restricción de perfil, restricción de nivel u otro mecanismo normativo.
En realizaciones aún alternativas de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía
puede restringirse de tal manera que ninguna de las Nca unidades de adaptación al contexto pueda hacerse
funcionar con más de Bca bins y ninguna de las Nbc unidades de codificador de bin pueda hacerse funcionar con más de Bbc bins durante el procesamiento de un segmento de entropía. En algunas realizaciones de la presente invención, el valor de Bbc y el valor de Bca pueden señalizarse, por ejemplo, en un flujo de bits, restricción de perfil, restricción de nivel u otro mecanismo normativo.
En realizaciones todavía alternativas de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía puede restringirse de tal manera que la Nca unidad de adaptación al contexto de orden i, indicada como Nca(i), para i = 1, ..., Nca, pueda hacerse funcionar con no más de Bca(i) bins y la Nbc unidad de codificador de bin de orden i, Nbc(i), para i = 1, ..., Nbc, pueda hacerse funcionar con no más de Bbc(i) bins durante el procesamiento de un segmento de entropía. En algunas realizaciones de la presente invención, los valores de Bbc(i) y los valores de Bca(i) pueden señalizarse, por ejemplo, en un flujo de bits, restricción de perfil, restricción de nivel u otro mecanismo normativo.
Algunas realizaciones a modo de ejemplo de la presente invención pueden describirse en relación con la figura 20. En estas realizaciones, un codificador puede, para un segmento de reconstrucción, someter a partición el segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía puede restringirse de tal manera que una, o más, de las Nca unidades de adaptación al contexto y Nbc unidades de codificador de bin puedan hacerse funcionar con no más de un número limitado de bins. El codificador puede inicializar 650 a cero un contador, para cada unidad de codificador de entropía restringida, asociado con el número de bins procesados en un segmento de entropía actual. Con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 20, el valor de contador puede indicarse como A, donde A representa un vector, correspondiendo cada entrada en el vector al número acumulado de bins procesados, para el segmento de entropía actual, por una unidad de codificador de entropía restringida. Los elementos sintácticos para un macrobloque siguiente pueden obtenerse 652. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 654 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. El número de bins, asociados con el macrobloque, procesados por cada unidad de codificador de entropía restringida puede determinarse 656. El número de bins asociados con el macrobloque puede incluir los bins en las cadenas de bins asociados con los elementos sintácticos no binarios además de los elementos sintácticos binarios. Con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 20, el número de bins, asociados con el macrobloque, procesados por cada unidad de codificador de entropía restringida puede indicarse como num, donde num representa un vector, correspondiendo cada entrada en el vector al número de bins procesados, para el macrobloque actual, por una unidad de codificador de entropía restringida.
Si el número de bins asociados con el macrobloque para cada unidad de codificador de entropía restringida puede añadirse 658 al número de bins ya acumulados, asociados con el segmento de entropía actual, para cada unidad de codificador de entropía restringida, sin 659 superar un número máximo de bins permitidos para ninguna unidad de codificador de entropía restringida, entonces el número de bins acumulados asociados con el segmento de entropía actual puede actualizarse 660 para que incluya los bins asociados con el macrobloque, y los bins asociados con el macrobloque pueden escribirse 662, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 652, y el proceso de partición puede continuar.
Si 658 la suma del número de bins asociados con el macrobloque y el número de bins ya acumulados asociados con el segmento de entropía actual supera 663 el número máximo de bins permitidos para cualquier unidad de codificador de entropía restringida, entonces el codificador puede iniciar 664 un nuevo segmento de entropía asociado con el segmento de reconstrucción actual, y el contador asociado con el número de bins en el segmento de entropía actual puede inicializarse 666 a cero. El número de bins acumulados asociados con el segmento de
5
10
15
20
25
30
35
40
45
50
55
60
entropía actual puede actualizarse 660 para que incluya los bins asociados con el macrobloque, y los bins asociados con el macrobloque pueden escribirse 662, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 652, y el proceso de partición puede continuar.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 21. En estas realizaciones, un codificador puede, para un segmento de reconstrucción, someter a partición el segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que el tamaño de cada segmento de entropía puede restringirse de tal manera que una, o más, de las Nca unidades de adaptación al contexto y Nbc unidades de codificador de bin puedan hacerse funcionar con no más de un número limitado de bins. El codificador puede inicializar 700 a cero un contador, para cada unidad de codificador de entropía restringida, asociado con el número de bins procesados en un segmento de entropía actual por la unidad de codificador de entropía restringida. Con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 21, el valor de contador puede indicarse como A, donde A representa un vector, correspondiendo cada entrada en el vector al número acumulado de bins procesados, para el segmento de entropía actual, por una unidad de codificador de entropía restringida. En estas realizaciones, el codificador puede asociar elementos sintácticos de macrobloque con un segmento de entropía hasta que el número de bins procesados por una unidad de codificador de entropía restringida alcance un umbral asociado con el número máximo predeterminado de bins que se permite que se procesen, en un segmento de entropía, mediante la unidad de codificador de entropía restringida. En algunas realizaciones, el umbral puede ser un porcentaje del número máximo de bins que se permite que se procesen, en un segmento de entropía, mediante la unidad de codificador de entropía restringida. En una realización a modo de ejemplo, el umbral puede ser el 90% del número máximo de bins que se permite que se procesen, en un segmento de entropía, mediante la unidad de codificador de entropía restringida, suponiendo que el mayor número de bins esperados en un macrobloque que se procesen mediante la unidad de codificador de entropía restringida es menor del 10% del número máximo de bins que se permite que se procesen, en un segmento de entropía, mediante la unidad de codificador de entropía restringida. En otra realización a modo de ejemplo, el umbral puede ser un porcentaje del número máximo de bins que se permite que se procesen, en un segmento de entropía, mediante una unidad de codificador de entropía restringida en el que el porcentaje puede estar basado en el mayor número de bins esperados en un macrobloque que se procesen mediante la unidad de codificador de entropía restringida. En estas realizaciones, una vez que el tamaño de un segmento de entropía supera un tamaño umbral, entonces puede crearse otro segmento de entropía. El tamaño umbral puede seleccionarse para garantizar que el segmento de entropía no supera el número máximo de bins que se permite que se procesen por una unidad de codificador de entropía restringida cualquiera en un segmento de entropía. En algunas realizaciones, el tamaño umbral puede ser una función del número máximo de bins permitidos en un segmento de entropía y una estimación del número máximo de bins esperados para un macrobloque.
Los elementos sintácticos para un macrobloque siguiente pueden obtenerse 702. El macrobloque siguiente puede determinarse según un orden de procesamiento de macrobloques predefinido. En algunas realizaciones, el orden de procesamiento de macrobloques puede corresponder a una ordenación de barrido de tramas. Los elementos sintácticos no binarios en el macrobloque pueden convertirse 704 en una cadena de bins. Los elementos sintácticos binarios pueden no requerir conversión. Los bins asociados con el macrobloque pueden escribirse 706, mediante el codificador de entropía, en el flujo de bits y asociarse con el segmento de entropía actual. El número de bins, asociados con el macrobloque, procesados por cada unidad de codificador de entropía restringida puede determinarse 708. El número de bins asociados con el macrobloque puede incluir los bins en las cadenas de bins asociados con los elementos sintácticos no binarios además de los elementos sintácticos binarios. Con fines ilustrativos en la parte restante de la descripción de las realizaciones de la presente invención descritas en relación con la figura 21, el número de bins, asociados con el macrobloque, procesados por cada unidad de codificador de entropía restringida pueden indicarse como num, donde num representa un vector, correspondiendo cada entrada en el vector al número de bins procesados, para el macrobloque actual, por una unidad de codificador de entropía restringida correspondiente. El número de bins acumulados, asociados con el segmento de entropía actual, procesados por cada unidad de codificador de entropía restringida pueden actualizarse 710 para que incluya los bins asociados con el macrobloque. Si 712 el número de bins acumulados, asociados con el segmento de entropía actual, procesados por una unidad de codificador de entropía restringida es mayor 714 que un umbral, que puede indicarse como TH(MaxNumBins)(i) para la unidad de codificador de entropía restringida i, entonces el codificador puede iniciar 716 un nuevo segmento de entropía, e inicializar 718 a cero el contador asociado con el número de bins procesados por cada unidad de codificador de entropía restringida en un segmento de entropía actual. Los elementos sintácticos para el macrobloque siguiente pueden obtenerse 702, y el proceso de partición puede continuar. Si el número de bins acumulados, asociados con el segmento de entropía actual, procesados por una unidad de codificador de entropía restringida no es mayor 713 que el umbral, entonces los elementos sintácticos para el macrobloque siguiente pueden obtenerse 702, y el proceso de partición puede continuar.
Algunas realizaciones de la presente invención pueden comprender una combinación de los criterios descritos anteriormente para la partición de segmentos de entropía.
Ha de entenderse que, aunque algunas realizaciones de la presente invención pueden restringir el tamaño de un segmento de entropía para que sea menor que un primer tamaño predefinido, el tamaño del segmento de entropía puede restringirse de manera equivalente para que no supere un segundo tamaño predefinido. Las realizaciones
5
10
15
20
25
30
35
40
45
50
55
60
descritas en el presente documento son realizaciones a modo de ejemplo de la presente invención, y un experto habituado en la técnica apreciará que existen realizaciones equivalentes de la presente invención para restringir el tamaño de un segmento de entropía.
En algunas realizaciones de la presente invención, iniciar un nuevo segmento de entropía puede comprender terminar el segmento actual y considerar el nuevo segmento de entropía como el segmento de entropía actual.
En algunas realizaciones de la presente invención, la decodificación de una pluralidad de bits dentro de un segmento de entropía puede paralelizarse dentro de un decodificador de entropía que comprende una pluralidad de decodificadores de bin, lo que puede reducir el tiempo de decodificación. Pueden entenderse realizaciones a modo de ejemplo de la presente invención en relación con un decodificador de entropía 750 a modo de ejemplo, representado en la figura 22, que comprende una pluralidad de (se muestran tres) decodificadores de bin 762, 764, 766. Los bits 752 dentro de un segmento de entropía y símbolos decodificados previamente 754 pueden ponerse a disposición de un decodificador de entropía 750. Los bits 752 pueden ponerse a disposición de un selector de decodificador de bin 756 que puede seleccionar un decodificador de bin, basándose en un estado de contexto 758 generado a partir de una unidad de adaptación al contexto 760, entre los decodificadores de bin 762, 764, 766. La unidad de adaptación al contexto 760 puede generar el estado de contexto 758 basándose en los símbolos decodificados previamente 754 puestos a disposición de la unidad de adaptación al contexto 760. El selector de decodificador de bin 756 puede asignar un decodificador de bin 762, 764, 766 basándose en el estado de contexto 758. El bit que va a decodificarse 752 puede hacerse pasar por el selector de decodificador de bin 756 al decodificador de bin seleccionado. Los decodificadores de bin 762, 764, 766 pueden generar bins decodificados 768, 770, 772 que pueden multiplexarse mediante un mutiplexador 774 y los bins multiplexados 776 pueden enviarse a un simbolizador 778 que puede generar los símbolos 754 asociados con los bins 776.
En algunas realizaciones de la presente invención, la decodificación de una pluralidad de bits dentro de un segmento de entropía puede paralelizarse dentro de un decodificador de entropía que comprende una pluralidad de unidades de adaptación al contexto, lo que puede reducir el tiempo de decodificación. Pueden entenderse realizaciones a modo de ejemplo de la presente invención en relación con un a modo de ejemplo decodificador de entropía 800, representado en la figura 23, que comprende una pluralidad (se muestran tres) de unidades de adaptación al contexto 814, 816, 818. Los bits 802 dentro de un segmento de entropía y los símbolos decodificados previamente 810 pueden ponerse a disposición de un decodificador de entropía 800. Los bits 802 pueden ponerse a disposición de un selector de unidad de adaptación al contexto 812 que puede seleccionar de una pluralidad de unidades de adaptación al contexto 814, 816, 818, una unidad de adaptación al contexto para el proceso de decodificación de un bit de entrada. En algunas realizaciones de la presente invención, el selector de unidad de adaptación al contexto 812 puede seleccionar la unidad de adaptación al contexto de orden N cuando recibe cada bit de orden N. La unidad de adaptación al contexto seleccionada puede generar un estado de contexto 820, 822, 824 basándose en los símbolos decodificados previamente 810 puestos a disposición de la unidad de adaptación al contexto seleccionada. Un selector de estado 826, en el momento apropiado, puede seleccionar el estado de contexto generado en asociación con un bit de entrada. En algunas realizaciones de la presente invención, el selector de estado 826 puede seleccionar la unidad de adaptación al contexto de orden N cuando recibe cada bit de orden N según el mismo procedimiento que el selector de unidad de adaptación al contexto 812. El estado seleccionado 828 puede ponerse a disposición del decodificador de bin 804. El decodificador de bin 804 puede decodificar el bit 802 y enviar el bin decodificado 806 a un simbolizador 808 que puede generar un símbolo 810 asociado con el bin decodificado 806.
En algunas realizaciones de la presente invención, la decodificación de una pluralidad de bits dentro de un segmento de entropía puede paralelizarse dentro de un decodificador de entropía que comprende una pluralidad de unidades de adaptación al contexto y una pluralidad de decodificadores de bin, lo que puede reducir el tiempo de decodificación. Pueden entenderse realizaciones a modo de ejemplo de la presente invención en relación con un decodificador de entropía 850 a modo de ejemplo, representado en la figura 24, que comprende una pluralidad de (se muestran tres) unidades de adaptación al contexto 852, 854, 856 y una pluralidad de (se muestran tres) decodificadores de bin 858, 860, 862. Los bits 864 dentro de un segmento de entropía y los símbolos decodificados previamente 866 pueden ponerse a disposición de un decodificador de entropía 850. Los bits 864 pueden ponerse a disposición de un selector de unidad de adaptación al contexto 868 que puede seleccionar de la pluralidad de unidades de adaptación al contexto 852, 854, 856, una unidad de adaptación al contexto para el proceso de decodificación de un bit de entrada. En algunas realizaciones de la presente invención, el selector de unidad de adaptación al contexto 868 puede seleccionar la unidad de adaptación al contexto de orden N cuando recibe cada bit de orden N. La unidad de adaptación al contexto seleccionada puede generar un estado de contexto 870, 872, 874 basándose en los símbolos decodificados previamente 866 puestos a disposición de la unidad de adaptación al contexto seleccionada. Un selector de estado 876, en el momento apropiado, puede seleccionar el estado de contexto generado en asociación con un bit de entrada. En algunas realizaciones de la presente invención, el selector de estado 876 puede seleccionar la unidad de adaptación al contexto de orden N cuando recibe cada bit de orden N según el mismo procedimiento que el selector de unidad de adaptación al contexto 868. El estado seleccionado 878 puede ponerse a disposición de un selector de decodificador de bin 880, que puede seleccionar, basándose en el estado seleccionado de contexto 878, un decodificador de bin 858, 860, 862. El selector de decodificador de bin 880 puede asignar un decodificador de bin 858, 860, 862 basándose en el estado de contexto 878. El bit que va a decodificarse 864 puede hacerse pasar mediante el selector de decodificador de bin 880 al
5
10
15
20
25
30
35
40
45
50
55
decodificador de bin seleccionado. Los decodificadores de bin 858, 860, 862 puede generar bins decodificados 882, 884, 886 que pueden multiplexarse mediante un mutiplexador 888 y los bins multiplexados 890 pueden enviarse a un simbolizador 892 que puede generar los símbolos 866 asociados con los bins 890.
En algunas realizaciones de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que los macrobloques dentro de un segmento de entropía son contiguos. La figura 25 representa un segmento de reconstrucción 950 a modo de ejemplo sometido a partición en tres segmentos de entropía: el segmento de entropía 0 mostrado con entramado 952, el segmento de entropía 1 mostrado en color blanco 954 y el segmento de entropía 2 mostrado con sombreado 956. Los macrobloques dentro de cada segmento de entropía 952, 954, 956, en este segmento de reconstrucción 950 a modo de ejemplo, son contiguos.
En realizaciones alternativas de la presente invención, un codificador puede someter a partición un segmento de reconstrucción en una pluralidad de segmentos de entropía, en el que los macrobloques dentro de un segmento de entropía pueden no ser contiguos. La figura 26 representa un segmento de reconstrucción 960 a modo de ejemplo sometido a partición en tres segmentos de entropía: el segmento de entropía 0 mostrado con entramado 962, el segmento de entropía 1 mostrado en color blanco 964 y el segmento de entropía 2 mostrado con sombreado 966. Los macrobloques dentro de cada segmento de entropía 962, 964, 966, en este segmento de reconstrucción a modo de ejemplo 960, no son contiguos. Una partición de un segmento de reconstrucción en la que los macrobloques dentro de un segmento de entropía no son contiguos puede denominarse partición entrelazada.
En algunas realizaciones de la presente invención, durante la decodificación de entropía de un bloque actual dentro de un segmento de entropía, el decodificador puede usar otros bloques del mismo segmento de entropía para predecir información relacionada con la decodificación de entropía del bloque actual. En algunas realizaciones de la presente invención, durante la reconstrucción de un bloque actual dentro de un segmento de reconstrucción, pueden usarse otros bloques del mismo segmento de reconstrucción para predecir información relacionada con la reconstrucción del bloque actual.
En algunas realizaciones de la presente invención en las que un segmento de reconstrucción comprende una partición entrelazada, los bloques vecinos dentro de un segmento de entropía usados en la decodificación de un bloque actual dentro del segmento de entropía pueden no ser directamente vecinos, o contiguos. La figura 27 ilustra esta situación para la partición entrelazada a modo de ejemplo representada en la figura 26.
En la figura 27, para un bloque actual 970 dentro de un segmento de entropía 964, el bloque vecino izquierdo usado para la decodificación de entropía del bloque actual 970 es el bloque vecino izquierdo, contiguo 972 dentro del segmento de entropía 964. El bloque vecino superior usado para la decodificación de entropía del bloque actual 970 es el bloque vecino superior, no contiguo 974 dentro del mismo segmento de entropía 964. Para la reconstrucción del bloque actual 970, el bloque vecino izquierdo es el bloque vecino izquierdo, contiguo 972 dentro del segmento de reconstrucción 960, y el bloque vecino superior es el bloque vecino superior, contiguo 976 dentro del segmento de reconstrucción 960.
En algunas realizaciones de la presente invención en las que un segmento de reconstrucción comprende una partición entrelazada, puede no existir un bloque vecino apropiado dentro de un segmento de entropía que va a usarse en la decodificación de un bloque actual dentro del segmento de entropía. La figura 28 ilustra esta situación para la partición entrelazada a modo de ejemplo representada en la figura 26.
En la figura 28, para un bloque actual 980 dentro de un segmento de entropía 964, no existe un bloque vecino izquierdo dentro del segmento de entropía 964 que va a usarse para la decodificación de entropía del bloque actual 980. El bloque vecino superior usado para la decodificación de entropía del bloque actual 980 es el bloque vecino superior, no contiguo 982 dentro del mismo segmento de entropía 964. Para la reconstrucción del bloque actual 980, el bloque vecino izquierdo es el bloque vecino izquierdo, contiguo 984 dentro del segmento de reconstrucción 960, y el bloque vecino superior es el bloque vecino superior, contiguo 986 dentro del segmento de reconstrucción 960.
En algunas realizaciones de la presente invención, un decodificador puede procesar previamente un flujo de bits entrante completo para identificar las ubicaciones de los segmentos de entropía. En algunas realizaciones de la presente invención, un decodificador puede procesar previamente todo un segmento de reconstrucción para identificar las ubicaciones de los segmentos de entropía dentro del segmento de reconstrucción. En algunas realizaciones, las ubicaciones de los segmentos de entropía pueden determinarse identificando las ubicaciones de las cabeceras de segmento de entropía. En estas realizaciones, el decodificador puede leer los bits en el flujo de bits y pueden identificarse valores de código de inicio predefinidos.
En realizaciones alternativas, las cabeceras de segmento de entropía pueden restringirse a un intervalo de bits ubicado en posiciones predefinidas dentro de un flujo de bits entrante. En realizaciones alternativas, las cabeceras de segmento de entropía pueden restringirse a un intervalo de bytes ubicado en posiciones predefinidas dentro de un flujo de bits entrante. En estas realizaciones, o bien con bits alineados o bien con bytes alineados, no es necesario que un decodificador procese previamente partes significativamente grandes del flujo de bits entrante para ubicar los segmentos de entropía.
5
10
15
20
25
30
35
40
45
50
En algunas realizaciones de la presente invención, un codificador puede señalizar, en el flujo de bits, la información de ubicación de segmento de entropía, también denominada parámetros de ubicación de segmento de entropía, por ejemplo, información de desplazamiento e intervalo, que puede restringir las ubicaciones de las cabeceras de segmento de entropía. En realizaciones alternativas, la información de ubicación de segmento de entropía puede no señalizarse en el flujo de bits, pero puede determinarse a partir de parámetros de segmento de entropía, por ejemplo, un número fijo de bins permitidos en cualquier segmento de entropía dado, un número fijo de bits permitido en cualquier segmento de entropía dado y otros parámetros de segmento de entropía. En realizaciones todavía alternativas de la presente invención, la información de ubicación de segmento de entropía puede definirse mediante otros medios normativos, por ejemplo, la información puede especificarse en una restricción de perfil, una restricción de nivel, una restricción de aplicación, u otra restricción, o la información puede señalizarse como información complementaria o señalizarse mediante otros medios fuera de los límites.
En algunas realizaciones de la presente invención, puede usarse un conjunto de valores de parámetro de ubicación de segmento de entropía para todos los segmentos de entropía dentro de un flujo de bits. En realizaciones alternativas, pueden definirse valores de parámetro de ubicación de segmento de entropía para un grupo de píxeles representado por una parte de una secuencia. En realizaciones alternativas, pueden definirse valores de parámetro de ubicación de segmento de entropía para cada imagen dentro de un flujo de bits y pueden usarse para todos los segmentos de entropía dentro de la imagen asociada. En realizaciones alternativas, pueden definirse valores de parámetro de ubicación de segmento de entropía para cada segmento de reconstrucción dentro de un flujo de bits y pueden usarse para todos los segmentos de entropía dentro del segmento de reconstrucción asociado. En realizaciones aún alternativas, el decodificador puede usar múltiples conjuntos de valores de parámetro de ubicación de segmento de entropía. En realizaciones todavía alternativas, pueden asignarse valores de parámetro de ubicación de segmento de entropía a identificadores de segmento de entropía, por ejemplo, una primera cabecera de segmento de entropía puede usar un primer conjunto de valores de parámetro de ubicación de segmento de entropía, una segunda cabecera de segmento de entropía puede usar un segundo conjunto de valores de parámetro de ubicación de segmento de entropía y, en general, una cabecera de segmento de entropía de orden N puede usar un conjunto de valores de parámetro de ubicación de segmento de entropía de orden N. En algunas realizaciones de la presente invención, pueden asignarse valores de parámetro de segmento de entropía a identificadores de fotograma. En una realización a modo de ejemplo, una primera imagen puede usar un primer conjunto de valores de parámetro de segmento de entropía, una segunda imagen puede usar un segundo conjunto de valores de parámetro de segmento de entropía y, en general, una imagen de orden N puede usar un conjunto de valores de parámetro de ubicación de segmento de entropía de orden N. En otra realización a modo de ejemplo, una imagen de un primer tipo puede usar un primer conjunto de valores de parámetro de ubicación de segmento de entropía y una imagen de un segundo tipo puede usar un segundo conjunto de valores de parámetro de ubicación de segmento de entropía. Tipos de imágenes a modo de ejemplo son intraimágenes, imágenes predichas y otros tipos de imágenes.
En algunas realizaciones de la presente invención que comprenden un códec H.264/AVC, un desplazamiento de segmento de entropía y un intervalo de segmento de entropía pueden señalizarse en un conjunto de parámetros de secuencia Carga útil de secuencia de bytes en bruto (RBSP, Raw Byte Sequence Payload) añadiendo un parámetro “entropy_slice_offset” y uno “entropy_slice_range” al conjunto de parámetros de secuencia. La tabla 3 enumera una sintaxis RBSP de conjunto de parámetros de secuencia a modo de ejemplo según realizaciones de la presente invención.
En algunas realizaciones de la presente invención que comprenden un códec H.264/AVC, un desplazamiento de segmento de entropía y un intervalo de segmento de entropía pueden señalizarse en un conjunto de parámetros de imagen Carga útil de secuencia de bytes en bruto (RBSP) añadiendo un parámetro “entropy_slice_offset” y uno “entropy_slice_range” al conjunto de parámetros de imagen. La tabla 4 enumera una sintaxis RBSP de conjunto de parámetros de imagen a modo de ejemplo según realizaciones de la presente invención.
En algunas realizaciones de la presente invención que comprenden un códec H.264/AVC, un desplazamiento de segmento de entropía y un intervalo de segmento de entropía pueden señalizarse en una cabecera de segmento añadiendo un parámetro “entropy_slice_offset” y uno “entropy_slice_range” a la cabecera de segmento. La tabla 5 enumera una sintaxis de cabecera de segmento a modo de ejemplo según realizaciones de la presente invención.
En algunas realizaciones de la presente invención, pueden indicarse un desplazamiento de segmento de entropía y un intervalo de segmento de entropía para cada punto de cumplimiento de nivel del codificador según una tabla, por ejemplo, tal como se muestra en la tabla 6, donde Om.n indica el desplazamiento de segmento de entropía para un punto de cumplimiento m.n de nivel y Rm.n indica el intervalo de segmento de entropía para un punto de cumplimiento m.n.
seq parameter set rbsp( ) {
C Descriptor
profilejdc
0 u(8)
reserved zero 8bits / * igual a 0 * /
0 u(8)
level idc
0 u(8)
seq parameter set id
0 ue(v)
bit depth luma minus8
0 ue(v)
bit_depth_chroma_minus8
0 ue(v)
increased bit depth luma
0 ue(v)
increased bit depth chroma
0 ue(v)
log2 max frame num minus4
0 ue(v)
log2 max pic order cnt Isb minus4
0 ue(v)
max_num_ref_frames
0 ue(v)
gaps in frame num value allowed flag
0 u(1)
Iog2 min coding unit size minus3
0 ue(v)
max coding unit hierarchy depth
0 ue(v)
Iog2 min transform unit size minus2
0 ue(v)
max_transform_unit_hierarchy_depth
0 ue(v)
pic width in luma samples
0 u(16)
pic height in luma samples
0 u(16)
entropy slice offset
0 ue(v)
entropy slice range
0 ue(v)
rbsp trailing bits( )
0
_____________________________________
Tabla 3: Sintaxis RBSP de conjunto de parámetros de secuencia a modo de ejemplo
Tabla
pic parameter set rbsp( ) {
C Descriptor
pic_parameter_set_id
1 ue(v)
seq parameter set id
1 ue(v)
entropy coding mode flag
1 u(1)
num ref idx l0 default active minus1
1 ue(v)
num ref idx l1 default active minus1
1 ue(v)
pic_init_qp_minus26 /* en relación con 26 */
1 se(v)
constrained intra pred flag
1 u(1)
entropy slice offset
0 ue(v)
entropy slice range
0 ue(v)
rbsp trailing bits( )
1
}
Tabla 4: Sintaxis RBSP de conjunto de parámetros de imagen a modo de ejemplo
Tabla
slice header ( ) {
C Descriptor
first lctb in slice
2 ue(v)
entropy slice type
u(1)
si(!entropy slice flag) {
slice type
2 ue(v)
pic parameter set id
2 ue(v)
frame num
2 u(v)
si( IdrPicFlag )
idr pic id
2 ue(v)
pic order cnt lsb
2 u(v)
si( slice type = = P | | slice type = = B ) {
num ref idx active override flag
2 u(1)
si( num ref idx active override flag ) {
num ref idx I0 active minus1
2 ue(v)
si( slice type = = B )
num ref idx I1 active minus1
2 ue(v)
}
}
si( nal ref idc ! = 0 )
dec ref pic marking( )
2
si( entropy_coding_mode_flag && slice type ! = I )
cabac init idc
2 ue(v)
slice qp delta
2 se(v)
alf param( )
5
10
15
20
25
30
si( slice type = = P | | slice type = = B ) {
mc interpolation idc
2 ue(v)
mv competition flag
2 u(1)
si ( mv competition flag ) {
mv competition temporal flag
2 u(1)
}
}
si( slice_type = = B && mv competition flag)
collocated_from_l0_flag
2 u(1)
} si no
si( entropy_coding_mode_flag && slice type ! = I )
cabac init idc
ue(v)
entropy slice offset
0 ue(v)
entropy slice range
0 ue(v)
______________________________________
Tabla 5. Tabla de sintaxis a modo de ejemplo para cabecera de segmento
Nivel
Desplazamiento de segmento de entropía Intervalo de segmento de entropía
1.1
O1.1 R1.1
1.2
O1.2 R1.2
m.n
Om.n Rm.n
5.1
O5.1 R51
Tabla 6: Desplazamiento de segmento de entropía e intervalo de segmento de entropía a modo de ejemplo para cada nivel
En algunas realizaciones, la información de ubicación de segmento de entropía puede comprender información que puede restringir las ubicaciones de las cabeceras de segmento de entropía. En un ejemplo, la información de ubicación de segmento de entropía puede comprender un valor de desplazamiento, también denominado desplazamiento base o periodo, y un valor de intervalo, también denominado deviación o desplazamiento para un periodo. Puede restringirse una ubicación de cabecera de segmento de entropía basándose en el valor de desplazamiento y el valor de intervalo.
En algunas realizaciones de la presente invención, pueden definirse explícitamente un valor de desplazamiento y un valor de intervalo. En realizaciones alternativas de la presente invención, pueden definirse implícitamente un valor de desplazamiento y un valor de intervalo como valor de desplazamiento mínimo y valor de desplazamiento máximo. En realizaciones todavía alternativas de la presente invención, pueden definirse implícitamente un valor de desplazamiento y un valor de intervalo como valor de desplazamiento máximo y la diferencia entre el valor de desplazamiento máximo y un valor de desplazamiento mínimo. En realizaciones aún alternativas de la presente invención, pueden definirse implícitamente un valor de desplazamiento y un valor de intervalo como valor de desplazamiento mínimo y la diferencia entre el valor de desplazamiento mínimo y un valor de desplazamiento máximo. En realizaciones alternativas, pueden definirse implícitamente un valor de desplazamiento y un valor de intervalo como un tercer valor y la diferencia entre el tercer valor y un valor de desplazamiento máximo y un valor de desplazamiento mínimo. En realizaciones todavía alternativas, pueden definirse un valor de desplazamiento y un valor de intervalo a través de un índice en una tabla de consulta que contiene los valores de bit mínimo y máximo correspondientes. En algunas realizaciones, pueden definirse un valor de desplazamiento y un valor de intervalo usando un árbol de consulta basado en desplazamiento. En algunas realizaciones, pueden definirse un valor de desplazamiento y un valor de intervalo usando indexación de minimización de costes. Un experto habituado en la técnica reconocerá que existen muchos métodos conocidos en la técnica para definir implícitamente un valor de intervalo y un valor de desplazamiento y para garantizar que un codificador y un decodificador funcionan con el mismo valor para los valores de desplazamiento y de intervalo predefinidos.
En algunas realizaciones de la presente invención, la señalización de un valor de intervalo puede ser opcional. En algunas realizaciones, cuando no se señaliza un valor de intervalo, entonces el valor de intervalo puede establecerse en un valor predefinido. En una realización a modo de ejemplo, el valor predefinido puede ser cero. En otra realización a modo de ejemplo, el valor predefinido puede ser un valor de número entero distinto de cero.
En una realización a modo de ejemplo descrita en relación con la figura 29, la cabecera de segmento de entropía
5
10
15
20
25
30
35
40
45
50
55
60
asociada con un segmento de entropía, número de segmento N dentro de un segmento de reconstrucción, puede restringirse para iniciarse después de Nk-p bits desde el inicio de, u otra ubicación fija dentro de, la cabecera de segmento de reconstrucción, donde k indica el valor de desplazamiento y p indica el intervalo. La ubicación desde la que pueden medirse los Nk-p bits puede denominarse ubicación de referencia. En realizaciones alternativas, una ubicación de referencia puede no estar asociada con un segmento de reconstrucción particular y puede ser la misma ubicación fija dentro de un flujo de bits para todos los segmentos de entropía. En realizaciones alternativas, la cabecera de segmento de entropía puede tener bytes alineados, y la restricción puede asociarse con varios bytes. Aunque el ejemplo ilustrado en relación con la figura 29 se describe en términos de bits, un experto habituado en la técnica puede apreciar las realizaciones alternativas con bytes alineados.
La figura 29 es una representación gráfica de una parte 1000 a modo de ejemplo de un flujo de bits a modo de ejemplo. La parte de flujo de bits 1000 comprende una cabecera de segmento de reconstrucción 1002, representada por un rectángulo negro relleno, cuatro cabeceras de segmento de entropía (la cabecera de segmento de entropía correspondiente al segmento de entropía de orden cero 1003, denominada cabecera de segmento de entropía de orden cero, la cabecera de segmento de entropía correspondiente al primer segmento de entropía 1004, denominada primera cabecera de segmento de entropía, la cabecera de segmento de entropía correspondiente al segundo segmento de entropía 1005, denominada segunda cabecera de segmento de entropía, la cabecera de segmento de entropía correspondiente al tercer segmento de entropía 1006, denominada tercera cabecera de segmento de entropía), representada por rectángulos grises rellenos, y las partes restantes de los segmentos de entropía, representadas por rayas en blanco y negro, delgadas. En este ejemplo, la ubicación de referencia puede ser el inicio 1001 de la cabecera de segmento de reconstrucción 1002. En algunas realizaciones de la presente invención, la cabecera de segmento de entropía correspondiente al segmento de entropía de orden cero 1003 puede restringirse para que esté ubicada inmediatamente después de la cabecera de segmento de reconstrucción 1002. En algunas realizaciones de la presente invención, la cabecera de segmento de entropía correspondiente al segmento de entropía de orden cero puede formar parte de la cabecera de segmento de reconstrucción. Es decir, la cabecera de segmento de reconstrucción también puede servir como cabecera de segmento de entropía correspondiente al segmento de entropía de orden cero. En estas realizaciones, la cabecera de segmento de reconstrucción puede comprender una parte de reconstrucción y una parte de entropía. En algunas realizaciones de la presente invención representadas en la figura 29, la primera cabecera de segmento de entropía 1004 puede restringirse para que esté ubicada después de k-p bits 1007 desde la ubicación de referencia 1001, la segunda cabecera de segmento de entropía 1005 puede restringirse para que esté ubicada después de 2k-p bits 1008 desde la ubicación de referencia 1001, la segunda cabecera de segmento de entropía 1006 puede restringirse para que esté ubicada después de 3k-p bits 1009 desde la ubicación de referencia 1001. En estas realizaciones, un decodificador de entropía asignado para decodificar el segmento de entropía N puede empezar la búsqueda de la cabecera de segmento de entropía correspondiente después de Nk-p bits desde la ubicación de referencia 1001.
En realizaciones alternativas de la presente invención, la información de ubicación de segmento de entropía puede no comprender un parámetro de intervalo. En estas realizaciones, un decodificador de entropía puede empezar la búsqueda de la cabecera de segmento de entropía de orden N después de Nk bits desde una ubicación de referencia.
En otra realización a modo de ejemplo descrita en relación con la figura 30, la cabecera de segmento de entropía asociada con el segmento de entropía, número de segmento N dentro de un segmento de reconstrucción, puede restringirse para iniciarse después de Nk-p bits desde el inicio de, u otra ubicación fija dentro de, la cabecera de segmento de reconstrucción, donde k indica el valor de desplazamiento y p indica el intervalo, y la cabecera de segmento de entropía puede restringirse además para que esté dentro de un intervalo de 2p bits desde la ubicación inicial restringida. La ubicación desde la que pueden medirse los Nk-p bits puede denominarse ubicación de referencia. En realizaciones alternativas, una ubicación de referencia puede no estar asociada con un segmento de reconstrucción particular y puede ser la misma ubicación fija dentro de un flujo de bits para todos los segmentos de entropía. En realizaciones alternativas, la cabecera de segmento de entropía puede tener bytes alineados, y la restricción puede asociarse con varios bytes. Aunque el ejemplo ilustrado en relación con la figura 30 se describe en términos de bits, un experto habituado en la técnica puede apreciar las realizaciones alternativas con bytes alineados.
La figura 30 es una representación gráfica de una parte 1020 a modo de ejemplo de un flujo de bits a modo de ejemplo. La parte de flujo de bits 1020 comprende una cabecera de segmento de reconstrucción 1022, representada por un rectángulo negro relleno, cuatro cabeceras de segmento de entropía (la cabecera de segmento de entropía correspondiente al segmento de entropía de orden cero 1023, denominada cabecera de segmento de entropía de orden cero, la cabecera de segmento de entropía correspondiente al primer segmento de entropía 1024, denominada primera cabecera de segmento de entropía, la cabecera de segmento de entropía correspondiente al segundo segmento de entropía 1025, denominada segunda cabecera de segmento de entropía, la cabecera de segmento de entropía correspondiente al tercer segmento de entropía 1026, denominada tercera cabecera de segmento de entropía), representadas por rectángulos grises rellenos, y las partes restantes de los segmentos de entropía, representadas por rayas en blanco y negro, delgadas. En este ejemplo, la ubicación de referencia puede ser el inicio 1021 de la cabecera de segmento de reconstrucción 1022. En algunas realizaciones de la presente invención, la cabecera de segmento de entropía correspondiente al segmento de entropía de orden cero 1023 puede restringirse para que esté ubicada inmediatamente después de la cabecera de segmento de reconstrucción 1022. En
5
10
15
20
25
30
35
40
45
50
55
60
algunas realizaciones de la presente invención, la cabecera de segmento de entropía correspondiente al segmento de entropía de orden cero puede formar parte de la cabecera de segmento de reconstrucción. En estas realizaciones, la cabecera de segmento de reconstrucción puede comprender una parte de reconstrucción y una parte de entropía. En algunas realizaciones de la presente invención representadas en la figura 30, la primera cabecera de segmento de entropía 1024 puede restringirse para que esté ubicada dentro de 2p bits 1031 después de k-p bits 1027 desde la ubicación de referencia 1021, la segunda cabecera de segmento de entropía 1025 puede restringirse para que esté ubicada dentro de 2p bits 1032 después de 2k-p bits 1028 desde la ubicación de referencia 1021, la segunda cabecera de segmento de entropía 1026 puede restringirse para que esté ubicada dentro de 2p bits 1033 después de 3k-p bits 1029 desde la ubicación de referencia 1021. En estas realizaciones, un decodificador de entropía asignado para decodificar el segmento de entropía N puede empezar la búsqueda de la cabecera de segmento de entropía correspondiente después de Nk-p bits desde la ubicación de referencia y puede terminar la búsqueda después de identificar la cabecera de segmento de entropía o después de realizar la búsqueda en 2p bits.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 31. En estas realizaciones, un decodificador de entropía puede recibir 1050 un número de segmento de entropía que indica el número del segmento de entropía en el bloque de reconstrucción actual para someter a decodificación de entropía. El decodificador de entropía puede determinar 1052 la información de ubicación de segmento de entropía. En algunas realizaciones de la presente invención, la información de ubicación de segmento de entropía, también denominada parámetros de ubicación de segmento de entropía, puede señalizarse en el flujo de bits, y el decodificador puede determinar 1052 la información de segmento de entropía examinando el flujo de bits. En realizaciones alternativas, la información de ubicación de segmento de entropía puede no señalizarse en el flujo de bits, pero puede determinarse 1052, mediante el decodificador, a partir de parámetros de segmento de entropía, por ejemplo, un número fijo de bins permitidos en cualquier segmento de entropía dado, un número fijo de bits permitidos en cualquier segmento de entropía dado y otros parámetros de segmento de entropía. En realizaciones todavía alternativas de la presente invención, la información de ubicación de segmento de entropía puede definirse y determinarse 1052 mediante otros medios normativos, por ejemplo, la información puede especificarse en una restricción de perfil, una restricción de nivel, una restricción de aplicación, u otra restricción, o la información puede señalizarse como información complementaria o señalizarse mediante otros medios fuera de los límites.
El decodificador de entropía puede calcular 1054 una ubicación de inicio de búsqueda de segmento de entropía antes de la cual, en el flujo de bits, se restringe la escritura de la cabecera de segmento de entropía por parte del codificador. En algunas realizaciones de la presente invención, la ubicación de inicio de búsqueda de segmento de entropía puede calcularse 1054 usando un valor de desplazamiento y un valor de intervalo determinados a partir de la información de ubicación de segmento de entropía. En realizaciones alternativas de la presente invención, la ubicación de inicio de búsqueda de segmento de entropía puede calcularse 1054 usando un valor de desplazamiento determinado a partir de la información de ubicación de segmento de entropía. El decodificador de entropía puede avanzar 1056, en el flujo de bits, hasta la ubicación de inicio de búsqueda de segmento de entropía, y puede examinar 1058 el flujo de bits para detectar una cabecera de segmento de entropía. En algunas realizaciones de la presente invención, una cabecera de segmento de entropía puede indicarse mediante un código de inicio.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 32. En estas realizaciones, un decodificador de entropía puede recibir 1070 un número de segmento de entropía que indica el número del segmento de entropía en el bloque de reconstrucción actual para someter a decodificación de entropía. El decodificador de entropía puede determinar 1072 la información de ubicación de segmento de entropía. En algunas realizaciones de la presente invención, la información de ubicación de segmento de entropía, también denominada parámetros de ubicación de segmento de entropía, puede señalizarse en el flujo de bits, y el decodificador puede determinar 1072 la información de segmento de entropía examinando el flujo de bits. En realizaciones alternativas, la información de ubicación de segmento de entropía puede no señalizarse en el flujo de bits, pero puede determinarse 1072, mediante el decodificador, a partir de parámetros de segmento de entropía, por ejemplo, un número fijo de bins permitidos en cualquier segmento de entropía dado, un número fijo de bits permitidos en cualquier segmento de entropía dado y otros parámetros de segmento de entropía. En realizaciones todavía alternativas de la presente invención, la información de ubicación de segmento de entropía puede definirse y determinarse 1072 mediante otros medios normativos, por ejemplo, la información puede especificarse en una restricción de perfil, una restricción de nivel, una restricción de aplicación, u otra restricción, o la información puede señalizarse como información complementaria o señalizarse mediante otros medios fuera de los límites.
El decodificador de entropía puede calcular 1074 una ubicación de inicio de búsqueda de segmento de entropía antes de la cual, en el flujo de bits, se restringe la escritura de la cabecera de segmento de entropía por parte del codificador. En algunas realizaciones de la presente invención, la ubicación de inicio de búsqueda de segmento de entropía puede calcularse 1074 usando un valor de desplazamiento y un valor de intervalo determinados a partir de la información de ubicación de segmento de entropía. En realizaciones alternativas de la presente invención, la ubicación de inicio de búsqueda de segmento de entropía puede calcularse 1074 usando un valor de desplazamiento determinado a partir de la información de ubicación de segmento de entropía. El decodificador de entropía puede avanzar 1076, en el flujo de bits, hasta la ubicación de inicio de búsqueda de segmento de entropía y puede examinar 1078 el flujo de bits para detectar una cabecera de segmento de entropía. En algunas realizaciones
5
10
15
20
25
30
35
40
45
50
55
de la presente invención, una cabecera de segmento de entropía puede indicarse mediante un código de inicio.
Los bits, en el flujo de bits, pueden examinarse 1078 en secuencia empezando en la ubicación de inicio de búsqueda de segmento de entropía. Si 1080 se identifica 1081 una cabecera de segmento de entropía, entonces el decodificador de entropía puede someter a codificación de entropía 1082 el segmento de entropía asociado con la cabecera de segmento de entropía identificada. Si 1080 no se identifica 1083 una cabecera de segmento de entropía, entonces el decodificador de entropía puede terminar 1084 la búsqueda. En algunas realizaciones, el decodificador de entropía puede indicar un error cuando no se identifica 1083 una cabecera de segmento de entropía.
Algunas realizaciones de la presente invención pueden describirse en relación con la figura 33. En estas realizaciones, un decodificador de entropía puede recibir 1100 un número de segmento de entropía que indica el número del segmento de entropía, en el bloque de reconstrucción actual, para someter a decodificación de entropía. El decodificador de entropía puede determinar 1102 la información de ubicación de segmento de entropía. En algunas realizaciones de la presente invención, la información de ubicación de segmento de entropía, también denominada parámetros de ubicación de segmento de entropía, puede señalizarse en el flujo de bits, y el decodificador puede determinar 1102 la información de segmento de entropía examinando el flujo de bits. En realizaciones alternativas, la información de ubicación de segmento de entropía puede no señalizarse en el flujo de bits, pero puede determinarse 1102, mediante el decodificador, a partir de parámetros de segmento de entropía, por ejemplo, un número fijo de bins permitidos en cualquier segmento de entropía dado, un número fijo de bits permitidos en cualquier segmento de entropía dado y otros parámetros de segmento de entropía. En realizaciones todavía alternativas de la presente invención, la información de ubicación de segmento de entropía puede definirse y determinarse 1102 mediante otros medios normativos, por ejemplo, la información puede especificarse en una restricción de perfil, una restricción de nivel, una restricción de aplicación, u otra restricción, o la información puede señalizarse como información complementaria o señalizarse mediante otros medios fuera de los límites.
El decodificador de entropía puede calcular 1104 una ubicación de inicio de búsqueda de segmento de entropía antes de la cual, en el flujo de bits, se restringe la escritura de la cabecera de segmento de entropía por parte del codificador. En algunas realizaciones de la presente invención, la ubicación de inicio de búsqueda de segmento de entropía puede calcularse 1104 usando un valor de desplazamiento y un valor de intervalo determinados a partir de la información de ubicación de segmento de entropía. En realizaciones alternativas de la presente invención, la ubicación de inicio de búsqueda de segmento de entropía puede calcularse 1104 usando un valor de desplazamiento determinado a partir de la información de ubicación de segmento de entropía. El decodificador de entropía puede avanzar 1106, en el flujo de bits, hasta la ubicación de inicio de búsqueda de segmento de entropía y puede examinar 1108 el flujo de bits para detectar una cabecera de segmento de entropía. En algunas realizaciones de la presente invención, una cabecera de segmento de entropía puede indicarse mediante un código de inicio.
Los bits, en el flujo de bits, pueden examinarse 1108 en secuencia empezando en la ubicación de inicio de búsqueda de segmento de entropía. Si 1110 se identifica 1111 una cabecera de segmento de entropía, entonces el decodificador de entropía puede someter a decodificación de entropía 1112 el segmento de entropía asociado con la cabecera de segmento de entropía identificada. Si 1110 no se identifica 1113 una cabecera de segmento de entropía, entonces si 1114 se satisface 1115 un criterio de búsqueda, el decodificador de entropía puede terminar 1116. El criterio de búsqueda puede proporcionar una norma mediante la que puede realizarse una determinación en cuanto a si quedan por buscarse, o no, ubicaciones válidas para el inicio de cabecera de segmento de entropía. En algunas realizaciones (no mostradas), puede satisfacerse un criterio de búsqueda si quedan por examinarse ubicaciones válidas. En realizaciones alternativas, puede satisfacerse un criterio de búsqueda si no quedan por examinarse 1115 ubicaciones válidas, y la búsqueda puede terminar 1116. En algunas realizaciones, el decodificador de entropía puede indicar un error cuando no se identifica 1115 ninguna cabecera de segmento de entropía. Si 1114 no se satisface 1117 el criterio de búsqueda, el examen 1108 del flujo de bits puede continuar después de avanzar 1118, en el flujo de bits, hasta la ubicación de búsqueda siguiente.
En algunas realizaciones de la presente invención, el criterio de búsqueda puede estar relacionado con un valor de intervalo, por ejemplo, la ubicación del inicio de una cabecera de segmento de entropía puede restringirse en un intervalo de 2p bits centrado en Nk, donde k indica el valor de desplazamiento, p indica el valor de intervalo y N es el número de segmento de entropía dentro de un segmento de reconstrucción. En estas realizaciones, la ubicación de el inicio de la cabecera de segmento de entropía asociada con segmento de entropía N puede restringirse en el intervalo de Nk-p a Nk+p. En algunas realizaciones, el criterio de búsqueda puede estar relacionado con una restricción, o restricciones, sobre el tamaño de un segmento de entropía. En algunas realizaciones, el criterio de búsqueda puede estar relacionado con una combinación de restricciones.
En algunas realizaciones de la presente invención, un codificador puede rellenar un segmento de entropía para cumplir con una restricción sobre la ubicación de la cabecera de segmento de entropía siguiente.
En algunas realizaciones de la presente invención, un codificador puede terminar un segmento de entropía antes de que se cumplan otras restricciones de tamaño de segmento de entropía para cumplir con una restricción sobre la ubicación de la cabecera de segmento de entropía siguiente.
En algunas realizaciones de la presente invención, cuando el último segmento de entropía dentro de un segmento de reconstrucción no contiene el número de bits (o bytes, en una realización con bytes alineados) necesario para satisfacer la restricción sobre la ubicación de la cabecera de segmento de entropía siguiente, un codificador puede rellenar el último segmento de entropía dentro del segmento de reconstrucción para satisfacer la restricción sobre la 5 ubicación de la cabecera de segmento de entropía siguiente.
En realizaciones alternativas, una cabecera de segmento de entropía puede comprender un último identificador de segmento de entropía, en la que el valor del último identificador de segmento de entropía puede indicar si el segmento de entropía asociado con la cabecera de segmento de entropía es o no el último segmento de entropía en un segmento de reconstrucción. En algunas realizaciones, puede asociarse un valor cero del último identificador de 10 segmento de entropía con el último segmento de entropía. En realizaciones alternativas, puede asociarse un valor uno del último identificador de segmento de entropía con el último segmento de entropía. En algunas realizaciones, cuando el valor de lal último de segmento de entropía indica que el segmento de entropía es el último segmento de entropía en un segmento de reconstrucción, entonces la cabecera de segmento de entropía posterior puede estar ubicada inmediatamente tras el segmento de entropía actual sin relleno.
15 La tabla 7 muestra sintaxis y semántica a modo de ejemplo para la señalización de una última etiqueta de segmento de entropía, denominada “next_entropy_slice_flag.” En una realización a modo de ejemplo que comprende la sintaxis y semántica a modo de ejemplo mostradas en la tabla 7, el identificador “next_entropy_slice_flag” señaliza si existen segmentos de entropía adicionales para un segmento de reconstrucción actual. Si el identificador “next_entropy_slice_flag” indica que no existen segmentos de entropía adicionales para el segmento de 20 reconstrucción actual, entonces la ubicación de la cabecera de segmento de entropía siguiente en el flujo de bits no puede restringirse mediante los parámetros de ubicación de segmento de entropía.
En algunas realizaciones de la presente invención, la ubicación de cabeceras de segmento de entropía puede organizarse en un formato de árbol, apuntando el nodo de raíz a una ubicación de cabecera de segmento de entropía. En algunas realizaciones, la ubicación de cabecera de segmento de entropía apuntada por el nodo de raíz 25 puede ser relativa. En realizaciones alternativas, la ubicación de cabecera de segmento de entropía apuntada por el nodo de raíz puede ser absoluta. Los nodos restantes del árbol pueden contener distancias de desplazamiento con respecto a su nodo parental. El árbol puede estar diseñado según una restricción de diseño, por ejemplo, para reducir el tiempo promedio para determinar la ubicación de cabecera de segmento de entropía, para vincular un tiempo requerido en el peor caso para determinar la ubicación de cabecera de segmento de entropía, para señalizar 30 un orden preferido de decodificación de segmentos de entropía, para minimizar el coste de almacenamiento para el árbol y otras restricciones de diseño. En algunas realizaciones, el número de hijos de cada nodo en el árbol puede controlarse basándose en el nivel deseado de paralelismo en la determinación de la ubicación de cabecera de segmento de entropía.
slice header ( ) {
C Descriptor
entropy slice flag
2 u(1)
next entropy slice flag
2 ue(v)
si (entropy slice flag) {
first_mb_in_slice
2 ue(v)
si( entropy_coding_mode_flag && slice type ! = I && slice type != SI)
cabac init idc
2 ue(v)
}
}
si no {
una cabecera de segmento normal.......
}
J___________________________________________
Tabla 7: Tabla de sintaxis a modo de ejemplo para último identificador de segmento de entropía
35 En algunas realizaciones de la presente invención, los modelos de contexto pueden restablecerse dentro de un segmento de entropía siempre que se cumpla una condición de restablecimiento de modelo de contexto. En algunas de estas realizaciones, los valores a los que pueden restablecerse los modelos de contexto pueden estar basados en el modelo de contexto de una unidad elemental vecina dentro del segmento de entropía, y si la unidad elemental vecina no está dentro del segmento de entropía, entonces pueden usarse valores por defecto. En realizaciones 40 alternativas, los modelos de contexto pueden restablecerse a valores por defecto. Aún en realizaciones alternativas, los modelos de contexto pueden restablecerse basándose en un modelo de contexto cuyo identificador puede señalizarse dentro del flujo de bits, indicando el identificador uno de una pluralidad de modelos de contexto predefinidos. Un modelo de contexto predefinido puede depender de uno, o más, parámetros en el flujo de bits. En realizaciones a modo de ejemplo, los modelos de contexto pueden restablecerse basándose en un valor señalizado 45 “cabac_init_idc”, dentro del flujo de bits, que indica uno de una pluralidad de modelos de contexto predefinidos.
5
10
15
20
25
30
35
40
45
50
55
60
En algunas realizaciones, puede usarse una tabla de contextos para inicializar una pluralidad de modelos de contexto, en la que una tabla de contextos se refiere a un conjunto de modelos de contexto. En algunas realizaciones, el conjunto de modelos de contexto en una tabla de contextos puede experimentar adaptación basada en uno, o más, parámetros en el flujo de bits, por ejemplo, un parámetro de cuantificación, un parámetro de tipo de segmento u otro parámetro.
En una realización a modo de ejemplo ilustrada en la figura 34, los modelos de contexto pueden restablecerse, dentro de un segmento de entropía, cuando un macrobloque actual es el primer macrobloque en una fila, además de restablecerse en el macrobloque inicial en un segmento de entropía. La figura 34 representa un segmento de reconstrucción 1200 a modo de ejemplo que contiene 48 macrobloques 1208-1255 sometidos a partición en tres segmentos de entropía: el segmento de entropía “0” (mostrado con entramado) 1202, el segmento de entropía “1” (mostrado en color blanco) 1204 y el segmento de entropía “2” (mostrado con sombreado) 1206. El segmento de entropía “0” 1202 contiene 15 macrobloques 1208-1222. El segmento de entropía “1” 1204 contiene 17 macrobloques 1223-1239, y el segmento de entropía “2” 1206 contiene 16 macrobloques 1240-1255. Los macrobloques en los que pueden restablecerse los modelos de contexto se indican con un borde negro grueso 1260-1266 y son aquellos macrobloques 1208, 1223, 1240 al inicio de cada segmento de entropía y el primer macrobloque en cada fila 1216, 1224, 1232, 1240, 1248.
La unidad elemental, por ejemplo, el macrobloque, al inicio de un segmento de entropía puede denominarse unidad elemental de inicio de segmento. Por ejemplo, para los segmentos de entropía 1202, 1204, 1206 en el segmento de reconstrucción 1200 a modo de ejemplo en la figura 34, las unidades elementales de inicio de segmento respectivas son 1208, 1223 y 1240. Una unidad elemental que es la primera unidad elemental en una fila en un segmento de entropía puede denominarse unidad elemental de inicio de fila, por ejemplo, los macrobloques 1208, 1216, 1224, 1232, 1240 y 1248 en la figura 34.
En algunas realizaciones, los modelos de contexto pueden restablecerse basándose en los modelos de contexto de un macrobloque vecino si el macrobloque vecino está dentro del segmento de entropía y valores por defecto si el macrobloque vecino no está dentro del segmento de entropía. Por ejemplo, los modelos de contexto pueden restablecerse basándose en los modelos de contexto del macrobloque por encima del macrobloque actual si el macrobloque por encima del macrobloque actual está en el mismo segmento de entropía, pero establecerse en valores por defecto si el macrobloque por encima del macrobloque actual no está en el mismo segmento de entropía.
En otra realización a modo de ejemplo, los modelos de contexto pueden restablecerse, dentro de un segmento de entropía, cuando una unidad elemental actual es la primera unidad elemental en una fila. En realizaciones alternativas, la condición de restablecimiento de modelo de contexto puede estar basada en otros criterios, por ejemplo, el número de bins procesados dentro del segmento de entropía, el número de bits procesados dentro del segmento, la ubicación espacial de la unidad elemental actual y otro criterio.
En algunas realizaciones de la presente invención, puede usarse un identificador de restablecimiento de modelo de contexto para indicar si pueden restablecerse o no los modelos de contexto dentro de un segmento de entropía siempre que se cumpla una condición de restablecimiento de modelo de contexto. En algunas realizaciones, el identificador de restablecimiento de modelo de contexto puede estar en la cabecera de segmento de entropía. En realizaciones alternativas, el identificador de restablecimiento de modelo de contexto puede estar en la cabecera de segmento de reconstrucción. En algunas realizaciones, el identificador de restablecimiento de modelo de contexto puede ser un identificador binario, y la condición de restablecimiento de modelo de contexto puede ser una condición por defecto. En realizaciones alternativas, el identificador de restablecimiento de modelo de contexto puede ser un identificador de múltiples valores que indica además la condición de restablecimiento de modelo de contexto. En una realización a modo de ejemplo que comprende codificación adaptativa al contexto, por ejemplo, codificación CABAC, codificación CAV2V y otra codificación adaptativa al contexto, un identificador “lcu_row_cabac_init_flag” puede señalizar si puede inicializarse decodificación de entropía al inicio de la fila de mayor unidad de codificación (LCU). En algunas realizaciones, una LCU es una generalización del concepto de macrobloque usado en H.264 a la codificación de vídeo de alta eficiencia (HEVC), y se divide una imagen en segmentos, en los que un segmento está compuesto por una secuencia de LCU. En realizaciones alternativas, una LCU son las ubicaciones de mayor valor de bloque de píxel que pueden representarse con un único valor de modo transmitido. En realizaciones alternativas, una LCU son las ubicaciones de mayor valor de bloque de píxel que pueden representarse con un único valor de modo de predicción transmitido. En algunas realizaciones de la presente invención, un valor de “1” del identificador “lcu_row_cabac_init_flag” puede señalizar que se restablece el contexto de codificación de entropía. Un contexto de codificación de entropía puede representar el conjunto de todos los modelos de contexto asociados con un codificador de entropía. En algunas realizaciones de la presente invención, un valor de “1” del identificador “lcu_row_cabac_init_flag” puede señalizar que se restablece el contexto de codificación de entropía y se restablece el barrido adaptativo. Barrido adaptativo puede referirse a un proceso en el que un códec adapta una ordenación de barrido de coeficientes de transformación basándose en valores de coeficiente de transformación transmitidos previamente. La sección 7.6.1 en el documento de JCTVC JCTVC-B205_draft005, expone un ejemplo en el que el barrido adaptativo elige entre dos órdenes de barrido distintos basándose en los coeficientes significativos en la vecindad. En una realización, puede restablecerse el barrido adaptativo al inicio de cada fila de LCU eligiendo un orden de barrido predefinido. En una realización, la ordenación de barrido se determina generando un mapa de
5
10
15
20
25
significación de coeficientes, y pueden transmitirse los valores de coeficiente de transformación correspondientes a valores de significación de coeficiente mayores que un valor predeterminado antes de los valores de coeficiente de transformación correspondientes a valores de significación de coeficiente menores que o iguales al valor predeterminado. En una realización, los valores de significación de coeficiente que corresponden a valores de coeficiente de transformación que son mayores que un valor predeterminado pueden aumentar posteriormente. En una realización alternativa, los valores de significación de coeficiente que corresponden a valores de coeficiente de transformación que son menores que o iguales a un valor predeterminado pueden disminuir posteriormente. Puede restablecerse el proceso de barrido adaptativo estableciendo el mapa de significación de coeficientes en un valor predefinido. En algunas realizaciones, el valor por defecto, que se supone cuando no se envía el identificador, para el identificador “lcu_row_cabacjnit_flag” puede ser “0.” Un identificador “lcu_row_cabacjnitjdc_flag” puede señalizar si se transmitirán valores de cabac_init_idc al inicio de cada fila de LCU. En algunas realizaciones, cuando el valor del identificador “lcu_row_cabac_init_idc_flag” es “1” se transmitirán los valores al inicio de cada fila de LCU. En algunas realizaciones, el valor por defecto, que se supone cuando no se envía el identificador, para el identificador “lcu_row_cabac_init_idc_flag” puede ser “0.” En algunas realizaciones, un identificador “cabac_init_idc_present_flag” puede señalizar si se transmite un valor de cabac_init_idc para la LCU. En algunas realizaciones, cuando no se transmite un valor de cabac_init_idc para la LCU entonces se restablece el contexto de codificación de entropía usando el valor anterior para cabac_init_idc en el flujo de bits. En algunas realizaciones de la presente invención, “lcu_row_cabac_init_flag” y “lcu_row_cabac_init_idc_flag” pueden señalizarse en una cabecera de segmento normal, por ejemplo, cuando el valor de “entropy_slice_flag” es “0”. La tabla 8 y la tabla 9 muestran sintaxis a modo de ejemplo para estas realizaciones. En algunas realizaciones de la presente invención, “lcu_row_cabac_init_flag” y “lcu_row_cabac_init_idc_flag” pueden señalizarse en una cabecera de segmento de entropía, por ejemplo, cuando el valor de “entropy_slice_flag” es “1”. La tabla 8 muestra sintaxis de cabecera de segmento a modo de ejemplo, y la tabla 9 muestra sintaxis de datos de segmento a modo de ejemplo (coding_unit).
slice header ( ) {
C Descriptor
entropy slice flag
2 u(1)
si (entropy slice flag) {
first leu in slice
2 ue(v)
si( entropy coding mode flag) {
lcu_row_cabac_init_flag
1 u(1)
si( lcu row cabac init flag ){
leu row cabac init idc flag
1 u(1)
}
}
si( entropy_coding_mode_flag && slice type ! = I) {
cabac init idc
2 ue(v)
}
}
si no {
lcu row cabac init flag
1 u(1)
si( lcu row cabac init flag ){
lcu row cabac init idc flag
1 u(1)
}
una cabecera de segmento normal.......
}
J_________________________________
Tabla 8: Tabla de sintaxis a modo de ejemplo para señalizar la inicialización de la codificación de entropía al inicio de la fila de LCU
coding unit( x0, y0, currCodingUnitSize ) {
C Descriptor
si (x0 ==0 && currCodingUnitSize == MaxCodingUnitSize && lcu_row_cabac_init_idc_flag = = true && lcu id! = first lcu in slice) {
cabac init idc present flag
1 u(1)
si( cabac init idc present flag )
cabac init idc
2 ue(v)
}
una unidad de codificación normal
J___________________________________________
Tabla 9: Tabla de sintaxis a modo de ejemplo para señalizar el contexto inicial para la LCU
5
10
15
20
25
En otra realización a modo de ejemplo que comprende codificación adaptativa al contexto, por ejemplo, codificación CABAC, codificación CAV2V y otra codificación adaptativa al contexto, un identificador “mb_row_cabacjnit_flag” puede señalizar si puede inicializarse decodificación de entropía en el primer macrobloque en una fila. En algunas realizaciones de la presente invención, un valor de “1” del identificador “mb_row_cabac_init_flag” puede señalizar que se restablece el contexto de codificación de entropía al inicio de cada fila de macrobloques. En realizaciones alternativas de la presente invención, un valor de “1” del identificador “mb_row_cabac_init_flag” puede señalizar que se restablece el contexto de codificación de entropía y se restablece el barrido adaptativo al inicio de cada fila de macrobloques. En algunas realizaciones, el valor por defecto, que se supone cuando no se envía el identificador, para el identificador “mb_row_cabac_init_flag” puede ser “0.” Un identificador “mb_row_cabac_init_idc_flag” puede señalizar si se transmitirán valores de cabac_init_idc al inicio de cada fila de macrobloques. En algunas realizaciones, cuando el valor del identificador “mb_row_cabac_init_idc_flag” es “1” se transmitirán los valores al inicio de cada fila de macrobloques. En algunas realizaciones, el valor por defecto, que se supone cuando no se envía el identificador, para el identificador “mb_row_cabac_init_idc_flag” puede ser “0.” En algunas realizaciones, un identificador “cabac_init_idc_present_flag” puede señalizar si se transmite un valor de cabac_init_idc para el macrobloque. En algunas realizaciones, cuando no se transmite un valor de cabac_init_idc para el macrobloque, entonces se restablece el contexto de codificación de entropía usando el valor anterior para cabac_init_idc en el flujo de bits. En algunas realizaciones de la presente invención, el identificador “mb_row_cabac_init_flag” y el identificador “mb_row_cabac_init_idc_flag” pueden señalizarse en una cabecera de segmento normal, por ejemplo, cuando el valor de “entropy_slice_flag” es “0”. En algunas realizaciones de la presente invención, el identificador “mb_row_cabac_init_flag” y el identificador “mb_row_cabac_init_idc_flag” pueden señalizarse en una cabecera de segmento de entropía, por ejemplo, cuando el valor de “entropy_slice_flag” es “1”. La tabla 10 y la tabla 11 muestran sintaxis a modo de ejemplo para estas realizaciones. La tabla 10 muestra sintaxis de cabecera de segmento a modo de ejemplo, y la tabla 11 muestra sintaxis de datos de segmento a modo de ejemplo.
slice header ( ) {
C Descriptor
entropy slice flag
2 u(1)
si (entropy slice flag) {
first mb in slice
2 ue(v)
si( entropy coding mode flag) {
mb_row_cabac_init_flag
1 u(1)
si( mb row cabac init flag ){
mb row cabac init idc flag
1 u(1)
}
}
si( entropy_coding_mode_flag && slice type != I) {
cabac init idc
2 ue(v)
}
}
si no {
mb row cabac init flag
1 u(1)
si( mb row cabac init flag ){
mb row cabac init idc flag
1 u(1)
}
una cabecera de segmento normal.......
}
J_________________________________
Tabla 10: Tabla de sintaxis a modo de ejemplo para señalizar la inicialización de codificación de entropía al inicio de la fila de macrobloques
coding unit( x0, y0, currCodingUnitSize ) {
C Descriptor
si (x0==0 && currCodingUnitSize==MaxCodingUnitSize && mb_row_cabac_init_idc_flag==true && mb id!=first mb in slice) {
cabac init idc present flag
1 u(1)
si( cabac init idc present flag )
cabac init idc
2 ue(v)
}
una unidad de codificación normal
1 u(1)
J_______________________________________
Tabla 11: Tabla de sintaxis a modo de ejemplo para señalizar el contexto inicial para el macrobloque
5
10
15
20
25
30
35
En algunas realizaciones de la presente invención, las ubicaciones, en un flujo de bits, de los segmentos de entropía pueden señalizarse en el flujo de bits. En algunas realizaciones, puede usarse un identificador para señalizar que las ubicaciones, en el flujo de bits, de los segmentos de entropía van a señalizarse en el flujo de bits. Algunas realizaciones a modo de ejemplo pueden comprender un identificador “entropy_slicejocations_flag” que si es “verdadera” puede indicar que las ubicaciones, en el flujo de bits, de las cabeceras de segmento de entropía van a señalizarse en el flujo de bits. En algunas realizaciones, los datos de ubicación pueden codificarse de manera diferencial. En algunas realizaciones, los datos de ubicación pueden enviarse en cada segmento de reconstrucción. En realizaciones alternativas, los datos de ubicación pueden enviarse una vez por imagen.
En algunas realizaciones de la presente invención, las ubicaciones, en un flujo de bits, de las filas de LCU pueden señalizarse en el flujo de bits. En algunas realizaciones, puede usarse un identificador para señalizar que la ubicación, en el flujo de bits, de la primera LCU en cada fila va a señalizarse en el flujo de bits. Algunas realizaciones a modo de ejemplo pueden comprender un identificador “lcu_row_location_flag” que si es “verdadera” puede indicar que la ubicación, en el flujo de bits, de la primera LCU en cada fila va a señalizarse en el flujo de bits. En algunas realizaciones, los datos de ubicación pueden codificarse de manera diferencial. En algunas realizaciones, los datos de ubicación pueden enviarse en cada segmento de entropía. En realizaciones alternativas, los datos de ubicación pueden enviarse una vez por segmento de reconstrucción.
La tabla 12 muestra sintaxis a modo de ejemplo para señalizar las ubicaciones, en el flujo de bits, de las filas de LCU y los segmentos de entropía. Para esta sintaxis a modo de ejemplo, la semántica es:
“entropy_slice_locations_flag” señaliza si se transmite la ubicación de cabecera de segmento de entropía. Si el valor de “entropy_slice_locations_flag” se establece en “1”, entonces se transmite la ubicación de cabecera de segmento de entropía, si no, no se transmite. El valor por defecto para el identificador “entropy_slice_locations_flag” es “0”.
• “num_of_entropy_slice_minus1” señaliza el número de segmentos de entropía en el segmento de reconstrucción menos 1.
• “entropy_slice_offset [i]” indica el desplazamiento del segmento de entropía de orden i con respecto al segmento de entropía previo.
• “lcu_row_locations_flag” señaliza si está transmitiéndose o no información de ubicación de fila de LCU. Si el valor de “lcu_row_locations_flag” es “1”, entonces se transmite la información de ubicación de fila de LCU, si no, no se transmite. El valor por defecto para “lcu_row_locations_flag” es “0”.
• “num_of_lcu_rows_minus1” señaliza el número de filas de LCU en el segmento de entropía menos 1.
• “lcu_row_offset [i]” indica el desplazamiento de la fila de LCU de orden i con respecto a la fila de LCU previa.
En algunas realizaciones de la presente invención, “lcu” en la tabla 12 puede sustituirse por “macrobloque”. Por ejemplo, “first_lcu_in_slice”, “lcu_row_cabac_init_flag”, “lcu_row_cabac_init_idc_flag”, “lcu_row_locations_flag”, “lcu_row_locations ()”, “num_of_lcu_rows_minus1” y “lcu_row_offset[i]” en la tabla 12 pueden sustituirse por “first_mb_in_slice”, “mb_row_cabac_init_flag”, “mb_row_cabac_init_idc_flag”, “mb_row_locations_flag”, “mb_row_locations ()”, “num_of_mb_rows_minus1” y “mb_row_offset [i]”, respectivamente.
slice header( ) {
C Descriptor
entropy slice flag
2 u(1)
si (entropy slice flag) {
first lcu in slice
2 ue(v)
si ( entropy coding mode flag) {
lcu row cabac init flag
1 u(1)
si( lcu row cabac init flag ){
lcu row cabac init idc flag
1 u(1)
lcu row locations flag
1 u(1)
si ( lcu row locations flag ) {
lcu row locations ()
}
}
}
si( entropy coding mode flag && slice type ! = I) {
cabac init idc
2 ue(v)
}
}
si no {
5
10
15
20
25
entropy slice locations flag
1 u(1)
si (entropy slice locations flag) {
entropy slice locations ()
}
si (entropy coding mode flag) {
leu row cabac init flag
1 u(1)
si( lcu row cabac init flag ){
leu row cabac init idc flag
1 u(1)
leu row locations flag
1 u(1)
si (lcu row locations flag) {
lcu row locations ()
}
}
}
una cabecera de segmento normal.......
}
J___________________________________________
entropy slice locations()
C Descriptor
{
num entropy slices minusl
2 ue(v)
para (i = 0; i < num of entropy slices minus1; i++)
entropy slices offsetm
2 ue(v)
}
lcu row locations()
C Descriptor
{
num of lcu rows minusl
2 ue(v)
para (i = 0; i < num of lcu rows minus1 slice; i++) {
lcu row offsetm
2 ue(v)
}
J______________________________________
Tabla 12: Tabla de sintaxis a modo de ejemplo para señalizar las ubicaciones, en el flujo de bits, de la primera LCU en una fila
La transmisión eficiente de datos residuales desde un codificador hasta un decodificador puede lograrse señalizando la ubicación de coeficientes de transformación de valor cero y los valores de nivel de los coeficientes de transformación distintos de cero para una unidad elemental, por ejemplo, un macrobloque. Muchos sistemas de codificación pueden intentar ubicar los coeficientes de transformación de valor cero al final de los datos residuales para la unidad elemental, permitiendo de ese modo el uso de un código de “final de bloque” después del último coeficiente de transformación significativo para señalizar de manera eficiente que los valores de coeficiente de transformación restantes son cero.
Algunos sistemas de codificación pueden seguir la pista de las ubicaciones de coeficientes de transformación de valor cero en los datos residuales transmitidos previamente para una unidad elemental procesada previamente, lo que puede permitir que se transmitan las ubicaciones con coeficientes de transformación de valor cero previos en último lugar en datos residuales posteriores. Como alternativa, algunos sistemas de codificación pueden seguir la pista de las ubicaciones de coeficientes de transformación de valor distinto de cero en los datos residuales transmitidos previamente. Aunque esto puede mejorar la eficiencia de codificación, hace que sea necesario decodificar por completo datos residuales previos para decodificar datos residuales actuales debido al hecho de que la codificación de datos residuales usa modelos de contexto, también denominados modelo de probabilidades, que se determinan mediante un identificador de coeficiente de transformación que sólo puede determinarse con el conocimiento de las ubicaciones que se identifica que van a transmitirse al final de los datos residuales.
Por ejemplo, tal como se muestra en la figura 35, si la adaptación de barrido ha generado un orden de barrido de: S = {coefo,coefio,coefi, ...} para el proceso de codificación de entropía asociado con una unidad elemental actual, donde coefi indica el coeficiente de transformación de orden i, entonces es necesario recuperar el contexto, que puede indicarse como ctxto, correspondiente a coefo para la codificación del coeficiente de transformación coefo. A continuación, es necesario recuperar el contexto ctxtio, correspondiente a coefio, para la codificación del coeficiente de transformación coefio, y así sucesivamente. Por tanto, puede ejecutarse una ordenación temporal en la codificación de las unidades elementales debido a la necesidad de conocer el orden de barrido S = {coefo, coefio, coefi,...}, que no puede obtenerse hasta que se hayan codificado las unidades elementales previas.
5
10
15
20
25
30
35
40
45
50
55
60
En algunas realizaciones de la presente invención, para permitir la codificación paralela de segmentos de entropía, puede restablecerse el barrido adaptativo en un orden de barrido por defecto de segmentos de entropía en la unidad elemental de inicio de segmento de cada segmento de entropía, permitiendo de ese modo que se codifiquen en paralelo segmentos de entropía independientes.
En algunas realizaciones de la presente invención, puede establecerse un orden de barrido de un cálculo de barrido adaptativo en un orden de barrido conocido, también denominado por defecto de fila, en la unidad elemental de inicio de fila de cada fila de LCU dentro de un segmento de entropía.
En realizaciones alternativas de la presente invención, puede desacoplarse el orden de barrido de coeficientes de transformación de bloque y el modelo de contexto correspondiente, también denominado contexto, que pueden recuperarse para la codificación de un coeficiente de transformación, permitiendo de ese modo codificación paralela. En estas realizaciones, un coeficiente de transformación ubicado en una primera ubicación en el flujo de bits puede asociarse, basándose en su ubicación en relación con los otros coeficientes de transformación en el flujo de bits, con un contexto ubicado de manera correspondiente en un orden de recuperación de contexto. En estas realizaciones, puede predefinirse un orden de recuperación de contexto, que puede indicarse como F = {ctxtA,ctxtB,ctxtc,...}, donde ctxt indica un contexto que no está asociado con una ubicación de coeficiente de transformación en el dominio de transformación, sino que está asociado más bien con la ubicación relativa del coeficiente de transformación en el flujo de bits. Por tanto, para un orden de barrido de coeficientes de transformación S = {coefo,coefio,coefi,...} a modo de ejemplo, el proceso de codificación puede codificar coefo con ctxtA, coefio con ctxtB, coefi con ctxtc y así sucesivamente. En estas realizaciones, el proceso de codificación de entropía puede hacerse funcionar independientemente del orden de barrido. Algunas realizaciones de codificador pueden describirse en relación con la figura 36. Un codificador puede recuperar 1280 el coeficiente de transformación siguiente que va a codificarse y puede recuperar 1282 el contexto siguiente, de una lista de contextos de recuperación predefinida. El coeficiente de transformación recuperado puede someterse a codificación de entropía 1284 usando el contexto recuperado, y puede realizarse una determinación 1286 en cuanto a si existen o no coeficientes de transformación significativos restantes para codificar. Si existen 1287 coeficientes de transformación significativos restantes que van a codificarse, el coeficiente de transformación significativo siguiente puede recuperarse 1280, y el proceso puede continuar. Si no existen 1289, entonces el proceso puede terminar 1290. Algunas realizaciones de decodificador pueden describirse en relación con la figura 37. Un decodificador puede recuperar 1300 el contexto siguiente y someter a decodificación de entropía 1302 el coeficiente de transformación significativo siguiente del flujo de bits usando el contexto recuperado. El coeficiente de transformación decodificado puede almacenarse 1304, y puede realizarse una determinación 1306 en cuanto a si existen o no coeficientes de transformación significativos restantes que van a decodificarse. Si existen 1307, entonces el contexto siguiente puede recuperarse 1300, y el proceso puede continuar. Si no existen 1309, entonces el proceso puede terminar 1310.
En realizaciones alternativas de la presente invención, un orden de barrido de coeficientes puede restringirse a un subconjunto de todas las combinaciones de barrido posibles y puede señalizarse explícitamente. Al inicio de un segmento de entropía, puede establecerse el orden de barrido en un orden de barrido señalizado. En algunas realizaciones, puede señalizarse el orden de barrido como sintaxis normativa. En realizaciones alternativas, puede señalizarse el orden de barrido con un mensaje no normativo, por ejemplo, un mensaje SEI u otro mensaje no normativo.
En realizaciones alternativas de la presente invención, un orden de barrido de coeficientes puede restringirse a un subconjunto de todas las combinaciones de barrido posibles y puede señalizarse explícitamente. Al inicio de una fila de LCU en un segmento de entropía, puede establecerse el orden de barrido en un orden de barrido señalizado. En algunas realizaciones, puede señalizarse el orden de barrido como sintaxis normativa. En realizaciones alternativas, puede señalizarse el orden de barrido con un mensaje no normativo, por ejemplo, un mensaje SEI u otro mensaje no normativo.
En realizaciones aún alternativas de la presente invención, al comienzo de un segmento de entropía, puede establecerse el orden de barrido de coeficientes en el orden de barrido de una unidad elemental decodificada previamente. En algunas realizaciones, puede establecerse el orden de barrido en el orden de barrido usado en la unidad elemental por encima. En realizaciones alternativas, puede establecerse el orden de barrido en el orden de barrido usado en la unidad elemental por encima y a la derecha.
En realizaciones aún alternativas de la presente invención, al comienzo de una fila de LCU en un segmento de entropía, puede establecerse el orden de barrido de coeficientes en el orden de barrido de una unidad elemental decodificada previamente. En algunas realizaciones, puede establecerse el orden de barrido en el orden de barrido usado en la unidad elemental por encima. En realizaciones alternativas, puede establecerse el orden de barrido en el orden de barrido usado en la unidad elemental por encima y a la derecha.
Haciendo referencia a la figura 43, en algunas realizaciones de la presente invención, puede aplicarse un método de inicialización para segmentos P a segmentos B sometidos a predicción hacia delante, lo que puede dar como resultado una mayor eficiencia de compresión debido a los mayores grados de libertad proporcionados a los segmentos B y la naturaleza multihipotética de las predicciones B. Los segmentos de referencia usados en un segmento B sometido a predicción hacia delante siempre proceden de fotogramas/imágenes anteriores
5
10
15
20
25
30
35
40
45
50
55
temporalmente tal como se distinguen de un segmento B normal en el que puede elegirse una referencia de fotogramas/imágenes futuras y/o pasadas temporalmente. Por tanto, un segmento B sometido a predicción hacia delante puede comprender datos residuales con características estadísticas que difieren de las de un segmento B normal. Tal como se ilustra en la figura 43, la técnica puede recibir segmentos B, segmentos P y segmentos I y basándose en el tipo de segmento recibido, se selecciona una técnica de inicialización de contexto. Además, en el caso de un segmento B sometido a predicción hacia delante, se usa la técnica de inicialización de contexto para el segmento P. Más específicamente, se realizan las siguientes etapas:
4301 : Puede decodificarse un tipo de segmento del flujo de bits;
4302 : Se determina si el tipo de segmento es o no el segmento B;
4303 : Si el tipo de segmento es el segmento B (Sí en 4302), entonces se determina si el segmento se somete a predicción hacia delante. Si el segmento se somete a predicción hacia delante, entonces se inicializa el contexto con una segunda técnica de inicialización, si no se inicializa el contexto con una primera técnica de inicialización;
4304 : Si el tipo de segmento no es el segmento B (NO en 4302), entonces se determina si el tipo de segmento es o no el segmento P. Si el tipo de segmento es el segmento P, entonces se inicializa el contexto con la segunda técnica de inicialización; y
4305 : Si el tipo de segmento no es el segmento P (NO en 4304), se determina si el tipo de segmento es o no el segmento I. Si el tipo de segmento es el segmento I, se inicializa el contexto con una tercera técnica de inicialización.
Según un aspecto de la presente invención, puede generarse una distribución de probabilidad inicial usada para inicializar un codificador de entropía mediante entrenamiento para fotogramas B sometidos a predicción hacia delante únicamente. Según otro aspecto de la presente invención, puede adaptarse la inicialización del contexto basándose en el parámetro de cuantificación, que puede indicarse como QP, usado para codificar los datos de vídeo actuales.
En algunas realizaciones de la presente invención, un codificador puede aplicar alternativamente un método de inicialización para segmentos P a segmentos B sometidos a predicción hacia delante y puede señalizar la aparición de alternancia. En algunas realizaciones de la presente invención, la señalización puede ser explícita. En realizaciones alternativas de la presente invención, la señalización puede ser implícita. En algunas realizaciones de la presente invención que comprenden señalización explícita, puede enviarse un identificador al decodificador siempre que se sustituya un segmento P por un segmento B sometido a predicción hacia delante. En algunas de estas realizaciones, el identificador puede señalizarse como una sintaxis normativa. En realizaciones alternativas, el identificador puede señalizarse dentro de un mensaje no normativo, por ejemplo, un mensaje SEI u otro mensaje no normativo.
Haciendo referencia a la figura 41, en algunas realizaciones de la presente invención, puede aplicarse un método de inicialización para segmentos P a segmentos B sometidos a unipredicción, lo que puede dar como resultado una mayor eficiencia de compresión debido a los mayores grados de libertad proporcionados a los segmentos B. Los segmentos de referencia usados en un segmento B sometido a unipredicción forman parte o bien de fotogramas/imágenes anteriores temporalmente o bien de fotogramas/imágenes posteriores temporalmente. Por tanto, un segmento B sometido a unipredicción puede comprender datos residuales con características estadísticas diferentes de las de un segmento B bidireccional. Temporalmente puede referirse al orden de visualización de las imágenes/fotogramas decodificados. Tal como se ilustra en la figura 41, la técnica puede recibir segmentos B, segmentos P y segmentos I y basándose en el tipo de segmento recibido, se selecciona una técnica de inicialización de contexto. Además, en el caso de un segmento B sometido a unipredicción, se usa la técnica de inicialización de contexto para el segmento P. Más específicamente, se realizan las siguientes etapas:
4101 : Puede decodificarse un tipo de segmento del flujo de bits;
4102 : Se determina si el tipo de segmento es o no el segmento B;
4103 : Si el tipo de segmento es el segmento B (Sí en 4102), entonces se determina si el segmento se somete a predicción hacia delante o hacia atrás, pero no a ambas. Si el segmento se somete a predicción hacia delante o hacia atrás, pero no a ambas, entonces se inicializa el contexto con una segunda técnica de inicialización, si no se inicializa el contexto con una primera técnica de inicialización;
4104 : Si el tipo de segmento no es el segmento B (NO en 4102), entonces se determina si el tipo de segmento es o no el segmento P. Si el tipo de segmento es el segmento P, entonces se inicializa el contexto con la segunda técnica de inicialización; y
4105 : Si el tipo de segmento no es el segmento P (NO en 4104), se determina si el tipo de segmento es o no el segmento I. Si el tipo de segmento es el segmento I, se inicializa el contexto con una tercera técnica de inicialización.
Haciendo referencia a la figura 42, en algunas realizaciones de la presente invención, puede inicializarse un segmento B sometido a predicción hacia delante de manera diferente que un segmento B sometido a predicción hacia atrás y/o un segmento B sometido a predicción bidireccional, lo cual, puede dar como resultado una mayor eficiencia de compresión debido a los diferentes grados de libertad proporcionados a los segmentos B. Los 5 segmentos de referencia usados en un segmento B sometido a predicción hacia delante forman parte de fotogramas/imágenes anteriores temporalmente. Por tanto, un segmento B sometido a predicción hacia delante puede comprender datos residuales con características estadísticas diferentes de las de un segmento B hacia atrás y/o bidireccional. Temporalmente puede referirse al orden de visualización de las imágenes/fotogramas decodificados. Tal como se ilustra en la figura 42, la técnica puede recibir segmentos B, segmentos P y segmentos I 10 y basándose en el tipo de segmento recibido, se selecciona una técnica de inicialización de contexto. Además, en el caso de un segmento B sometido a predicción hacia delante, puede usarse una técnica de inicialización de contexto diferente de la de los segmentos B, segmentos P y segmentos I. Más específicamente, se realizan las siguientes etapas:
4201 : Puede decodificarse un tipo de segmento del flujo de bits;
15 4202 : Se determina si el tipo de segmento es o no el segmento B;
4203 : Si el tipo de segmento es el segmento B (Sí en 4202), entonces se determina si el segmento se somete o no a predicción hacia delante. Si el segmento se somete a predicción hacia delante, entonces se inicializa el contexto con una cuarta técnica de inicialización, si no se inicializa el contexto con una primera técnica de inicialización;
4204 : Si el tipo de segmento no es el segmento B (NO en 4202), entonces se determina si el tipo de segmento es o 20 no el segmento P. Si el tipo de segmento es el segmento P, entonces se inicializa el contexto con la segunda técnica
de inicialización; y
4205 : Si el tipo de segmento no es el segmento P (NO en 4204), se determina si el tipo de segmento es o no el segmento I. Si el tipo de segmento es el segmento I, se inicializa el contexto con una tercera técnica de inicialización.
25 El método de inicialización de contexto puede consistir en establecer valores de un codificador de entropía que son necesarios para el funcionamiento del codificador de entropía. Por ejemplo, puede establecerse una primera estimación de probabilidad para un codificador de entropía que usa estimaciones de probabilidad para datos de codificación, tal como en un codificador aritmético. El método de inicialización de contexto puede usar una técnica de inicialización para determinar los valores. En una realización, un primer método de inicialización corresponde a usar 30 una primera tabla de valores precalculados para establecer los valores. De manera similar, un segundo método de inicialización corresponde a usar una segunda tabla de valores precalculados para establecer los valores. En otra realización, un primer método de inicialización usa una primera tabla de valores precalculados que están diseñados para fotogramas que usan más de una predicción entre fotogramas para establecer los valores, en el que el/los fotograma(s) usado(s) para la predicción tanto preceden como siguen temporalmente al fotograma actual cuando se 35 ordenan en orden de visualización. Un segundo método de inicialización usa una segunda tabla de valores precalculados que están diseñados a partir de fotogramas que usan más de una predicción entre fotogramas para establecer los valores, en el que los fotogramas usados para la predicción preceden temporalmente o siguen temporalmente, pero no tanto preceden temporalmente como siguen temporalmente, al fotograma actual cuando se ordenan en orden de visualización. Un tercer método de inicialización usa una tercera tabla de valores precalculados 40 que están diseñados para fotogramas que usan como máximo una predicción entre fotogramas para establecer los valores. Un cuarto método de inicialización usa una cuarta tabla de valores precalculados que están diseñados para fotogramas que no usan predicción entre fotogramas para establecer los valores.
En una realización de la invención, RefPicList0 contiene una lista de fotogramas decodificados previamente que se visualizan antes de la visualización del fotograma actual seguida por una lista de fotogramas decodificados 45 previamente que se visualizan de manera posterior a la visualización del fotograma actual y RefPicList1 contiene una lista de fotogramas decodificados previamente que se visualizan de manera posterior a la visualización del fotograma actual seguida por una lista de fotogramas decodificados previamente que se visualizan antes de la visualización del fotograma actual. En esta realización, la condición (2) anterior es cierta para un segmento B unidireccional puesto que el número de fotogramas decodificados previamente que se visualizan de manera 50 posterior a la visualización del fotograma actual es cero, o el número de fotogramas decodificados que se visualizan antes de la visualización del fotograma actual es cero. En otra realización de la invención, PicOrderCnt indica el orden de visualización de los fotogramas decodificados. En esta realización, la condición (3) anterior es cierta para un segmento B unidireccional puesto que los fotogramas decodificados se visualizan todos antes de la visualización del fotograma actual o de manera posterior a la visualización del fotograma actual.
55 En algunas realizaciones de la presente invención que comprenden señalización implícita, puede deducirse la aparición de un método de inicialización de contexto para segmentos P aplicado a un segmento B sometido a predicción hacia delante, en un decodificador cuando los segmentos de referencia (fotogramas/imágenes) usados en la predicción son todos segmentos (fotogramas/imágenes) anteriores basándose en el orden en el que van a visualizarse los segmentos. En algunas realizaciones, puede deducirse la aparición de un segmento P sustituido por
5
10
15
20
25
30
35
40
un segmento B unidireccional cuando son ciertas las siguientes condiciones: (1) la lista de imágenes de referencia RefPicListl tiene una o más entradas, (2) las listas de imágenes de referencia RefPicList1 y RefPicList0 contienen el mismo conjunto de imágenes, y (3) todos los fotogramas en las listas de imágenes de referencia RefPicList1 y RefPiList0 tienen PicOrderCnt menor que el PicOrderCnt del fotograma actual, donde PicOrderCnt indica el orden de visualización de los fotogramas en orden ascendente. En algunas realizaciones, puede deducirse la aparición de un segmento P sustituido por un segmento B unidireccional cuando son ciertas las siguientes condiciones: (1) la lista de imágenes de referencia RefPicList1 tiene una o más entradas, (2) las listas de imágenes de referencia RefPicList1 y RefPicList0 contienen el mismo conjunto de imágenes, y (3) todos los fotogramas en las listas de imágenes de referencia RefPicList1 y RefPiList0 tienen PicOrderCnt mayor que el PicOrderCnt del fotograma actual, donde PicOrderCnt indica el orden de visualización de los fotogramas en orden ascendente. En algunas realizaciones, puede deducirse la aparición de un segmento P sustituido por un segmento B unidireccional cuando son ciertas las siguientes condiciones: (1) la lista de imágenes de referencia RefPicList1 tiene una o más entradas, y (2) el primer fotograma en la lista de imágenes de referencia RefPicList1 y el primer fotograma en RefPicList0 tienen PicOrderCnt menores (o mayores) que el PicOrderCnt del fotograma actual, donde PicOrderCnt indica el orden de visualización de los fotogramas en orden ascendente. En algunas realizaciones, puede deducirse la aparición de un segmento P sustituido por un segmento B unidireccional cuando son ciertas las siguientes condiciones: (1) la lista de imágenes de referencia RefPicList1 tiene más de una entrada, y (2) los fotogramas [0,N] en la lista de imágenes de referencia RefPicList1 y los fotogramas [0,N] en RefPicList0 tienen PicOrderCnt menores (o mayores) que el PicOrderCnt del fotograma actual, donde PicOrderCnt indica el orden de visualización de los fotogramas en orden ascendente. En algunas realizaciones, puede deducirse la aparición de un segmento P sustituido por un segmento B unidireccional cuando son ciertas las siguientes condiciones: (1) la lista de imágenes de referencia RefPicList1 tiene una o más entradas, (2) el primer fotograma en la lista de imágenes de referencia RefPicList1 es el mismo que el segundo fotograma en la lista de imágenes de referencia RefPicList0, (3) el segundo fotograma en la lista de imágenes de referencia RefPicList1 es el mismo que el primer fotograma en la lista de imágenes de referencia RefPicList0, (4) los fotogramas [0,N] en la lista de imágenes de referencia RefPicList1 y los fotogramas [0,N] en RefPicList0 tienen PicOrderCnt menores (o mayores) que el PicOrderCnt del fotograma actual, donde PicOrderCnt indica el orden de visualización de los fotogramas en orden ascendente. En algunas realizaciones, no es necesario que sea idéntico el orden en RefPicList0 y RefPicList1 para contener el mismo conjunto de imágenes. En una realización a modo de ejemplo, cuando la lista de imágenes de referencia RefPicList1 tiene más de una entrada y RefPicList1 es idéntica a la lista de imágenes de referencia RefPicLis0, entonces las primeras dos entradas RefPicList1[0] y RefPicList1[1] pueden cambiarse. N puede referirse a menor que el número total de fotogramas/imágenes en la lista de imágenes de referencia. PicOrderCnt también puede referirse a un orden de visualización relativo en una memoria intermedia de imágenes de decodificador.
Cuando se indica la aparición de un segmento P sustituido por un segmento B sometido a predicción hacia delante, puede inicializarse el contexto para un segmento de entropía usando un método para segmentos P.
La tabla 13 muestra sintaxis a modo de ejemplo para señalizar explícitamente que va a inicializarse el contexto inicial de un segmento B usando un método para segmentos P. En las realizaciones a modo de ejemplo asociadas con Tabla 13, “cabacJnit_P_flag” es un identificador que indica, para inicialización de codificador de entropía de segmento B, si debe elegirse un método para segmentos B o un método para segmentos P. En algunas realizaciones, si el valor del identificador “cabac_init_P_flag” es “0”, entonces se elige un método para segmentos B para la inicialización, y si el valor del identificador “cabac_init_P_flag” es “1”, entonces se elige un método para segmentos P para la inicialización.
slice header ( ) {
C Descriptor
entropy slice flag
2 u(1)
si (entropy slice flag) {
first leu in slice
2 ue(v)
Si (entropy coding mode flag) {
leu row cabac init flag
1 u(1)
si( lcu row cabac init flag ){
leu row cabac init idc flag
1 u(1)
}
}
si( entropy coding mode flag && slice type != I) {
cabac init idc
2 ue(v)
si (slice_type==B_SLICE && segmento B sometido a predicción hacia delante)
cabac init P flag
1 u(1)
}
}
si no {
si (entropy coding mode flag) {
lcu row cabac init flag
1 uü)_____________
5
10
15
20
25
30
35
40
si( lcu row cabac init flag ){
leu row cabac init idc flaq
1 u(1)
}
}
first_lcu_in_slice
1 u(1)
slice type
Algunos elementos de cabecera de segmento normal......
si (entropy coding mode flag) && slice type ! = I) {
cabac init idc
2 ue(v)
si (slice_type==B_SLICE && segmento B sometido a predicción hacia delante)
cabac init P flaq
1 u(1)
}
Resto de cabeceras de segmento normal......
}
J___________________________________________
Tabla 13: Tabla de sintaxis a modo de ejemplo que muestra la señalización explícita de la inicialización de segmento B Inicialización usando un método para segmentos P
En algunas realizaciones de la presente invención, los estados de inicialización de contexto para un segmento de entropía pueden basarse en el número de bins procesados por un codificador de entropía. Un codificador de entropía puede converger más rápidamente a la estadística fuente cuando se inicializa correctamente. Una convergencia más rápida puede dar como resultado que se derrochen menos bits y, por tanto, mayor eficiencia de compresión. En algunas realizaciones de la presente invención, puede estimarse el número de bins que puede transmitirse, y cuando el número estimado de bins cumple con un primer criterio, entonces puede usarse un primer método de inicialización. Cuando el número estimado de bins no cumple con el primer criterio, puede usarse un segundo método de inicialización.
Una realización a modo de ejemplo de la presente invención puede entenderse en relación con la figura 38. En estas realizaciones, el número de bins procesados pueden estimarse 1320. El número estimado de bins procesados, indicado como Nbins, puede compararse 1322 con un valor umbral, indicado como Tbins. A medida que aumenta el número de bins procesados, puede disminuir la precisión predictiva de la inicialización de contexto basada en QP. Una mayor precisión predictiva para la inicialización de contexto puede conducir a una mejor eficiencia de compresión. Si el número estimado de bins procesados es 1324 mayor que el valor umbral, entonces puede elegirse un único valor de inicialización de contexto 1326. Si el número estimado bins procesados no es 1328 mayor que el valor umbral, entonces el contexto puede inicializarse de manera adaptativa 1330 basándose en QP. El único valor de inicialización de contexto puede seleccionarse basándose en entrenamiento y optimización de la métrica elegida, por ejemplo, error cuadrático, entropía relativa y otra métrica de distancia. Una inicialización basada en QP adaptativa puede ser una adaptación afín de forma Ca*QP+Cb, donde Ca y Cb son constantes. En algunas realizaciones, el número de bins puede estimarse basándose en el número de bins procesados en el segmento previo. En realizaciones alternativas, el número de bins puede estimarse basándose en el número de bins procesados en el fotograma previo.
En algunas realizaciones de la presente invención descritas en relación con la figura 39, que representa gráficamente 1340 un intervalo de número de bins procesados, pueden determinarse múltiples intervalos disjuntos (se muestran tres 1342, 1344, 1346) de número de bins procesados y describirse en relación con varios umbrales (se muestran dos 1348, 1350), y puede seleccionarse el valor de inicialización de contexto basándose en dentro de cuáles de los intervalos 1342, 1344, 1346 el número estimado de bins procesados disminuye, por ejemplo, para tres intervalos 1342, 1344, 1346, cuando Nbins<Tm¡n 1342, el contexto puede inicializarse de manera adaptativa basándose en QP, cuando Tmin<Nbins<Ti 1344, el contexto puede inicializarse en un primer valor de contexto fijo y cuando Ti<Nbins 1346, el contexto puede inicializarse en un segundo valor de contexto fijo, diferente.
Otra realización a modo de ejemplo alternativa de la presente invención puede entenderse en relación con la figura 40. En esta realización a modo de ejemplo, el valor de QP puede determinarse 1400 y examinarse 1402 en relación con un valor umbral, indicado como Tqp. En general, a medida que disminuye QP, puede aumentar el número de bins procesados. Si QP no es 1404 menor que ese valor umbral, entonces el contexto puede inicializarse de manera adaptativa 1406 basándose en QP. Si el valor de QP es 1408 menor que el valor umbral, entonces un único valor de inicialización de contexto puede elegirse 1410. El único valor de inicialización de contexto puede seleccionarse basándose en entrenamiento y optimización de la métrica elegida, por ejemplo, error cuadrático, entropía relativa y otra métrica de distancia.
En algunas realizaciones de la presente invención, pueden determinarse intervalos múltiples, disjuntos de QP, y puede seleccionarse el valor de inicialización de contexto basándose en dentro de cuáles de los intervalos disminuye
el valor de QP valor.
La tabla 14 muestra una comparación de rendimiento de distorsión de velocidad para la codificación totalmente intra. La primera comparación, mostrada en las dos subcolumnas de la columna tres, es una comparación, usando el software Joint Model (JM) de H.264/AVC, versión 13.0, entre la codificación que usa múltiples segmentos, en la que 5 la decodificación de entropía y la reconstrucción de macrobloques para un segmento no dependen de otros segmentos, y la codificación que no usa segmentos. En promedio, para la misma velocidad de transmisión de bits, se degrada la calidad en -0,3380 dB por la codificación que usa múltiples segmentos con respecto a no usar segmentos. En promedio, para el mismo nivel de calidad, la velocidad de transmisión de bits aumenta en un 7% por la codificación que usa múltiples segmentos con respecto a no usar segmentos.
10 La segunda comparación, mostrada en las dos subcolumnas de la columna cuatro, es una comparación entre la codificación que usa un segmento de reconstrucción sometido a partición, según las realizaciones de la presente invención, en múltiples segmentos de entropía (dos filas de macrobloques por segmento de entropía) y la codificación que usa JM 13.0 sin segmentos. En promedio, para la misma velocidad de transmisión de bits, se degrada la calidad en -0,0860 dB usando un segmento de reconstrucción con múltiples segmentos de entropía con
15 respecto a la codificación que no usa segmentos. En promedio, para el mismo nivel de calidad, la velocidad de transmisión de bits aumenta en un 1,83% por la codificación que usa un segmento de reconstrucción con múltiples segmentos de entropía con respecto a la codificación no usa segmentos.
Codificación totalmente intra
Secuencia
Resolución Segmentos en JM 13.0 en comparación con ausencia de segmentos en JM 13.0 Un segmento de reconstrucción con múltiples segmentos de entropía en comparación con ausencia de segmentos en JM 13.0
SNRde BD [dB]
Velocidad de transmisión de bits de BD [%] SNR de BD [dB] Velocidad de transmisión de bits de BD [%]
BigShip
720p -0,22 4,54 -0,08 1,61
City
720p -0,28 4,03 -0,06 0,84
Crew
720p -0,42 11,67 -0,11 2,98
Night
720p -0,38 5,64 -0,06 0,91
ShuttleStart
720p -0,39 9,12 -0,12 2,81
PROMEDIO
-0,3380 7,00 -0,0860 1,83
Tabla 14: Comparación del rendimiento de distorsión de velocidad - codificación totalmente intra
La tabla 15 muestra una comparación de rendimiento de distorsión de velocidad para codificación IBBP. La primera 20 comparación, mostrada en las dos subcolumnas de la columna tres, es una comparación, usando el software Joint Model (JM) de H.264/AVC, versión 13.0, entre la codificación que usa múltiples segmentos, en la que la decodificación de entropía y la reconstrucción de macrobloques para un segmento no dependen de otros segmentos, y la codificación que no usa segmentos. En promedio, para la misma velocidad de transmisión de bits, se degrada la calidad en -0,5460 dB por la codificación que usa múltiples segmentos. En promedio, para el mismo 25 nivel de calidad, la velocidad de transmisión de bits aumenta en un 21,41% por la codificación que usa múltiples segmentos con respecto a no usar segmentos.
La segunda comparación, mostrada en las dos subcolumnas de la columna cuatro, es una comparación entre la codificación que usa un segmento de reconstrucción sometido a partición, según las realizaciones de la presente invención, en múltiples segmentos de entropía (dos filas de macrobloques por segmento de entropía) y la 30 codificación que usa JM 13.0 sin segmentos. En promedio, para la misma velocidad de transmisión de bits, se degrada la calidad en -0,31 dB usando un segmento de reconstrucción con múltiples segmentos de entropía con respecto a la codificación que no usa segmentos. En promedio, para el mismo nivel de calidad, la velocidad de transmisión de bits aumenta en un 11,45% por la codificación que usa un segmento de reconstrucción con múltiples segmentos de entropía con respecto a la codificación que no usa segmentos.
Codificación IBBP
Secuencia
Resolución Segmentos en JM 13.0 en comparación con ausencia de segmentos en JM 13.0 Un segmento de reconstrucción con múltiples segmentos de entropía en comparación con ausencia de segmentos en JM 13.0
SNR de BD Velocidad de [dB] transmisión de
SNR de BD Velocidad de [dB] transmisión de
5
10
15
20
25
30
35
bits de BD [%] bits de BD [%]
BigShip
720p -0,45 19,34 -0,26 10,68
City
720p -0,48 17,83 -0,22 7,24
Crew
720p -0,62 30,10 -0,33 14,93
Night
720p -0,36 11,11 -0,19 5,5
ShuttleStart
720p -0,82 28,69 -0,55 18,89
PROMEDIO
-0,5460 21,41 -0,31 11,45
Tabla 15: Comparación de rendimiento de distorsión de velocidad - codificación IBBP
Comparando los resultados, la codificación que usa múltiples segmentos de entropía en un segmento de reconstrucción proporciona unos ahorros en la velocidad de transmisión de bits del 5,17% y el 9,96% para la codificación totalmente intra e IBBP, respectivamente, con respecto a la codificación que usa segmentos, en la que decodificación de entropía y la reconstrucción de macrobloques para un segmento no dependen de otros segmentos, aunque ambas permiten la decodificación paralela.
La tabla 16 muestra una comparación de rendimiento de distorsión de velocidad para la codificación totalmente intra e IBBP. En esta tabla, la comparación es una comparación entre la codificación que no usa segmentos y la codificación que usa un segmento de reconstrucción sometido a partición en segmentos de entropía, según las realizaciones de la presente invención, de tamaño máximo de 26k bins por segmento de entropía. La primera comparación, mostrada en las dos subcolumnas de la columna dos, es una comparación usando la codificación totalmente intra. En promedio, para la misma velocidad de transmisión de bits, se degrada la calidad en -0,062 dB por la codificación que usa un segmento de reconstrucción con múltiples segmentos de entropía. En promedio, para el mismo nivel de calidad, la velocidad de transmisión de bits aumenta en un 1,86% por la codificación que usa un segmento de reconstrucción con múltiples segmentos de entropía. Por tanto, para la codificación totalmente intra usando segmentos de entropía de tamaño máximo de 26k bins por segmento de entropía, existen unos ahorros promedio en la velocidad de transmisión de bits de aproximadamente el 0,64% con respecto a los de los tamaños de segmento de entropía fijos de dos filas de macrobloques.
La segunda comparación, mostrada en las dos subcolumnas de la columna tres, es una comparación usando codificación IBBP. En promedio, para la misma velocidad de transmisión de bits, se degrada la calidad en -0,022 dB usando un segmento de reconstrucción con múltiples segmentos de entropía con respecto a la codificación que no usa segmentos. En promedio, para el mismo nivel de calidad, la velocidad de transmisión de bits aumenta en un 0,787% por la codificación que usa un segmento de reconstrucción con múltiples segmentos de entropía con respecto a la codificación que no usa segmentos. Por tanto, para la codificación IBBP que usa segmentos de entropía de tamaño máximo de 26k bins por segmento de entropía, existen unos ahorros promedio en la velocidad de transmisión de bits de aproximadamente el 10,66% con respecto a los de los tamaños de segmento de entropía fijos de dos filas de macrobloques.
Segmento de entropía comparado con la ausencia de segmentos de JM 15.1. Experimento (1): máximo de 26k bins por segmento de entropía
Secuencia (720 p)
Codificación totalmente intra Codificación IBBP
SNRde BD [dB]
Velocidad de transmisión de bits de BD [%] SNR de BD [dB] Velocidad de transmisión de bits de BD [%]
BigShip
-0,07 1,40 -0,02 0,70
City
-0,07 1,02 -0,02 0,51
Crew
-0,05 1,31 -0,03 1,25
Night
-0,07 1,00 -0,02 0,66
ShuttleStart
-0,05 1,20 -0,03 -0,82
PROMEDIO
-0,062 1,187 -0,022 0,787
Tabla 16: Comparación de rendimiento de distorsión de velocidad - codificación totalmente intra e IBBP usando segmentos de entropía con menos de 26k bins por segmento de entropía
El uso de segmentos de entropía permite la decodificación paralela, y la partición de codificador de un segmento de reconstrucción en segmentos de entropía, en el que cada segmento de entropía es menor que a número máximo de bins puede proporcionar considerables ahorros en la velocidad de transmisión de bits con respecto a segmentos de entropía de un número fijo de macrobloques.
Aunque los gráficos y diagramas en las figuras pueden mostrar un orden de ejecución específico, se entiende que el orden de ejecución puede diferir del que está representado. Por ejemplo, el orden de ejecución de los bloques puede cambiarse con relación al orden mostrado. Además, como ejemplo adicional, dos o más bloques mostrados en sucesión en una figura pueden ejecutarse simultáneamente, o con simultaneidad parcial. Los expertos habituados en la técnica entienden que un experto habituado en la técnica puede crear software, hardware y/o firmware para llevar a cabo las diversas funciones lógicas descritas en el presente documento.
5
10
15
20
25
30
35
40
45
50
Algunas realizaciones de la presente invención pueden comprender un producto de programa informático que comprende un medio de almacenamiento legible por ordenador que tiene instrucciones almacenadas en/dentro del mismo que puede usarse para programar un sistema informático para realizar cualquiera de las características y métodos descritos en el presente documento. Los medios de almacenamiento legibles por ordenador a modo de ejemplo pueden incluir, pero no se limitan a, dispositivos de memoria flash, medios de almacenamiento de disco, por ejemplo, disquetes, discos ópticos, discos magneto-ópticos, discos versátiles digitales (DVD), discos compactos (CD), unidades de microdisco y otros medios de almacenamiento de disco, memorias de sólo lectura (ROM), memorias de sólo lectura programables (PROM), memorias de sólo lectura programables y borrables (EPROM), memorias de sólo lectura programables y borrables eléctricamente (EEPROM), memorias de acceso aleatorio (RAM), memorias gráficas de acceso aleatorio (VRAM), memorias dinámicas de acceso aleatorio (DRAM) y cualquier tipo de medio o dispositivo adecuado para almacenar instrucciones y/o datos.
En algunas realizaciones de la presente invención, puede inicializarse un patrón de barrido al inicio de un segmento de entropía.
En algunas realizaciones de la presente invención, puede inicializarse un patrón de barrido en una unidad elemental inicial en una fila en un segmento de entropía.
En algunas realizaciones de la presente invención, puede inicializarse un estado asociado con un cálculo de barrido adaptativo al inicio de un segmento de entropía.
En algunas realizaciones de la presente invención, puede inicializarse un estado asociado con un cálculo de barrido adaptativo en una unidad elemental inicial en una fila en un segmento de entropía.
En algunas realizaciones de la presente invención, puede desacoplarse un orden de barrido de coeficientes de un orden de recuperación de contexto.
En algunas realizaciones de la presente invención, puede detectarse un segmento B sometido a predicción hacia delante y puede inicializarse un contexto asociado con la codificación de entropía del segmento B sometido a predicción hacia delante según un método para segmentos P.
En algunas realizaciones de la presente invención, puede inicializarse un contexto basándose en el recuento de bins.
En algunas realizaciones de la presente invención, puede inicializarse un contexto basándose en el valor de parámetro de cuantificación.
Una realización de la presente invención da a conocer un método para decodificar un fotograma de vídeo de una secuencia de vídeo, que comprende:
(a) recibir un segmento en un decodificador de vídeo;
(b) identificar si el segmento es o bien un segmento B sometido a predicción hacia delante o bien un segmento B sometido a predicción hacia atrás, y no un segmento B sometido a predicción tanto hacia delante como hacia atrás;
(c) inicializar, usando una técnica para segmentos P, un contexto asociado con el segmento.
En algunas realizaciones de la presente invención, la identificación puede comprender únicamente el segmento B sometido a predicción hacia atrás.
En algunas realizaciones de la presente invención, la identificación puede basarse en: (1) una primera lista que identifica imágenes de referencia tiene al menos una entrada, (2) la primera lista y una segunda lista que identifica imágenes de referencia contienen el mismo conjunto de las imágenes, (3) todas las imágenes en la primera lista y la segunda lista van a visualizarse antes de un segmento actual.
En algunas realizaciones de la presente invención, la identificación puede basarse en: (1) una primera lista que identifica imágenes de referencia tiene al menos una entrada, (2) la primera lista y una segunda lista que identifica imágenes de referencia contienen el mismo conjunto de imágenes, (3) todas las imágenes en la primera lista y la segunda lista van a visualizarse después de un segmento actual.
En algunas realizaciones de la presente invención, la identificación puede basarse en: (1) una primera lista que identifica imágenes de referencia tiene al menos una entrada, (2) la primera lista y una segunda lista que identifica imágenes de referencia contienen un conjunto no coextensivo de imágenes, y el conjunto no coextensivo de imágenes van a visualizarse antes de un segmento actual.
En algunas realizaciones de la presente invención, la identificación puede basarse en: (1) una primera lista que identifica imágenes de referencia tiene al menos una entrada, (2) la primera lista y una segunda lista que identifica imágenes de referencia contienen un conjunto no coextensivo de imágenes, y el conjunto no coextensivo de imágenes van a visualizarse después de un segmento actual.
En algunas realizaciones de la presente invención, la identificación puede basarse en: (1) una primera lista que identifica imágenes de referencia tiene al menos una entrada, (2) una primera imagen de referencia en la primera lista es la misma que una segunda imagen de referencia en una segunda lista, (3) una primera imagen de referencia en la segunda lista es la misma que una segunda imagen de referencia en la primera lista, (4) la primera lista y una 5 segunda lista que identifica imágenes de referencia contienen un conjunto no coextensivo de imágenes, y el conjunto no coextensivo de imágenes van a visualizarse antes de un segmento actual.
Una realización de la presente invención da a conocer un método para decodificar un fotograma de vídeo de una secuencia de vídeo, que comprende:
(a) recibir un segmento en un decodificador de vídeo;
10 (b) identificar si el segmento es un segmento B sometido a predicción hacia delante;
(c) inicializar, usando una técnica diferente de la usada para cualquiera de un segmento B, un segmento P y un segmento I, un contexto asociado con el segmento.
Los términos y las expresiones que se han empleado en la memoria descriptiva anterior se usan como términos descriptivos y no limitativos, y no existe una intención en el uso de tales términos y expresiones de excluir la 15 equivalencia de las características mostradas y descritas o partes de las mismas, reconociéndose que el alcance de la invención está definido y limitado sólo por las siguientes reivindicaciones.

Claims (1)

  1. 5
    10
    15
    20
    25
    REIVINDICACIONES
    Un método para seleccionar un método de inicialización para inicializar un contexto de codificación aritmética binaria adaptativa al contexto, CABAC, comprendiendo el método:
    (a) recibir un segmento en un decodificador de vídeo;
    (b) identificar (4302, 4304) un tipo del segmento como uno de al menos un tipo de segmento B y un tipo de segmento P;
    (c) recibir un identificador cuando el tipo del segmento es el tipo de segmento B y se somete el segmento a predicción hacia delante, utilizándose el identificador para seleccionar o bien una primera técnica de inicialización o bien una segunda técnica de inicialización; e
    (d) inicializar el contexto de CABAC asociado con el segmento usando una técnica de inicialización seleccionada según el tipo del segmento y, cuando el tipo del segmento es el tipo de segmento B y se somete el segmento a predicción hacia delante, el valor del identificador; en el que

    la etapa de inicializar el contexto de CABAC asociado con el segmento usa la primera técnica de

    inicialización como técnica de inicialización, en un caso en que el tipo de segmento indica el tipo de
    segmento B y se somete el segmento a predicción hacia delante y el valor del identificador es igual a un primer valor;

    la etapa de inicializar el contexto de CABAC asociado con el segmento usa la segunda técnica de

    inicialización como técnica de inicialización, en un caso en que el tipo de segmento indica el tipo de
    segmento B y se somete el segmento a predicción hacia delante y el valor del identificador es igual a un segundo valor, en el que el segundo valor difiere del primer valor; y
    se usa la primera técnica de inicialización para inicializar el contexto de CABAC asociado con el segmento si el tipo del segmento es el tipo de segmento B y no se somete el segmento a predicción hacia delante;
    se usa la segunda técnica de inicialización para inicializar el contexto de CABAC asociado con el segmento si el tipo del segmento es el tipo de segmento P.
    El método según la reivindicación 1, en el que el identificador se proporciona en una cabecera de segmento.
ES12804051.6T 2011-06-30 2012-06-27 Inicialización de contexto basada en memoria intermedia de imágenes de decodificador Active ES2687945T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201113174564 2011-06-30
US13/174,564 US9060173B2 (en) 2011-06-30 2011-06-30 Context initialization based on decoder picture buffer
PCT/JP2012/067023 WO2013002412A1 (en) 2011-06-30 2012-06-27 Context initialization based on decoder picture buffer

Publications (1)

Publication Number Publication Date
ES2687945T3 true ES2687945T3 (es) 2018-10-30

Family

ID=47390658

Family Applications (1)

Application Number Title Priority Date Filing Date
ES12804051.6T Active ES2687945T3 (es) 2011-06-30 2012-06-27 Inicialización de contexto basada en memoria intermedia de imágenes de decodificador

Country Status (7)

Country Link
US (2) US9060173B2 (es)
EP (1) EP2727361B1 (es)
JP (4) JP5978233B2 (es)
CN (3) CN107087177B (es)
ES (1) ES2687945T3 (es)
RU (4) RU2597523C2 (es)
WO (1) WO2013002412A1 (es)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9313514B2 (en) 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
US9338465B2 (en) * 2011-06-30 2016-05-10 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9060173B2 (en) * 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US11647197B2 (en) 2011-06-30 2023-05-09 Velos Media, Llc Context initialization based on slice header flag and slice type
CN107257490B (zh) 2012-01-27 2019-12-17 太阳专利托管公司 图像编码方法及图像编码装置
US9369710B2 (en) 2012-02-06 2016-06-14 Qualcomm Incorporated Reference picture list modification for video coding
JP6008237B2 (ja) * 2012-06-28 2016-10-19 パナソニックIpマネジメント株式会社 携帯端末
EP2868094A1 (en) * 2012-06-29 2015-05-06 Telefonaktiebolaget LM Ericsson (PUBL) Apparatus and methods thereof for video processing
US9485506B2 (en) * 2012-09-11 2016-11-01 Texas Instruments Incorporated Method and system for constraining slice header processing overhead in video coding
US20140072027A1 (en) * 2012-09-12 2014-03-13 Ati Technologies Ulc System for video compression
US10785482B2 (en) 2012-09-24 2020-09-22 Texas Instruments Incorporated Method and system for constraining tile processing overhead in video coding
JP5979309B2 (ja) * 2013-03-29 2016-08-24 日産自動車株式会社 非接触給電システム
GB2516224A (en) 2013-07-11 2015-01-21 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
GB2516824A (en) 2013-07-23 2015-02-11 Nokia Corp An apparatus, a method and a computer program for video coding and decoding
WO2015054811A1 (en) * 2013-10-14 2015-04-23 Microsoft Corporation Features of intra block copy prediction mode for video and image coding and decoding
JP6336058B2 (ja) 2013-10-14 2018-06-06 マイクロソフト テクノロジー ライセンシング,エルエルシー ビデオ及び画像符号化及び復号のためのベースカラーインデックスマップモードの機能
WO2015054813A1 (en) 2013-10-14 2015-04-23 Microsoft Technology Licensing, Llc Encoder-side options for intra block copy prediction mode for video and image coding
BR112016015080A2 (pt) 2014-01-03 2017-08-08 Microsoft Technology Licensing Llc Predição de vetor de bloco em codificação / decodificação de vídeo e imagem
US10390034B2 (en) 2014-01-03 2019-08-20 Microsoft Technology Licensing, Llc Innovations in block vector prediction and estimation of reconstructed sample values within an overlap area
US11284103B2 (en) 2014-01-17 2022-03-22 Microsoft Technology Licensing, Llc Intra block copy prediction with asymmetric partitions and encoder-side search patterns, search ranges and approaches to partitioning
US10542274B2 (en) 2014-02-21 2020-01-21 Microsoft Technology Licensing, Llc Dictionary encoding and decoding of screen content
MX361228B (es) 2014-03-04 2018-11-29 Microsoft Technology Licensing Llc Inversión de bloque y modo de omisión en predicción de intracopia de bloque.
EP3158734A1 (en) 2014-06-19 2017-04-26 Microsoft Technology Licensing, LLC Unified intra block copy and inter prediction modes
EP3917146A1 (en) 2014-09-30 2021-12-01 Microsoft Technology Licensing, LLC Rules for intra-picture prediction modes when wavefront parallel processing is enabled
US9591325B2 (en) 2015-01-27 2017-03-07 Microsoft Technology Licensing, Llc Special case handling for merged chroma blocks in intra block copy prediction mode
US10334248B2 (en) * 2015-05-29 2019-06-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
US10659783B2 (en) 2015-06-09 2020-05-19 Microsoft Technology Licensing, Llc Robust encoding/decoding of escape-coded pixels in palette mode
US10264264B2 (en) * 2016-09-24 2019-04-16 Apple Inc. Multi-bin decoding systems and methods
RU2648581C1 (ru) * 2016-12-08 2018-03-26 федеральное государственное бюджетное образовательное учреждение высшего образования "Национальный исследовательский университет "МЭИ" (ФГБОУ ВО "НИУ "МЭИ") Способ кодирования и декодирования видеоинформации пониженной, стандартной и высокой четкости
TWI597912B (zh) * 2016-12-14 2017-09-01 財團法人工業技術研究院 能量採集系統與能量採集系統的控制方法
US11215156B2 (en) 2017-03-03 2022-01-04 Gentherm Incorporated Dual voltage battery system for a vehicle
US11082721B2 (en) 2017-09-07 2021-08-03 Lg Electronics Inc. Method and apparatus for entropy-encoding and entropy-decoding video signal
US11039143B2 (en) * 2017-11-20 2021-06-15 Qualcomm Incorporated Memory reduction for context initialization with temporal prediction
US10986349B2 (en) 2017-12-29 2021-04-20 Microsoft Technology Licensing, Llc Constraints on locations of reference blocks for intra block copy prediction
WO2020085953A1 (en) * 2018-10-25 2020-04-30 Huawei Technologies Co., Ltd. An encoder, a decoder and corresponding methods for inter prediction
US11109041B2 (en) * 2019-05-16 2021-08-31 Tencent America LLC Method and apparatus for video coding
WO2021160168A1 (en) * 2020-02-14 2021-08-19 Beijing Bytedance Network Technology Co., Ltd. Reference picture resampling activation in video coding
WO2023182673A1 (ko) * 2022-03-21 2023-09-28 현대자동차주식회사 컨텍스트 모델 초기화를 사용하는 비디오 코딩을 위한 방법 및 장치

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7369612B2 (en) * 2000-12-11 2008-05-06 Sony Corporation Video decoder and method for using the same
JP4240283B2 (ja) * 2002-10-10 2009-03-18 ソニー株式会社 復号装置及び復号方法
US6894628B2 (en) * 2003-07-17 2005-05-17 Fraunhofer-Gesellschaft Zur Forderung Der Angewandten Forschung E.V. Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables
EP1551185A1 (en) * 2004-01-05 2005-07-06 Thomson Licensing S.A. Encoding method, decoding method, and encoding apparatus for a digital picture sequence
JP4241417B2 (ja) * 2004-02-04 2009-03-18 日本ビクター株式会社 算術復号化装置、および算術復号化プログラム
US7463781B2 (en) * 2004-04-14 2008-12-09 Lsi Corporation Low overhead context intializations for arithmetic video codecs
KR100664936B1 (ko) * 2005-04-13 2007-01-04 삼성전자주식회사 코딩 효율이 향상된 컨텍스트 기반 적응적 산술 코딩 및디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오 코딩및 디코딩 방법과 이를 위한 장치
KR100703776B1 (ko) * 2005-04-19 2007-04-06 삼성전자주식회사 향상된 코딩 효율을 갖는 컨텍스트 기반 적응적 산술 코딩및 디코딩 방법과 이를 위한 장치, 이를 포함하는 비디오코딩 및 디코딩 방법과 이를 위한 장치
KR100763181B1 (ko) * 2005-04-19 2007-10-05 삼성전자주식회사 기초계층과 향상계층의 데이터를 바탕으로 예측 정보를코딩하여 코딩율을 향상시키는 방법 및 장치
CN100461863C (zh) * 2005-08-05 2009-02-11 上海富瀚微电子有限公司 基于上下文自适应二进制算术解码器
EP1775954A1 (en) * 2005-10-14 2007-04-18 Thomson Licensing Method and apparatus for reconstructing a video frame for spatial multi-layer video sequence
EP1806930A1 (en) * 2006-01-10 2007-07-11 Thomson Licensing Method and apparatus for constructing reference picture lists for scalable video
FR2898754B1 (fr) * 2006-03-17 2008-06-13 Thales Sa Procede de protection de donnees multimedia au moyen de couches d'abstraction reseau (nal) supplementaires
US8848789B2 (en) * 2006-03-27 2014-09-30 Qualcomm Incorporated Method and system for coding and decoding information associated with video compression
US20100091845A1 (en) * 2006-03-30 2010-04-15 Byeong Moon Jeon Method and apparatus for decoding/encoding a video signal
PL2008460T3 (pl) * 2006-03-30 2017-10-31 Lg Electronics Inc Sposób i urządzenie do dekodowania/kodowania sygnału wideo
US7626521B2 (en) * 2006-06-08 2009-12-01 Via Technologies, Inc. Decoding control of computational core of programmable graphics processing unit
KR100817021B1 (ko) * 2006-06-21 2008-03-26 한국전자통신연구원 H.264/avc 멀티미디어 콘텐츠의 선택적 암호화기능을 갖는 부호화 및 복호화 장치 및 그 방법
US8532178B2 (en) * 2006-08-25 2013-09-10 Lg Electronics Inc. Method and apparatus for decoding/encoding a video signal with inter-view reference picture list construction
US7365659B1 (en) * 2006-12-06 2008-04-29 Silicon Image Gmbh Method of context adaptive binary arithmetic coding and coding apparatus using the same
CN101198051B (zh) * 2006-12-07 2011-10-05 深圳艾科创新微电子有限公司 基于h.264的熵解码器的实现方法及装置
CN100527842C (zh) * 2007-01-26 2009-08-12 清华大学 基于背景的运动估计编码方法
US7443318B2 (en) * 2007-03-30 2008-10-28 Hong Kong Applied Science And Technology Research Institute Co. Ltd. High speed context memory implementation for H.264
US20080247459A1 (en) * 2007-04-04 2008-10-09 General Instrument Corporation Method and System for Providing Content Adaptive Binary Arithmetic Coder Output Bit Counting
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
CN101389021B (zh) * 2007-09-14 2010-12-22 华为技术有限公司 视频编解码方法及装置
EP2227020B1 (en) * 2007-09-28 2014-08-13 Dolby Laboratories Licensing Corporation Video compression and transmission techniques
EP2215844A2 (en) * 2007-10-15 2010-08-11 Nokia Corporation Motion skip and single-loop encoding for multi-view video content
US8542748B2 (en) * 2008-03-28 2013-09-24 Sharp Laboratories Of America, Inc. Methods and systems for parallel video encoding and decoding
JP4962400B2 (ja) * 2008-04-30 2012-06-27 ソニー株式会社 算術復号装置
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
JP4962476B2 (ja) * 2008-11-28 2012-06-27 ソニー株式会社 算術復号装置
US8693539B2 (en) * 2009-03-26 2014-04-08 Panasonic Corporation Coding method, error detecting method, decoding method, coding apparatus, error detecting apparatus, and decoding apparatus
US9179161B2 (en) * 2009-05-20 2015-11-03 Nissim Nissimyan Video encoding
WO2011064673A1 (en) * 2009-11-30 2011-06-03 France Telecom Method of and apparatus for encoding video frames, method of and apparatus for decoding video frames
KR101348613B1 (ko) * 2009-12-23 2014-01-10 한국전자통신연구원 영상의 부호화/복호화 장치 및 그 방법
CN103119849B (zh) 2010-04-13 2017-06-16 弗劳恩霍夫应用研究促进协会 概率区间分割编码器和译码器
US9313514B2 (en) * 2010-10-01 2016-04-12 Sharp Kabushiki Kaisha Methods and systems for entropy coder initialization
US9215473B2 (en) * 2011-01-26 2015-12-15 Qualcomm Incorporated Sub-slices in video coding
US9060173B2 (en) * 2011-06-30 2015-06-16 Sharp Kabushiki Kaisha Context initialization based on decoder picture buffer
US9838685B2 (en) 2012-06-15 2017-12-05 Google Technology Holdings LLC Method and apparatus for efficient slice header processing

Also Published As

Publication number Publication date
WO2013002412A1 (en) 2013-01-03
CN107105253B (zh) 2020-01-07
US20150172709A1 (en) 2015-06-18
JP5978233B2 (ja) 2016-08-24
JP6541274B2 (ja) 2019-07-10
JP6789351B2 (ja) 2020-11-25
CN107087177A (zh) 2017-08-22
JP2014523150A (ja) 2014-09-08
JP2016226003A (ja) 2016-12-28
US20130003827A1 (en) 2013-01-03
CN107105253A (zh) 2017-08-29
RU2019114693A (ru) 2020-11-16
RU2017145078A3 (es) 2019-06-24
JP2017216714A (ja) 2017-12-07
CN107087177B (zh) 2020-02-18
CN103875247B (zh) 2017-03-22
CN103875247A (zh) 2014-06-18
RU2597523C2 (ru) 2016-09-10
JP2019169980A (ja) 2019-10-03
WO2013002412A8 (en) 2013-02-28
EP2727361A1 (en) 2014-05-07
US9338472B2 (en) 2016-05-10
JP6182649B2 (ja) 2017-08-16
US9060173B2 (en) 2015-06-16
EP2727361A4 (en) 2015-01-07
RU2017145078A (ru) 2019-06-24
RU2645270C1 (ru) 2018-02-19
RU2013152805A (ru) 2015-08-10
EP2727361B1 (en) 2018-08-01

Similar Documents

Publication Publication Date Title
ES2687945T3 (es) Inicialización de contexto basada en memoria intermedia de imágenes de decodificador
ES2728443T3 (es) Inicialización de contexto basándose en memoria intermedia de imagen de decodificador
US10999579B2 (en) Methods and systems for decoding a video bitstream
JP5938119B2 (ja) コンテキストの初期化方法および復号方法
ES2830394T3 (es) Procedimiento para la decodificación de vídeo en paralelo
ES2980262T3 (es) Mejoras de formación de mosaicos flexibles en codificación de vídeo
US20120014429A1 (en) Methods and Systems for Parallel Video Encoding and Parallel Video Decoding
US11647197B2 (en) Context initialization based on slice header flag and slice type