ES2961663T3 - Codificación de entropía que soporta conmutación de modo - Google Patents
Codificación de entropía que soporta conmutación de modo Download PDFInfo
- Publication number
- ES2961663T3 ES2961663T3 ES12728084T ES12728084T ES2961663T3 ES 2961663 T3 ES2961663 T3 ES 2961663T3 ES 12728084 T ES12728084 T ES 12728084T ES 12728084 T ES12728084 T ES 12728084T ES 2961663 T3 ES2961663 T3 ES 2961663T3
- Authority
- ES
- Spain
- Prior art keywords
- binary
- buffer
- probability
- entropy
- symbols
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4031—Fixed length to variable length coding
- H03M7/4037—Prefix coding
- H03M7/4043—Adaptive prefix coding
- H03M7/4068—Parameterized codes
- H03M7/4075—Golomb codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/4006—Conversion to or from arithmetic code
- H03M7/4012—Binary arithmetic codes
- H03M7/4018—Context adapative binary arithmetic codes [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/174—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/184—Methods 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 bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Diaphragms And Bellows (AREA)
- Sealing Devices (AREA)
Abstract
Se describe un decodificador para decodificar un flujo de datos en el que se codifican datos multimedia. El mismo comprende un interruptor de modo configurado para activar un modo de baja complejidad o un modo de alta eficiencia dependiendo del flujo de datos, un motor de decodificación de entropía configurado para recuperar cada símbolo de una secuencia de símbolos mediante decodificación de entropía del flujo de datos usando uno seleccionado de una pluralidad de esquemas de decodificación de entropía, un desimbolizador configurado para desimbolizar la secuencia de símbolos con el fin de obtener una secuencia de elementos de sintaxis, un reconstructor configurado para reconstruir los datos de medios basándose en la secuencia de elementos de sintaxis, en donde la selección depende del activado de el modo de baja complejidad y el modo de alta eficiencia. En otro aspecto, un desimbolizador está configurado para realizar la desimbolización de manera que el parámetro de control varía de acuerdo con el flujo de datos a una primera velocidad en caso de que se active el modo de alta eficiencia y el parámetro de control es constante independientemente del flujo de datos o cambia dependiendo del flujo de datos, pero a una segunda velocidad menor que la primera velocidad en caso de que se active el modo de baja complejidad. (Traducción automática con Google Translate, sin valor legal)
Description
DESCRIPCIÓN
Codificación de entropía que soporta conmutación de modo
La presente invención se refiere al concepto de codificación de entropía para codificar contenido multimedia, tal como datos de vídeo o audio.
En la técnica se conocen muchos códecs de audio y vídeo. Generalmente, estos códecs reducen la cantidad de datos necesarios con el fin de representar el contenido multimedia, tal como audio o vídeo, es decir, comprimen los datos. Sin embargo, las exigencias impuestas a estos códecs no se limitan a lograr una alta eficacia de compresión. Más bien, los códecs tienden a especializarse para determinadas tareas de aplicación. Por lo tanto, en el campo del audio, hay códecs especializados en la codificación de voz mientras que otros se especializan en la codificación de música. Además, en algunas aplicaciones, el retardo de codificación es crítico y, por tanto, algunos de los códecs están especializados en un retardo bajo. Más allá de esto, la mayoría de estos códecs están disponibles en distintos niveles de complejidad/eficacia. Es decir, algunos de estos niveles son para una menor complejidad de codificación a costa de una menor eficacia de codificación. La norma de codificación de vídeo H.264, por ejemplo, ofrece un perfil de línea de base y un perfil principal. Principalmente, estos perfiles de codificación difieren entre sí en la activación/desactivación de determinadas opciones/dispositivos de codificación, tales como la disponibilidad/ausencia de SBR en el campo de la codificación de audio y la disponibilidad/ausencia de fotogramas B en el campo de la codificación de vídeo. Más allá de esto, una parte considerable de la complejidad de estos códecs multimedia está relacionada con la codificación de entropía de los elementos de sintaxis. En general, los esquemas de codificación de entropía VLC tienden a ser menos complejos que los esquemas de codificación aritmética, mientras que estos últimos muestran una mayor eficacia de codificación. Por lo tanto, en la norma H264, la codificación aritmética binaria adaptativa al contexto (CABAC) solo está disponible en el perfil principal y no en el perfil de línea de base. Obviamente, los decodificadores conformes con el perfil de línea de base pueden configurarse de forma menos compleja que los decodificadores conformes con el perfil principal. Lo mismo ocurre con los codificadores. Dado que los dispositivos portátiles que incluyen dichos decodificadores y/o codificadores sufren una disponibilidad de energía limitada, el perfil de línea de base tiene la ventaja sobre el perfil principal en lo que respecta a la menor complejidad. Los decodificadores/codificadores conformes con el perfil principal son más complejos no solo por el esquema de codificación aritmética más complejo, sino también por el hecho de que estos decodificadores/codificadores conformes con el perfil principal tienen que ser retrocompatibles con los flujos de datos conformes con el perfil de línea de base. Dicho de otro modo, la mayor complejidad se debe a que el esquema de codificación aritmética se suma a la complejidad derivada del esquema de codificación de longitud variable de menor complejidad.
El documento Marpe et al.: "Context-based adaptive binary arithmetic coding in the H.264/AVC video compression standard", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, vol. 13, n.° 7, 1 de julio de 2003, desvela un esquema de codificación aritmética binaria adaptativa al contexto para el esquema de codificación de vídeo H.264 que tiene un modo de derivación.
El documento Bin Guo et al.: "A High Speed CABAG Algorithm Based on Probability Estimation Update", IMAGE AND GRAPHICS, 2007. ICIG 2007.CUARTA CONFERENCIA INTERNACIONAL SOBRE IEEE, PISCATAWAY, NJ, EE. UU., 1 de agosto de 2007, desvela un algoritmo CABAC de alta velocidad basado en actualización de estimación de probabilidad.
El documento Hisao Sasai (Panasonic) et al.: "Parallel Context Processing for Significance map using block-based context updates", 5.a REUNIÓN JCT-VG; 20110316 - 20110323; GINEBRA, n.° JCTVC-E226, desvela un esquema de paralelización del procesamiento de contexto para mejorar el rendimiento del codificador de entropía para CABAC.
En vista de lo anterior, sería favorable que existiera un concepto de codificación que permitiera una escalabilidad más eficiente de la relación del códice entre la complejidad de codificación, por un lado, y la eficiencia de codificación, por otro.
Por consiguiente, es un objeto de la presente invención proporcionar dicho concepto de codificación.
Este objeto se logra por la materia de las reivindicaciones independientes adjuntas.
Según una realización, un decodificador para decodificar un flujo de datos en el que se codifican datos multimedia comprende una conmutación de modo configurada para activar un modo de baja complejidad o un modo de alta eficiencia dependiendo del flujo de datos, un motor de decodificación de entropía configurado para recuperar cada símbolo de una secuencia de símbolos mediante decodificación de entropía del flujo de datos usando uno seleccionado de una pluralidad de esquemas de decodificación de entropía, un desimbolizador configurado para desimbolizar la secuencia de símbolos con el fin de obtener una secuencia de elementos de sintaxis, un reconstructor configurado para reconstruir los datos multimedia basándose en la secuencia de elementos de sintaxis, en donde la selección depende del modo activado del modo de baja complejidad y el modo de alta eficiencia.
Según otra realización, un decodificador para decodificar un flujo de datos en el que se codifican datos multimedia comprende una conmutación de modo configurada para activar un modo de baja complejidad o un modo de alta eficiencia dependiendo del flujo de datos, un desimbolizador configurado para desimbolizar una secuencia de símbolos obtenidos del flujo de datos para obtener elementos de sintaxis de valor entero utilizando una función de mapeo controlable por un parámetro de control, para mapear un dominio de palabras de secuencia de símbolos a un codominio de los elementos de sintaxis de valor entero, y un reconstructor configurado para reconstruir los datos multimedia basándose en los elementos de sintaxis de valor entero, en donde el desimbolizador está configurado para realizar la desimbolización de tal manera que el parámetro de control varía según el flujo de datos a una primera velocidad en caso de que se active el modo de alta eficiencia y el parámetro de control es constante independientemente del flujo de datos o cambia dependiendo del flujo de datos, pero a una segunda velocidad inferior a la primera velocidad en caso de que se active el modo de baja complejidad.
A continuación, se describen realizaciones preferidas de la presente solicitud con respecto a las figuras, en las que
la Fig. 1 muestra un diagrama de bloques de un codificador según una realización;
las Fig. 2a-2c muestran esquemáticamente diferentes subdivisiones de una matriz de muestras, tal como una imagen en bloques;
la Fig. 3 muestra un diagrama de bloques de un decodificador según una realización;
la Fig. 4 muestra un diagrama de bloques de un codificador según una realización con más detalle;
la Fig. 5 muestra un diagrama de bloques de un decodificador según una realización con más detalle; la Fig. 6 ilustra esquemáticamente una transformación de un bloque del dominio espacial al dominio espectral, el bloque de transformación resultante y su retransformación;
la Fig. 7 muestra un diagrama de bloques de un codificador según una realización;
la Fig. 8 muestra un diagrama de bloques de un decodificador adecuado para decodificar el flujo de bits generado por el codificador de la Fig. 8, según una realización;
la Fig. 9 muestra un diagrama esquemático que ilustra un paquete de datos con flujos de bits parciales multiplexados según una realización;
la Fig. 10 muestra un diagrama esquemático que ilustra un paquete de datos con una segmentación alternativa usando segmentos de tamaño fijo según una realización adicional;
la Fig. 11 muestra un diagrama de bloques de un codificador según una realización usando entrelazado de flujos de bits parciales;
la Fig. 12 muestra un esquema que ilustra ejemplos del estado de una memoria intermedia de palabras de código en el lado de codificador de la Fig. 11 según una realización;
la Fig. 13 muestra un diagrama de bloques de un decodificador según una realización usando entrelazado de flujos de bits parciales;
la Fig. 14 muestra un diagrama de bloques de un decodificador según una realización usando entrelazado de palabras de código usando un único conjunto de palabras de código;
la Fig. 15 muestra un diagrama de bloques de un decodificador según una realización usando entrelazado de secuencias de bits de longitud fija;
la Fig. 16 muestra un esquema que ilustra ejemplos del estado de una memoria intermedia de bits global en el lado de codificador de la Fig. 15 según una realización;
la Fig. 17 muestra un diagrama de bloques de un decodificador según una realización que usa entrelazado de secuencias de bits de longitud fija;
la Fig. 18 muestra un decodificador que soporta conmutación de modo según una realización;
la Fig. 19 muestra un decodificador que soporta conmutación de modo según una realización adicional; la Fig. 20 muestra un codificador adaptado al decodificador de la Fig. 18 según una realización;
la Fig. 21 muestra un codificador adaptado al decodificador de la Fig. 19 según una realización; y la Fig. 22 muestra mapeo de pStateCtx y fullCtxState/256.
Se indica que, durante la descripción de las figuras, elementos que se producen en varias de estas Figuras se indican con el mismo signo de referencia en cada una de estas Figuras y se evita una descripción repetida de estos elementos en lo que se refiere a la funcionalidad con el fin de evitar repeticiones innecesarias. No obstante, las funcionalidades y descripciones proporcionadas con respecto a una figura también se aplicarán a las otras Figuras a menos que se indique explícitamente lo contrario.
A continuación, en primer lugar, se describen realizaciones de un concepto de codificación de vídeo general, con respecto a las Fig. 1 a 17. Las Fig. 1 a 6 se refieren a la parte del códec de vídeo que funciona a nivel de sintaxis. Las siguientes Fig. 8 a 17 se refieren a realizaciones para la parte del código relacionada con la conversión del flujo de elementos de sintaxis en el flujo de datos y viceversa. Después, se describen aspectos y realizaciones específicos de la presente invención en forma de posibles implementaciones del concepto general explicado resumidamente con respecto a las Fig. 1 a 17. Sin embargo, cabe señalar de antemano que la mayoría de los aspectos de las realizaciones de la presente invención no se limitan a la codificación de vídeo. Lo mismo se aplica a muchos de los detalles que se mencionan a continuación.
La Fig. 1 muestra un ejemplo de un codificador 10 en el que pueden implementarse aspectos de la presente solicitud.
El codificador codifica una matriz de muestras de información 20 en un flujo de datos. La matriz de muestras de información puede representar cualquier tipo de señal de información espacialmente muestreada. Por ejemplo, la matriz de muestras 20 puede ser una imagen fija o una imagen de un vídeo. Por lo tanto, las muestras de información pueden corresponder a valores de brillo, valores de color, valores de luma, valores de croma o similares. Sin embargo, las muestras de información también pueden ser valores de profundidad en caso de que la matriz de muestras 20 sea un mapa de profundidad generado, por ejemplo, mediante un sensor de tiempo de luz o similar. El codificador 10 es un codificador basado en bloques. Es decir, el codificador 10 codifica la matriz de muestras 20 en el flujo de datos 30 en unidades de bloques 40. La codificación en unidades de bloques 40 no significa necesariamente que el codificador 10 codifica estos bloques 40 de manera totalmente independiente unos de otros. En vez de eso, el codificador 10 puede usar reconstrucciones de bloques anteriormente codificados con el fin de extrapolar o realizar intrapredicción de bloques restantes, y puede usar la granuralidad de los bloques para establecer parámetros de codificación, es decir, para establecer la manera en la que se codifica cada región de matriz de muestras correspondiente a un bloque respectivo.
Además, el codificador 10 es un codificador de transformación. Es decir, el codificador 10 codifica los bloques 40 usando una transformación con el fin de transferir las muestras de información dentro de cada bloque 40 del dominio espacial al dominio espectral. Puede usarse una transformación bidimensional, tal como una DCT de FFT o similar. Preferiblemente, los bloques 40 tienen forma cuadrática o forma rectangular.
La subdivisión de la matriz de muestras 20 en bloques 40 mostrada en la Fig. 1 simplemente sirve para fines de ilustración. La Fig. 1 muestra que la matriz de muestras 20 subdividiéndose en una disposición bidimensional regular de bloques 40 cuadráticos o rectangulares que están en contacto unos con otros de una manera no solapante. El tamaño de los bloques 40 puede estar predeterminado. Es decir, el codificador 10 puede no transferir una información sobre el tamaño de bloque de los bloques 40 dentro del flujo de datos 30 al lado de decodificación. Por ejemplo, el decodificador puede esperar el tamaño de bloque predeterminado.
Sin embargo, son posibles varias alternativas. Por ejemplo, los bloques pueden solaparse entre sí. Sin embargo, el solapamiento puede estar restringido hasta un punto tal que cada bloque tiene una porción no solapada por ningún bloque vecino, o de tal manera que cada muestra de los bloques está solapada, como máximo, por un bloque de los bloques vecinos dispuestos en yuxtaposición con respecto al bloque actual a lo largo de una dirección predeterminada. Esto último significará que los bloques vecinos a la izquierda y a la derecha pueden solaparse con el bloque actual para cubrir completamente el bloque actual, pero pueden no solaparse entre sí, y lo mismo se aplica para los vecinos en la dirección vertical y diagonal.
Como alternativa adicional, la subdivisión de la matriz de muestras 20 en bloques 40 puede adaptarse al contenido de la matriz de muestras 20 mediante el codificador 10 transfiriéndose la información de subdivisión sobre la subdivisión usada al lado de decodificador a través del flujo de bits 30.
Las Figuras 2a a 2c muestran diferentes ejemplos para una subdivisión de una matriz de muestras 20 en bloques 40. La Fig. 2a muestra una subdivisión basada en árbol cuádruple de una matriz de muestras 20 en bloques 40 de diferentes tamaños, indicándose bloques representativos en 40a, 40b, 40c y 40d con tamaño creciente. Según la subdivisión de la Fig. 2a, la matriz de muestras 20 se divide en primer lugar en una disposición bidimensional regular de los bloques de árbol 40d que, a su vez, tienen información de subdivisión individual asociada con los mismos según la cual un determinado bloque de árbol 40d puede subdividirse adicionalmente según una estructura de árbol cuádruple o no. El bloque de árbol a la izquierda del bloque 40d se subdivide a modo de ejemplo en bloques más pequeños según una estructura de árbol cuádruple. El codificador 10 puede realizar una transformación bidimensional para cada uno de los bloques mostrados con líneas continuas y discontinuas en la Fig. 2a. Dicho de otro modo, el codificador 10 puede transformar la matriz 20 en unidades de la subdivisión de bloques.
En vez de una subdivisión basada en árbol cuádruple, puede usarse una subdivisión basada en árbol múltiple más general y el número de nodos secundarios por nivel de jerarquía puede diferir entre diferentes niveles de jerarquía. La Fig. 2b muestra otro ejemplo para una subdivisión. Según la Fig. 2b, la matriz de muestras 20 se divide en primer lugar en macrobloques 40b dispuestos en una disposición bidimensional regular de una manera en contacto mutuo no solapante en la que cada macrobloque 40b tiene asociada con el mismo información de subdivisión según la cual un macrobloque no se subdivide, o, si se subdivide, se subdivide de manera bidimensional regular en subbloques de igual tamaño para lograr diferentes granularidades de subdivisión para diferentes macrobloques. El resultado es una subdivisión de la matriz de muestras 20 en bloques 40 de diferentes tamaños indicándose representaciones de los diferentes tamaños en 40a, 40b y 40a'. Como en la Fig. 2a, el codificador 10 realiza una transformación bidimensional en cada uno de los bloques mostrados en la Fig. 2b con las líneas continuas y discontinuas. Más adelante se comentará la Fig. 2c.
La Fig. 3 muestra un decodificador 50 que puede decodificar el flujo de datos 30 generado por el codificador 10 para reconstruir una versión 60 reconstruida de la matriz de muestras 20. El decodificador 50 extrae del flujo de datos 30 el bloque de coeficiente de transformación para cada uno de los bloques 40 y reconstruye la versión 60 reconstruida realizando una transformación inversa en cada uno de los bloques de coeficiente de transformación.
El codificador 10 y el decodificador 50 pueden configurarse para realizar codificación/decodificación de entropía con el fin de insertar la información en los bloques de coeficiente de transformación en el, y extraer esta información del, flujo de datos, respectivamente. Más adelante se describen detalles a este respecto. Debe observarse que el flujo de datos 30 no comprende necesariamente información sobre bloques de coeficiente de transformación para todos los bloques 40 de la matriz de muestras 20. En vez de eso, un subconjunto de bloques 40 puede codificarse en el flujo de bits 30 de otra manera. Por ejemplo, el codificador 10 puede decidir abstenerse de insertar un bloque de coeficiente de transformación para un determinado bloque de los bloques 40 insertando en su lugar en el flujo de bits 30 parámetros de codificación alternativos que permiten al decodificador 50 predecir o rellenar de otro modo el bloque respectivo en la versión 60 reconstruida. Por ejemplo, el codificador 10 puede realizar un análisis de textura con el fin de localizar bloques dentro de la matriz de muestras 20 que pueden rellenarse en el lado de decodificador por el decodificador mediante síntesis de textura e indicar esto dentro del flujo de bits en consecuencia.
Como se comenta con respecto a las siguientes Figuras, los bloques de coeficiente de transformación no representan necesariamente una representación en el dominio espectral de las muestras de información originales de un bloque 40 respectivo de la matriz de muestras 20. En vez de eso, dicho bloque de coeficiente de transformación puede representar una representación en el dominio espectral de un residuo de predicción del bloque 40 respectivo. La Fig. 4 muestra una realización de dicho codificador. El codificador de la Fig. 4 comprende una etapa de transformación 100, un codificador de entropía 102, una etapa de transformación inversa 104, un factor de predicción 106 y un restador 108, así como un sumador 110. El restador 108, la etapa de transformación 100 y el codificador de entropía 102 están conectados en serie en el orden mencionado entre una entrada 112 y una salida 114 del codificador de la Fig. 4. La etapa de transformación inversa 104, el sumador 110 y el factor de predicción 106 están conectados en el orden mencionado entre la salida de la etapa de transformación 100 y la entrada inversa del restador 108, estando también la salida del factor de predicción 106 conectada a una entrada adicional del sumador 110.
El codificador de la Fig. 4 es un codificador de bloques basado en transformación predictivo. Es decir, los bloques de una matriz de muestras 20 que entran en la entrada 112 se predicen a partir de porciones anteriormente codificadas y reconstruidas de la misma matriz de muestras 20 u otras matrices de muestra anteriormente codificadas y reconstruidas que pueden preceder o suceder a la matriz de muestras 20 actual en el tiempo de presentación. La predicción se realiza mediante el factor de predicción 106. El restador 108 resta la predicción de dicho bloque original y la etapa 100 de transformación realiza una transformación bidimensional en los residuos de predicción. La propia transformación bidimensional o una medida posterior dentro de la etapa de transformación 100 puede conducir a una cuantificación de los coeficientes de transformación dentro de los bloques de coeficiente de transformación. Los bloques de coeficiente de transformación cuantificados se codifican sin pérdidas, por ejemplo, mediante codificación de entropía dentro del codificador de entropía 102 emitiéndose el flujo de datos resultante en la salida 114. La etapa de transformación inversa 104 reconstruye el residuo cuantificado y el sumador 110, a su vez, combina el residuo reconstruido con la predicción correspondiente con el fin de obtener muestras de información reconstruidas basándose en las cuales el factor de predicción 106 puede predecir los bloques de predicción actualmente codificados anteriormente mencionados. El factor de predicción 106 puede usar diferentes modos de predicción, tales como modos de intrapredicción y modos de interpredicción con el fin de predecir los bloques y los parámetros de predicción se reenvían al codificador de entropía 102 para su inserción en el flujo de datos. Para cada bloque de predicción predicho por interpredicción, se insertan datos de movimiento respectivos en el flujo de bits mediante el codificador de entropía 114 con el fin de permitir que el lado de decodificación vuelva a realizar la predicción. Los datos de movimiento para un bloque de predicción de una imagen pueden implicar una porción de sintaxis que incluye un elemento de sintaxis que representa una diferencia de vector de movimiento que codifica de manera diferencial el vector de movimiento para el bloque de predicción actual con respecto a un factor de predicción de vector de movimiento derivado, por ejemplo, mediante un método recomendado a partir de los vectores de movimiento de bloques de predicción ya codificados vecinos.
Es decir, según la realización de la Fig. 4, los bloques de coeficiente de transformación representan una representación espectral de un residuo de la matriz de muestras en vez de muestras de información reales de la misma. Es decir, según la realización de la Fig. 4, una secuencia de elementos de sintaxis puede entrar en el codificador de entropía 102 para codificarse entrópicamente en un flujo de datos 114. La secuencia de elementos de sintaxis puede comprender elementos de sintaxis de diferencia de vector de movimiento para bloques de interpredicción y elementos de sintaxis que se refieren a un mapa de significación que indica posiciones de niveles de coeficiente de transformación significativos, así como elementos de sintaxis que definen los propios niveles de coeficiente de transformación significativos, para bloques de transformación.
Debe observarse que existen varias alternativas para la realización de la Fig.4 habiéndose descrito algunas de ellas en la parte introductoria de la memoria descriptiva, cuya descripción se incorpora en la descripción de la Fig. 4 en el presente documento.
La Fig. 5 muestra un decodificador que puede decodificar un flujo de datos generado por el codificador de la Fig. 4. El decodificador de la Fig. 5 comprende un decodificador de entropía 150, una etapa de transformación inversa 152, un sumador 154 y un factor de predicción 156. El decodificador de entropía 150, la etapa de transformación inversa 152 y el sumador 154 están conectados en serie entre una entrada 158 y una salida 160 del decodificador de la Fig. 5 en el orden mencionado. Una salida adicional del decodificador de entropía 150 está conectada al factor de predicción 156 que, a su vez, está conectado entre la salida del sumador 154 y una entrada adicional del mismo. El decodificador de entropía 150 extrae, del flujo de datos que entra en el decodificador de la Fig. 5 en la entrada 158, los bloques de coeficiente de transformación en los que se aplica una transformación inversa a los bloques de coeficiente de transformación en la etapa 152 con el fin de obtener la señal residual. La señal residual se combina con una predicción del factor de predicción 156 en el sumador 154 para obtener un bloque reconstruido de la versión reconstruida de la matriz de muestras en la salida 160. Basándose en las versiones reconstruidas, el factor de predicción 156 genera las predicciones reconstruyendo así las predicciones realizadas mediante el factor de predicción 106 en el lado de codificador. Con el fin de obtener las mismas predicciones que las usadas en el lado de codificador, el factor de predicción 156 usa los parámetros de predicción que el decodificador de entropía 150 también obtiene del flujo de datos en la entrada 158.
Debe observarse que, en las realizaciones descritas anteriormente, la granuralidad espacial a la que se realiza la predicción y la transformación del residuo, no necesitan ser iguales entre sí. Esto se muestra en la Fig. 2C. Esta figura muestra una subdivisión para los bloques de predicción de la granuralidad de predicción con líneas continuas y la granuralidad de residuo con líneas discontinuas. Como puede observarse, las subdivisiones pueden seleccionarse por el codificador de manera independiente una de otra. Más precisamente, la sintaxis de flujo de datos puede permitir una definición de la subdivisión de residuo independiente de la subdivisión de predicción. Alternativamente, la subdivisión de residuo puede ser una extensión de la subdivisión de predicción de modo que cada bloque de residuo es o bien igual a, o bien un subconjunto apropiado de, un bloque de predicción. Esto se muestra en la Fig. 2a y la Fig. 2b, por ejemplo, donde de nuevo la granuralidad de predicción se muestra con líneas continuas y la granuralidad de residuo con líneas discontinuas. Es decir, en las Fig. 2a-2c, todos los bloques que tienen un signo de referencia asociado con los mismos serán bloques de residuo para los que se realizará una transformación bidimensional mientras que los bloques con bloques con línea continua más grandes que abarcan los bloques 40a con línea discontinua, por ejemplo, serán bloques de predicción para los que se realiza individualmente un ajuste de parámetro de predicción.
Las realizaciones anteriores tienen en común que un bloque de muestras (residuales u originales) va a transformarse en el lado de codificador en un bloque de coeficiente de transformación que, a su vez, va a someterse a transformación inversa en un bloque reconstruido de muestras en el lado de decodificador. Esto se ilustra en la Fig. 6. La Fig. 6 muestra un bloque de muestras 200. En el caso de la Fig. 6, este bloque 200 es, a modo de ejemplo, cuadrático y tiene un tamaño de 4x4 muestras 202. Las muestras 202 están dispuestas de manera regular a lo largo de una dirección horizontal x y dirección vertical y. Mediante la transformación bidimensional T anteriormente mencionada, se transforma el bloque 200 en el dominio espectral, concretamente en un bloque 204 de coeficientes de transformación 206, teniendo el bloque de transformación 204 el mismo tamaño que el bloque 200. Es decir, el bloque de transformación 204 tiene tantos coeficientes de transformación 206 como muestras tiene el bloque 200, tanto en la dirección horizontal como en la dirección vertical. Sin embargo, dado que la transformación T es una transformación espectral, las posiciones de los coeficientes de transformación 206 dentro del bloque de transformación 204 no corresponden a las posiciones espaciales, sino más bien a las componentes espectrales del contenido del bloque 200. En particular, el eje horizontal del bloque de transformación 204 corresponde a un eje a lo largo del cual la frecuencia espectral en la dirección horizontal aumenta de manera monotónica mientras que el eje vertical corresponde a un eje a lo largo del cual la frecuencia espacial en la dirección vertical aumenta de manera monotónica, en donde el coeficiente de transformación de componente de DC está situado en una esquina (en este caso, a modo de ejemplo, la esquina superior izquierda) del bloque 204 de modo que en la esquina inferior derecha está situado el coeficiente de transformación 206 correspondiente a la mayor frecuencia en la dirección tanto horizontal como vertical. Despreciando la dirección espacial, la frecuencia espacial a la que pertenece un determinado coeficiente de transformación 206 aumenta generalmente desde la esquina superior izquierda hasta la esquina inferior derecha. Mediante una transformación inversa T-1, el bloque de transformación 204 se transfiere de vuelta desde el dominio espectral hasta el dominio espacial, para volver a obtener una copia 208 del bloque 200. En caso de no haberse introducido ninguna cuantificación/pérdida durante la transformación, la reconstrucción será perfecta.
Como ya se indicó anteriormente, puede observarse a partir de la Fig. 6 que tamaños de bloque superiores del bloque 200 aumentan la resolución espectral de la representación espectral 204 resultante. Por otro lado, el ruido de cuantificación tiende a extenderse sobre todo el bloque 208 y, por tanto, objetos abruptos y muy localizados dentro de los bloques 200 tienden a conducir a desviaciones del bloque retransformado con respecto al bloque 200 original debido al ruido de cuantificación. Sin embargo, la principal ventaja de usar bloques más grandes es que la razón entre el número de coeficientes de transformación (cuantificados) significativos, es decir distintos de cero, es decir niveles, por un lado y el número de coeficientes de transformación insignificantes por otro lado pueden reducirse dentro de bloques más grandes en comparación con bloques más pequeños, permitiendo así una mejor eficiencia de codificación. Dicho de otro modo, con frecuencia, los niveles de coeficiente de transformación significativos, es decir los coeficientes de transformación no cuantificados a cero, se distribuyen por el bloque de transformación 204 de manera dispersa. Debido a esto, según las realizaciones descritas con más detalle a continuación, las posiciones de los niveles de coeficiente de transformación significativos se indican dentro del flujo de datos mediante un mapa de significación. De manera independiente de lo mismo, los valores de los coeficientes de transformación significativos, es decir, los niveles de coeficiente de transformación en el caso de que los coeficientes de transformación estén cuantificados, se transmiten dentro del flujo de datos.
Por tanto, todos los codificadores y decodificadores descritos anteriormente están configurados para tratar con una cierta sintaxis de elementos de sintaxis. Es decir, se supone que los elementos de sintaxis anteriormente mencionados, tales como los niveles de coeficiente de transformación, elementos de sintaxis referentes al mapa de significación de bloques de transformación, los elementos de sintaxis de datos de movimiento referentes a bloques de interpredicción y así sucesivamente, están dispuestos de manera secuencial dentro del flujo de datos de una manera recomendada. Dicha manera recomendada puede representarse en forma de un pseudocódigo tal como se hace, por ejemplo, en la norma H.264 u otros códecs de audio/vídeo.
Dicho incluso de otro modo, la descripción anterior trataba principalmente con la conversión de datos de medios, en este caso a modo de ejemplo datos de vídeo, en una secuencia de elementos de sintaxis según una estructura de sintaxis predefinida que recomienda determinados tipos de elementos de sintaxis, su semántica y el orden entre los mismos. El codificador de entropía y decodificador de entropía de las Fig. 4 y 5 pueden estar configurados para funcionar, y pueden estar estructurados, como se explica resumidamente a continuación. Los mismos son responsables de realizar la conversión entre la secuencia de elementos de sintaxis y el flujo de datos, es decir, flujo de bits o símbolos.
En la Fig. 7 se ilustra un codificador de entropía según una realización. El codificador convierte sin pérdidas un flujo de elementos de sintaxis 301 en un conjunto de dos o más flujos de bits parciales 312.
En una realización preferida de la invención, cada elemento de sintaxis 301 se asocia con una categoría de un conjunto de una o más categorías, es decir, un tipo de elemento de sintaxis. Como ejemplo, las categorías pueden especificar el tipo del elemento de sintaxis. En el contexto de codificación de vídeo híbrida, puede asociarse una categoría independiente con modos de codificación de macrobloques, modos de codificación de bloques, índices de imagen de referencia, diferencias de vector de movimiento, indicadores de subdivisión, indicadores de bloque codificado, parámetros de cuantificación, niveles de coeficiente de transformación, etc. En otros campos de aplicación tales como codificación de audio, voz, texto, documentos o datos en general, son posibles diferentes clasificaciones de elementos de sintaxis.
En general, cada elemento de sintaxis puede adoptar un valor de un conjunto finito o infinito contable de valores, en donde el conjunto de valores de elementos de sintaxis posibles puede diferir para diferentes categorías de elementos de sintaxis. Por ejemplo, hay elementos de sintaxis binarios, así como otros con valores de números enteros.
Para reducir la complejidad del algoritmo de codificación y decodificación y para permitir un diseño de codificación y decodificación general para diferentes elementos de sintaxis y categorías de elementos de sintaxis, los elementos de sintaxis 301 se convierten en conjuntos ordenados de decisiones binarias y después se procesan esas decisiones binarias mediante algoritmos de codificación binaria simples. Por tanto, el binarizador 302 mapea de manera biyectiva el valor de cada elemento de sintaxis 301 en una secuencia (o cadena o palabra) de elementos binarios 303. La secuencia de elementos binarios 303 representa un conjunto de decisiones binarias ordenadas. Cada elemento binario 303 o decisión binaria puede adoptar un valor de un conjunto de dos valores, por ejemplo, uno de los valores 0 y 1. El esquema de binarización puede ser diferente para diferentes categorías de elementos de sintaxis. El esquema de binarización para una categoría de elementos de sintaxis particular puede depender del conjunto de valores de elementos de sintaxis posibles y/u otras propiedades del elemento de sintaxis para la categoría particular.
La Tabla 1 ilustra tres esquemas de binarización a modo de ejemplo para conjuntos infinitos contables. Los esquemas de binarización para conjuntos infinitos contables también pueden aplicarse para conjuntos finitos de valores de elementos de sintaxis. En particular para grandes conjuntos finitos de valores de elementos de sintaxis, la ineficiencia (resultante de secuencias de elementos binarios sin usar) puede ser despreciable, pero la universalidad de dichos esquemas de binarización proporciona una ventaja en cuanto a complejidad y requisitos de memoria. Para conjuntos finitos pequeños de valores de elementos de sintaxis, con frecuencia es preferible (en cuanto a eficiencia de codificación) adaptar el esquema de binarización al número de valores de símbolo posibles.
La Tabla 2 ilustra tres esquemas de binarización a modo de ejemplo para conjuntos finitos de 8 valores. Los esquemas de binarización para conjuntos finitos pueden derivarse a partir de los esquemas de binarización universales para conjuntos infinitos contables modificando algunas secuencias de elementos binarios de manera que los conjuntos finitos de secuencias de elementos binarios representan un código libre de redundancia (y posiblemente reordenando las secuencias de elementos binarios). Como ejemplo, el esquema de binarización unario truncado en la Tabla 2 se creó modificando la secuencia de elementos binarios para el elemento de sintaxis 7 de la binarización unaria universal (véase la Tabla 1). La binarización de Golomb exponencial truncada y reordenada de orden 0 en la Tabla 2 se creó modificando la secuencia de elementos binarios para el elemento de sintaxis 7 de la binarización de orden 0 de Golomb exponencial universal (véase la Tabla 1) y reordenando las secuencias de elementos binarios (la secuencia de elementos binarios truncada para el símbolo 7 se asignó al símbolo 1). Para conjuntos finitos de elementos de sintaxis, también es posible usar esquemas de binarización no sistemáticos / no universales, tal como se muestra a modo de ejemplo en la última columna de la Tabla 2.
Tabla 1: Ejemplos de binarización para conjuntos infinitos contables (o grandes conjuntos finitos).
Tabla 2: Ejemplos de binarización para conjuntos finitos.
Cada elemento binario 303 de la secuencia de elementos binarios creada mediante el binarizador 302 se alimenta al asignador de parámetros 304 en orden secuencial. El asignador de parámetros asigna un conjunto de uno o más parámetros a cada elemento binario 303 y emite el elemento binario con el conjunto asociado de parámetros 305. El conjunto de parámetros se determina exactamente de la misma manera en el codificador y en el decodificador. El conjunto de parámetros puede consistir en uno o más de los siguientes parámetros:
En particular, el asignador de parámetros 304 puede estar configurado para asignar a un elemento binario 303 actual un modelo de contexto. Por ejemplo, el asignador de parámetros 304 puede seleccionar uno de los índices de contexto disponibles para el elemento binario 303 actual. El conjunto disponible de contextos para un elemento binario 303 actual puede depender del tipo del elemento binario que, a su vez, puede estar definido por el tipo/categoría del elemento de sintaxis 301, la binarización de la que forma parte el elemento binario 303 actual, y una posición del elemento binario 303 actual dentro de esta última binarización. La selección de contexto entre el conjunto de contextos disponibles puede depender de elementos binarios anteriores y los elementos de sintaxis asociados con estos últimos. Cada uno de estos contextos tiene un modelo de probabilidad asociado con el mismo, es decir una medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual. El modelo de probabilidad puede ser en particular una medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario actual, definiéndose adicionalmente un modelo de probabilidad mediante un identificador que especifica una estimación de cuál de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable o más probable para el elemento binario 303 actual. En el caso de estar disponible simplemente un contexto para el elemento binario actual, la selección de contexto puede omitirse. Como se explicará resumidamente con más detalle a continuación, el asignador de parámetros 304 también puede realizar una adaptación de modelo de probabilidad con el fin de adaptar los modelos de probabilidad asociados con los diversos contextos a las estadísticas de elementos binarios reales de los elementos binarios respectivos que pertenecen a los contextos respectivos.
Como también se describirá con más detalle a continuación, el asignador de parámetros 304 puede funcionar de manera diferente dependiendo de que se active un modo de alta eficiencia (HE) o modo de baja complejidad (LC). En ambos modos, el modelo de probabilidad asocia el elemento binario 303 actual a cualquiera de los codificadores de elementos binarios 310, como se explicará resumidamente a continuación, pero el modo de funcionamiento del asignador de parámetros 304 tiende a ser menos complejo en el modo de LC, sin embargo aumentándose la eficiencia de codificación en el modo de alta eficiencia debido a que el asignador de parámetros 304 hace que la asociación de los elementos binarios 303 individuales con los codificadores individuales 310 se adapte de manera más precisa a las estadísticas de elementos binarios, optimizando así la entropía con respecto al modo de LC.
Cada elemento binario con un conjunto de parámetros 305 asociado que se emite del asignador de parámetros 304 se alimenta a un selector de memoria intermedia de elementos binarios 306. El selector de memoria intermedia de elementos binarios 306 modifica posiblemente el valor del elemento binario de entrada 305 basándose en el valor de elemento binario de entrada y los parámetros 305 asociados y alimenta el elemento binario de salida 307 (con un valor posiblemente modificado) a una de dos o más memorias intermedias de elementos binarios 308. La memoria intermedia de elementos binarios 308 a la que se envía el elemento binario de salida 307 se determina basándose en el valor del elemento binario de entrada 305 y/o el valor de los parámetros 305 asociados.
En una realización preferida de la invención, el selector de memoria intermedia de elementos binarios 306 no modifica el valor del elemento binario, es decir, el elemento binario de salida 307 siempre tiene el mismo valor que el elemento binario de entrada 305. En una realización preferida adicional de la invención, el selector de memoria intermedia de elementos binarios 306 determina el valor de elemento binario de salida 307 basándose en el valor de elemento binario de entrada 305 y la medida asociada de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual. En una realización preferida de la invención, el valor de elemento binario de salida 307 se establece igual al valor de elemento binario de entrada 305 si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual es menor que (o menor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual es mayor que o igual a (o mayor que) un umbral particular, el valor de elemento binario de salida 307 se modifica (es decir, se establece al opuesto del valor de elemento binario de entrada). En una realización preferida adicional de la invención, el valor de elemento binario de salida 307 se establece igual al valor de elemento binario de entrada 305 si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual es mayor que (o mayor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual es menor que o igual a (o menor que) un umbral particular, el valor de elemento binario de salida 307 se modifica (es decir, se establece al opuesto del valor de elemento binario de entrada). En una realización preferida de la invención, el valor del umbral corresponde a un valor de 0,5 para la probabilidad estimada para ambos valores de elemento binario posibles.
En una realización preferida adicional de la invención, el selector de memoria intermedia de elementos binarios 306 determina el valor de elemento binario de salida 307 basándose en el valor de elemento binario de entrada 305 y el identificador asociado que especifica una estimación de cuál de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable o más probable para el elemento binario actual. En una realización preferida de la invención, el valor de elemento binario de salida 307 se establece igual al valor de elemento binario de entrada 305 si el identificador especifica que el primero de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable (o más probable) para el elemento binario actual, y el valor de elemento binario de salida 307 se modifica (es decir, se establece al opuesto del valor de elemento binario de entrada) si el identificador especifica que el segundo de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable (o más probable) para el elemento binario actual.
En una realización preferida de la invención, el selector de memoria intermedia de elementos binarios 306 determina la memoria intermedia de elementos binarios 308 a la que se envía el elemento binario de salida 307 basándose en la medida asociada de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual. En una realización preferida de la invención, el conjunto de valores posibles para la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles es finito y el selector de memoria intermedia de elementos binarios 306 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 308 con cada valor posible para la estimación de la probabilidad para uno de los dos valores de elemento binario posibles, en el que diferentes valores para la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles pueden asociarse con la misma memoria intermedia de elementos binarios 308. En una realización preferida adicional de la invención, el intervalo de valores posibles para la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles se reparte en varios intervalos, el selector de memoria intermedia de elementos binarios 306 determina el índice de intervalo para la medida actual de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles, y el selector de memoria intermedia de elementos binarios 306 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 308 con cada valor posible para el índice de intervalo, en el que diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de elementos binarios 308. En una realización preferida de la invención, elementos binarios de entrada 305 con medidas opuestas de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles (medidas opuestas son aquellas que representan estimaciones de probabilidad P y 1 - P) se alimentan a la misma memoria intermedia de elementos binarios 308. En una realización preferida adicional de la invención, la asociación de la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario actual con una memoria intermedia de elementos binarios particular se adapta a lo largo del tiempo, por ejemplo, con el fin de garantizar que los flujos de bits parciales creados tienen tasas de transferencia de bits similares. Más a continuación, el índice de intervalo también se denominará índice de PIPE, mientras que el índice de PIPE junto con un índice de refinamiento y un indicador que indica el valor de elemento binario más probable indexa el modelo de probabilidad real, es decir, la estimación de probabilidad.
En una realización preferida adicional de la invención, el selector de memoria intermedia de elementos binarios 306 determina la memoria intermedia de elementos binarios 308 a la que se envía el elemento binario de salida 307 basándose en la medida asociada de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario actual. En una realización preferida de la invención, el conjunto de valores posibles para la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable es finito y el selector de memoria intermedia de elementos binarios 306 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 308 con cada valor posible de la estimación de la probabilidad para el valor de elemento binario menos probable o más probable, en el que diferentes valores para la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable pueden asociarse con la misma memoria intermedia de elementos binarios 308. En una realización preferida adicional de la invención, el intervalo de valores posibles para la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable se reparte en varios intervalos, el selector de memoria intermedia de elementos binarios 306 determina el índice de intervalo para la medida actual de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable, y el selector de memoria intermedia de elementos binarios 306 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 308 con cada valor posible para el índice de intervalo, en el que diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de elementos binarios 308. En una realización preferida adicional de la invención, la asociación de la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario actual con una memoria intermedia de elementos binarios particular se adapta a lo largo del tiempo, por ejemplo, con el fin de garantizar que los flujos de bits parciales creados tienen tasas de transferencia de bits similares.
Cada una de las dos o más memorias intermedias de elementos binarios 308 está conectada exactamente con un codificador de elementos binarios 310 y cada codificador de elementos binarios solo está conectado con una memoria intermedia de elementos binarios 308. Cada codificador de elementos binarios 310 lee elementos binarios a partir de la memoria intermedia de elementos binarios 308 asociada y convierte una secuencia de elementos binarios 309 en una palabra de código 311, que representa una secuencia de bits. Las memorias intermedias de elementos binarios 308 representan memorias intermedias de primero en entrar primero en salir; los elementos binarios que se alimentan más tarde (en orden secuencial) en una memoria intermedia de elementos binarios 308 no se codifican antes que elementos binarios que se alimentan más temprano (en orden secuencial) en la memoria intermedia de elementos binarios. Las palabras de código 311 que se emiten de un codificador de elementos binarios 310 particular se escriben en un flujo de bits parcial 312 particular. El algoritmo de codificación global convierte los elementos 301 de sintaxis en dos o más flujos de bits 312 parciales, donde el número de flujos de bits parciales es igual al número de memorias intermedias de elementos binarios y codificadores de elementos binarios. En una realización preferida de la invención, un codificador de elementos binarios 310 convierte un número variable de elementos binarios 309 en una palabra de código 311 de un número variable de bits. Una ventaja de las realizaciones de la invención explicadas de manera resumida anteriormente y a continuación es que la codificación de elementos binarios puede realizarse en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), lo que reduce el tiempo de procesamiento para varias implementaciones.
Otra ventaja de realizaciones de la invención es que la codificación de elementos binarios, que se realiza mediante los codificadores de elementos binarios 310, puede diseñarse específicamente para diferentes conjuntos de parámetros 305. En particular, la codificación de elementos binarios y codificación pueden optimizarse (en cuanto a eficiencia de codificación y/o complejidad) para diferentes grupos de probabilidades estimadas. Por un lado, esto permite una reducción de la complejidad de codificación/decodificación, y, por otro lado, permite una mejora de la eficiencia de codificación. En una realización preferida de la invención, los codificadores de elementos binarios 310 implementan diferentes algoritmos de codificación (es decir mapeo de secuencias de elementos binarios en palabras de código) para diferentes grupos de medidas de una estimación de la probabilidad para uno de los dos valores de elemento binario 305 posibles para el elemento binario actual. En una realización preferida adicional de la invención, los codificadores de elementos binarios 310 implementan diferentes algoritmos de codificación para diferentes grupos de medidas de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario actual.
En una realización preferida de la invención, los codificadores de elementos binarios 310 (o uno o más de los codificadores de elementos binarios) representan codificadores de entropía que mapean directamente secuencias de elementos binarios de entrada 309 en palabras de código 310. Dichos mapeos pueden implementarse de manera eficiente y no requieren un motor de codificación aritmética complejo. El mapeo inverso de palabras de código en secuencias de elementos binarios (como se realiza en el decodificador) debe ser único con el fin de garantizar una decodificación perfecta de la secuencia de entrada, pero el mapeo de secuencias de elementos binarios 309 en palabras de código 310 no necesita ser necesariamente único, es decir, es posible que una secuencia de elementos binarios particular pueda mapearse en más de una secuencia de palabras de código. En una realización preferida de la invención, el mapeo de secuencias de elementos binarios de entrada 309 en palabras de código 310 es biyectivo. En una realización preferida adicional de la invención, los codificadores de elementos binarios 310 (o uno o más de los codificadores de elementos binarios) representan codificadores de entropía que mapean directamente secuencias de longitud variable de elementos binarios de entrada 309 en palabras de código 310 de longitud variable. En una realización preferida de la invención, las palabras de código de salida representan códigos libres de redundancia, tales como códigos de Huffman generales o códigos de Huffman canónicos.
En la Tabla 3 se ilustran dos ejemplos para el mapeo biyectivo de secuencias de elementos binarios en códigos libres de redundancia. En una realización preferida adicional de la invención, las palabras de código de salida representan códigos redundantes adecuados para la detección de errores y recuperación de errores. En una realización preferida adicional de la invención, las palabras de código de salida representan códigos de cifrado adecuados para cifrar los elementos de sintaxis.
Tabla 3: Ejemplos de mapeos entre secuencias de elementos binarios y palabras de código.
En una realización preferida adicional de la invención, los codificadores de elementos binarios 310 (o uno o más de los codificadores de elementos binarios) representan codificadores de entropía que mapean directamente secuencias de longitud variable de elementos binarios de entrada 309 en palabras de código de longitud fija 310. En una realización preferida adicional de la invención, los codificadores de elementos binarios 310 (o uno o más de los codificadores de elementos binarios) representan codificadores de entropía que mapean directamente secuencias de longitud fija de elementos binarios de entrada 309 en palabras de código de longitud variable 310.
El decodificador según una realización de la invención se ilustra en la Figura 8. El decodificador realiza básicamente las operaciones inversas al codificador, de modo que la secuencia (anteriormente codificada) de elementos de sintaxis 327 se decodifica a partir de un conjunto de dos o más flujos de bits parciales 324. El decodificador incluye dos flujos de proceso diferentes: un flujo para solicitudes de datos, que copia el flujo de datos del codificador, y un flujo de datos, que representa la inversa del flujo de datos del codificador. En la ilustración en la Fig. 8, las flechas discontinuas representan el flujo de solicitud de datos, mientras que las flechas continuas representan el flujo de datos. Los bloques estructurales del decodificador básicamente copian los bloques estructurales del codificador, pero implementan las operaciones inversas.
La decodificación de un elemento de sintaxis se activa mediante una solicitud de un nuevo elemento de sintaxis decodificado 313 que se envía al binarizador 314. En una realización preferida de la invención, cada solicitud de un nuevo elemento de sintaxis decodificado 313 se asocia con una categoría de un conjunto de una o más categorías. La categoría que se asocia con una solicitud de un elemento de sintaxis es la misma que la categoría que se asoció con el elemento de sintaxis correspondiente durante la codificación.
El binarizador 314 mapea la solicitud de un elemento de sintaxis 313 en una o más solicitudes de un elemento binario que se envían al asignador de parámetros 316. Como respuesta final a una solicitud de un elemento binario que se envía al asignador de parámetros 316 por el binarizador 314, el binarizador 314 recibe un elemento binario decodificado 326 desde el selector de memoria intermedia de elementos binarios 318. El binarizador 314 compara la secuencia recibida de elementos binarios decodificados 326 con las secuencias de elementos binarios de un esquema de binarización particular para el elemento de sintaxis solicitado y, si la secuencia recibida de elementos binarios decodificados 26 coincide con la binarización de un elemento de sintaxis, el binarizador vacía su memoria intermedia de elementos binarios y emite el elemento de sintaxis decodificado como respuesta final a la solicitud de un nuevo símbolo decodificado. Si la secuencia ya recibida de elementos binarios decodificados no coincide con ninguna de las secuencias de elementos binarios para el esquema de binarización para el elemento de sintaxis solicitado, el binarizador envía otra solicitud de un elemento binario al asignador de parámetros hasta que la secuencia de elementos binarios decodificados coincide con una de las secuencias de elementos binarios del esquema de binarización para el elemento de sintaxis solicitado. Para cada solicitud de un elemento de sintaxis, el decodificador usa el mismo esquema de binarización que se usó para codificar el elemento de sintaxis correspondiente. El esquema de binarización puede ser diferente para diferentes categorías de elementos de sintaxis. El esquema de binarización para una categoría de elementos de sintaxis particular puede depender del conjunto de valores de elementos de sintaxis posibles y/u otras propiedades de los elementos de sintaxis para la categoría particular.
El asignador de parámetros 316 asigna un conjunto de uno o más parámetros a cada solicitud de un elemento binario y envía la solicitud de un elemento binario con el conjunto asociado de parámetros al selector de memoria intermedia de elementos binarios. El conjunto de parámetros que se asignan a un elemento binario solicitado por el asignador de parámetros es el mismo que se asignó al elemento binario correspondiente durante la codificación. El conjunto de parámetros puede consistir en uno o más de los parámetros que se mencionan en la descripción del codificador de la Fig. 7.
En una realización preferida de la invención, el asignador de parámetros 316 asocia cada solicitud de un elemento binario con los mismos parámetros con los que la asoció el asignador 304, es decir, un contexto y su medida asociada de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario solicitado actual, como una medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario solicitado actual y un identificador que especifica una estimación de cuál de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable o más probable para el elemento binario solicitado actual.
El asignador de parámetros 316 puede determinar una o más de las medidas de probabilidad anteriormente mencionadas (medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario solicitado actual, medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario solicitado actual, identificador que especifica una estimación de cuál de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable o más probable para el elemento binario solicitado actual) basándose en un conjunto de uno o más símbolos ya decodificados. La determinación de las medidas de probabilidad para una solicitud particular de un elemento binario copia el proceso en el codificador para el elemento binario correspondiente. Los símbolos decodificados que se usan para determinar las medidas de probabilidad pueden incluir uno o más símbolos ya decodificados de la misma categoría de símbolo, uno o más símbolos ya decodificados de la misma categoría de símbolo que corresponden a conjuntos de datos (tales como bloques o grupos de muestras) de ubicaciones espaciales y/o temporales vecinas (con respecto al conjunto de datos asociado con la solicitud actual de un elemento de sintaxis), o uno o más símbolos ya decodificados de diferentes categorías de símbolo que corresponden a conjuntos de datos de ubicaciones espaciales y/o temporales iguales y/o vecinas (con respecto al conjunto de datos asociado con la solicitud actual de un elemento de sintaxis).
Cada solicitud de un elemento binario con un conjunto asociado de parámetros 317 que se emite del asignador de parámetros 316 se alimenta a un selector de memoria intermedia de elementos binarios 318. Basándose en el conjunto de parámetros 317 asociado, el selector de memoria intermedia de elementos binarios 318 envía una solicitud de un elemento binario 319 a una de dos o más memorias intermedias de elementos binarios 320 y recibe un elemento binario decodificado 325 de la memoria intermedia de elementos binarios 320 seleccionada. Posiblemente se modifica el elemento binario de entrada decodificado 325 y el elemento binario de salida decodificado 326 (con un valor posiblemente modificado) se envía al binarizador 314 como respuesta final a la solicitud de un elemento binario con un conjunto de parámetros 317 asociado.
La memoria intermedia de elementos binarios 320 a la que se reenvía la solicitud de un elemento binario se selecciona de la misma manera que la memoria intermedia de elementos binarios a la que se envió el elemento binario de salida del selector de memoria intermedia de elementos binarios en el lado de codificador.
En una realización preferida de la invención, el selector de memoria intermedia de elementos binarios 318 determina la memoria intermedia de elementos binarios 320 a la que se envía la solicitud de un elemento binario 319 basándose en la medida asociada de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario solicitado actual. En una realización preferida de la invención, el conjunto de valores posibles para la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles es finito y el selector de memoria intermedia de elementos binarios 318 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 320 con cada valor posible de la estimación de la probabilidad para uno de los dos valores de elemento binario posibles, donde diferentes valores para la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles pueden asociarse con la misma memoria intermedia de elementos binarios 320. En una realización preferida adicional de la invención, el intervalo de valores posibles para la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles se reparte en varios intervalos, el selector de memoria intermedia de elementos binarios 318 determina el índice de intervalo para la medida actual de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles, y el selector de memoria intermedia de elementos binarios 318 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 320 con cada valor posible para el índice de intervalo, donde diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de elementos binarios 320. En una realización preferida de la invención, solicitudes de elementos binarios 317 con medidas opuestas de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles (medidas opuestas son aquellas que representan estimaciones de probabilidad P y 1 - P) se reenvían a la misma memoria intermedia de elementos binarios 320. En una realización preferida adicional de la invención, la asociación de la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para la solicitud de elemento binario actual con una particular memoria intermedia de elementos binarios se adapta a lo largo del tiempo.
En una realización preferida adicional de la invención, el selector de memoria intermedia de elementos binarios 318 determina la memoria intermedia de elementos binarios 320 a la que se envía la solicitud de un elemento binario 319 basándose en la medida asociada de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario solicitado actual. En una realización preferida de la invención, el conjunto de valores posibles para la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable es finito y el selector de memoria intermedia de elementos binarios 318 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 320 con cada valor posible de la estimación de la probabilidad para el valor de elemento binario menos probable o más probable, en el que diferentes valores para la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable pueden asociarse con la misma memoria intermedia de elementos binarios 320. En una realización preferida adicional de la invención, el intervalo de valores posibles para la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable se reparte en varios intervalos, el selector de memoria intermedia de elementos binarios 318 determina el índice de intervalo para la medida actual de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable, y el selector de memoria intermedia de elementos binarios 318 contiene una tabla que asocia exactamente una memoria intermedia de elementos binarios 320 con cada valor posible para el índice de intervalo, en el que diferentes valores para el índice de intervalo pueden asociarse con la misma memoria intermedia de elementos binarios 320. En una realización preferida adicional de la invención, la asociación de la medida de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para la solicitud de elemento binario actual con una memoria intermedia de elementos binarios particular se adapta a lo largo del tiempo.
Tras recibir un elemento binario decodificado 325 desde la memoria intermedia de elementos binarios 320 seleccionada, el selector de memoria intermedia de elementos binarios 318 modifica posiblemente el elemento binario de entrada 325 y envía el elemento binario de salida 326 (con un valor posiblemente modificado) al binarizador 314. El mapeo de elemento binario de entrada/salida del selector de memoria intermedia de elementos binarios 318 es la inversa del mapeo de elemento binario de entrada/salida del selector de memoria intermedia de elementos binarios en el lado de codificador.
En una realización preferida de la invención, el selector de memoria intermedia de elementos binarios 318 no modifica el valor del elemento binario, es decir, el elemento binario de salida 326 siempre tiene el mismo valor que el elemento binario de entrada 325. En una realización preferida adicional de la invención, el selector de memoria intermedia de elementos binarios 318 determina el valor de elemento binario de salida 326 basándose en el valor de elemento binario de entrada 325 y la medida de una estimación de la probabilidad para uno de los dos valores de elemento binario posibles para el elemento binario solicitado actual que está asociado con la solicitud de un elemento binario 317. En una realización preferida de la invención, el valor de elemento binario de salida 326 se establece igual al valor de elemento binario de entrada 325 si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para la solicitud de elemento binario actual es menor que (o menor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para la solicitud de elemento binario actual es mayor que o igual a (o mayor que) un umbral particular, el valor de elemento binario de salida 326 se modifica (es decir, se establece al opuesto del valor de elemento binario de entrada). En una realización preferida adicional de la invención, el valor de elemento binario de salida 326 se establece igual al valor de elemento binario de entrada 325 si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para la solicitud de elemento binario actual es mayor que (o mayor que o igual a) un umbral particular; si la medida de la probabilidad para uno de los dos valores de elemento binario posibles para la solicitud de elemento binario actual es menor que o igual a (o menor que) un umbral particular, el valor de elemento binario de salida 326 se modifica (es decir, se establece al opuesto del valor de elemento binario de entrada). En una realización preferida de la invención, el valor del umbral corresponde a un valor de 0,5 para la probabilidad estimada para ambos valores de elemento binario posibles.
En una realización preferida adicional de la invención, el selector de memoria intermedia de elementos binarios 318 determina el valor de elemento binario de salida 326 basándose en el valor de elemento binario de entrada 325 y el identificador, que especifica una estimación de cuál de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable o más probable para la solicitud de elemento binario actual, que se asocia con la solicitud de un elemento binario 317. En una realización preferida de la invención, el valor de elemento binario de salida 326 se establece igual al valor de elemento binario de entrada 325 si el identificador especifica que el primero de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable (o más probable) para la solicitud de elemento binario actual, y el valor de elemento binario de salida 326 se modifica
(es decir, se establece al opuesto del valor de elemento binario de entrada) si el identificador especifica que el segundo de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable (o más probable) para la solicitud de elemento binario actual.
Como se describió anteriormente, el selector de memoria intermedia de elementos binarios envía una solicitud de un elemento binario 319 a una de las dos o más memorias intermedias de elementos binarios 320. Las memorias intermedias de elementos binarios 20 representan memorias intermedias de primero en entrar primero en salir, que se alimentan con secuencias de elementos binarios decodificados 321 desde los decodificadores de elementos binarios conectados 322. Como respuesta a una solicitud de un elemento binario 319 que se envía a una memoria intermedia de elementos binarios 320 desde el selector de memoria intermedia de elementos binarios 318, la memoria intermedia de elementos binarios 320 retira de su contenido el elemento binario que se alimentó en primer lugar en la memoria intermedia de elementos binarios 320 y lo envía al selector de memoria intermedia de elementos binarios 318. Los elementos binarios que se envían más temprano a la memoria intermedia de elementos binarios 320 se retiran más temprano y se envían al selector de memoria intermedia de elementos binarios 318.
Cada una de las dos o más memorias intermedias de elementos binarios 320 está conectada con exactamente un decodificador de elementos binarios 322 y cada decodificador de elementos binarios solo está conectado con una memoria intermedia de elementos binarios 320. Cada decodificador de elementos binarios 322 lee palabras de código 323, que representan secuencias de bits, a partir de un flujo de bits parcial 324 independiente. El decodificador de elementos binarios convierte una palabra de código 323 en una secuencia de elementos binarios
321 que se envía a la memoria intermedia de elementos binarios 320 conectada. El algoritmo de decodificación global convierte dos o más flujos de bits parciales 324 en varios elementos de sintaxis decodificados, en donde el número de flujos de bits parciales es igual al número de memorias intermedias de elementos binarios y decodificadores de elementos binarios y la decodificación de elementos de sintaxis se activa mediante solicitudes de nuevos elementos de sintaxis. En una realización preferida de la invención, un decodificador de elementos 322 binarios convierte palabras de código 323 de un número variable de bits en una secuencia de un número variable de elementos binarios 321. Una ventaja de realizaciones de la invención es que la decodificación de elementos binarios a partir de los dos o más flujos de bits parciales puede realizarse en paralelo (por ejemplo, para diferentes grupos de medidas de probabilidad), lo cual reduce el tiempo de procesamiento para varias implementaciones.
Otra ventaja de realizaciones de la invención es que la decodificación de elementos binarios, que se realiza mediante los decodificadores de elementos binarios 322, puede diseñarse específicamente para diferentes conjuntos de parámetros 317. En particular, la codificación y decodificación de elementos binarios pueden optimizarse (en cuanto a eficiencia de codificación y/o complejidad) para diferentes grupos de probabilidades estimadas. Por un lado, esto permite una reducción de la complejidad de codificación/decodificación con respecto a algoritmos de codificación de entropía del estado de la técnica con eficiencia de codificación similar. Por otro lado, permite una mejora de la eficiencia de codificación con respecto a algoritmos de codificación de entropía del estado de la técnica con complejidad de codificación/decodificación similar. En una realización preferida de la invención, los decodificadores de elementos binarios 322 implementan diferentes algoritmos de decodificación (es decir mapeo de secuencias de elementos binarios en palabras de código) para diferentes grupos de medidas de una estimación de la probabilidad para uno de los dos valores de elemento binario 317 posibles para la solicitud de elemento binario actual. En una realización preferida adicional de la invención, los decodificadores de elementos binarios 322 implementan diferentes algoritmos de decodificación para diferentes grupos de medidas de una estimación de la probabilidad para el valor de elemento binario menos probable o más probable para el elemento binario solicitado actual.
Los decodificadores de elementos binarios 322 realizan el mapeo inverso a los codificadores de elementos binarios correspondientes en el lado de codificador.
En una realización preferida de la invención, los decodificadores de elementos binarios 322 (o uno o más de los decodificadores de elementos binarios) representan decodificadores de entropía que mapean directamente palabras de código 323 en secuencias de elementos binarios 321. Dichos mapeos pueden implementarse de manera eficiente y no requieren un motor de codificación aritmética complejo. El mapeo de palabras de código en secuencias de elementos binarios tiene que ser único. En una realización preferida de la invención, el mapeo de palabras de código en 323 secuencias de elementos binarios 321 es biyectivo. En una realización preferida adicional de la invención, los decodificadores de elementos binarios 310 (o uno o más de los decodificadores de elementos binarios) representan decodificadores de entropía que mapean directamente palabras de código 323 de longitud variable en secuencias de longitud variable de elementos binarios 321. En una realización preferida de la invención, las palabras de código de entrada representan códigos libres de redundancia tales como códigos de Huffman generales o códigos de Huffman canónicos. En la Tabla 3 se ilustran dos ejemplos del mapeo biyectivo de códigos libres de redundancia en secuencias de elementos binarios.
En una realización preferida adicional de la invención, los decodificadores de elementos binarios 322 (o uno o más de los decodificadores de elementos binarios) representan decodificadores de entropía que mapean directamente palabras de código 323 de longitud fija en secuencias de longitud variable de elementos binarios 321. En una realización preferida adicional de la invención, los decodificadores de elementos binarios 322 (o uno o más de los decodificadores de elementos binarios) representan decodificadores de entropía que mapean directamente palabras de código 323 de longitud variable en secuencias de longitud fija de elementos binarios 321.
Por tanto, las Fig. 7 y 8 mostraban una realización de un codificador para codificar una secuencia de símbolos 3 y un decodificador para reconstruir la misma. El codificador comprende un asignador 304 configurado para asignar varios parámetros 305 a cada símbolo de la secuencia de símbolos. La asignación se basa en información contenida dentro de símbolos anteriores de la secuencia de símbolos tal como la categoría del elemento de sintaxis 1 a cuya representación (tal como binarización) pertenece el símbolo actual y que, según la estructura de sintaxis de los elementos de sintaxis 1, se espera actualmente, expectativa que, a su vez, puede deducirse a partir del historial de elementos de sintaxis 1 y símbolos 3 anteriores. Además, el codificador comprende una pluralidad de codificadores de entropía 10 cada uno de los cuales está configurado para convertir los símbolos 3 reenviados al codificador de entropía respectivo en un flujo de bits 312 respectivo, y un selector 306 configurado para reenviar cada símbolo 3 a uno seleccionado de la pluralidad de codificadores de entropía 10, dependiendo la selección del número de parámetros 305 asignados al símbolo 3 respectivo. Puede considerarse que el asignador 304 está integrado en el selector 206 con el fin de proporcionar un selector 502 respectivo.
El decodificador para reconstruir una secuencia de símbolos comprende una pluralidad de decodificadores de entropía 322, cada uno de los cuales está configurado para convertir un flujo de bits 323 respectivo en símbolos 321; un asignador 316 configurado para asignar varios parámetros 317 a cada símbolo 315 de una secuencia de símbolos que va a reconstruirse basándose en información contenida dentro de símbolos anteriormente reconstruidos de la secuencia de símbolos (véanse 326 y 327 en la Fig. 8); y un selector 318 configurado para recuperar cada símbolo de la secuencia de símbolos que va a reconstruirse a partir de uno seleccionado de la pluralidad de decodificadores de entropía 322, dependiendo la selección del número de parámetros definidos en el símbolo respectivo. El asignador 316 puede estar configurado de tal manera que el número de parámetros asignados a cada símbolo comprende, o es, una medida de una estimación de una probabilidad de distribución entre los valores de símbolo posibles que puede adoptar un símbolo respectivo. De nuevo, puede considerarse que el asignador 316 y el selector 318 están integrados en un bloque, un selector 402. La secuencia de símbolos que va a reconstruirse puede ser de un alfabeto binario y el asignador 316 puede estar configurado de tal manera que la estimación de la distribución de probabilidad consiste en una medida de una estimación de una probabilidad de un valor de elemento binario menos probable o más probable de los dos valores de elemento binario posibles del alfabeto binario y un identificador que especifica una estimación de cuál de los dos valores de elemento binario posibles representa el valor de elemento binario menos probable o más probable. El asignador 316 puede estar configurado además para asignar de manera interna un contexto a cada símbolo de la secuencia de símbolos 315 que va a reconstruirse basándose en la información contenida dentro de símbolos anteriormente reconstruidos de la secuencia de símbolos que va a reconstruirse teniendo cada contexto una estimación de distribución de probabilidad respectiva asociada con el mismo, y para adaptar la estimación de distribución de probabilidad para cada contexto a una estadística de símbolo real basándose en valores de símbolo de símbolos anteriormente reconstruidos a los que se asigna el contexto respectivo. El contexto puede tener en cuenta una relación espacial o de vecindario de posiciones al que pertenecen los elementos de sintaxis, tal como en codificación de vídeo o imágenes, o incluso en tablas en el caso de aplicaciones financieras. Entonces, la medida de la estimación de la distribución de probabilidad para cada símbolo puede determinarse basándose en la estimación de distribución de probabilidad asociada con el contexto asignado al símbolo respectivo, tal como mediante cuantificación, o usando como índice en una tabla respectiva, la estimación de distribución de probabilidad asociada con el contexto asignado con el símbolo respectivo (en las siguientes realizaciones indexado mediante un índice de PIPE junto con un índice de refinamiento) a uno de una pluralidad de representantes de estimación de distribución de probabilidad (eliminando mediante el recorte del índice de refinamiento) con el fin de obtener la medida de la estimación de la distribución de probabilidad (indexando el índice de PIPE el flujo de bits parcial 312). El selector puede estar configurado de tal manera que se define una asociación biyectiva entre la pluralidad de codificadores de entropía y la pluralidad de representantes de estimación de distribución de probabilidad. El selector 18 puede estar configurado para cambiar un mapeo de cuantificación desde un intervalo de las estimaciones de distribución de probabilidad hasta la pluralidad de representaciones de estimación de distribución de probabilidad de una manera determinista predeterminada dependiendo de símbolos anteriormente reconstruidos de la secuencia de símbolos, a lo largo del tiempo. Es decir, el selector 318 puede cambiar los tamaños de etapa de cuantificación, es decir los intervalos de distribuciones de probabilidad mapeados en los índices de probabilidad individuales asociados de manera biyectiva con los decodificadores de entropía individuales. La pluralidad de decodificadores de entropía 322, a su vez, pueden estar configurados para adaptar su manera de convertir símbolos en flujos de bits sensibles a un cambio en el mapeo de cuantificación. Por ejemplo, cada decodificador de entropía 322 puede estar optimizado, es decir puede tener una tasa de compresión óptima, para una determinada estimación de distribución de probabilidad dentro del intervalo de cuantificación de estimación de distribución de probabilidad respectiva, y puede cambiar su mapeo de palabra de código/secuencia de símbolos para adaptar la posición de esta determinada estimación de distribución de probabilidad dentro del intervalo de cuantificación de estimación de distribución de probabilidad respectiva tras un cambio de este último para optimizarse. El selector puede estar configurado para cambiar el mapeo de cuantificación de tal manera que tasas mediante las cuales se recuperan los símbolos de la pluralidad de decodificadores de entropía se vuelven menos dispersas. En cuanto al binarizador 314, se observa que puede omitirse si los elementos de sintaxis ya son binarios. Además, dependiendo del tipo de decodificador 322, la existencia de las memorias intermedias 320 no es necesaria. Además, las memorias intermedias pueden estar integradas dentro de los decodificadores.
Terminación de secuencias de elementos de sintaxis finitas
En una realización preferida de la invención, la codificación y decodificación se realizan para un conjunto finito de elementos de sintaxis. Con frecuencia se codifica una determinada cantidad de datos, tales como una imagen fija, una trama o campo de una secuencia de vídeo, un segmento de una imagen, un segmento de una trama o un campo de una secuencia de vídeo, o un conjunto de muestras de audio sucesivas, etc. Para conjuntos finitos de elementos de sintaxis, en general, tienen que terminarse los flujos de bits parciales que se crean en el lado de codificador, es decir, tiene que garantizarse que todos los elementos de sintaxis pueden decodificarse a partir de los flujos de bits parciales transmitidos o almacenados. Tras insertarse el último elemento binario en la memoria intermedia de elementos binarios 308 correspondiente, el codificador de elementos binarios 310 tiene que garantizar que se escribe una palabra de código completa en el flujo de bits parcial 312. Si el codificador de elementos binarios 310 representa un codificador de entropía que implementa un mapeo directo de secuencias de elementos binarios en palabras de código, la secuencia de elementos binarios que se almacena en la memoria intermedia de elementos binarios tras escribir el último elemento binario en la memoria intermedia de elementos binarios puede no representar una secuencia de elementos binarios que está asociada con una palabra de código (es decir, puede representar un prefijo de dos o más secuencias de elementos binarios que están asociadas con palabras de código). En dicho caso, cualquiera de las palabras de código asociadas con una secuencia de elementos binarios que contiene la secuencia de elementos binarios en la memoria intermedia de elementos binarios como prefijo tiene que escribirse en el flujo de bits parcial (la memoria intermedia de elementos binarios tiene que alinearse). Esto puede realizarse insertando elementos binarios con un valor particular o arbitrario en la memoria intermedia de elementos binarios hasta que se escribe una palabra de código. En una realización preferida de la invención, el codificador de elementos binarios selecciona una de las palabras de código con longitud mínima (además de la propiedad de que la secuencia de elementos binarios asociada debe contener la secuencia de elementos binarios en la memoria intermedia de elementos binarios como prefijo). En el lado de decodificador, el decodificador de elementos binarios 322 puede decodificar más elementos binarios que los requeridos para la última palabra de código en un flujo de bits parcial; estos elementos binarios no los solicita el selector de memoria intermedia de elementos binarios 318 y se desechan e ignoran. La decodificación del conjunto finito de símbolos se controla mediante solicitudes de elementos de sintaxis decodificados; si no se solicita ningún elemento de sintaxis adicional para una cantidad de datos, se termina la decodificación.
Transmisión y multiplexado de los flujos de bits parciales
Los flujos de bits parciales 312 que se crean mediante el codificador pueden transmitirse por separado, o pueden multiplexarse para dar un único flujo de bits, o las palabras de código de los flujos de bits parciales pueden entrelazarse para dar un único flujo de bits.
En una realización de la invención, cada flujo de bits parcial para una cantidad de datos se escribe en un paquete de datos. La cantidad de datos puede ser un conjunto arbitrario de elementos de sintaxis, tales como una imagen fija, un campo o trama de una secuencia de vídeo, un segmento de una imagen fija, un segmento de un campo o trama de una secuencia de vídeo, o una trama de muestras de audio, etc.
En otra realización preferida de la invención, dos o más de los flujos de bits parciales para una cantidad de datos o todos los flujos de bits parciales para una cantidad de datos se multiplexan para dar un paquete de datos. En la Figura 9 se ilustra la estructura de un paquete de datos que contiene flujos de bits parciales multiplexados.
El paquete de datos 400 consiste en una cabecera y un reparto para los datos de cada flujo de bits parcial (para la cantidad de datos considerada). La cabecera 400 del paquete de datos contiene indicaciones para el reparto del (resto del) paquete de datos en segmentos de datos de flujo de bits 402. Además de las indicaciones para el reparto, la cabecera puede contener información adicional. En una realización preferida de la invención, las indicaciones para el reparto del paquete de datos son las ubicaciones del comienzo de los segmentos de datos en unidades de bits o bytes o múltiplos de bits o múltiplos de bytes. En una realización preferida de la invención, las ubicaciones del comienzo de los segmentos de datos se codifican como valores absolutos en la cabecera del paquete de datos, o bien con respecto al comienzo del paquete de datos o bien con respecto al final de la cabecera o bien con respecto al comienzo del paquete de datos anterior. En una realización preferida adicional de la invención, las ubicaciones del comienzo de los segmentos de datos se codifican de manera diferencial, es decir, solo se codifica la diferencia entre el comienzo real de un segmento de datos y una predicción del comienzo del segmento de datos. La predicción puede derivarse basándose en información ya conocida o transmitida, tal como el tamaño global del paquete de datos, el tamaño de la cabecera, el número de segmentos de datos en el paquete de datos, la ubicación del comienzo de segmentos de datos anteriores. En una realización preferida de la invención, la ubicación del comienzo del primer paquete de datos no se codifica, sino que se deduce basándose en el tamaño de la cabecera del paquete de datos. En el lado de decodificador, las indicaciones de reparto transmitidas se usan para derivar el comienzo de los segmentos de datos. Después se usan los segmentos de datos como flujos de bits parciales y los datos contenidos en los segmentos de datos se alimentan a los decodificadores de elementos binarios correspondientes en orden secuencial.
Hay varias alternativas para multiplexar los flujos de bits parciales para dar un paquete de datos. Una alternativa, que puede reducir la información secundaria requerida, en particular para casos en los que los tamaños de los flujos de bits parciales son muy similares, se ilustra en la Fig. 10. La carga útil del paquete de datos, es decir, el paquete de datos 410 sin su cabecera 411, se reparte en segmentos 412 de una manera predefinida. Como ejemplo, la carga útil de paquete de datos puede repartirse en segmentos del mismo tamaño. Después se asocia cada segmento con un flujo de bits parcial o con la primera parte de un flujo de bits parcial 413. Si un flujo de bits parcial es mayor que el segmento de datos asociado, su resto 414 se coloca en el espacio sin usar al final de otros segmentos de datos. Esto puede realizarse de una manera tal que la parte restante de un flujo de bits se inserta en orden inverso (comenzando desde el final de los segmentos de datos), lo cual reduce la información secundaria. La asociación de los restos de los flujos de bits parciales con segmentos de datos y, cuando se añade más de un resto a un segmento de datos, el punto de inicio para uno o más de los restos, tienen que indicarse dentro del flujo de bits, por ejemplo, en la cabecera del paquete de datos.
Entrelazado de palabras de código de longitud variable
Para algunas aplicaciones, el multiplexado anteriormente descrito de los flujos de bits parciales (para una cantidad de elementos de sintaxis) en un paquete de datos puede tener las siguientes desventajas: por un lado, para paquetes de datos pequeños, el número de bits para la información secundaria que se requiere para indicar el reparto puede volverse significativo con respecto a los datos reales en los flujos de bits parciales, lo cual reduce finalmente la eficiencia de codificación. Por otro lado, el multiplexado puede no ser adecuado para aplicaciones que requieren un bajo retardo (por ejemplo, para aplicaciones de videoconferencia). Con el multiplexado descrito, el codificador no puede comenzar la transmisión de un paquete de datos antes de que se hayan creado completamente los flujos de bits parciales, dado que las ubicaciones del comienzo de los repartos no se conocen previamente. Además, en general, el decodificador tiene que esperar hasta que recibe el comienzo del último segmento de datos antes de que pueda empezar la decodificación de un paquete de datos. Para aplicaciones tales como sistemas de videoconferencia, estos retardos pueden añadirse para dar un retardo global adicional del sistema de varias imágenes de vídeo (en particular para tasas de transferencia de bits que son próximas a la tasa de transferencia de bits de transmisión y para codificadores/decodificadores que requieren casi el intervalo de tiempo entre dos imágenes para codificar/decodificar una imagen), lo cual resulta crítico para dichas aplicaciones. Con el fin de superar las desventajas para determinadas aplicaciones, el codificador de una realización preferida de la invención puede estar configurado de una manera tal que las palabras de código que se generan mediante los dos o más codificadores de elementos binarios se entrelazan para dar un único flujo de bits. El flujo de bits con las palabras de código entrelazadas puede enviarse directamente al decodificador (cuando se desprecia un pequeño retardo de memoria intermedia, véase a continuación). En el lado de decodificador, los dos o más decodificadores de elementos binarios leen las palabras de código directamente a partir del flujo de bits en orden de decodificación; la decodificación puede iniciarse con el primer bit recibido. Además, no se requiere nada de información secundaria para indicar el multiplexado (o entrelazado) de los flujos de bits parciales.
La estructura de básica de un codificador con entrelazado de palabras de código se muestra en la Fig. 11. Los codificadores de elementos binarios 310 no escriben las palabras de código directamente a los flujos de bits parciales, pero están conectados con una única memoria intermedia de palabras de código 329, de la que palabras de código se escriben en el flujo de bits 34 en orden de codificación. Los codificadores de elementos binarios 310 envían solicitudes para una o más entradas de memoria intermedia de palabras de código 328 nuevas a la memoria intermedia de palabras de código 329 y después envía las palabras de código 30 a la memoria intermedia de palabras de código 329, que se almacenan en las entradas de tampón reservadas. Se accede a las palabras de código 31 (en general de longitud variable) de la memoria intermedia de palabras de código 329 por un escritor de palabras de código 32, que escribe los bits correspondientes 33 en el flujo de bits 34 producido. La memoria intermedia de palabras de código 329 opera como una memoria intermedia primero en entrar primero en salir; las entradas de palabras de código que se reservan antes se escriben antes en el flujo de bits.
En una generalización adicional, son posibles múltiples memorias intermedias de palabras de código y flujos de bits parciales, donde el número de memorias intermedias de palabra de código es inferior al número de codificadores de elementos binarios. Un codificador de elementos binarios 310 reserva una o más palabras de código en la memoria intermedia de palabras de código 329, mediante lo cual la reserva de una o más palabras de código en la memoria intermedia de palabras de código se activa por ciertos eventos en la memoria intermedia de palabras de código 308 conectada. En una realización preferida de la invención, la memoria intermedia de palabras de código 329 puede funcionar en una manera en la que el decodificador puede decodificar instantáneamente el flujo de bits. El orden de codificación en el que se escriben las palabras de código en el flujo de bits es el mismo que el orden en el que las palabras de código correspondientes se reservan en la memoria intermedia de palabras de código. En una realización preferida de la invención, cada codificador de elementos binarios 310 reserva una palabra de código, siendo activada la reserva por un cierto evento en la memoria intermedia de elementos binarios conectada. En otra realización preferida de la invención, cada codificador de elementos binarios 310 reserva más de una palabra de código, siendo activada la reserva por un cierto evento en la memoria intermedia de elementos binarios conectada. En una realización preferida adicional de la invención, los codificadores de elementos binarios 310 reservan una cantidad de palabras de código diferente, donde la cantidad de palabras de código que es reservada por un codificador de elementos binarios particular puede ser dependiente del codificador de elementos binarios particular y/u otras propiedades del codificador de elementos binarios/memoria intermedia de elementos binarios particular (tal como la medida de probabilidad asociada, el número de bits ya escritos, etc.).
En una realización preferida de la invención, la memoria intermedia de palabras de código funciona del siguiente modo. Si se envía un nuevo elemento binario 307 a una memoria intermedia de elementos binarios 308 particular y el número de elementos binarios ya almacenado en la memoria intermedia de elementos binario es cero y actualmente no existe palabra de código reservada en la memoria intermedia de palabras de código para el codificador de elementos binarios que está conectado con la memoria intermedia de elementos binarios particular, el codificador de elementos binarios 310 conectado envía una solicitud a la memoria intermedia de palabras de código, mediante la cual se reservan una o más entradas de palabra de código en la memoria intermedia de palabras de código 329 para el codificador de elementos binarios particular. Las entradas de palabra de código pueden tener un número variable de bits; un umbral superior para el número de bits en una entrada de memoria intermedia viene dado normalmente por el tamaño máximo de la palabra de código para el codificador de elementos binarios correspondiente. La siguiente palabra de código o las siguientes palabras de código que se producen por el codificador de elementos binarios ((para el que se ha reservado la entrada de palabras de código o las entradas de palabras de código) se almacenan en la entrada o entradas reservas de la memoria intermedia de palabras de código. Si todas las entradas de memoria intermedia reservadas en la memoria intermedia de palabras de código para un codificador de elementos binarios particular se llenan con palabras de código y el siguiente elemento binario se envía a la memoria intermedia de elementos binarios que está conectada con el codificador de elementos binarios particular, se reservan una o más palabras de código nuevas en la memoria intermedia de palabras de código para el codificador de elementos binarios particular, etc. La memoria intermedia de palabras de código 329 representa una memoria intermedia primero en entrar primero en salir en una cierta forma. Las entradas a la memoria intermedia se reservan en orden secuencial. Las palabras de código para las que se han reservado antes las entradas de memoria intermedia correspondientes se escriben antes en el flujo de bits. El escritor de palabras de código 32 comprueba el estado de la memoria intermedia de palabras de código 329, tanto continuamente como después de que se escriba una palabra de código 30 a la memoria intermedia de palabras de código 329. Si la primera entrada de memoria intermedia contiene una palabra de código completa (es decir, la entrada de memoria intermedia no se reserva, pero incluye una palabra de código), la palabra de código 31 correspondiente y la entrada de memoria intermedia correspondiente se retiran de la memoria intermedia de palabras de código 320 y los bits de la palabra de código 33 se escriben al flujo de bits. Este proceso se repite hasta que la primera entrada de memoria intermedia no contenga una palabra de código (es decir, está reservada o libre). Al final del proceso de decodificación, es decir, si se han procesado todos los elementos de sintaxis de la cantidad de datos considerada, la memoria intermedia de palabras de código se debe purgar. Para ese proceso de purga, se aplica lo siguiente para cada memoria intermedia de elementos binarios/ codificador de elementos binarios como una primera etapa: si la memoria intermedia de elementos binarios contiene elementos binarios, se añade un elemento binario con un valor particular o arbitrario hasta que la secuencia de elementos binarios resultante represente una secuencia de elementos binarios que está asociada con una palabra de código (como se observa anteriormente, una forma preferida de añadir estos elementos binarios es añadir dichos valores de elementos binarios que producen la palabra de código más corta posible (o una de ellas) que se asocia con una secuencia de elementos binarios que contiene el contenido original de la memoria intermedia de elementos binarios como prefijo), entonces se escribe la palabra de código en la siguiente entrada de la memoria intermedia reservada para el codificador de elementos binarios correspondiente y se vacía la (correspondiente) memoria intermedia de elementos binarios. Si se ha reservado más de una entrada de memoria intermedia para uno o más codificadores de elementos binarios, la memoria intermedia de palabras de código puede contener aún entradas de palabras de código reservadas. En ese caso, estas entradas de palabras de código se llenan con palabras de código arbitrarias, pero válidas, para los codificadores de elementos binarios correspondientes. En una realización preferida de la invención, se inserta la palabra de código válida más corta o una de las palabras de código válidas más cortas (si hay múltiples). Finalmente, todas las palabras de código restantes en la memoria intermedia de palabras de código se escriben en el flujo de bits.
En la Fig. 12 se ilustran dos ejemplos para el estado de la memoria intermedia de palabras de código. En el ejemplo (a), la memoria intermedia de palabras de código contiene 2 entradas que se llenan con una palabra de código y 5 entradas reservadas. Además, se marca la siguiente entrada de la memoria intermedia libre. La primera entrada se llena con una palabra de código (es decir, el codificador de elementos binarios 2 solo escribe una palabra de código en una entrada previamente reservada). En la siguiente etapa, esta palabra de código se eliminará de la memoria intermedia de palabras de código y se escribe en el flujo de bits. A continuación, la primera palabra de código reservada para el codificador de elementos binarios 3 es la primera entrada de memoria intermedia, pero esta entrada no puede eliminarse de la memoria intermedia de palabras de código, dado que solo está reservada, pero no se ha escrito ninguna palabra de código en esta entrada. En el ejemplo (b), la memoria intermedia de palabras de código contiene 3 entradas que se llenan con una palabra de código y 4 entradas reservadas. La primera entrada se marca como reservada y por ello el escritor de palabras de código no puede escribir una palabra de código al flujo de bits. Aunque están contenidas 3 palabras de código en la memoria intermedia de palabras de código, el escritor de palabras de código tiene que esperar hasta que se escribe la palabra de código en la primera entrada de memoria intermedia reservada para el codificador de elementos binarios 3. Obsérvese que las palabras de código deben escribirse en el orden en que se reservaron, para ser capaces de invertir el proceso en el lado de decodificador (véase a continuación).
La estructura básica de un decodificador con entrelazado de palabras de código se muestra en la Fig. 13. Los decodificadores de elementos binarios 310 no leen las palabras de código directamente de flujos de bits parciales independientes, sino que se conectan a una memoria intermedia de bits 38, desde la que se leen las palabras de código 337 en el orden de codificación. Debería observarse que no se requiere necesariamente la memoria intermedia de bits 338, dado que las palabras de código también podrían leerse directamente desde el flujo de bits. La memoria intermedia de bits 338 se incluye principalmente en la ilustración para separar claramente aspectos diferentes de la cadena de procesamiento. Los bits 339 del flujo de bits 340 con palabras de código entrelazadas se insertan secuencialmente en la memoria intermedia de bits 338, que representa una memoria intermedia primero en entrar primero en salir. Si un decodificador de elementos binarios 322 particular recibe una solicitud de una o más secuencias de elementos binarios 35, el decodificador de elementos binarios 322 lee una o más palabras de código 337 de la memoria intermedia de bits 338 a través de las solicitudes de bits 336. El decodificador puede decodificar instantáneamente los elementos de sintaxis. Obsérvese que el codificador (como se ha descrito anteriormente) debe asegurar mediante la operación en forma adecuada de la memoria intermedia de palabras de código que las palabras de código se escriben en el mismo orden al flujo de bits en el que se solicitan por los decodificadores de elementos binarios. En el decodificador, todo el proceso de decodificación se activa mediante solicitudes de elementos de sintaxis. Parámetros tales como el número de palabras de código que se reservan en el lado de codificador por un codificador de elementos binarios particular y el número de palabras de código que se leen por el decodificador de elementos binarios correspondiente deben ser los mismos.
En una generalización adicional, son posibles múltiples memorias intermedias de palabras de código y flujos de bits parciales, donde el número de memorias intermedias de bits es menor que el número de decodificadores de elementos binarios. Un decodificador de elementos binarios 322 lee una o más palabras de código desde la memoria intermedia de bits 338 en un instante de tiempo, mediante lo cual la lectura de las una o más palabras de código de la memoria intermedia de bits se activa por ciertos eventos en la memoria intermedia de elementos binarios 320 conectada. En otra realización preferida de la invención, cada decodificador puede funcionar en una forma en la que una o más palabras de código se leen cuando se envía una solicitud de un elemento binario 319 a una memoria intermedia de elementos binarios 320 particular y la memoria intermedia de elementos binarios no contiene ningún elemento binario. Pero también es posible activar la lectura de las palabras de código por otros eventos, por ejemplo, si el número de elementos binarios en la memoria intermedia de elementos binarios está por debajo de un umbral predefinido. En una realización preferida de la invención, cada decodificador de elementos binarios 322 puede leer una palabra de código, siendo activada la lectura por un cierto evento en la memoria intermedia de elementos binarios conectada. En otra realización preferida de la invención, cada decodificador de elementos binarios 322 lee más de una palabra de código, siendo activada la lectura por un cierto evento en la memoria intermedia de elementos binarios conectada. En otra realización preferida de la invención, los decodificadores de elementos binarios 322 leen una cantidad diferente de palabras de código, donde la cantidad de palabras de código que son leídas por un decodificador de elementos binarios particular puede depender del decodificador de elementos binarios particular y/u otras propiedades del decodificador de elementos binarios/memoria intermedia de elementos binarios particular (tal como la medida de probabilidad asociada, el número de bits ya leídos, etc.).
En una realización preferida de la invención, la lectura de palabras de código desde la memoria intermedia de bits funciona como sigue. Si se envía una nueva solicitud de elemento binario 319 desde el selector de memoria intermedia de elementos binarios 318 a una memoria intermedia de elementos binarios 320 particular y el número de elementos binarios en la memoria intermedia de elementos binarios es cero, el decodificador de elementos binarios 322 conectado lee una o más palabras de código 337 de la memoria intermedia de bits 338, a través de la solicitud de bits 336 a la memoria intermedia de bits 338. El decodificador de elementos binarios 322 convierte las palabras de código 337 leídas en secuencias de elementos binarios 321 y almacena estas secuencias de elementos binarios en la memoria intermedia de elementos binarios 320 conectada. Como respuesta final a la solicitud de un elemento binario 319, el primer elemento binario insertado se elimina de la memoria intermedia de elementos binarios 320 y se envía al selector de memoria intermedia de elementos binarios 318. Como respuesta a solicitudes de elementos binarios adicionales, los elementos binarios restantes en la memoria intermedia de elementos binarios se eliminan hasta que se vacía la memoria intermedia de elementos binarios. Una solicitud de elementos binarios adicional activa el decodificador de elementos binarios para leer una o más nuevas palabras de código desde la memoria intermedia de bits, etc. La memoria intermedia de bits 338 representa una memoria intermedia primero en entrar primero en salir de un tamaño predefinido y se llena continuamente con bits 339 del flujo de bits 340. Para asegurar que las palabras de código se escriben en el flujo de bits en la misma forma en la que se solicitan por el proceso de decodificación, la memoria intermedia de palabras de código en el lado de codificador puede funcionar en la forma descrita anteriormente.
De ese modo, cada uno de la pluralidad de decodificadores de entropía puede ser un decodificador de longitud variable configurado para mapear palabras de código de longitudes fijas en secuencias de símbolos de longitudes variables, y puede proporcionarse una entrada de palabra de código tal como la salida de la memoria intermedia de palabras de código 43 para la recepción de un único flujo de palabras de código entrelazadas. La pluralidad de decodificadores de entropía 22 puede configurarse para recuperar las palabras de código de la entrada de palabras de código en un orden secuencial que depende de un orden en el que se recuperan los símbolos de la secuencia de símbolos a reconstruirse por el selector 18 de la pluralidad de decodificadores de entropía dando como resultado una nueva secuencia de símbolos a mapearse a partir de una palabra de código nueva en los decodificadores de entropía respectivos.
Entrelazado de palabras de código de longitud variable con restricción de bajo retardo
El entrelazado de palabras de código descrito no requiere que se envíe ninguna información de reparto como información secundaria. Y dado que las palabras de código se entrelazan en el flujo de bits, el retardo es en general pequeño. Sin embargo, no se garantiza que se obedezca a una restricción de retardo particular (por ejemplo, especificada por un número máximo de bits que se almacenan en la memoria intermedia de palabras de código). Adicionalmente, el tamaño de la memoria intermedia requerido para memoria intermedia de palabras de código puede hacerse teóricamente muy grande. Cuando se considera el ejemplo de la Fig. 12(b), sería posible que no se envíen elementos binarios adicionales a la memoria intermedia de elementos binarios 3 y por ello el codificador de elementos binarios 3 no enviará ninguna nueva palabra de código a la memoria intermedia de palabras de código hasta que se aplique el proceso de purgado al final del paquete de datos. Entonces todas las palabras de código para los codificadores de elementos binarios 1 y 2 tendrían que esperar hasta el final del paquete de datos, antes de que puedan escribirse en el flujo de bits. Este inconveniente puede sortearse añadiendo un mecanismo adicional al proceso de codificación (y también al proceso de decodificación como se describe más adelante). El concepto básico de ese mecanismo adicional es que si una medida en relación al retardo o a una delimitación superior del retardo (véase a continuación) supera un umbral especificado, la primera entrada en la memoria intermedia reservada se llena mediante el purgado de la memoria intermedia de elementos binarios correspondiente (usando un mecanismo similar al del final del paquete de datos). Mediante dicho mecanismo, el número de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociada sea menor que el umbral especificado. En el lado del decodificador, los elementos binarios que se han insertado en el lado de codificador para obedecer a la recepción de retardo deben descartarse. Para este descarte de elementos binarios puede usarse básicamente el mismo mecanismo que en el lado de codificador. A continuación, se describen dos realizaciones preferidas para dicho control del retardo.
En una realización preferida, la medida para el retardo (o una delimitación superior del retardo) es el número de entradas de memoria intermedia activas en la memoria intermedia de palabras de código, donde el número de entradas de memoria intermedia activas es el número de entradas de memoria intermedia reservadas más el número de entradas de memoria intermedia que contienen palabras de código. Obsérvese que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia reservada o una entrada de memoria intermedia libre, dado que, si la primera entrada de memoria intermedia contiene una palabra de código, esta palabra de código se escribe en el flujo de bits. Si, por ejemplo, el retardo máximo de memoria intermedia permitido (tal como se determina por la aplicación) esDbits y el tamaño de palabra de código máximo para todos los codificadores de elementos binarios es L, una delimitación inferior para el número máximo de palabras de código que puede contenerse en la memoria intermedia de palabras de código sin violar la restricción de retardo puede calcularse porN = D/L.La media del retardoDen bits no es requerida por el sistema, pero el número máximo de palabras de códigoNdebe conocerse tanto para el codificador como para el decodificador. En una realización preferida de la invención, el número máximo de entradas de memoria intermedia de palabras de códigoNpuede fijarse por la aplicación. En otra realización preferida de la invención, el número máximo de entradas de memoria intermedia de palabras de códigoNpuede señalizarse en el interior del flujo de bits, por ejemplo, en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parámetros, que se incluye en un flujo de bits. Si un codificador de elementos binarios 310 envía una solicitud para la reserva de una o más nuevas entradas de memoria intermedia a la memoria intermedia de palabras de código 329, se ejecuta el proceso siguiente antes de que se reserve una nueva entrada de memoria intermedia de palabras de código (es decir, se ejecutan múltiples veces si se reservan múltiples entradas de memoria intermedia de palabras de código mediante una solicitud): si el número de entradas de memoria intermedia actualmente activas más 1 (teniendo en cuenta la entrada de memoria intermedia que se reservará a continuación) es mayor que el número máximo de entradas de memoria intermedia de palabras de código N, la primera entrada de memoria intermedia (que se reserva) se purga mediante el proceso descrito a continuación hasta que el número de entradas de memoria intermedia actualmente activas más 1 sea menor que o igual al número máximo de entradas de memoria intermedia de palabras de código N. El purgado de una entrada de memoria intermedia reservada es similar al purgado al final de un paquete de datos. El codificador de elementos binarios 310 que ha reservado la primera entrada de memoria intermedia correspondiente se purga mediante la adición de elementos binarios con valores particulares o arbitrarios a la memoria intermedia de elementos binarios 308 conectada hasta que la secuencia de binarios resultante represente una secuencia de elementos binarios que está asociada con una palabra de código, la palabra de código se escribe a continuación a la entrada de memoria intermedia reservada y se añade finalmente al flujo de bits (mientras se vacía la memoria intermedia de elementos binarios y se elimina la entrada de memoria intermedia previamente reservada). Como se ha mencionado anteriormente, una forma preferida para añadir elementos binarios a la memoria intermedia de elementos binarios es añadir aquellos elementos binarios que producen la palabra de código más corta posible. En el lado de decodificador, se ejecuta un proceso similar para descartar los elementos binarios que se han añadido para obedecer a la restricción de retardo. Por lo tanto, el decodificador mantiene un contador C que cuenta las palabras de código que se han leído desde la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). El contadorCse inicializa (por ejemplo, a cero) al inicio de la decodificación de un paquete de datos y se incrementa en uno después de que se lea una palabra de código. Además, cada decodificador de elementos binarios 322 contiene un contador Cx, que almacena el valor del contador de palabras de códigoCantes de que se lea la última palabra de código por el decodificador de elementos binarios 322 correspondiente, es decir, cuando un decodificador de elementos binarios 322 particular lee una nueva palabra de código, su contadorCxse fija igual aCcomo una primera etapa y a continuación la palabra de código se lee desde la memoria intermedia de bits. Cuando se envía una solicitud de un elemento binario 319 a una memoria intermedia de elementos binarios 320 particular y la diferencia (C - Cx) entre el contador de palabras de código globalCy el contadorCxdel decodificador de elementos binarios 322 conectado es mayor que el número máximo de entradas de memoria intermedia de palabras de código N, todos los elementos binarios que se almacenan actualmente en la memoria intermedia de elementos binarios 320 particular se descartan e ignoran. Junto a esa etapa adicional, la decodificación se hace funcionar como se ha descrito anteriormente. Si la memoria intermedia de elementos binarios 320 a la que se envía una solicitud de un binario 319 está vacía (bien porque todos los elementos binarios ya se han eliminado o porque un mecanismo de bajo retardo descartó todos los elementos binarios en la primera etapa después de que se haya recibido la solicitud del elemento binario), el decodificador de elementos binarios 322 conectado lee una o más palabras de código nuevas desde la memoria intermedia de bits 338, etc.
En otra realización preferida de la invención, la medida del retardo (o una delimitación superior del retardo) es la suma de las longitudes máximas de palabras de código para las entradas de memoria intermedia activas en la memoria intermedia de palabras de código, donde la longitud máxima de palabras de código para una entrada de memoria intermedia particular depende del elemento binario decodificado que se asocia con esa entrada de memoria intermedia. Como ilustración, las longitudes máximas de palabra de código para las entradas de memoria intermedia se indican en los ejemplos en 6. Obsérvese de nuevo que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia reservada o una entrada de memoria intermedia libre, dado que, si la primera entrada de memoria intermedia contiene una palabra de código, esta palabra de código se escribe al flujo de bits. Sea el retardo máximo de memoria intermedia permitido (tal como se determina por la aplicación) deDbits. Este retardo máximo de memoria intermediaDdebe conocerse tanto para el codificador como para el decodificador. En una realización preferida de la invención, el retardo máximo de memoria intermediaDpuede fijarse por la aplicación. En otra realización preferida de la invención, el retardo máximo de memoria intermediaDpuede señalizarse en el interior del flujo de bits, por ejemplo, en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parámetros, que se incluye en el flujo de bits. Puede señalizarse en unidades de bits, o bytes, o un múltiplo de bits, o un múltiplo de bytes. Si un codificador de elementos binarios 310 envía una solicitud para la reserva de una o más nuevas entradas de memoria intermedia a la memoria intermedia de palabras de código 329, se ejecuta el proceso siguiente antes de que se reserve una nueva entrada de memoria intermedia de palabras de código (es decir, se ejecuta múltiples veces si se reservan múltiples entradas de memoria intermedia de palabras de código mediante una solicitud).
Si la suma de las longitudes máximas de palabras de código para todas las entradas de memoria intermedia actualmente activas más la longitud máxima de palabra de código para la entrada de memoria intermedia que se reservará es mayor que el retardo máximo de memoria intermedia D, la primera entrada de memoria intermedia (que se reserva) se purga por el proceso descrito anteriormente hasta que la suma de las longitudes máximas de palabras de código para todas las entradas de memoria intermedia activas más la longitud máxima de palabra de código para la entrada de memoria intermedia que se reservará sea menor que o igual al retardo máximo de memoria intermedia D. Como un ejemplo, considérese el ejemplo en la Fig. 12(b). La suma de las longitudes máximas de palabras de código para todas las entradas de memoria intermedia actualmente activas es 29. Supóngase que el retardo máximo de memoria intermediaDse fija igual a 32. Si la siguiente entrada de memoria intermedia se reserva por el codificador de elementos binarios 2 para el que la longitud máxima de palabra de código es igual a 3, la primera entrada de la memoria intermedia no se purga, dado que 29 3 no es mayor que 32. Pero si la siguiente entrada de memoria intermedia se reserva por el codificador de elementos binarios 1 para el que la longitud máxima de palabra de código es igual a 7, la primera entrada de memoria intermedia se purga, dado que 29 7 es mayor que 32. El purgado de la entrada de memoria intermedia reservada se realiza tal como se ha descrito anteriormente (mediante la adición de elemento binario con valores particulares o arbitrarios desde la memoria intermedia de elementos binarios correspondiente).
En el lado de decodificador, se ejecuta un proceso similar para descartar los elementos binarios que ya se han añadido para obedecer a la restricción de retardo. Por lo tanto, el decodificador mantiene un contadorCque cuenta la longitud máxima de palabras de código para las palabras de código que se han leído desde la memoria intermedia de bits (este contador puede mantenerse en la memoria intermedia de bits). Obsérvese que las longitudes máximas de palabra de código que se asocian con decodificadores de elementos binarios diferentes pueden ser diferentes. El contadorCse inicializa (por ejemplo, con cero) al inicio de la decodificación de un paquete de datos y se incrementa después de que se lea una palabra de código. Este contador no se incrementa en la longitud real de las palabras de código leídas, sino por su longitud máxima, es decir, si una palabra de código se lee por un decodificador de elementos binarios particular y la longitud máxima de palabra de código que se asocia con la tabla de palabras de código usada por el decodificador de elementos binarios particular esLx(un decodificador de elementos binarios diferente puede asociarse con una longitud máxima de palabra de código diferente), el contadorCse incrementa porLx.Además del contador global C, cada decodificador de elementos binarios 322 contiene un contador Cx, que almacena al valor del contador de palabras de códigoCantes de que se lea la última palabra de código por el decodificador de elementos binarios 322 correspondiente, es decir, cuando un decodificador de elementos binarios 322 particular lee una nueva palabra de código, su contadorCxse fija igual aCcomo una primera etapa y a continuación la palabra de código se lee desde la memoria intermedia de bits. Cuando se envía una solicitud para un binario 319 a una memoria intermedia de elementos binarios 320 particular y la diferencia (C - Cx) entre el contador globalCy el contadorCxdel decodificador de elementos binarios 322 conectado es mayor que el retardo de memoria intermedia máximo D, todos los elementos binarios que están almacenados actualmente en la memoria intermedia de elementos binarios 320 particular se descartan e ignoran. Junto a esa etapa adicional, la decodificación funciona como se ha descrito anteriormente. Si la memoria intermedia de elemento binario 320 a la que se envía la solicitud de un binario 319 está vacía (porque todos los elementos binarios ya se han eliminado o porque el mecanismo de bajo retardo descartó todos los elementos binarios en la primera etapa después de que se haya recibido la solicitud de elemento binario), el decodificador de elementos binarios 22 conectado lee una o más nuevas palabras de código desde la memoria intermedia de bits 338, etc.
Por lo tanto, la pluralidad de decodificadores de entropía 22 y el selector 18 pueden configurarse para descartar intermitentemente sufijos de secuencias de símbolos de modo que no participen en la formación de la secuencia de símbolos a reconstruirse 29. El descarte de modo intermitente puede realizarse en eventos donde un número de palabras de código que se hayan recuperado desde la entrada de palabras de código por la pluralidad de decodificadores de entropía entre dos recuperaciones de palabras de código consecutivas de un decodificador de entropía respectivo desde la entrada de palabras de código, cumple con un criterio predeterminado. La pluralidad de codificadores de entropía y la memoria intermedia de palabras de código pueden, a su vez, configurarse para extender de modo intermitente símbolos actualmente enviados pero aún no mapeados a secuencias de símbolos válidas no teniendo en cuenta los símbolos actualmente enviados pero aún no mapeados como prefijo, mapear las secuencias de símbolos así extendidas en palabras de código, introducir las palabras de código así obtenidas en las entradas de palabras de código reservadas y purgar las entradas de palabras de código. La extensión, introducción y purgado en forma intermitente puede tener lugar con eventos donde un número de entradas de palabras de código reservadas más un número de entradas de palabras de código que tengan palabras de código introducidas en las mismas cumpla con un criterio predeterminado. El criterio predeterminado puede tener en cuenta las longitudes máximas de palabras de código de la pluralidad de pares codificador/decodificador.
Para algunas arquitecturas, la realización preferida anteriormente descrita de entrelazado de palabras de código podría dar como resultado un inconveniente en términos de complejidad de decodificación. Como se ilustra en la Fig. 13, todos los decodificadores de elementos binarios 322 leen palabras de código (en el caso general, palabras de código de longitud variable) desde una única memoria intermedia de bits 338. La lectura de las palabras de código no puede realizarse en paralelo, dado que las palabras de código deben leerse en el orden correcto. Esto significa que un decodificador de elementos binarios particular debe esperar hasta que otros decodificadores de elementos binarios acaben la lectura de palabras de código. Y cuando la complejidad de la lectura de las palabras de código de longitud variable es significativa en relación al resto de los procesos de decodificación (parcialmente en paralelo), este acceso de las palabras de código de longitud variable puede ser un cuello de botella para todo el proceso de decodificación. Hay algunas variaciones de las realizaciones descritas de la invención que pueden emplearse para la reducción de la complejidad del acceso desde la única memoria intermedia de bits, unas pocas de las cuales se describirán a continuación. En una realización preferida de la invención, existe un único conjunto de palabras de código (que representa, por ejemplo, un código de prefijo no redundante) y el conjunto de palabras de código que se usa para cada decodificador de elementos binarios 322 es un subconjunto de un único conjunto de palabras de código. Obsérvese que diferentes decodificadores de binario 322 pueden usar diferentes subconjuntos del único conjunto de palabras de código. Incluso si los conjuntos de palabras de código que se usan por algunos de los decodificadores de binario 322 son el mismo, su asociación con las secuencias de elementos binarios es diferente para diferentes decodificadores de elementos binarios 322. En una realización particular de la invención, el mismo conjunto de palabras de código se usa para todos los decodificadores de elementos binarios 322. Si se tiene un único conjunto de palabras de código que incluye los conjuntos de palabras de código para todos los decodificadores de elementos binarios como subconjuntos, el análisis de las palabras de código puede realizarse fuera de los decodificadores de elementos binarios, lo que puede reducir la complejidad del acceso a la palabra de código. El proceso de codificación no se cambia en relación con el proceso anteriormente descrito. El proceso de decodificación modificado se ilustra en la Fig. 14. Un único lector de palabras de código se alimenta con los bits 346 desde el flujo de bits 340 y analiza las palabras de código, en general de longitud variable. Las palabras de código 344 leídas se insertan dentro de una memoria intermedia de palabras de código 343, que representa una memoria intermedia primero en entrar primero en salir. Un decodificador de elementos binarios 322 envía una solicitud para una o más palabras de código 341 a la memoria intermedia de palabras de código 343 y como respuesta a esta solicitud, la una o más palabras de código se eliminan de la memoria intermedia de palabras de código (en orden secuencial) y se envían al decodificador de elementos binarios 322 correspondiente. Obsérvese que, con esta realización de la invención, el análisis de palabras de código potencialmente complejo puede realizarse en un proceso en segundo plano y no necesita esperar a los decodificadores de elementos binarios. Los decodificadores de elementos binarios acceden a palabras de código ya analizadas, el análisis de palabras de código potencialmente complejo no es parte de una solicitud a la memoria intermedia global. En su lugar las palabras de código ya analizadas se envían a los decodificadores de elementos binarios, que pueden implementarse también en una forma en que solo se envían los índices de las palabras de código a los decodificadores de elementos binarios.
Entrelazado de secuencias de bits de longitud fija
Una forma adicional de reducir la complejidad del decodificador puede conseguirse cuando los decodificadores de elementos binarios 322 no leen palabras de código de longitud variable desde la memoria intermedia de bits global 338, sino en su lugar siempre leen secuencias de bits de longitud fija desde la memoria intermedia de bits global 338 y añaden estas secuencias de bits de longitud fija a una memoria intermedia de bits local, donde cada decodificador de elementos binarios 322 se conecta con una memoria intermedia de bits local independiente. Las palabras de código de longitud variable se leen a continuación desde la memoria intermedia de bits local. Por ello, el análisis de las palabras de código de longitud variable puede realizarse en paralelo, solo el acceso de secuencias de bits de longitud fija tiene que realizarse en una forma sincronizada, pero dicho acceso de secuencias de bits de longitud fija es normalmente muy rápido, de modo que la complejidad de decodificación global puede reducirse para algunas arquitecturas. El número fijo de elementos binarios que se envían a una memoria intermedia de bits local particular puede ser diferente para diferentes memorias intermedias de bits locales y también puede variar a lo largo del tiempo, dependiendo de ciertos parámetros como eventos en el decodificador de elementos binarios, memoria intermedia de elementos binarios, o memoria intermedia de bits. Sin embargo, el número de bits que se leen en un acceso particular no depende de los bits reales que se hayan leído durante el acceso particular, que es la diferencia importante respecto a la lectura de palabras de código de longitud variable. La lectura de secuencias de bits de longitud fija se activa por ciertos eventos en las memorias intermedias de elementos binarios, decodificadores de elementos binarios, o memorias intermedias de bits locales. Como un ejemplo, es posible solicitar la lectura de una nueva secuencia de bits de longitud fija cuando el número de bits que están presentes en una memoria intermedia de bits conectada cae por debajo de un umbral predefinido, donde pueden usarse diferentes valores de umbral para diferentes memorias intermedias de bits. En el codificador, tiene que asegurarse que las secuencias de longitud fija de elementos binarios se insertan en el mismo orden en el flujo de bits, en el que se leen desde el flujo de bits en el lado de decodificador. Es posible también combinar este entrelazado de secuencias de longitud fija con un control de bajo retardo similar al explicado anteriormente. A continuación, se describe una realización preferida para el entrelazado de secuencias de bits de longitud fija.
La Fig. 15 muestra una realización de una estructura de codificador básico para la realización de la invención que entrelaza secuencias de bits de longitud fija para dos o más codificadores de elementos binarios. A diferencia de la Fig. 11, los codificadores de elementos binarios 310 no se conectan con una única memoria intermedia de palabras de código. En su lugar, cada codificador de elementos binarios 310 se conecta con una memoria intermedia de bits 348 independiente, que almacena bits para el flujo de bits parcial correspondiente. Todas las memorias intermedias de bits 348 se conectan a una memoria intermedia de bits global 351. La memoria intermedia de bits global 351 se conecta a un escritor de bits 353, que elimina los bits 352 en el orden de codificación/decodificación desde la memoria intermedia de bits global y escribe los bits eliminados 354 en el flujo de bits 355. En un cierto evento en una memoria intermedia de bits 348 particular o el codificador de elementos binarios 310 conectado o la memoria intermedia de elementos binarios 308, la memoria intermedia de bits 348 envía una solicitud 349 a la memoria intermedia de bits global 351 mediante la que se reservan un cierto número de bits en la memoria intermedia de bits global 351. Las solicitudes para la reserva de secuencias de bits 349 de longitud fija se procesan en orden secuencial. La memoria intermedia de bits global 351 representa una memoria intermedia primero en entrar primero en salir en una cierta forma; los bits que se reservan antes se escriben antes en el flujo de bits. Debería observarse que diferentes memorias intermedias de bits 348 pueden reservar una cantidad diferente de bits, lo que también puede variar a lo largo del tiempo basándose en símbolos ya codificados; pero el número de bits que se reservan para una solicitud particular es conocido en el momento en el que se envía la solicitud a la memoria intermedia de bits global.
En una realización particular de la invención, las memorias intermedias de bits 48 y la memoria intermedia de bits global 351 se hacen funcionar como se describe a continuación. La cantidad de bits que se reserva por una memoria intermedia de bits 348 particular se indica por Nx. Este número de bitsNxpuede ser diferente para diferentes memorias intermedias de bits 348 y puede también variar a lo largo del tiempo. En una realización preferida de la invención, el número de bitsNxque se reserva para una memoria intermedia de bits 348 particular puede ser fijo a lo largo del tiempo. Las reservas para un número fijoNxde bits 349 se activan basándose en el número de bitsMxen la memoria intermedia de bits 348, el número de bitsNxpara las solicitudes de reserva y la longitud máxima de palabras de códigoLxasociada. Obsérvese que cada codificador de elementos binarios 310 puede asociarse con una longitud máxima de palabra de códigoLxdiferente. Si un binario 307 se envía a una memoria intermedia de elementos binarios 308 particular, y la memoria intermedia de elementos binarios 308 particular está vacía, y no se reserva más de una secuencia deNxbits en la memoria intermedia de bits global para la memoria intermedia de bits 348 que se conecta con la memoria intermedia de elementos binarios particular (a través de un codificador de elementos binarios), y la diferenciaNx - Mxentre el númeroNxde bits que se reservan mediante una solicitud de reserva de la memoria intermedia de bits 348 que está conectada (a través de un codificador de elementos binarios) con la memoria intermedia de elementos binarios 8 particular y el número de bitsMxque está actualmente presente en esta memoria intermedia de bits 348 es menor que la longitud máxima de palabra de códigoLxque está asociada con el codificador de elementos binarios 310 correspondiente, la memoria intermedia de bits 349 conectada envía una solicitud 349 para la reserva deNxbits a la memoria intermedia de bits global 351. La memoria intermedia de bits global 351 reservaNxbits para la memoria intermedia de bits 348 particular e incrementa su puntero para la siguiente reserva. Después de que se hayan reservado losNxbits en la memoria intermedia de bits global, el elemento binario 307 se almacena en la memoria intermedia de elementos binarios 308. Si este único elemento binario representa ya una secuencia de elementos binarios que está asociada con una palabra de código, el codificador de elementos binarios 310 elimina este elemento binario de la memoria intermedia de elementos binarios 308 y escribe la palabra de código 347 correspondiente en la memoria intermedia de bits 348 conectada. En caso contrario (este único elemento binario ya representa en una secuencia de elementos binarios que está asociada con una palabra de código), se aceptan elementos binarios 307 adicionales por la memoria intermedia de elementos binarios 308 particular hasta que la memoria intermedia de elementos binarios 308 contenga una secuencia de elementos binarios que está asociada con una palabra de código. En este caso, el codificador de elementos binarios 310 conectado elimina la secuencia de binarios 309 de la memoria intermedia de elementos binarios 308 y escribe la palabra de código 347 correspondiente en la memoria intermedia de bits 348 conectada. Si el número resultante de bitsMxen la memoria intermedia de bits 348 es mayor que o igual a el número de bitsNxreservado, losNxbits que se escribieron primero en la memoria intermedia de bits 348 se insertan en el espacio previamente reservado en la memoria intermedia de bits global 351. Para el siguiente binario 307 que se envía a la memoria intermedia de elementos binarios 308 particular, se ejecuta el mismo proceso especificado anteriormente; es decir, se comprueba primero si debe reservarse un nuevo número deNxbits en la memoria intermedia de bits global (siNx-Mxes menor queLx) y a continuación se inserta el binario en la memoria intermedia de elementos binarios 308, etc. El escritor de bits escribe las secuencias de bits de longitud fija de la memoria intermedia de bits global en el orden en que se han reservado. Si la primera entrada de longitud fija en la memoria intermedia de bits global 351 contiene una secuencia de bits de longitud fija que ya se ha insertado realmente en la memoria intermedia de bits global (es decir, no está solo reservada), el escritor de bits 353 elimina los bits de esta secuencia de bits 352 de la memoria intermedia de bits global 351 y escribe los bits 354 en el flujo de bits. Este proceso se repite hasta que la primera entrada de longitud fija en la memoria intermedia de bits global representa una entrada reservada o una libre. Si la primera entrada de longitud fija en la memoria intermedia de bits global representa una entrada reservada, el escritor de bits 353 espera hasta que esta entrada está llena con los bits reales antes de escribir bits adicionales 354 en el flujo de bits 355.
Al final de un paquete de datos, las memorias intermedias de elementos binarios se purgan tal como se ha descrito anteriormente. Además, las memorias intermedias de bits deben purgarse mediante la adición de bits con un valor particular o uno arbitrario hasta que todas las entradas de memoria intermedia reservadas en la memoria intermedia de bits global se llenan y escriben hacia el flujo de bits.
En la Fig. 16 se ilustran dos ejemplos de estados posibles de la memoria intermedia de bits global 351. En el ejemplo (a), se ilustra un caso en el que diferentes memorias intermedias de bits/codificadores de elementos binarios reservan un número diferente de bits. Las memorias intermedias de bit globales contienen 3 entradas con secuencias de bits de longitud fija realmente escritas y 4 entradas con secuencias de bits de longitud fija reservadas. La primera entrada de longitud fija ya contiene bits reales (que se deben haber insertado recientemente por la memoria intermedia de bits/codificador de elementos binarios 2); esta entrada (es decir los 8 bits correspondientes) pueden eliminarse y escribirse en el flujo de bits. La siguiente entrada reserva 10 bits para el codificador de elementos binarios 3, pero los bits reales no se han insertado aún. Esta entrada no puede escribirse en el flujo de bits; debe esperarse hasta que se inserten los bits reales. En el segundo ejemplo (b), todas las memorias intermedias de bits/codificadores de elementos binarios reservaron el mismo número de bits (8 bits). La memoria intermedia de bits global contiene 4 reservas para secuencias de 8 bits y 3 secuencias de 8 bits realmente escritas. La primera entrada contiene una reserva para 8 bits para el codificador de elementos binarios 3. Antes de que puedan escribirse nuevos bits al flujo de bits, el escritor de bits tiene que esperar hasta que la memoria intermedia de bits/codificador de elementos binarios 3 escriba los valores reales de los 8 bits en la entrada reservada.
La Fig. 17 muestra una ilustración de una estructura de decodificador básico para la realización de la invención que entrelaza secuencias de bits de longitud fija. A diferencia de la realización representada en la Fig. 13, los decodificadores de elementos binarios 322 no están conectados con una única memoria intermedia de bits. En su lugar, cada decodificador de elementos binarios 322 se conecta con una memoria intermedia de bits 358 independiente, que almacena los bits desde el flujo de bits parcial correspondiente. Todas las memorias intermedias de bits 358 se conectan a una memoria intermedia de bits global 361. Los bits 362 desde el flujo de bits 363 se insertan en la memoria intermedia de bits global 361. En ciertos eventos, en una memoria intermedia de bits 358 particular o codificador de elementos binarios 322 conectado o memoria intermedia de elementos binarios 320, la memoria intermedia de bits 358 envía una solicitud 359 a la memoria intermedia de bits global 361 mediante la que se elimina una secuencia de bits 360 de longitud fija de la memoria intermedia de bits global 361 y se inserta en la memoria intermedia de bits 358 particular. Las solicitudes para las secuencias de bits 359 de longitud fija se procesan en orden secuencial. La memoria intermedia de bits global 361 representa una memoria intermedia primero en entrar primero en salir; los bits que se insertan antes dentro de la memoria intermedia de bits global se eliminan antes. Debería observarse que diferentes memorias intermedias de bits 358 pueden solicitar una cantidad diferente de bits, lo que también puede variar a lo largo del tiempo basándose en símbolos ya decodificados; pero el número de bits que se solicita mediante una solicitud particular es conocido en el momento en el que la solicitud se envía a la memoria intermedia de bits global. Debería observarse que la memoria intermedia de bits global 361 no se requiere realmente, dado que las palabras de código podrían leerse también directamente desde el flujo de bits. La memoria intermedia de bits global 361 se incluye principalmente en la ilustración para separar claramente diferentes aspectos de la cadena de procesamiento.
En una realización particular de la invención, las memorias intermedias de bits 358 y la memoria intermedia de bits global 361 se hacen funcionar como se describe a continuación. La cantidad de bits que se solicitan y leen mediante una memoria intermedia de bits 358 particular se indica como Nx, es igual a la cantidad de bits que se escriben en la memoria intermedia de bits global por la memoria intermedia de bits correspondiente en el lado de codificador. Este número de bitsNxpuede ser diferente para diferentes memorias intermedias 358 de bits y puede variar también a lo largo del tiempo. En una realización preferida de la invención, el número de bitsNxque se solicitan y leen por una memoria intermedia de bits 358 particular puede ser fijo a lo largo del tiempo. La lectura de un número fijoNxde bits 360 se activa basándose en el número de bitsMxen la memoria intermedia de bits 358 y la longitud máxima de la palabra de códigoLxasociada. Obsérvese que cada decodificador de elementos binarios 322 puede asociarse con una longitud máxima de palabra de códigoLxdiferente. Si se envía una solicitud para un elemento binario 319 a una memoria intermedia de elementos binarios 320 particular, y la memoria intermedia de elementos binarios 320 particular está vacía, y el númeroMxde bits de la memoria intermedia de bits 358 que se conecta (a través de un decodificador de elementos binarios) con la memoria intermedia de elementos binarios 320 particular es menor que la longitud máxima de palabra de códigoLxque se asocia con el decodificador de elementos binarios 322 correspondiente, la memoria intermedia de bits 358 conectada envía una solicitud 359 para unas nuevas secuencias deNxbits a la memoria intermedia de bits global 361. Como respuesta a esta solicitud, se eliminan los primerosNxbits de la memoria intermedia de bits global 361 y esta secuencia deNxbits 360 se envía a la memoria intermedia de bits 358 desde la que se envió la solicitud. Finalmente, esta secuencia deNxbits se añade a la memoria intermedia de bits 358 correspondiente. A continuación, se lee la siguiente palabra de código 357 desde esta memoria intermedia de bits, y el decodificador de elementos binarios 322 conectado inserta la secuencia de binarios 321 asociada en la memoria intermedia de elementos binarios conectada 320. Como respuesta final a la solicitud original de un binario 319, el primer elemento binario se elimina de la memoria intermedia de elementos binarios 320 y este elemento binario 325 decodificado se envía al selector de memoria intermedia de elementos binarios 318. Cuando se envía la siguiente solicitud de binario 319 a la memoria intermedia de elementos binarios 320 particular y la memoria intermedia de elementos binarios no está vacía, se elimina el siguiente bit de la memoria intermedia de elementos binarios 320. Si la memoria intermedia de elementos binarios está vacía pero el númeroMxde bits de la memoria intermedia de bits 358 conectada es mayor que o igual a la longitud máxima de palabra de códigoLxasociada, la siguiente palabra de código se lee desde la memoria intermedia de bits y se inserta una nueva secuencia de binarios en la memoria intermedia de elementos binarios, a partir de la que se elimina el primer bit y se envía al selector de memoria intermedia de elementos binarios. Si la memoria intermedia de elementos binarios está vacía y el númeroMxde bits en la memoria intermedia de bits 358 conectada es menor que la longitud máxima de la palabra de códigoLxconectada, la siguiente secuencia deNxbits se lee desde la memoria intermedia de bits global 361 y se inserta en la memoria intermedia de bits 358 local conectada, se lee la siguiente palabra de código de la memoria intermedia de bits, se inserta una nueva secuencia de binario en la memoria intermedia de elementos binarios, y el primer elemento binario de la secuencia se elimina y se envía al selector de memoria intermedia de elementos binarios. Este proceso se repite hasta que todos los elementos de sintaxis se decodifican.
Al final de un paquete de datos, podría insertarse más elementos binarios y/o bits que los requeridos para la decodificación de los elementos de sintaxis requeridos dentro de la memoria intermedia de elementos binarios y/o memoria intermedia de bits. Los elementos binarios restantes en la memoria intermedia de elementos binarios y los bits restantes en la memoria intermedia de bits se descartan e ignoran.
Entrelazado de secuencias de bits de longitud fija con restricción de bajo retardo
La realización preferida de un codificador y decodificador de entropía con entrelazado de secuencias de bits de longitud fija puede combinarse también con el esquema para el control del retardo de memoria intermedia del codificador, que se ha descrito anteriormente. El concepto básico es el mismo que en la realización con control del retardo descrito anteriormente. Si una medida en relación con el retardo o una delimitación superior del retardo (véase a continuación) excede un umbral especificado, la primera entrada de memoria intermedia reservada se llena mediante la purga de la memoria intermedia de elementos binarios correspondiente (usando un mecanismo similar como al final de un paquete de datos) y escribiendo potencialmente bits adicionales para el llenado de todos los bits de la entrada de memoria intermedia de longitud fija reservada. Mediante dicho mecanismo, el número de entradas de memoria intermedia en espera se reduce hasta que la medida del retardo asociado es menor que el umbral especificado. En el lado de decodificador, los elementos binarios y bits que se han insertado en el lado de codificador en orden para obedecer a la restricción de retardo deben descartarse. Para este descarte de elementos binarios y bits puede usarse básicamente el mismo mecanismo que en el lado de codificador.
En una realización preferida de la invención, la medida para el retardo (o una delimitación superior del retardo) es el número de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global, donde el número de entradas de memoria intermedia activa es el número de entradas de memoria intermedia de longitud fija reservada más el número de entradas de memoria intermedia de longitud fija que contienen bits ya escritos. Obsérvese que la primera entrada de memoria intermedia es siempre una entrada de memoria intermedia de longitud fija reservada o una entrada de memoria intermedia libre, dado que, si la primera entrada de memoria intermedia contiene bits escritos, estos bits se escriben al flujo de bits. Sea el retardo máximo de memoria intermedia permitida (tal como se determina por la aplicación) deDbits. Este retardo máximo de memoria intermediaDdebe conocerse tanto para el codificador como para el decodificador. En una realización preferida de la invención, el retardo máximo de memoria intermediaDse fija por la aplicación. En otra realización preferida de la invención, el retardo máximo de memoria intermediaDse señaliza en el interior del flujo de bits, por ejemplo, en la cabecera del paquete de datos (o cabecera del fragmento) o en un conjunto de parámetros, que se incluye en el flujo de bits. Puede señalizarse en unidades de bits, o bytes, o un múltiplo de bits, o un múltiplo de bytes. Si un codificador de elementos binarios 310 envía una solicitud para la reserva de una nueva secuencia de bits de longitud fija a la memoria intermedia de bits global 351, se ejecuta el siguiente proceso antes de que se reserve una nueva entrada en la memoria intermedia de longitud fija.
Si el número de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global más el número de bits que se reservarán por la solicitud de reserva actual es mayor que el retardo máximo de memoria intermedia D, la primera entrada de memoria intermedia (que se reserva) se purga por el proceso descrito a continuación hasta que el número de bits en las entradas de memoria intermedia activa en la memoria intermedia de bits global más el número de bits que se reservarán por la solicitud de reserva actual sea menor que o igual al retardo máximo de memoria intermedia D. El purgado de una entrada de memoria intermedia de longitud fija reservada es similar al purgado al final de un paquete de datos: el codificador de elementos binarios 310 que se conecta con la memoria intermedia de bits 348 que ha reservado la primera entrada de memoria intermedia correspondiente se purga mediante la adición de elementos binarios con valores particulares o arbitrarios a la memoria intermedia de elementos binarios 308 conectada hasta que la secuencias de elementos binarios resultantes representen una secuencia de elementos binarios que se asocia con una palabra de código, la palabra de código se inserta entonces en la memoria intermedia de bits 348 correspondiente. Como se ha mencionado anteriormente, una forma preferida para añadir binarios a la memoria intermedia de elementos binarios es añadir aquellos elementos binarios que producen la palabra de código más corta posible. Si, después de la escritura de la palabra de código a la memoria intermedia de bits conectada y la inserción potencial de una secuencia de bits de longitud fija dentro de la memoria intermedia de bits global, hay aún bits en la memoria intermedia de bits (es decir, la escritura de palabras de código no llena completamente la secuencia de bits de longitud fija reservada), se añaden bits adicionales con valores particulares o arbitrarios a la memoria intermedia de bits hasta que se eliminen todos los bits de la memoria intermedia de bits y se escriban en la entrada de memoria intermedia reservada. Finalmente, al final de este proceso, la entrada de memoria intermedia completada (la primera entrada de longitud fija en la memoria intermedia de bits global) se elimina de la memoria intermedia de bits global y se escribe en el flujo de bits.
En el lado de decodificador, se ejecuta un proceso similar para descartar los elementos binarios y bits que se han añadido para obedecer a la restricción de retardo. Por lo tanto, el decodificador mantiene un contadorCque cuenta los bits que se han leído desde la memoria intermedia de bits global (este contador puede mantenerse en la memoria intermedia de bits global). El contadorCse inicializa (por ejemplo, con cero) al comienzo de la decodificación de un paquete de datos y se incrementa después de que se lea una secuencia de longitud fija. Si se lee una secuencia deNxbits de longitud fija desde la memoria intermedia de bits global 361, el contadorCse incrementa enNx.Además del contador global C, cada memoria intermedia de bits 358 contiene un contador Cx, que almacena al valor del contador de bitsCantes de que se lea la última secuencia de bits de longitud fija dentro de la memoria intermedia de bits 358 correspondiente. Cuando una memoria intermedia de bits 358 particular lee una nueva secuencia de bits de longitud fija, su contadorCxse fija igual aCcomo una primera etapa y a continuación la secuencia de bits de longitud fija se lee desde la memoria intermedia de bits global 361. Cuando se envía una solicitud de un binario 319 a una memoria intermedia de elementos binarios 320 particular y la diferencia (C - Cx) entre el contador globalCy el contadorCxde la memoria intermedia de bits 358 conectada es mayor que el retardo máximo de memoria intermedia D, todos los elementos binarios que están actualmente almacenados en la memoria intermedia de elementos binarios 320 particular y todos los bits que están almacenados en la memoria intermedia de bits 358 conectada se descartan e ignoran. Junto a esa etapa adicional, la decodificación se hace funcionar como se ha descrito anteriormente. Si la memoria intermedia de elementos binarios 320 a la que se envía una solicitud de un binario 319 está vacía (o bien porque todos los elementos binarios ya se han eliminado o porque un mecanismo de bajo retardo descartó todos los elementos binarios en la primera etapa después de que se haya recibido la solicitud de binario), el decodificador de elementos binarios 322 conectado intenta leer una nueva palabra de código desde la memoria intermedia de bits 358 conectada. Si el número de bits en la memoria intermedia de bits 358 es menor que la longitud de palabra de código máxima, se lee una nueva secuencia de bits de longitud fija desde la memoria intermedia de bits global 361, antes de que se lea la palabra de código, etc.
Tras haberse descrito realizaciones según las cuales se usa la codificación incluso anterior para comprimir datos de vídeo, se describe una realización incluso adicional para implementar realizaciones de la presente invención que hacen que la implementación sea especialmente eficaz en cuanto a un buen compromiso entre tasa de compresión por un lado y tabla de consulta y coste de cálculo por otro lado. En particular, las siguientes realizaciones permiten el uso de códigos de longitud variable computacionalmente menos complejos con el fin de codificar de manera entrópica los flujos de bits individuales, y cubrir eficazmente porciones de la estimación de probabilidad. En las realizaciones descritas a continuación, los símbolos son de naturaleza binaria y los códigos de VLC presentados a continuación cubren eficazmente la estimación de probabilidad representada, por ejemplo, mediante RLPS, que se extiende dentro de [0;0,5].
En particular, las realizaciones explicadas resumidamente a continuación describen posibles implementaciones para los codificadores 310 y decodificadores de entropía 322 individuales en las Fig. 7 a 17, respectivamente. Son adecuadas para la codificación de elementos binarios, es decir símbolos binarios, como se producen en aplicaciones de compresión de imágenes o vídeos. Por consiguiente, estas realizaciones también son aplicables a la codificación de imágenes o vídeos en la que dichos símbolos binarios se dividen en el uno o más flujos de elementos binarios 307 que van a codificarse y flujos de bits 324 que van a decodificarse, respectivamente, donde cada uno de dichos flujos de elementos binarios puede considerarse como una realización de un proceso de Bernoulli. Las realizaciones descritas a continuación usan uno o más de los diversos códigos denominados variable a variable (códigos v2v) explicados a continuación para codificar los flujos de elementos binarios. Un código v2v puede considerarse como dos códigos libres de prefijo con el mismo número de palabras de código. Un código libre de prefijo primario y uno secundario. Cada palabra de código del código libre de prefijo primario se asocia con una palabra de código del código libre de prefijo secundario. Según las realizaciones explicadas resumidamente a continuación, al menos algunos de los codificadores 310 y decodificadores 322 funcionan de la siguiente manera: para codificar una secuencia particular de elementos 307 binarios, siempre que se lee una palabra de código del código libre de prefijo primario a partir de la memoria 308 intermedia, la palabra de código correspondiente del código libre de prefijo secundario se escribe en el flujo de bits 312. Se usa el mismo procedimiento para decodificar dicho flujo de bits 324, pero intercambiándose los códigos libres de prefijo primario y secundario. Es decir, para decodificar un flujo de bits 324, siempre que se lee una palabra de código del código libre de prefijo secundario a partir del flujo de bits 324 respectivo, se escribe la palabra de código correspondiente del código libre de prefijo primario en la memoria intermedia 320.
Ventajosamente, los códigos descritos a continuación no necesitan tablas de consulta. Los códigos pueden implementarse en forma de máquinas de estados finitos. Los códigos v2v presentados en este caso pueden generarse mediante reglas de construcción sencillas de tal manera que no hay necesidad de almacenar grandes tablas para las palabras de código. En lugar de eso, puede usarse un algoritmo sencillo para llevar a cabo la codificación o decodificación. A continuación, se describen tres reglas de construcción en las que dos de ellas pueden parametrizarse. Cubren porciones diferentes o incluso independientes del intervalo de probabilidad anteriormente mencionado y, por consiguiente, son específicamente ventajosas si se usan en conjunto, tal como los tres códigos en paralelo (cada uno para unos diferentes de los codificadores/decodificadores 11 y 22), o dos de ellos. Con las reglas de construcción descritas a continuación, es posible diseñar un conjunto de códigos v2v, de tal manera que para procesos de Bernoulli con probabilidad arbitraria p, uno de los códigos funciona bien en cuanto a longitud de código en exceso.
Como se mencionó anteriormente, la codificación y decodificación de los flujos 312 y 324 respectivamente pueden realizarse o bien de manera independiente para cada flujo o bien de una manera entrelazada. Sin embargo, esto no es específico de las clases presentadas de códigos v2v, y por tanto a continuación solo se describe la codificación y decodificación de una palabra de código particular para cada una de las tres reglas de construcción. Sin embargo, se enfatiza que todas las realizaciones anteriores referentes a las soluciones de entrelazado también pueden combinarse con los códigos actualmente descritos o los codificadores y decodificadores 310 y 322, respectivamente.
Regla de construcción 1: Códigos de 'PIPE de elementos binarios unarios' o codificadores/decodificadores 310 y 322
Los códigos de PIPE de elementos binarios unarios (PIPE = entropía de reparto de intervalo de probabilidad) son una versión especial de los denominados códigos 'PIPE de elementos binarios', es decir códigos adecuados para la codificación de cualquiera de los flujos de bits 12 y 24 individuales, que transfieren cada uno datos de unas estadísticas de símbolo binarias pertenecientes a un determinado subintervalo de probabilidad del intervalo de probabilidad anteriormente mencionado [0;0,5]. En primer lugar, se describe la construcción de códigos de PIPE de elementos binarios. Puede construirse un código de PIPE de elementos binarios a partir de cualquier código libre de prefijo con al menos tres palabras de código. Para formar un código v2v, usa el código libre de prefijo como código primario y secundario, pero con dos palabras de código del código libre de prefijo secundario intercambiadas. Esto significa que, excepto para dos palabras de código, los elementos binarios se escriben en el flujo de bits sin cambiarse. Con esta técnica, solo se necesita almacenar un código libre de prefijo junto con la información de que dos palabras de código están intercambiadas y, por tanto, se reduce el consumo de memoria. Obsérvese que solo tiene sentido intercambiar palabras de código de diferente longitud ya que, de lo contrario, el flujo de bits tendría la misma longitud que el flujo de elementos binarios (despreciando efectos que pueden producirse al final del flujo de elementos binarios).
Debido a esta regla de construcción, una propiedad destacada de los códigos de PIPE de elementos binarios es que, si se intercambian los códigos libres de prefijo primario y secundario (mientras se conserva el mapeo de las palabras de código), el código v2v resultante es idéntico al código v2v original. Por tanto, el algoritmo de codificación y el algoritmo de decodificación son idénticos para códigos de PIPE de elementos binarios.
Se construye un código de PIPE de elementos binarios unario a partir de un código libre de prefijo especial. Este código libre de prefijo especial se construye de la siguiente manera. En primer lugar, se genera un código libre de prefijo que consiste en n palabras de código unario empezando con '01', '001', '0001', ... hasta que se producen n palabras de código. n es el parámetro para el código de PIPE de elementos binarios unario. A partir de la palabra de código más larga, se elimina el último 1. Esto corresponde a un código unario truncado (pero sin la palabra de código '0'). Después, se generan n - 1 palabras de código unario empezando con '10', '110', '1110', ... hasta que se producen n - 1 palabras de código. A partir de la más larga de estas palabras de código, se elimina el último 0. El conjunto de unión de estos dos códigos libres de prefijo se usa como entrada para generar el código de PIPE de elementos binarios unario. Las dos palabras de código que se intercambian son la que solo consiste en ceros y la que sólo consiste en unos.
Ejemplo para n = 4:
N.° Primario Secundario
1 0000 111
2 0001 0001
3 001 001
4 01 01
5 10 10
6 110 110
7 111 0000
Regla de construcción 2: Códigos 'de unarios a Rice' y codificadores/decodificadores 10 y 22 de unarios a Rice: Los códigos de unarios a Rice usan un código unario truncado como código primario. Es decir, se generan palabras de código unario empezando con '1', '01', '001', ... hasta que se generan 2n 1 palabras de código y a partir de la palabra de código más larga, se elimina el último 1. n es el parámetro del código de unario a Rice. El código libre de prefijo secundario se construye a partir de las palabras de código del código libre de prefijo primario de la siguiente manera. A la palabra de código primaria que solo consiste en ceros se le asigna la palabra de código '1'. Todas las demás palabras de código consisten en la concatenación de la palabra de código '0' con la representación binaria de n bits del número de ceros de la palabra de código correspondiente del código libre de prefijo primario.
Ejemplo para n = 3:
N.° Primario Secundario
1 1 0000
2 01 0001
3 001 0010
4 0001 0011
5 00001 0100
6 000001 0101
7 0000001 0110
8 00000001 0111
9 00000000 1
Obsérvese que esto es idéntico a mapear un código unario infinito a un código de Rice con un parámetro de Rice 2n. Regla de construcción 3: Código de 'tres elementos binarios'
El código de tres elementos binarios viene dado como:
N.° Primario Secundario
1 000 0
2 001 100
3 010 101
4 100 110
5 110 11100
6 101 11101
7 011 11110
8 111 11111
Tiene la propiedad de que el código primario (secuencias de símbolos) tiene longitud fija (siempre tres elementos binarios) y las palabras de código se clasifican mediante números crecientes de unos.
A continuación, se describe una implementación eficiente del código de tres elementos binarios. Un codificador y decodificador para el código de tres elementos binarios pueden implementarse sin almacenar tablas de la siguiente manera.
En el codificador (cualquiera de 10), se leen tres elementos binarios a partir del flujo de elementos binarios (es decir, 7). Si estos tres elementos binarios contienen exactamente un 1, se escribe la palabra de código '1' en el flujo de bits seguido por dos elementos binarios que consisten en la representación binaria de la posición del 1 (empezando desde la derecha con 00). Si los tres elementos binarios contienen exactamente un 0, se escribe la palabra de código '111' en el flujo de bits seguido por dos elementos binarios que consisten en la representación binaria de la posición del 0 (empezando desde la derecha con 00). Las palabras de código restantes '000' y '111' se mapean a '0' y '11111', respectivamente.
En el decodificador (cualquiera de 22), se lee elemento binario o bit a partir del flujo de bits 24 respectivo. Si es igual a '0', se decodifica la palabra de código '000' en el flujo de elementos binarios 21. Si es igual a '1', se leen dos elementos binarios más a partir del flujo de bits 24. Si estos dos bits no son iguales a '11', se interpretan como la representación binaria de un número y se decodifican dos 0 y un 1 en el flujo de bits de tal manera que la posición del 1 se determina mediante el número. Si los dos bits son iguales a '11', se leen dos bits más y se interpretan como la representación binaria de un número. Si este número es menor de 3, se decodifican dos 1 y un 0 y el número determina la posición del 0. Si es igual a 3, se decodifica '111' en el flujo de elementos binarios.
A continuación, se describe una implementación eficiente de códigos de PIPE de elementos binarios unarios. Un codificador y decodificador para códigos de PIPE de elementos binarios unarios pueden implementarse de manera eficiente usando un contador. Debido a la estructura de códigos de PIPE de elementos binarios, la codificación y decodificación de códigos de PIPE de elementos binarios son fáciles de implementar:
En el codificador (cualquiera de 10), si el primer elemento binario de una palabra de código es igual a '0', se procesan elementos binarios hasta que se produce un '1' o hasta que se leen n ceros (incluyendo el primer '0' de la palabra de código). Si se produce un '1', se escriben los elementos binarios leídos en el flujo de bits sin cambiar. De lo contrario (es decir, se leen n ceros), se escriben n - 1 unos en el flujo de bits. Si el primer elemento binario de la palabra de código es igual a '1', se procesan elementos binarios hasta que se produce un '0' o hasta que se leen n -1 unos (incluyendo el primer '1' de la palabra de código). Si se produce un '0', se escriben los elementos binarios leídos en el flujo de bits sin cambiar. De lo contrario (es decir, se leen n - 1 unos), se escriben n ceros en el flujo de bits.
En el decodificador (cualquiera de 322), se usa el mismo algoritmo que para el codificador, dado que es el mismo para códigos de PIPE de elementos binarios tal como se describió anteriormente.
A continuación, se describe una implementación eficiente de códigos de unarios a Rice. Un codificador y decodificador para códigos de unarios a Rice pueden implementarse de manera eficiente usando un contador tal como se describirá ahora.
En el codificador (cualquiera de 310), se leen elementos binarios a partir del flujo de elementos binarios (es decir 7) hasta que se produce un 1 o hasta que se leen 2n ceros. Se cuenta el número de ceros. Si el número contado es igual a 2n, se escribe la palabra de código '1' en el flujo de bits. De lo contrario, se escribe '0', seguido por la representación binaria del número contado, escrito con n bits.
En el decodificador (cualquiera de 322), se lee un bit. Si es igual a '1', se decodifican 2n ceros en la cadena de elementos binarios. Si es igual a '0', se leen n bits más y se interpretan como representación binaria de un número. Este número de ceros se decodifica en el flujo de elementos binarios, seguido por un '1'.
Dicho de otro modo, las realizaciones que acaban de describirse describen un codificador para codificar una secuencia de símbolos 303, que comprende un asignador 316 configurado para asignar varios parámetros 305 a cada símbolo de la secuencia de símbolos basándose en información contenida dentro de símbolos anteriores de la secuencia de símbolos; una pluralidad de codificadores de entropía 310 cada uno de los cuales está configurado para convertir los símbolos 307 reenviados al codificador de entropía 310 respectivo en un flujo de bits 312 respectivo; y un selector 6 configurado para reenviar cada símbolo 303 a uno seleccionado de la pluralidad de codificadores de entropía 10, dependiendo la selección del número de parámetros 305 asignados al símbolo 303 respectivo. Según las realizaciones que acaban de explicarse resumidamente, al menos un primer subconjunto de los codificadores de entropía puede ser un codificador de longitud variable configurado para mapear secuencias de símbolos de longitudes variables dentro del flujo de símbolos 307 en palabras de código de longitudes variables que van a insertarse en el flujo de bits 312, respectivamente, usando cada uno de los codificadores de entropía 310 del primer subconjunto una regla de mapeo biyectivo según la cual palabras de código de un código libre de prefijo primario con (2n-1) > 3 palabras de código se mapean en palabras de código de un código libre de prefijo secundario que es idéntico al código de prefijo primario de tal manera que todas salvo dos de las palabras de código del código libre de prefijo primario se mapean en palabras de código idénticas del código libre de prefijo secundario mientras que las dos palabras de código de los códigos libres de prefijo primario y secundario tienen diferentes longitudes y se mapean entre sí de una manera intercambiada, en la que los codificadores de entropía pueden usar diferentes n para cubrir diferentes porciones de un intervalo del intervalo de probabilidad anteriormente mencionado. El primer código libre de prefijo puede construirse de tal manera que las palabras de código del primer código libre de prefijo son (a,b)2, (a,a,b)3, ..., (a,...,a,b)n, (a,...,a)n, (b,a)2, (b,b,a)3, ..., (b,...,b,a)n-1, (b,...,b)n-1, y las dos palabras de código mapeadas entre sí de la manera intercambiada son (a,...,a)n and (b,...,b)n<-1>con b t a y a,b e {0,1}. Sin embargo, son viables otras alternativas.
Dicho de otro modo, cada uno de un primer subconjunto de codificadores de entropía puede estar configurado para, al convertir los símbolos reenviados al codificador de entropía respectivo en el flujo de bits respectivo, examinar un primer símbolo reenviado al codificador de entropía respectivo, para determinar si (1) el primer símbolo es igual a e {0,1}, en cuyo caso el codificador de entropía respectivo está configurado para examinar los siguientes símbolos reenviados al codificador de entropía respectivo para determinar si (1.1) se produce b con b t a y b e {0,1} dentro de los siguientes n-1 símbolos tras el primer símbolo, en cuyo caso el codificador de entropía respectivo está configurado para escribir una palabra de código en el flujo de bits respectivo, que es igual al primer símbolo seguido por los siguientes símbolos reenviados al codificador de entropía respectivo, hasta el símbolo b; (1.2) no se produce b dentro de los siguientes n-1 símbolos tras el primer símbolo, en cuyo caso el codificador de entropía respectivo está configurado para escribir una palabra de código en el flujo de bits respectivo, que es igual a (b,...,b)n-i; o (2) el primer símbolo es igual a b, en cuyo caso el codificador de entropía respectivo está configurado para examinar los siguientes símbolos reenviados al codificador de entropía respectivo para determinar si (2.1) se produce a dentro de los siguientes n-2 símbolos tras el primer símbolo, en cuyo caso el codificador de entropía respectivo está configurado para escribir una palabra de código en el flujo de bits respectivo, que es igual al primer símbolo seguido por los siguientes símbolos reenviados al codificador de entropía respectivo hasta el símbolo a; o (2.2) no se produce a dentro de los siguientes n-2 símbolos tras el primer símbolo, en cuyo caso el codificador de entropía respectivo está configurado para escribir una palabra de código en el flujo de bits respectivo, que es igual a (a,...,a)n.
Adicional o alternativamente, un segundo subconjunto de los codificadores de entropía 10 puede ser un codificador de longitud variable configurado para mapear secuencias de símbolos de longitudes variables en palabras de código de longitudes fijas, respectivamente, usando cada uno de los codificadores de entropía del segundo subconjunto una regla de mapeo biyectivo según la cual palabras de código de un código unario truncado primario con 2n+1 palabras de código del tipo {(a), (ba), (bba), ... ,(b...ba), (bb...b)} con b tay a,b e {0,1} se mapean en palabras de código de un código libre de prefijo secundario de tal manera que la palabra de código (bb...b) del código unario truncado primario se mapean en la palabra de código (c) del código libre de prefijo secundario y todas las demás palabras de código {(a), (ba), (bba), ... ,(b...ba)} del código unario truncado primario se mapean en palabras de código que tienen (d) con c t d y c,d e {0,1} como prefijo y una palabra de n bits como sufijo, en el que los codificadores de entropía usan diferentes n. Cada uno del segundo subconjunto de codificadores de entropía puede estar configurado de tal manera que la palabra de n bits es una representación de n bits del número de b en la palabra de código respectiva del código unario truncado primario. Sin embargo, son viables otras alternativas.
De nuevo, desde el punto de vista del modo de funcionamiento del codificador 10 respectivo, cada uno del segundo subconjunto de codificadores de entropía puede estar configurado para, al convertir los símbolos reenviados al codificador de entropía respectivo en el flujo de bits respectivo, contar un número de b en una secuencia de símbolos reenviados al codificador de entropía respectivo, hasta que se produce una a, o hasta que el número de la secuencia de símbolos reenviados al codificador de entropía respectivo alcanza 2n siendo los 2n símbolos de la secuencia b, y (1) si el número de b es igual a 2n, escribir c con c e {0,1} como palabra de código de un código libre de prefijo secundario en el flujo de bits respectivo, y (2) si el número de b es inferior a 2n, escribir una palabra de código del código libre de prefijo secundario en el flujo de bits respectivo, que tiene (d) con c t d y d e {0,1} como prefijo y una palabra de n bits determinada dependiendo del número de b como sufijo.
También adicional o alternativamente, uno predeterminado de los codificadores de entropía 10 puede ser un codificador de longitud variable configurado para mapear secuencias de símbolos de longitudes fijas en palabras de código de longitudes variables, respectivamente, usando el codificador de entropía predeterminado una regla de mapeo biyectivo según la cual 23 palabras de código de longitud 3 de un código primario se mapean en palabras de código de un código libre de prefijo secundario de tal manera que la palabra de código (aaa)3 del código primario con a e {0,1} se mapea en la palabra de código (c) con c e {0,1}, las tres palabras de código del código primario que tienen exactamente una b con bta y b e {0,1} se mapean palabras de código que tienen (d) con c t d y d e {0,1} como prefijo y una primera palabra de 2 bits respectiva de un primer conjunto de palabras de 2 bits como sufijo, las tres palabras de código del código primario que tienen exactamente una a se mapean en palabras de código que tienen (d) como prefijo y una concatenación de una primera palabra de 2 bits que no es un elemento del primer conjunto y una segunda palabra de 2 bits de un segundo conjunto de palabras de 2 bits, como sufijo, y en la que la palabra de código (bbb)3 se mapea en una palabra de código que tiene (d) como prefijo y una concatenación de la primera palabra de 2 bits que no es un elemento del primer conjunto y una segunda palabra de 2 bits que no es un elemento del segundo conjunto, como sufijo. La primera palabra de 2 bits de las palabras de código del código primario que tienen exactamente una b pueden ser una representación de 2 bits de una posición de la b en la palabra de código respectiva del código primario, y la segunda palabra de 2 bits de las palabras de código del código primario que tienen exactamente una a puede ser una representación de 2 bits de una posición de la a en la palabra de código respectiva del código primario. Sin embargo, son viables otras alternativas.
De nuevo, el predeterminado de los codificadores de entropía puede estar configurado para, al convertir los símbolos reenviados al codificador de entropía predeterminado en el flujo de bits respectivo, examinar los símbolos para el codificador de entropía predeterminado en tripletes en cuanto a si (1) el triplete consiste en a, en cuyo caso el codificador de entropía predeterminado está configurado para escribir la palabra de código (c) en el flujo de bits respectivo, (2) el triplete comprende exactamente una b, en cuyo caso el codificador de entropía predeterminado está configurado para escribir una palabra de código que tiene (d) como prefijo y una representación de 2 bits de una posición de la b en el triplete como sufijo, en el flujo de bits respectivo; (3) el triplete comprende exactamente una a, en cuyo caso el codificador de entropía predeterminado está configurado para escribir una palabra de código que tiene (d) como prefijo y una concatenación de la primera palabra de 2 bits que no es un elemento del primer conjunto y una representación de 2 bits de una posición de la a en el triplete como sufijo, en el flujo de bits respectivo; o (4) el triplete consiste en b, en cuyo caso el codificador de entropía predeterminado está configurado para escribir una palabra de código que tiene (d) como prefijo y una concatenación de la primera palabra de 2 bits que no es un elemento del primer conjunto y la primera palabra de 2 bits que no es un elemento del segundo conjunto como sufijo, en el flujo de bits respectivo.
Con respecto al lado de decodificación, las realizaciones que acaban de describirse dan a conocer un decodificador para reconstruir una secuencia de símbolos 326, que comprende una pluralidad de decodificadores de entropía 322, cada uno de los cuales está configurado para convertir un flujo de bits 324 respectivo en símbolos 321; un asignador 316 configurado para asignar varios parámetros a cada símbolo 326 de una secuencia de símbolos que va a reconstruirse basándose en información contenida dentro de símbolos anteriormente reconstruidos de la secuencia de símbolos; y un selector 318 configurado para recuperar cada símbolo 325 de la secuencia de símbolos que va a reconstruirse a partir de uno seleccionado de la pluralidad de decodificadores de entropía, dependiendo la selección del número de parámetros definidos en el símbolo respectivo. Según las realizaciones que acaban de describirse al menos un primer subconjunto de los decodificadores de entropía 322 son decodificadores de longitud variable configurados para mapear palabras de código de longitudes variables en secuencias de símbolos de longitudes variables, respectivamente, usando cada uno de los decodificadores de entropía 22 del primer subconjunto una regla de mapeo biyectivo según la cual palabras de código de un código libre de prefijo primario con (2n-1) > 3 palabras de código se mapean en palabras de código de un código libre de prefijo secundario que es idéntico al código de prefijo primario de tal manera que todas salvo dos de las palabras de código del código libre de prefijo primario se mapean en palabras de código idénticas del código libre de prefijo secundario mientras que las dos palabras de código de los códigos libres de prefijo primario y secundario tienen longitudes diferentes y se mapean entre sí de una manera intercambiada, en la que los codificadores de entropía usan diferentes n. El primer código libre de prefijo puede construirse de tal manera que las palabras de código del primer código libre de prefijo son (a,b)2, (a,a,b)3, ..., (a,...,a,b)n, (a,...,a)n, (b,a)2, (b,b,a)3, ..., (b,...,b,a)n-1, (b,...,b)n-1, y las dos palabras de código mapeadas entre sí de la manera intercambiada pueden ser (a,...,a)n y (b,...,b)n<-1>con b t a y a,b e {0,1}. Sin embargo, son viables otras alternativas.
Cada uno del primer subconjunto de codificadores de entropía puede estar configurado para, al convertir el flujo de bits respectivo en los símbolos, examinar un primer bit del flujo de bits respectivo, para determinar si (1) el primer bit es igual a 0 {0,1}, en cuyo caso el codificador de entropía respectivo está configurado para examinar los siguientes bits del flujo de bits respectivo para determinar si (1.1) se produce b con b t a y b 0 {0,1} dentro de los siguientes n-1 bits tras el primer bit, en cuyo caso el decodificador de entropía respectivo está configurado para reconstruir una secuencia de símbolos, que es igual al primer bit seguido por los siguientes bits del flujo de bits respectivo, hasta el bit b; o (1.2) no se produce b dentro de los siguientes n-1 bits tras el primer bit, en cuyo caso el decodificador de entropía respectivo está configurado para reconstruir una secuencia de símbolos, que es igual a (b,...,b)n<-1>; o (2) el primer bit es igual a b, en cuyo caso el decodificador de entropía respectivo está configurado para examinar los siguientes bits del flujo de bits respectivo para determinar si (2.1) se produce a dentro de los siguientes n-2 bits tras el primer bit, en cuyo caso el decodificador de entropía respectivo está configurado para reconstruir una secuencia de símbolos, que es igual al primer bit seguido por los siguientes bits del flujo de bits respectivo hasta el símbolo a; o (2.2) no se produce a dentro de los siguientes n-2 bits tras el primer bit, en cuyo caso el decodificador de entropía respectivo está configurado para reconstruir una secuencia de símbolos, que es igual a (a,...,a)n.
Adicional o alternativamente, al menos un segundo subconjunto de los decodificadores de entropía 322 puede ser un decodificador de longitud variable configurado para mapear palabras de código de longitudes fijas en secuencias de símbolos de longitudes variables, respectivamente, usando cada uno de los decodificadores de entropía del segundo subconjunto una regla de mapeo biyectivo según la cual palabras de código de un código libre de prefijo secundario se mapean en palabras de código de un código unario truncado primario con 2n+1 palabras de código del tipo {(a), (ba), (bba), ... ,(b...ba), (bb...b)} con b t a y a,b e {0,1} de tal manera que palabra de código (c) del código libre de prefijo secundario se mapea en la palabra de código (bb...b) del código unario truncado primario y palabras de código que tienen (d) con c t d y c,d e {0,1} como prefijo y una palabra de n bits como sufijo, se mapean en una respectiva de las otras palabras de código {(a), (ba), (bba), ..., (b...ba)} del código unario truncado primario, en la que los decodificadores de entropía usan diferentes n. Cada uno del segundo subconjunto de decodificadores de entropía puede estar configurado de tal manera que la palabra de n bits es una representación de n bits del número de b en la palabra de código respectiva del código unario truncado primario. Sin embargo, son viables otras alternativas.
Cada uno de un segundo subconjunto de decodificadores de entropía puede ser un decodificador de longitud variable configurado para mapear palabras de código de longitudes fijas en secuencias de símbolos de longitudes variables, respectivamente, y configurado para, al convertir el flujo de bits del decodificador de entropía respectivo en los símbolos, examinar un primer bit del flujo de bits respectivo para determinar si (1) el mismo es igual a c con c e {0,1}, en cuyo caso el decodificador de entropía respectivo está configurado para reconstruir una secuencia de símbolos que es igual a (bb...b)<2>n con b e {0,1}; o (2) el mismo es igual a d con c t d y c,d e {0,1}, en cuyo caso el decodificador de entropía respectivo está configurado para determinar una palabra de n bits a partir de n bits adicionales del flujo de bits respectivo, tras el primer bit, y reconstruir una secuencia de símbolos a partir de la misma que es del tipo {(a), (ba), (bba), ... ,(b...ba), (bb...b)} con b t a y b e {0,1} dependiendo el número de b de la palabra de n bits.
Adicional o alternativamente, uno predeterminado de los decodificadores de entropía 322 puede ser un decodificador de longitud variable configurado para mapear palabras de código de longitudes variables en secuencias de símbolos de longitudes fijas, respectivamente, usando el decodificador de entropía predeterminado una regla de mapeo biyectivo según la cual palabras de código de un código libre de prefijo secundario se mapean en 23 palabras de código de longitud 3 de un código primario de tal manera que la palabra de código (c) con c e {0,1} se mapea en la palabra de código (aaa)3 del código primario con a e {0,1}, las palabras de código que tienen (d) con c t d y d e {0,1} como prefijo y una primera palabra de 2 bits respectiva de un primer conjunto de tres palabras de 2 bits como sufijo se mapean en las tres palabras de código del código primario que tienen exactamente una b con bta y b e {0,1}, las palabras de código que tienen (d) como prefijo y una concatenación de una primera palabra de 2 bits que no es un elemento del primer conjunto y una segunda palabra de 2 bits de un segundo conjunto de tres palabras de 2 bits, como sufijo se mapean en las tres palabras de código del código primario que tienen exactamente una a, y una palabra de código que tiene (d) como prefijo y una concatenación de la primera palabra de 2 bits que no es un elemento del primer conjunto y una segunda palabra de 2 bits que no es un elemento del segundo conjunto, como sufijo se mapea en la palabra de código (bbb)3. La primera palabra de 2 bits de las palabras de código del código primario que tienen exactamente una b puede ser una representación de 2 bits de una posición de la b en la palabra de código respectiva del código primario, y la segunda palabra de 2 bits de las palabras de código del código primario que tienen exactamente una a puede ser una representación de 2 bits de una posición de la a en la palabra de código respectiva del código primario. Sin embargo, son viables otras alternativas.
El predeterminado de los decodificadores de entropía puede ser un decodificador de longitud variable configurado para mapear palabras de código de longitudes variables en secuencias de símbolos de tres símbolos cada una, respectivamente, y configurado para, al convertir el flujo de bits del decodificador de entropía respectivo en los símbolos, examinar el primer bit del flujo de bits respectivo para determinar si (1) el primer bit del flujo de bits respectivo es igual a c con c e {0,1}, en cuyo caso el decodificador de entropía predeterminado está configurado para reconstruir una secuencia de símbolos que es igual a (aaa)3 con a 0 {0,1}, o (2) el primer bit del flujo de bits respectivo es igual a d con c t d y d e {0,1}, en cuyo caso el decodificador de entropía predeterminado está configurado para determinar una primera palabra de 2 bits a partir de 2 bits adicionales del flujo de bits respectivo, tras el primer bit, y examinar la primera palabra de 2 bits para determinar si (2.1) la primera palabra de 2 bits no es un elemento de un primer conjunto de tres palabras de 2 bits, en cuyo caso el decodificador de entropía predeterminado está configurado para reconstruir una secuencia de símbolos que tiene exactamente una b con bta y b 0 {0,1}, dependiendo la posición de b en la secuencia de símbolos respectiva de la primera palabra de 2 bits, o (2.2) la primera palabra de 2 bits es un elemento del primer conjunto, en cuyo caso el decodificador de entropía predeterminado está configurado para determinar una segunda palabra de 2 bits a partir de 2 bits adicionales del flujo de bits respectivo, tras los dos bits a partir de los cuales se ha determinado la primera palabra de 2 bits, y examinar la segunda palabra de 2 bits para determinar si (3.1) la segunda palabra de 2 bits no es un elemento de un segundo conjunto de tres palabras de 2 bits, en cuyo caso el decodificador de entropía predeterminado está configurado para reconstruir una secuencia de símbolos que tiene exactamente una a, dependiendo la posición de la a en la secuencia de símbolos respectiva de la segunda palabra de 2 bits, o (3.2) la segunda palabra de 2 bits es un elemento de un segundo conjunto de tres palabras de 2 bits, en cuyo caso el decodificador de entropía predeterminado está configurado para reconstruir una secuencia de símbolos que es igual a (bbb)3.
Ahora, tras haber descrito el concepto general de un esquema de codificación de vídeo, se describen realizaciones de la presente invención con respecto a las realizaciones anteriores. Dicho de otro modo, las realizaciones explicadas resumidamente a continuación pueden implementarse mediante el uso de los esquemas anteriores, y viceversa, los esquemas de codificación anteriores pueden implementarse usando y aprovechando las realizaciones explicadas resumidamente a continuación.
En las realizaciones anteriores descritas con respecto a las Fig. 7 a 9, el codificador de entropía y los decodificadores de las Fig. 1 a 6 se implementaron según un concepto de PIPE. Una realización especial usó codificadores/decodificadores de un único estado de probabilidad aritméticos 310 y 322. Como se describirá a continuación, según una realización alternativa, las entidades 306-310 y las entidades 318 a 322 correspondientes pueden sustituirse por un motor de codificación aritmética común, que gestiona simplemente un estado común R y L y codifica todos los símbolos en un flujo de bits común, renunciando así a los aspectos ventajosos del presente concepto de PIPE con respecto al procesamiento en paralelo, pero evitando la necesidad de entrelazar los flujos de bits parciales tal como se comenta adicionalmente a continuación. Al hacer esto, el número de estados de probabilidad mediante el cual se estiman las probabilidades del contexto mediante actualización (consulta de tabla), puede ser superior al número de estados de probabilidad mediante el cual se realiza la subdivisión de intervalos de probabilidad. Es decir, de manera análoga a la cuantificación del valor de anchura de intervalo de probabilidad antes de indexar en la tabla Rtab, también puede cuantificarse el índice de estado de probabilidad. Por tanto, la descripción anterior de una posible implementación para los codificadores/decodificadores 310 y 322 individuales puede extenderse para un ejemplo de una implementación de los codificadores/decodificadores de entropía 318-322/306-310 como motores de codificación/decodificación aritmética binarios adaptativos de contexto. De manera más precisa, según una realización, el codificador de entropía acoplado a la salida del asignador de parámetros (que actúa como asignador de contextos, en este caso) funciona de la siguiente manera:
0. El asignador 304 reenvía el valor de elemento binario junto con el parámetro de probabilidad. La probabilidad es pState_current[elemento binario].
1. Por tanto, el motor de codificación de entropía recibe: 1) valLPS, 2) el elemento binario y 3) la estimación de distribución de probabilidad pState_current[elemento binario]. pState_current[elemento binario] puede tener más estados que el número de índices de estado de probabilidad distinguibles de Rtab. Si es así, pState_current[elemento binario] puede cuantificarse tal como, por ejemplo, ignorando m LSB siendo m mayor de o igual a 1 y preferiblemente 2 o 3 para obtener un p_state, es decir el índice que se usa después para acceder a la tabla Rtab. Sin embargo, la cuantificación puede omitirse, es decir p_state puede ser pState_current[elemento binario].
2. Después, se realiza una cuantificación de R (tal como se mencionó anteriormente: o bien se usa/gestiona un R (y L correspondiente con un flujo de bits común) para todos los valores distinguibles de p_state, o bien un R (y L correspondiente con flujo de bits parcial asociado por par de R/L) por valor distinguible de p_state, correspondiendo este último caso a tener un codificador de elementos binarios 310 por un valor de este tipo) q_index = Qtab[R>>q] (o alguna otra forma de cuantificación).
3. Después, se realiza una determinación de R<lps>y R:
R<lps>= Rtab[p_state][q_index]; Rtab tiene almacenado en el mismo valores previamente calculados para p[p_state]Q[q_index]
R = R - R<lps>[es decir, R se actualiza previamente de manera preliminar como si "elemento binario" fuera MPS]
4. Cálculo del nuevo intervalo parcial:
si (elemento binario = 1 - valMPS) entonces
L-L+R
R - R<lps>
5. Renormalización de L y R, escritura de bits.
De manera análoga, el decodificador de entropía acoplado a la salida del asignador de parámetros (que actúa como asignador de contextos, en este caso) puede funcionar de la siguiente manera:
0. El asignador 304 reenvía el valor de elemento binario junto con el parámetro de probabilidad. La probabilidad es pState_current[elemento binario].
1. Por tanto, el motor de decodificación de entropía recibe la solicitud de un elemento binario junto con: 1) valLPS y 2) la estimación de distribución de probabilidad pstate_current[elemento binario]. pstate_current[elemento binario] puede tener más estados que el número de índices de estado de probabilidad distinguibles de Rtab. Si esto es así, pState_current[elemento binario] puede cuantificarse tal como, por ejemplo, ignorando m LSB siendo m mayor de o igual a 1 y preferiblemente 2 o 3 para obtener un p_state, es decir el índice que se usa después para acceder a la tabla Rtab. Sin embargo, la cuantificación puede omitirse, es decir p_state puede ser pState_current[elemento binario].
2. Después, se realiza una cuantificación de R (tal como se mencionó anteriormente: o bien se usa/gestiona un R (y V correspondiente con un flujo de bits común) para todos los valores distinguibles de p_state, o bien un R (y V correspondiente con flujo de bits parcial asociado por par de R/L) por valor distinguible de p_state, correspondiendo este último caso a tener un codificador de elementos binarios 310 por un valor de este tipo) q_index = Qtab[R>>q] (o alguna otra forma de cuantificación)
3. Después, se realiza una determinación de R<lps>y R:
R<lps>= Rtab[p_state][q_index]; Rtab tiene almacenado en el mismo valores previamente calculados para p[p_state]- Q[q_index]
R = R - RLPS [es decir, R se actualiza previamente de manera preliminar como si "elemento binario" fuera MPS]
4. Determinación de elemento binario dependiendo de la posición del intervalo parcial:
si (V 3 R) entonces
elemento binario - 1 - valMPS (el elemento binario se decodifica como LPS; el selector de memoria intermedia de elementos binarios 18 obtendrá el valor de elemento binario real mediante el uso de esta información de elemento binario y valMPS)
V - V - R
R - RLPS
si no
elemento binario - val MPS (el elemento binario se decodifica como MPS; el valor de elemento binario real se obtiene usando esta información de elemento binario y valMPS)
5. Renormalización de R, lectura de un bit y actualización de V.
Como se describió anteriormente, el asignador 4 asigna pState_current[elemento binario] a cada elemento binario. La asociación puede realizarse basándose en una selección de contexto. Es decir, el asignador 4 puede seleccionar un contexto usando un índice de contexto ctxIdx que, a su vez, tiene una pState_current respectiva asociada con el mismo. Puede realizarse una actualización de probabilidad cada vez que se ha aplicado una probabilidad pState_current[elemento binario] a un elemento binario actual. Se realiza una actualización del estado de probabilidad pState_current[elemento binario] dependiendo del valor del bit codificado:
si (bit = 1 - valMPS) entonces
pState_current ^ Next_State_LPS [pState_current]
si (pState_current = 0) entonces valMPS ^ 1 - valMPS
si no
pState_current ^ Next_State_MPS [pState_current]
Si se proporciona más de un contexto, la adaptación se realiza en función del contexto, es decir se usa pState_current[ctxIdx] para la codificación y después se actualiza usando el valor de elemento binario actual (codificado o decodificado, respectivamente).
Como se explicará resumidamente con más detalle a continuación, según realizaciones descritas ahora, el codificador y decodificador puede implementarse opcionalmente para funcionar en diferentes modos, concretamente modo de baja complejidad (LC) y de alta eficiencia (HE). Esto se ilustra principalmente con respecto a la codificación de PIPE a continuación (mencionando después los modos de PIPE de LC y HE), pero la descripción de los detalles de ajuste a escala de la complejidad puede transferirse fácilmente a otras implementaciones de los motores de codificación/decodificación de entropía tales como la realización de usar un codificador/decodificador aritmético adaptativo de contexto común.
Según las realizaciones explicadas resumidamente a continuación, ambos modos de codificación de entropía pueden compartir
• la misma sintaxis y semántica (para la secuencia de elementos 301 y 327 de sintaxis, respectivamente)
• los mismos esquemas de binarización para todos los elementos de sintaxis (tal como se especifica actualmente para CABAC) (es decir, los binarizadores pueden funcionar independientemente del modo activado)
• el uso de los mismos códigos de PIPE (es decir, los codificadores/decodificadores de elementos binarios pueden funcionar independientemente del modo activado)
• el uso de valores de inicialización de modelo de probabilidad de 8 bits (en lugar de valores de inicialización de 16 bits tal como se especifica actualmente para CABAC)
De manera general, LC-PIPE difiere de HE-PIPE en la complejidad de procesamiento, tal como la complejidad de seleccionar la trayectoria 312 de PIPE para cada elemento binario.
Por ejemplo, el modo de LC puede funcionar con las siguientes restricciones: para cada elemento binario (binIdx), puede haber exactamente un modelo de probabilidad, es decir, un ctxIdx. Es decir, no puede proporcionarse ninguna selección/adaptación de contexto en LC PIPE. Sin embargo, elementos de sintaxis específicos tales como los usados para la codificación de residuos pueden codificarse usando contextos, tal como se explica resumidamente de manera adicional a continuación. Además, todos los modelos de probabilidad pueden ser no adaptativos, es decir, todos los modelos pueden inicializarse al comienzo de cada segmento con probabilidades de modelo apropiadas (dependiendo de la elección de tipo de segmento y QP de segmento) y pueden mantenerse fijas a lo largo de todo el procesamiento del segmento. Por ejemplo, pueden soportarsesolo 8 probabilidades de modelo diferentescorrespondientes a 8 códigos 310/322 de PIPE diferentes, tanto para modelado de contextos como para la codificación. Elementos de sintaxis específicos para codificación de residuos, es decir, significance_coeff_flag y coeff_abs_level_greaterX (con X = 1, 2), cuya semántica se explica resumidamente con más detalle a continuación, pueden asignarse a modelos de probabilidad de tal manera que (al menos) grupos de, por ejemplo, 4 elementos de sintaxis se codifican/decodifican con la misma probabilidad de modelo. En comparación con CAVLC, el modo LC-PIPE logra aproximadamente elmismo rendimiento de RD y la misma producción.
HE-PIPE puede configurarse para ser conceptualmente similar a CABAC de H.264 con las siguientes diferencias: se sustituye la codificación aritmética binaria (BAC) por codificación de PIPE (igual que en el caso de LC-PIPE). Cada modelo de probabilidad, es decir, cada ctxIdx, puede representarse por un pipeIdx y un refineIdx, en los que pipeIdx con valores en el intervalo entre 0...7 representa la probabilidad de modelo de los 8 códigos de PIPE diferentes. Este cambio afecta solo a la representación interna de estados, no al comportamiento de la propia máquina de estados (es decir, estimación de probabilidad). Tal como se explicará resumidamente con más detalle a continuación, la inicialización de modelos de probabilidad puede usar valores de inicialización de 8 bits tal como se mencionó anteriormente. Puede usarse exploración hacia atrás de elementos de sintaxis coeff_abs_level_greaterX (con X = 1, 2), coeff_abs_level_minus3 y coeff_sign_flag (cuyas semánticas se aclararán a partir de la siguiente discusión) a lo largo de la misma trayectoria de exploración que la exploración hacia delante (usada, por ejemplo, en la codificación de mapa de significación). También puede simplificarse la derivación de contextos para la codificación de coeff_abs_level_greaterX (con X = 1, 2). En comparación con CABAC, el HE-PIPE propuesto logra aproximadamente el mismo rendimiento de R-D con una producción mejor.
Resulta fácil constatar que los modos que acaban de mencionarse se generan fácilmente haciendo, por ejemplo, que el motor de codificación/decodificación aritmética binaria adaptativa de contexto anteriormente mencionado sea de tal manera que el mismo funcione en diferentes modos.
Por tanto, según una realización según un primer aspecto de la presente invención, puede construirse un decodificador para decodificar un flujo de datos tal como se muestra en la Fig. 18. El decodificador es para decodificar un flujo de datos 401, tal como un flujo de bits 340 entrelazado, en el que se codifican datos de medios, tales como datos de vídeo. El decodificador comprende un conmutador de modo 400 configurado para activar el modo de baja complejidad o el modo de alta eficiencia dependiendo del flujo de datos 401. Para ello, el flujo de datos 401 puede comprender un elemento de sintaxis tal como un elemento de sintaxis binario, que tiene un valor binario de 1 en el caso de que el modo de baja complejidad sea el activado, y que tiene un valor binario de 0 en el caso de que el modo de alta eficiencia sea el activado. Evidentemente, la asociación entre valor binario y modo de codificación puede conmutarse, y también puede usarse un elemento de sintaxis no binario que tiene más de dos valores posibles. Dado que la selección real entre ambos modos aún no queda clara antes de la recepción del elemento de sintaxis respectivo, este elemento de sintaxis puede estar contenido dentro de alguna cabecera inicial del flujo de datos 401 codificado, por ejemplo, con una estimación de probabilidad o modelo de probabilidad fija o que se escribe en el flujo de datos 401 tal cual, es decir, usando un modo de derivación.
Además, el decodificador de la Fig. 18 comprende una pluralidad de decodificadores de entropía 322 cada uno de los cuales está configurado para convertir palabras de código en el flujo de datos 401 en secuencias parciales 321 de símbolos. Como se describió anteriormente, puede conectarse un desentrelazador 404 entre entradas de decodificadores de entropía 322 por un lado y la entrada del decodificador de la Fig. 18 en el que se aplica el flujo de datos 401, por otro lado. Además, tal como ya se describió anteriormente, cada uno de los decodificadores de entropía 322 puede asociarse con un intervalo de probabilidad respectivo, cubriendo los intervalos de probabilidad de los diversos decodificadores de entropía en conjunto el intervalo de probabilidad completo entre 0 y 1 (o 0 y 0,5 en el caso de los decodificadores de entropía 322 que tratan con MPS y LPS en vez de valores de símbolo absolutos). Anteriormente se describieron detalles referentes a esta cuestión. Más adelante, se supone que el número de decodificadores 322 es 8 estando un índice de PIPE asociado con cada decodificador, pero cualquier otro número también es viable. Además, uno de estos codificadores, a continuación, esto es a modo de ejemplo, el que tiene pipe_id 0, está optimizado para elementos binarios que tienen estadísticas equiprobables, es decir su valor de elemento binario adopta 1 y 0 con igual probabilidad. Este decodificador puede pasar simplemente los elementos binarios. El codificador 310 respectivo funciona de la misma manera. Incluso puede omitirse cualquier manipulación de elementos binarios dependiendo del valor del valor de elemento binario más probable, valMPS, por los selectores 402 y 502, respectivamente. Dicho de otro modo, la entropía del flujo parcial respectivo ya es óptima.
Además, el decodificador de la Fig. 18 comprende un selector 402 configurado para recuperar cada símbolo de una secuencia 326 de símbolos a partir de uno seleccionado de la pluralidad de decodificadores de entropía 322. Tal como se mencionó anteriormente, el selector 402 puede estar dividido en un asignador de parámetros 316 y un selector 318. Un desimbolizador 314 está configurado para desimbolizar la secuencia de símbolos 326 con el fin de obtener una secuencia 327 de elementos de sintaxis. Un reconstructor 404 está configurado para reconstruir los datos de medios 405 basándose en la secuencia de elementos de sintaxis 327. El selector 402 está configurado para realizar la selección dependiendo del modo activado del modo de baja complejidad y el modo de alta eficiencia tal como se indica mediante la flecha 406.
Como ya se indicó anteriormente, el reconstructor 404 puede ser parte de un decodificador de vídeo basado en bloques predictivo que funciona con una sintaxis y semántica fijas de elementos de sintaxis, es decir, fijas con respecto a la selección de modo mediante el conmutador de modo 400. Es decir, la construcción del reconstructor 404 no experimenta problemas debido a la conmutabilidad de modo. Más precisamente, el reconstructor 404 no aumenta el coste de implementación debido a la conmutabilidad de modo ofrecida por el conmutador de modo 400 y al menos la funcionalidad con respecto a los datos de residuo y los datos de predicción siguen siendo iguales independientemente del modo seleccionado por el conmutador 400. Sin embargo, se aplica lo mismo con respecto a los decodificadores de entropía 322. Todos estos decodificadores 322 vuelven a usarse en ambos modos y, por consiguiente, no hay ningún coste de implementación adicional, aunque el decodificador de la Fig. 18 sea compatible con ambos modos, los modos de baja complejidad y de alta eficiencia.
Como aspecto secundario debe observarse que el decodificador de la Fig. 18 no solo puede funcionar con flujos de datos autocontenidos o bien en un modo o bien en el otro. En vez de eso, el decodificador de la Fig. 18 así como el flujo de datos 401 pueden estar configurados de tal manera que la conmutación entre ambos modos será posible incluso durante un fragmento de datos de medios tal como durante algún fragmento de audio o de vídeo, con el fin, por ejemplo, de controlar la complejidad de codificación en el lado de decodificación dependiendo de condiciones externas o del entorno tales como un estado de batería o similar usando un canal de realimentación desde el decodificador hasta el codificador con el fin de controlar en bucle cerrado en consecuencia la selección de modo.
Por tanto, el decodificador de la Fig. 18 funciona de manera similar en ambos casos, en el caso de seleccionarse el modo de LC o seleccionarse el modo de HE. El reconstructor 404 realiza la reconstrucción usando los elementos de sintaxis y solicita el elemento de sintaxis actual de un tipo de elemento de sintaxis predeterminado procesando u obedeciendo alguna recomendación de estructura de sintaxis. El desimbolizador 314 solicita varios elementos binarios con el fin de proporcionar una binarización válida para el elemento de sintaxis solicitado por el reconstructor 404. Evidentemente, en el caso de un alfabeto binario, la binarización realizada por el desimbolizador 314 se reduce a simplemente pasar el símbolo/elemento 326 binario respectivo al reconstructor 404 como el elemento de sintaxis binario actualmente solicitado.
Sin embargo, el selector 402 actúa independientemente en el modo seleccionado por el conmutador de modo 400. El modo de funcionamiento del selector 402 tiende a ser más complejo en el caso del modo de alta eficiencia y menos complejo en el caso del modo de baja complejidad. Además, la siguiente discusión mostrará que el modo de funcionamiento del selector 402 en el modo menos complejo también tiende a reducir la tasa a la que el selector 402 cambia la selección entre los decodificadores de entropía 322 en la recuperación de símbolos consecutivos a partir de los decodificadores de entropía 322. Dicho de otro modo, en el modo de baja complejidad, hay una probabilidad aumentada de que se recuperen símbolos inmediatamente consecutivos a partir del mismo decodificador de entropía entre la pluralidad de decodificadores de entropía 322. A su vez, esto permite una recuperación más rápida de los símbolos a partir de los decodificadores de entropía 322. A su vez, en el modo de alta eficiencia, el modo de funcionamiento del selector 402 tiende a conducir a una selección entre los decodificadores de entropía 322 en la que el intervalo de probabilidad asociado con el decodificador de entropía 322 seleccionado respectivo se ajusta más estrechamente a las estadísticas de símbolo reales del símbolo actualmente recuperado por el selector 402, proporcionando así una mejor razón de compresión en el lado de codificación cuando se genera el flujo de datos respectivo según el modo de alta eficiencia.
Por ejemplo, el comportamiento diferente del selector 402 en ambos modos puede realizarse de la siguiente manera. Por ejemplo, el selector 402 puede estar configurado para realizar, para un símbolo predeterminado, la selección entre la pluralidad de decodificadores de entropía 322 dependiendo de símbolos anteriormente recuperados de la secuencia 326 de símbolos en el caso de que esté activado el modo de alta eficiencia e independientemente de cualquier símbolo anteriormente recuperado de la secuencia de símbolos en el caso de que esté activado el modo de baja complejidad. La dependencia de símbolos anteriormente recuperados de la secuencia 326 de símbolos puede resultar de una adaptabilidad de contexto y/o una adaptabilidad de probabilidad. Ambas adaptabilidades pueden desactivarse durante el modo de baja complejidad en el selector 402.
Según una realización adicional, el flujo de datos 401 puede estar estructurado en porciones consecutivas tales como segmentos, tramas, grupo de imágenes, secuencias de tramas o similares, y cada símbolo de la secuencia de símbolos puede estar asociado con uno respectivo de una pluralidad de tipos de símbolo. En este caso, el selector 402 puede estar configurado para hacer variar, para símbolos de un tipo de símbolo predeterminado dentro de una porción actual, dependiendo la selección de símbolos anteriormente recuperados de la secuencia de símbolos del tipo de símbolo predeterminado dentro de la porción actual en el caso de que esté activado el modo de alta eficiencia, y dejar la selección constante dentro de la porción actual en el caso de que esté activado el modo de baja complejidad. Es decir, puede permitirse que el selector 402 cambie la selección entre los decodificadores de entropía 322 para el tipo de símbolo predeterminado, pero estos cambios están restringidos a producirse entre transiciones entre porciones consecutivas. Mediante esta medida, las evaluaciones de estadísticas de símbolos reales están restringidas a instancias temporales que se producen con poca frecuencia mientras que la complejidad de codificación se reduce en la mayor parte del tiempo.
Además, cada símbolo de la secuencia 326 de símbolos puede estar asociado con uno respectivo de una pluralidad de tipos de símbolo, y el selector 402 puede estar configurado para seleccionar, para un símbolo predeterminado de un tipo de símbolo predeterminado, uno de una pluralidad de contextos que dependen de símbolos anteriormente recuperados de la secuencia 326 de símbolos y realizar la selección entre los decodificadores de entropía 322 que depende de un modelo de probabilidad asociado con un contexto seleccionado junto con la actualización del modelo de probabilidad asociado con un contexto seleccionado que depende del símbolo predeterminado en el caso de que esté activado el modo de alta eficiencia, y realizar la selección de uno de la pluralidad de contextos que depende de los símbolos anteriormente recuperados de la secuencia 326 de símbolos y realizar la selección entre los decodificadores de entropía 322 que depende del modelo de probabilidad asociado con el contexto seleccionado junto con dejar el modelo de probabilidad asociado con el contexto seleccionado constante en el caso de que esté activado el modo de baja complejidad. Es decir, el selector 402 puede usar la adaptabilidad de contexto con respecto a un determinado tipo de elemento de sintaxis en ambos modos, al tiempo que se suprime la adaptación de probabilidad en el caso del modo de LC.
Alternativamente, en lugar de suprimir completamente la adaptación de probabilidad, el selector 402 puede reducir simplemente una tasa de actualización de la adaptación de probabilidad del modo de LC con respecto al modo de HE.
Además, dicho de otro modo, posibles aspectos específicos de LC-PIPE, es decir, aspectos del modo de LC, pueden describirse de la siguiente manera. En particular, pueden usarse modelos de probabilidad no adaptativos en el modo de LC. Un modelo de probabilidad no adaptativo puede o bien tener una probabilidad preprogramada, es decir, en general constante o su probabilidad se mantiene fija en la totalidad del procesamiento de un segmento únicamente y por tanto puede establecerse dependiendo del tipo de segmento y QP, es decir, el parámetro de cuantificación que se indica, por ejemplo, dentro del flujo de datos 401 para cada segmento. Suponiendo que elementos binarios sucesivos asignados al mismo contexto siguen un modelo de probabilidad fija, es posible decodificar varios de esos elementos binarios en una etapa ya que se codificaron usando el mismo código de PIPE, es decir, usando el mismo decodificador de entropía, y se omite una actualización de probabilidad tras cada elemento binario decodificado. Al omitir actualizaciones de probabilidad se ahorran operaciones durante el proceso de codificación y decodificación y, por tanto, también conlleva reducciones de complejidad y una simplificación significativa en el diseño de hardware.
La restricción no adaptativa puede aliviarse para todos o algunos modelos de probabilidad seleccionados de tal manera que se permiten actualizaciones de probabilidad tras haberse codificado/decodificado un determinado número de elementos binarios usando este modelo. Un intervalo de actualización apropiado permite una adaptación de probabilidad al tiempo que tiene la capacidad de decodificar varios elementos binarios de una vez.
A continuación, se presenta una descripción más detallada de posibles aspectos comunes y de complejidad ajustable a escala de LC-PIPE y HE-PIPE. En particular, a continuación, se describen aspectos que pueden usarse para el modo de LC-PIPE y el modo de HE-PIP<e>de la misma manera o de una manera de complejidad ajustable a escala. Complejidad ajustable a escala significa que el caso de LC se deriva del caso de HE eliminando partes particulares o sustituyéndolas por algo menos complejo. Sin embargo, antes de proceder con el mismo, debe mencionarse que la realización de la Fig. 18 puede transferirse fácilmente a la realización de codificación/decodificación aritmética binaria adaptativa de contexto anteriormente mencionada: el selector 402 y los decodificadores de entropía 322 se condensarán en un decodificador de entropía 608 que recibirá el flujo de datos 401 directamente y seleccionará el contexto para un elemento binario que va a derivarse actualmente del flujo de datos. Esto es especialmente cierto para la adaptabilidad de contexto y/o adaptabilidad de probabilidad. Ambas funcionalidades/adaptabilidades pueden desactivarse, o diseñarse de manera más relajada, durante el modo de baja complejidad. Es decir, el motor de decodificación de entropía 608 podría configurarse generalmente para recuperar cada símbolo de una secuencia 326 de símbolos mediante decodificación de entropía del flujo de datos 401 usando uno seleccionado de una pluralidad de esquemas de decodificación de entropía, y podría, por ejemplo, configurarse de tal manera que cada uno de la pluralidad de esquemas de decodificación de entropía implique decodificación aritmética de los símbolos para los que se ha seleccionado el esquema de decodificación de entropía respectivo, con la pluralidad de esquemas de decodificación de entropía diferenciándose entre sí en el uso de una estimación de probabilidad diferente en la decodificación aritmética. Como se ha descrito en relación con el concepto CABAC anteriormente descrito, el motor de decodificación de entropía podría configurarse de manera que la pluralidad de esquemas de decodificación de entropía realice su subdivisión de probabilidad en un intervalo de probabilidad común, es decir, un flujo de bits común en lugar de flujos de bits parciales. Dicho de otro modo, y hablando más generalmente, el decodificador de entropía 608 podría configurarse para derivar un número de elementos binarios 326 de las binarizaciones del flujo de datos 401 usando decodificación de entropía binaria seleccionando un contexto entre diferentes contextos y actualizando estados de probabilidad asociados con los diferentes contextos, dependientes de porciones previamente decodificadas del flujo de datos 401. Para ser más precisos, como se ha descrito anteriormente, el decodificador de entropía 608 puede estar configurado para derivar el número de elementos binarios 326 de las binarizaciones del flujo de datos 401 usando decodificación de entropía binaria como el esquema CABAC antes mencionado, o decodificación PIPE binaria, es decir, usando la construcción que implica varios decodificadores de entropía 322 que funcionan en paralelo junto con un selector/asignador respectivo. En lo que respecta a la selección de contexto, la dependencia de la misma de las porciones previamente decodificadas del flujo de datos 401, puede realizarse como se ha descrito anteriormente. Es decir, el decodificador de entropía 608 puede estar configurado para realizar la selección de contexto para un elemento binario que se va a derivar actualmente dependiendo de una posición de elemento binario del elemento binario que se va a derivar actualmente dentro de la binarización a la que pertenece el elemento binario que se va a derivar actualmente, un tipo de elemento de sintaxis de un elemento de sintaxis, cuyo valor entero se obtiene desbinariando la binarización a la que pertenece el elemento binario que se va a derivar actualmente, o uno o más elementos binarios previamente derivados del flujo de datos 401 o el valor entero de un elemento de sintaxis previamente desbinariando. Por ejemplo, el contexto seleccionado puede diferir entre el primer y el segundo elemento binario de la binarización de un determinado elemento de sintaxis. Además, pueden proporcionarse diferentes grupos de contextos para diferentes tipos de elementos de sintaxis, tales como niveles de coeficientes de transformación, diferencias de vectores de movimiento, parámetros de modo de codificación y similares. En cuanto a la actualización del estado de probabilidad, el decodificador de entropía 608 puede estar configurado para realizar la misma, para un elemento binario derivado actualmente, mediante la transición desde un estado de probabilidad actual asociado con el contexto seleccionado para el elemento binario derivado actualmente a un nuevo estado de probabilidad dependiendo del elemento binario derivado actualmente. Como se ha descrito anteriormente, el decodificador de entropía 409 puede, por ejemplo, acceder a una entrada de tabla usando el estado actual y el valor del elemento binario actualmente derivado con la entrada de tabla accedida revelando el nuevo estado de probabilidad. Véanse las tablas anteriores Siguiente_Estado_LPS y Siguiente_Estado_MPS, respecto de las cuales el decodificador de entropía 608 realiza la consulta de la tabla, además de los otros pasos 0 a 5 enumerados anteriormente. En la descripción anterior, el estado de probabilidad se indicó a veces como pState_current[elemento binario]. Como también se ha descrito anteriormente, el decodificador de entropía 608 puede estar configurado para la decodificación aritmética binaria de un elemento binario que se va a derivar actualmente mediante la cuantización de un valor de bit de intervalo de probabilidad real (R) que representa un intervalo de probabilidad real para obtener un índice de intervalo de probabilidad q_index y realizar una subdivisión de intervalo mediante la indexación de una entrada de tabla entre entradas de tabla (Rtab) usando el índice de intervalo de probabilidad y un índice de estado de probabilidad p_state que depende de un estado de probabilidad real asociado con el contexto seleccionado para el elemento binario que se va a derivar actualmente, para obtener la subdivisión del intervalo de probabilidad real en dos intervalos parciales. Como se ha descrito, el decodificador de entropía 608 puede usar una representación de 8 bits para el valor de anchura de intervalo de probabilidad real R. Para cuantificar el valor de anchura de probabilidad real, el decodificador de entropía 608 puede, por ejemplo, extraer dos o tres bits más significativos de la representación de 8 bits. El decodificador de entropía 608 puede entonces realizar la selección entre los dos intervalos parciales basándose en un valor de estado de desviación de un interior del intervalo de probabilidad real, actualizar el valor de anchura de intervalo de probabilidad y un valor de estado de desviación, e inferir un valor del elemento binario actualmente a derivar, usando el intervalo parcial seleccionado y realizar una renormalización del valor de anchura de probabilidad actualizado y el valor de estado de desviación, concretamente V en la descripción anterior, incluyendo una continuación de bits de lectura del flujo de datos 401. Como se ha descrito anteriormente, la selección entre los dos intervalos parciales basada en el valor de estado de desviación V puede implicar una comparación entre R y V, mientras que la actualización del valor de anchura del intervalo de probabilidad y el valor de estado de desviación puede depender del valor del elemento binario que se va a derivar actualmente.
Al implementar la realización de la Fig. 8 con PIPE, la etapa de codificación de entropía de PIPE que implica los decodificadores de entropía 322 puede usar ocho códigos de variable a variable sistemáticos, es decir, cada decodificador de entropía 322 puede ser de un tipo v2v que se ha descrito anteriormente. El concepto de codificación de PIPE usando códigos v2v sistemáticos se simplifica restringiendo el número de códigos v2v. En el caso de un decodificador aritmético binario adaptativo de contexto, el mismo puede gestionar los mismos estados de probabilidad para los diferentes contextos y usar los mismos (o una versión cuantificada de los mismos) para la subdivisión de probabilidad. El mapeo de CABAC o estados de modelo de probabilidad, es decir, los estados usados para la actualización de probabilidad, a ID de PIPE o índices de probabilidad para su consulta en Rtab puede ser tal como se representa en la tabla A.
Tabla A: Mapeo de estados de CABAC a índices de PIPE
Este esquema de codificación modificado puede usarse como base para el enfoque de codificación de vídeo de complejidad ajustable a escala. Cuando se realiza adaptación de modo de probabilidad, el selector 402 o decodificador aritmético binario adaptativo de contexto, respectivamente, seleccionarán el decodificador de PIPE 322, es decir derivarán el índice de PIPE, que va a usarse, y el índice de probabilidad en Rtab, respectivamente, basándose en el índice de estado de probabilidad (que oscila en este caso, a modo de ejemplo, entre 0 y 62) asociado con el símbolo que va a decodificarse actualmente (tal como mediante un contexto) usando el mapeo mostrado en la tabla A, y actualizarán este índice de estado de probabilidad dependiendo del símbolo actualmente decodificado usando, por ejemplo, valores de transición de recorrido de tabla específicos que apuntan al siguiente índice de estado de probabilidad que va a visitarse en el caso de un MPS y un LPS, respectivamente.
En el caso de modo de LC, puede omitirse esta última actualización. Incluso puede omitirse el mapeo en el caso de modelos de probabilidad globalmente fijados.
Sin embargo, puede usarse una configuración de codificación de entropía arbitraria y también pueden usarse las técnicas en este documento con adaptaciones menores.
La descripción anterior de la Fig. 12 se refiere más bien de manera general a elementos de sintaxis y tipos de elemento de sintaxis. A continuación, se describe una codificación de complejidad configurable de niveles de coeficiente de transformación.
La técnica de codificación actualmente prevista para los niveles de coeficiente de transformación se especifica en el modelo de prueba actual (HM) del proyecto de codificación de vídeo de alta eficiencia (HEVC) para CABAC. En primer lugar, la última posición de barrido significativa se codifica con dos elementos de sintaxis,last_significant_pos_xylast_significant_pos_y.El elemento de sintaxislast_significant_pos_xespecifica la columna de la última posición de barrido significativa y el segundo elemento de sintaxislast_significant_pos_yespecifica la fila de la última posición de barrido significativa.
Después de eso, el mapa de significación, que especifica la localización de niveles de coeficiente de transformación absolutos mayores que cero, es codificado usando un orden de barrido hacia adelante. El llamado orden de barrido del mapa de significación es un mapeo desde la posición bidimensional dentro de un bloque de transformación a un vector unidimensional y puede ser diferente dependiendo del modo de predicción y del tamaño del bloque de transformación. En el estado de la técnica, se utilizan tres órdenes de barrido diferentes, concretamente, el barrido en zigzag, el barrido horizontal y el barrido vertical. Para cada posición de barrido, excepto la última, que ya se identifica como significativa especificando la última posición de barrido, se codifica el elemento de sintaxis binariacoeff_significant_flag.
A continuación, tras la codificación del mapa de significación, se codifican los elementos de sintaxiscoeff_abs_greater1, coeff_abs_greater2ycoeff_abs_minus3que representan el nivel absoluto restante ycoeff_sign_flagque representa la información de signo. Para codificar los niveles de transformación absolutos restantes y el signo, el bloque de transformación se divide en subbloques de 4x4 y las posiciones dentro de cada subbloque forman un subconjunto. Los subconjuntos se barren en zigzag y cada subconjunto se codifica sucesivamente. Esto significa que después de codificar toda la información restante del nivel de transformación absoluta de un subbloque o subconjunto 4x4 y la información de signo, se procesa el siguiente subconjunto en el orden de avance en zigzag. Para el subconjunto propiamente dicho, se utiliza el orden de exploración en zigzag inverso. En la primera etapa de codificación de un subconjunto, el elemento de sintaxis binariacoeff_abs_greater1que especifica si el nivel de coeficiente de transformación absoluto es mayor que uno se codifica para todas las posiciones de exploración significativas del subconjunto.
A continuación, después de que el orden de barrido es reiniciado y comienza desde la primera posición de barrido del subconjunto nuevamente, para todas las posiciones de barrido con niveles absolutos mayores que uno, por ejemplo,coeff_abs_greater1es igual a 1, el elemento de sintaxis binariacoeff_abs_greater2es codificado especificando si el nivel de transformación absoluto para la posición de barrido específica es mayor que dos o no. A continuación, tras restablecer de nuevo el orden de exploración, para todas las posiciones de exploración con un nivel de transformación absoluto superior a dos se codifica el elemento de sintaxis de valor entero no negativocoeff_abs_minus3, que especifica el valor restante del nivel de transformación absoluto. En la última etapa, de nuevo después de restablecer el orden de barrido, se codifica el elemento de sintaxiscoeff_sign_flagen el modo de derivación, por ejemplo, se codifica con un modelo de probabilidad igual a 0,5. La razón del reparto en subconjuntos es que el mejor modelado del contexto resulta en una mayor eficacia de la codificación, que se describe a continuación. Obsérvese que existe una dependencia entre los elementos de sintaxis. También es posible codificar los elementos de sintaxis como en H.264/AVC. En ese caso, para una posición de barrido,coeff_abs_greater1se codifica directamente después de la codificación de uncoeff_significant_flagigual a uno ycoeff_abs_greater2se codifica directamente después de la codificación de uncoeff_abs_greater1y así sucesivamente. Sin embargo, este modo entrelazado de codificación de los elementos de sintaxis es ineficaz para una implementación de hardware. Por lo tanto, se describe una separación mediante la codificación de cada elemento de sintaxis completamente para un bloque de transformación o para un subconjunto.
El modelado de contexto para cada elemento de sintaxis relacionado con la codificación de los niveles de transformación absolutos es como sigue. La selección del modelo de contexto paracoeff_significant_flagemplea una plantilla local. Especifica una región alrededor de la posición de barrido actual y cubre las posiciones de barrido ya codificadas. Se obtiene un modelo de contexto paracoeff_significant_flagevaluando el número de posiciones de exploración significativas ya codificadas que se encuentran en la plantilla local.
Para la primera posición de barrido significativa de un subconjunto, el segundo modelo de contexto del conjunto de modelos de contexto relacionado concoeff_abs_greater1se selecciona para codificar el primer elemento de sintaxiscoeff_abs_greater1del subconjunto. Si un elemento de sintaxiscoeff_abs_greater1recién codificado es igual a 1, se selecciona el primer modelo de contexto para todas las etapas de codificación restantes del elemento de sintaxiscoeff_abs_greater1dentro del subconjunto. En caso contrario, se selecciona el siguiente modelo de contexto del conjunto de modelos de contexto para el elemento de sintaxiscoeff_abs_greater1, mientras que el modelo de contexto máximo se limita a cinco.
Paracoeff_abs_greater2,se selecciona el primer modelo de contexto y se incrementa tras la codificación de cada elemento de sintaxiscoeff_abs_greater2,mientras que el contexto máximo también se limita a cinco. Obsérvese que se usan diferentes modelos de contexto para los elementos binarios relacionados con diferentes elementos de sintaxis, por ejemplo, se usan diferentes conjuntos de modelos de contexto para los elementos de sintaxiscoeff_abs_greater1ycoeff_abs_greater2.El valor entero no negativo restante del nivel de transformación absoluto se representa mediante el elemento de sintaxiscoeff_abs_minus3.Se codifica para cada posición de barrido concoeff_abs_greater2igual a 1. Paracoeff_abs_minus3,se usa como binarización una combinación de Rice parametrizado y códigos de longitud variable (VLC) Exp-Golomb de orden 0, y todos los elementos binarios de la cadena de elementos binarios resultante de la binarización se codifican en un modo de derivación de baja complejidad con una probabilidad fija de 0,5. La parte Rice de la binarización paraabs_coeff_minus3requiere un parámetro de control, que es cero al principio de cada subconjunto y se actualiza de forma adaptativa tras la codificación de cada elemento de sintaxis decoeff_abs_minus3.El nuevo valor del parámetro de control depende del valor restante recién codificado representado porcoeff_abs_minus3.Obsérvese que la regla de modelización del contexto se restablece para cada subconjunto de modo que siempre el segundo modelo de contexto paracoeff_abs_greater1y el primer modelo de contexto paracoeff_abs_greater2y el parámetro de control de binarización paracoeff_abs_minus3es cero para la primera posición dentro de un subconjunto, donde se codifica el elemento de sintaxis respectivo. Para los elementos de sintaxiscoeff_abs_greater1ycoeff_abs_greater2,se realiza una etapa adicional de modelización del contexto que depende de las estadísticas de los subconjuntos codificados anteriormente. Esta etapa adicional deriva una desviación de contextos o conjunto de contextos. La desviación o conjunto de contextos para ambos elementos de sintaxis se obtiene del siguiente modo. Al principio de cada subconjunto, se selecciona un conjunto o desviación de contextos en función del número de niveles absolutos mayores que uno en el subconjunto anterior que contenga al menos una posición significativa. Si no existe tal subconjunto, el conjunto es 5 (para el primer subconjunto que contiene posiciones de barrido significativas del bloque de transformación). Para bloques de transformación 4x4, donde un único subconjunto cubre todo el bloque de transformación, el conjunto de contextos se establece en cero. De lo contrario, el conjunto de contextos puede oscilar entre 1 y 5. Después de codificar los niveles de transformación absolutos restantes, la información de signo se codifica en un modo de derivación, por ejemplo, con un modelo de contexto que usa una probabilidad fija de 0,5, mediante el elemento de sintaxiscoeff_sign_flag.
La técnica de codificación anterior para niveles de coeficiente de transformación consigue un buen rendimiento de codificación. Sin embargo, contiene cierta complejidad debido a la alta adaptabilidad. Esto impide codificar múltiples elementos binarios al mismo tiempo (excepto para los elementos binarios codificados en modo de derivación). Esto se debe a dos razones. En primer lugar, el modelo de contexto que representa un modelo de probabilidad es adaptable y se actualiza tras la codificación de cada elemento binario. Así pues, el modelo de probabilidad es diferente para cada elemento binario, aunque se seleccione el mismo modelo de contexto para los elementos binarios sucesivos. En segundo lugar, la selección del modelo de contexto depende a menudo de los elementos de sintaxis codificados anteriormente, que son diferentes para cada posición de barrido. Por lo tanto, el concepto más avanzado no permite la codificación de múltiples elementos binarios para reducir la complejidad en la etapa de codificación de entropía y tampoco explota las ventajas del codificador de entropía de PIPE, donde la codificación de múltiples elementos binarios permite una implementación de baja complejidad.
Según una realización, se describe una técnica de codificación modificada para niveles de coeficiente de transformación que es configurable a diferentes niveles de adaptación y, por lo tanto, permite hacer uso de la capacidad de decodificación de múltiples elementos binarios de PIPE en modo de baja complejidad mientras que es capaz de beneficiarse de una alta adaptación en modo de alta eficiencia. La escalabilidad se consigue teniendo un orden de barrido unificado para ambos niveles de complejidad, pero diferentes modos para las derivaciones de contexto. Los elementos de sintaxis usados para la codificación de los niveles de coeficientes de transformación son exactamente los mismos que los descritos anteriormente. Pero en comparación, la diferencia radica en el orden de barrido para el resto de niveles de transformación absoluta y en cómo se forman los subconjuntos. Además, cuando se emplea PIPE como codificador de entropía, la información de signo representada porcoeff_sign_flagde un bloque de transformación puede codificarse directamente, es decir, puede escribirse y leerse directamente del flujo de bits en una sola pasada.
En lugar de usar subconjuntos 4x4 y barrerlos por separado mediante barrido en zigzag, mientras que los subconjuntos se barren en orden de barrido en zigzag inverso, la realización descrita ahora usa el mismo orden de barrido que para el mapa de significación. Los subconjuntos se crean a lo largo de un número específico de posiciones de barrido. De acuerdo con esto, en primer lugar, el mapa de significación se codifica con un orden de barrido específico, donde la dirección de barrido puede ser inversa. Como se describe en la técnica anterior, el orden de barrido puede ser diferente dependiendo del modo de predicción y del tamaño del bloque de transformación. Para los restantes niveles absolutos de coeficientes de transformación, se usa el mismo orden de barrido que para el mapa de significación, mientras que el orden de barrido puede invertirse en comparación con el barrido del mapa de significación.
Como se mencionó anteriormente, los subconjuntos son creados a lo largo de posiciones de barrido sucesivas en lugar de repartir el bloque de transformación en subbloques 4x4. La creación de subconjuntos a lo largo de un número específico de posiciones de barrido sucesivas se usa para todas las configuraciones en la presente realización.
Como se ha mencionado anteriormente, la complejidad es configurable por el grado de adaptación. A continuación, se describen tres configuraciones. La primera configuración es adecuada para conseguir un alto rendimiento de codificación, la segunda para un procesamiento de baja complejidad y la tercera es una configuración de compromiso entre complejidad y rendimiento de codificación. Los tres ejemplos de configuración demuestran cómo puede configurarse la adaptación del contexto, mientras que el motor de codificación de entropía de los decodificadores 322, por ejemplo, es el mismo para todas las configuraciones.
Para la primera configuración, la etapa de modelado de contexto es la misma que en la técnica anterior. La única diferencia es la agrupación en subconjuntos. En lugar de agrupar posiciones espaciales 4x4 en un subbloque o subconjuntos, las realizaciones aquí presentes agrupan varias posiciones de barrido sucesivas en un subconjunto como se ha mencionado anteriormente. La desviación de contextos o la derivación de conjuntos de contextos no se modifica en comparación con la técnica descrita anteriormente y los parámetros de modelado de contexto para los elementos de sintaxis también se restablecen para cada subconjunto. En caso de configuración de baja complejidad, se usa el mismo modelo de contexto con probabilidad fija para todo el subconjunto. Este concepto permite la codificación de múltiples elementos binarios cuando PIPE se emplea como codificador de entropía. Para esa configuración, la adaptabilidad de la selección del modelo de contexto solo depende de la posición de barrido, pero no de los elementos de sintaxis codificados previamente, y los modelos de contexto no actualizan su representación interna del modelo de probabilidad. En lugar de usar la plantilla local para derivar el modelo de contexto para cada posición de barrido del mapa de significación, un número específico de posiciones de exploración sucesivas también se agrupan en un subconjunto y cada subconjunto se codifica usando el mismo modelo de contexto, mientras que la probabilidad para ese modelo de contexto es fija. Obsérvese que los subconjuntos del mapa de significación también existen, pero se permite que la plantilla local evalúe las posiciones de barrido que se encuentran en otros subconjuntos. Una vez especificado el mapa de significación, se codifican los niveles de transformación absoluta restantes. Para los niveles absolutos restantes se usa el mismo concepto que para el mapa de significación. Por lo tanto, un número sucesivo de posiciones de barrido significativas se agrupan como un subconjunto, y cada subconjunto se codifica con el mismo modelo de contexto para el elemento de sintaxiscoeff_abs_greater1. A continuación, el mecanismo de agrupación se realiza para los elementos de sintaxiscoeff_abs_greater2.Un número sucesivo de posiciones de barrido que se sabe que son mayores que uno, se agrupan en un conjunto y el conjunto se codifica con un modelo de contexto con probabilidad fija. El nivel de coeficiente de transformación absoluto restante y el signo se codifican como en la técnica de comparación descrita anteriormente, mientras que el parámetro Rice se restablece al principio de cada subconjunto a lo largo de un número específico de posiciones de barrido y la información del signo se codifican en una sola etapa. La última configuración es un compromiso entre la complejidad y el rendimiento de la codificación. En esta configuración, la creación de subconjuntos para cada elemento de sintaxis está relacionada con la codificación de los niveles de coeficiente de transformación que tienen el mismo modelo de contexto que en el caso de baja complejidad. Pero a diferencia de la configuración de baja complejidad, el modelo de contexto de un subconjunto se actualiza después de que se hayan codificado todos los elementos binarios relacionados con ese elemento de sintaxis para ese subconjunto. Independientemente de la configuración elegida, el concepto de PIPE permite codificar directamente la información de signo (representada porcoeff_sign_flag)de un bloque de transformación (por ejemplo, puede escribirse y leerse directamente del flujo de bits en una sola pasada).
En la realización preferida, el mapa de significación es codificado en el orden de barrido hacia adelante, mientras que los niveles de coeficiente de transformación absoluta restantes son codificados en el orden de barrido inverso. El orden de barrido hacia adelante puede generalmente conducir desde el valor DC hasta la componente de frecuencia más alta como se muestra a modo de ejemplo en la Fig. 6, tal como a lo largo de la trayectoria unidimensional 274, mientras que el orden inverso se desplaza a lo largo de la misma trayectoria, pero en dirección opuesta. En otra realización preferida, la codificación del mapa de significación y los niveles absolutos restantes se codifican en orden de exploración inverso. En otra realización preferida, todos los elementos de sintaxis relacionados con la codificación de los niveles de transformación absolutos se codifican en un orden de barrido hacia delante.
En una realización preferida, el tamaño de un subconjunto se fija a 16 y se estira a lo largo de las posiciones de barrido del bloque de transformación. En otra realización preferida, el tamaño del subconjunto se fija a 4 y también se estira a lo largo de las posiciones de exploración del bloque de transformación. En otra realización, el tamaño de los subconjuntos es variable en función de la ubicación espacial del bloque de transformación. En esa realización preferida, el tamaño de un subconjunto es menor para la zona de baja frecuencia del bloque de transformación, por ejemplo, para las primeras posiciones de barrido del bloque de transformación, y se hace mayor para las posiciones de barrido más altas del bloque de transformación. En otra realización preferida, el tamaño de los subconjuntos es igual a la anchura del bloque de transformación. En otra realización preferida, cada subconjunto incluye las posiciones de barrido a lo largo de una diagonal del bloque de transformación. En esta realización preferida, la diagonal se define desde la parte superior derecha a la parte inferior izquierda del bloque de transformación.
En una realización preferida, los subconjuntos son creados a lo largo de un número específico de posiciones de barrido sucesivas, para las cuales el elemento de sintaxis específico tiene que ser codificado. En ese caso, los subconjuntos se crean como sigue. Los subconjuntos paracoeff_significant_flagse estiran a lo largo de las posiciones de barrido del bloque de transformación, mientras que el tamaño de los subconjuntos puede ser fijo o variable. A continuación, para el elemento de sintaxiscoeff_abs_greater1, depende de la configuración cómo sea el tamaño de los subconjuntos, y solo las posiciones de exploración concoeff_significant_flagigual a 1 forman un subconjunto. Por ejemplo, en el caso fijo, las posiciones de barrido 0 - 4 forman un subconjunto paracoeff_significant_flagy los restantes elementos de sintaxis relacionados con los niveles absolutos. En cambio, para esta realización preferida, si el tamaño del subconjunto es 4 para el elemento de sintaxiscoeff_significant_flagy los restantes elementos de sintaxis relacionados con niveles absolutos, las posiciones de exploración 0 - 4 forman el primer subconjunto y 4 - 8 forman el segundo subconjunto paracoeff_significant_flag.Pero solo las posiciones de barrido concoeff_significant_flagigual a 1 forman el subconjunto paracoeff_abs_greater1. Por lo tanto, el subconjunto para elcoeff_abs_greater1tiene el mismo tamaño que paracoeff_significant_flag, pero puede extenderse de 0 - 6, si hay exactamente 4 elementos de sintaxiscoeff_significant_flagigual a 1 en este intervalo y el primero en "la posición de exploración 0 y el cuarto en la posición de exploración 6". Esto conduce a un intervalo de subconjunto variable. En otra realización preferida, la longitud de estiramiento variable para un tamaño de subconjunto dado se aplica para el elemento de sintaxiscoeff_abs_greater2.En otra realización preferida, este concepto también se utiliza para el elemento de sintaxiscoeff_abs_minus3.
En una realización preferida, el modelado de contexto paracoeff_significant_flagemplea una plantilla local y para los niveles de transformación absoluta restantes, el modelado de contexto es el mismo que en el estado de la técnica. Esta realización preferida conduce a la configuración de alta eficiencia. En otra realización preferida, el modelado del contexto para todos los elementos de sintaxis depende únicamente de los subconjuntos. En esta realización preferida, el modelado del contexto se deriva del número de subconjuntos. Como ejemplo, el tamaño del bloque de transformación es 8x8 y el tamaño del subconjunto se fija en 16 y se estira a lo largo de las posiciones de barrido del bloque de transformación. En este caso, el bloque de transformación tiene 4 subconjuntos y cada subconjunto utiliza un modelo de contexto diferente. Si los subconjuntos se extienden a lo largo de las posiciones de exploración en las que se codifica el elemento de sintaxis, existen al menos 4 subconjuntos paracoeff_siginificant_flag,mientras que el número de subconjuntos para el elemento de sintaxiscoeff_abs_greater1depende del número de posiciones significativas. Supongamos que hay 24 posiciones de barrido significativas. Entonces, las primeras 16 posiciones de barrido forman el primer subconjunto y las 8 posiciones de barrido restantes forman el segundo subconjunto. De nuevo, para cada subconjunto, el modelo de contexto específico se selecciona de acuerdo con el número de subconjunto.
En otra realización preferida, el modelado de contexto de un subconjunto, por ejemplo, el conjunto de modelos de contexto o la desviación de modelos de contexto paracoeff_abs_greater1ycoeff_abs_greater2,depende de subconjuntos decodificados previamente. En otra realización preferida, el modelado de contexto del subconjunto depende de los últimosnelementos binarios decodificados, dondenes el número de elementos binarios que pueden codificarse en una sola etapa. En otra realización preferida, la etapa de modelización del contexto del subconjunto depende del tamaño del subconjunto. Esta realización preferida es adecuada en caso de tamaño de subconjunto variable.
Por ejemplo, el reconstructor 404 puede estar configurado para reconstruir un bloque de transformación 200 de niveles de coeficiente de transformación 202 basándose en una porción de la secuencia de elementos de sintaxis independientemente de que esté activado el modo de alta eficiencia o el modo de baja complejidad, comprendiendo la porción de la secuencia 327 de elementos de sintaxis, de una manera no entrelazada, elementos de sintaxis de mapa de significación que definen un mapa de significación que indica posiciones de niveles de coeficiente de transformación distintos de cero dentro del bloque de transformación 200, y después (seguido por) elementos de sintaxis de nivel que definen los niveles de coeficiente de transformación distintos de cero. En particular, pueden estar implicados los siguientes elementos: elementos de sintaxis de posición final(lost_significant_pos_x, last_significant_pos_y)que indican una posición de un último nivel de coeficiente de transformación distinto de cero dentro del bloque de transformación; primeros elementos de sintaxis(coeff_significant_flag)que definen en conjunto un mapa de significación y que indican, para cada posición a lo largo de una trayectoria unidimensional (274) que conduce desde una posición de DC hasta la posición del último nivel de coeficiente de transformación distinto de cero dentro del bloque de transformación (200), si el nivel de coeficiente de transformación en la posición respectiva es distinto de cero o no; segundos elementos de sintaxis(coeff_abs_greater1)que indican, para cada posición de la trayectoria unidimensional (274) en la que, según los primeros elementos de sintaxis binarios, está colocado un nivel de coeficiente de transformación distinto de cero, si el nivel de coeficiente de transformación en la posición respectiva es mayor de uno; y terceros elementos de sintaxis(coeff_abs_greater2, coeff_abs_minus3)que revelan, para cada posición de la trayectoria unidimensional en la que, según los primeros elementos de sintaxis binarios, está colocado un nivel de coeficiente de transformación mayor de uno, una cantidad en la que el nivel de coeficiente de transformación respectivo en la posición respectiva supera uno.
El orden entre los elementos de sintaxis de posición final, los primeros, los segundos y los terceros elementos de sintaxis, puede ser el mismo para el modo de alta eficiencia y el modo de baja complejidad, y el selector 402 puede estar configurado para realizar la selección entre los decodificadores de entropía 322 para símbolos a partir de los cuales el desimbolizador 314 obtiene los elementos de sintaxis de posición final, primeros elementos de sintaxis, segundos elementos de sintaxis y/o terceros elementos de sintaxis, dependiendo de manera diferente de que esté activado el modo de baja complejidad o el modo de alta eficiencia.
En particular, el selector 402 puede estar configurado para seleccionar, para símbolos de un tipo de símbolo predeterminado entre una subsecuencia de símbolos a partir de la cual el desimbolizador 314 obtiene los primeros elementos de sintaxis y segundos elementos de sintaxis, para cada símbolo del tipo de símbolo predeterminado uno de una pluralidad de contextos que dependen de símbolos anteriormente recuperados del tipo de símbolo predeterminado entre la subsecuencia de símbolos y realizar la selección dependiendo de un modelo de probabilidad asociado con el contexto seleccionado en el caso de que esté activado el modo de alta eficiencia, y realizar la selección de una manera constante por fragmentos de tal manera que la selección es constante a lo largo de subpartes continuas consecutivas de la subsecuencia en el caso de que esté activado el modo de baja complejidad. Tal como se describió anteriormente, las subpartes pueden medirse en el número de posiciones por las que se extiende la subparte respectiva cuando se mide a lo largo de la trayectoria unidimensional 274, o en el número de elementos de sintaxis del tipo respectivo ya codificados con el contexto actual. Es decir, los elementos de sintaxis binarioscoeff_significant_flag, coeff_abs_greater1ycoeff_abs_greater2,por ejemplo, se codifican de manera adaptativa de contexto seleccionando el decodificador 322 basándose en el modelo de probabilidad del contexto seleccionado en el modo de HE. También se usa la adaptación de probabilidad. En modo de LC, también hay diferentes contextos que se usan para cada uno de los elementos de sintaxis binarioscoeff_significant_flag, coeff_abs_greater1ycoeff_abs_greater2. Sin embargo, para cada uno de estos elementos de sintaxis, el contexto se mantiene estático para la primera porción a lo largo de la trayectoria 274 cambiando el contexto simplemente en una transición a la siguiente porción que sigue inmediatamente a lo largo de la trayectoria 274. Por ejemplo, cada porción puede estar definida para tener 4, 8, 16 posiciones de bloque 200 de longitud, independientemente de si para la posición respectiva está presente el elemento de sintaxis respectivo o no. Por ejemplo,coeff_abs_greater1ycoeff_abs_greater2simplemente están presentes para posiciones significativas, es decir posiciones en las que (o para las que)coeff_significant_flages 1. Alternativamente, cada porción puede estar definida para tener 4, 8, 16 elementos de sintaxis de longitud, independientemente de si la porción respectiva así resultante se extiende a lo largo de un número mayor de posiciones de bloque. Por ejemplo,coeff_abs_greater1ycoeff_abs_greater2simplemente están presentes para posiciones significativas, y, por tanto, porciones de cuatro elementos de sintaxis pueden extenderse cada una a lo largo de más de 4 posiciones de bloque debido a posiciones entre las mismas a lo largo de la trayectoria 274 para las que no se transmite ningún elemento de sintaxis de este tipo tal como ningúncoeff_abs_greater1ycoeff_abs_greater2porque el nivel respectivo en esta posición es cero.
El selector 402 puede estar configurado para seleccionar, para los símbolos del tipo de símbolo predeterminado entre la subsecuencia de símbolos a partir de la cual el desimbolizador obtiene los primeros elementos de sintaxis y segundos elementos de sintaxis, para cada símbolo del tipo de símbolo predeterminado el contexto de una pluralidad de contextos dependiendo de varios símbolos anteriormente recuperados del tipo de símbolo predeterminado dentro de la subsecuencia de símbolos, que tienen un valor de símbolo predeterminado y pertenecen a la misma subparte, o varios símbolos anteriormente recuperados del tipo de símbolo predeterminado dentro de la secuencia de símbolos, que pertenecen a la misma subparte. La primera alternativa ha sido cierta paracoeff_abs_greater1y la alternativa secundaria ha sido cierta paracoeff_abs_greater2según las realizaciones anteriores específicas.
Además, los terceros elementos de sintaxis que revelan, para cada posición de la trayectoria unidimensional en la que, según los primeros elementos de sintaxis binarios, está colocado un nivel de coeficiente de transformación mayor de uno, una cantidad en la que el nivel de coeficiente de transformación respectivo en la posición respectiva supera uno, pueden comprender elementos de sintaxis con valor de número entero, es decircoeff_abs_minus3,y el desimbolizador 314 puede estar configurado para usar una función de mapeo que puede controlarse mediante un parámetro de control para mapear un dominio de palabras de secuencia de símbolos en un codominio de los elementos de sintaxis con valor de número entero, y para establecer el parámetro de control por elemento de sintaxis con valor de número entero dependiendo de elementos de sintaxis con valor de número entero de terceros elementos de sintaxis anteriores si el modo de alta eficiencia está activado, y realizar el ajuste de una manera constante por fragmentos de tal manera que el ajuste es constante a lo largo de subpartes continuas consecutivas de la subsecuencia en el caso de que esté activado el modo de baja complejidad, en el que el selector 402 puede estar configurado para seleccionar uno predeterminado de los decodificadores de entropía (322) para los símbolos de palabras de secuencia de símbolos mapeados en los elementos de sintaxis con valor de número entero, que está asociado con una distribución de probabilidad igual, tanto en el modo de alta eficiencia como en el modo de baja complejidad. Es decir, incluso el desimbolizador puede funcionar dependiendo del modo seleccionado por el conmutador 400, tal como se ilustra por la línea discontinua 407. En lugar de un ajuste constante por fragmentos del parámetro de control, el desimbolizador 314 puede mantener el parámetro de control constante durante el segmento actual, por ejemplo, o constante de manera global a lo largo del tiempo.
A continuación, se describe un modelado de contextos de complejidad ajustable a escala.
La evaluación del mismo elemento de sintaxis del vecino de arriba e izquierdo para la derivación del índice de modelo de contexto es un enfoque común y se usa con frecuencia en el caso de HE, por ejemplo, para el elemento de sintaxis de diferencia de vector de movimiento. Sin embargo, esta evaluación requiere más almacenamiento en memoria intermedia y no permite la codificación directa del elemento de sintaxis. Además, para lograr un mayor rendimiento de codificación, pueden evaluarse más vecinos disponibles.
En una realización preferida, todos los elementos de sintaxis de evaluación de etapa de modelado de contextos de bloques cuadrados o rectangulares vecinos o unidades de predicción se fijan a un modelo de contexto. Esto es igual a deshabilitar la adaptabilidad en la etapa de selección de modelo de contexto. Para esta realización preferida, la selección de modelo de contexto que depende del índice de elemento binario de la cadena de elementos binarios tras la binarización no se modifica en comparación con el diseño actual para CABAC. En otra realización preferida, de manera adicional al modelo de contexto fijo para elementos de sintaxis empleado para la evaluación de vecinos, también se fija el modelo de contexto para el índice de elemento binario diferente. Obsérvese que la descripción no incluye la binarización y selección de modelo de contexto para la diferencia de vector de movimiento y los elementos de sintaxis relacionados con la codificación de los niveles de coeficiente de transformación.
En una realización preferida, solo se permite la evaluación del vecino izquierdo. Esto conduce a un almacenamiento en memoria intermedia reducido en la cadena de procesamiento porque el último bloque o línea de unidad de codificación ya no tiene que almacenarse. En una realización preferida adicional, solo se evalúan vecinos que se encuentran en la misma unidad de codificación.
En una realización preferida, se evalúan todos los vecinos disponibles. Por ejemplo, además del vecino de arriba e izquierdo, se evalúan el vecino de arriba a la izquierda, arriba a la derecha y abajo a la izquierda en caso de disponibilidad.
Es decir, el selector 402 de la Fig. 18 puede estar configurado para usar, para un símbolo predeterminado relacionado con un bloque predeterminado de los datos de medios, símbolos anteriormente recuperados de la secuencia de símbolos relacionados con un número superior de bloques vecinos diferentes de los datos de medios en el caso de que esté activado el modo de alta eficiencia con el fin de seleccionar uno de una pluralidad de contextos y realizar la selección entre los decodificadores de entropía 322 dependiendo de un modelo de probabilidad asociado con el contexto seleccionado. Es decir, los bloques vecinos pueden ser vecinos en el dominio temporal y/o espacial. Pueden verse bloques vecinos en el espacio, por ejemplo, en las Fig. 1 a 3. Después, el selector 402 puede ser sensible a la selección de modo mediante el conmutador de modo 400 para realizar una adaptación de contacto basándose en símbolos anteriormente recuperados o elementos de sintaxis relacionados con un número superior de bloques vecinos en el caso del modo de HE en comparación con el modo de LC reduciendo así el coste de almacenamiento tal como acaba de describirse.
A continuación, se describe una codificación de complejidad reducida de diferencias de vector de movimiento según una realización.
En la norma de códec de vídeo H.264/AVC, se transmite un vector de movimiento asociado con un macrobloque indicando la diferencia (diferencia de vector de movimiento - mvd) entre el vector de movimiento del macrobloque actual y la mediana del factor de predicción de vector de movimiento. Cuando se usa CABAC como codificador de entropía, lamvdse codifica de la siguiente manera. Lamvdcon valor de número entero se divide en una parte absoluta y una parte de signo. La parte absoluta se binariza usando una combinación de binarización unaria truncada y de Golomb exponencial de 3.er orden, denominada prefijo y sufijo de la cadena de elementos binarios resultantes. Los elementos binarios relacionados con la binarización unaria truncada se codifican usando modelos de contexto, mientras que los elementos binarios relacionados con la binarización de Golomb exponencial se codifican en un modo de derivación, es decir con una probabilidad fijada de 0,5 con CABAC. La binarización unaria funciona de la siguiente manera. Sea n el valor de número entero absoluto de lamvd,entonces la cadena de elementos binarios resultante consiste en n veces '1' y un último '0'. Como ejemplo, sea n = 4, entonces la cadena de elementos binarios es '11110'. En el caso de binarización unaria truncada, existe un límite y si el valor supera este límite, la cadena de elementos binarios consiste en n+1 veces '1'. Para el caso demvd,el límite es igual a 9. Esto significa que, si unamvdabsoluta es igual a o mayor de 9, se codifica, dando como resultado 9 veces '1', la cadena de elementos binarios consiste en un prefijo y un sufijo con binarización de Golomb exponencial. El modelado de contextos para la parte unaria truncada se realiza de la siguiente manera. Para el primer elemento binario de la cadena de elementos binarios, se toman los valores demvdabsoluta de los macrobloques vecinos de arriba e izquierdo si están disponibles (si no están disponibles, se deduce que el valor es 0). Si la suma para la componente específica (dirección horizontal o vertical) es mayor de 2, se selecciona el segundo modelo de contexto, si la suma absoluta es mayor de 32, se selecciona el tercer modelo de contexto, de lo contrario (la suma absoluta es menor de 3) se selecciona el primer modelo de contexto. Además, los modelos de contexto son diferentes para cada componente. Para el segundo elemento binario de la cadena de elementos binarios, se usa el cuarto modelo de contexto y se emplea el quinto modelo de contexto para los elementos binarios restantes de la parte unaria. Cuando lamvdabsoluta es igual a o mayor de 9, por ejemplo, todos los elementos binarios de la parte unaria truncada son iguales a '1', se codifica la diferencia entre el valor demvdabsoluta y 9 en un modo de derivación con binarización de Golomb exponencial de 3.er orden. En la última etapa, se codifica el signo de lamvden un modo de derivación.
La última técnica de codificación para lamvdcuando se usa CABAC como codificador de entropía se especifica en el modelo de prueba actual (HM) del proyecto de codificación de vídeo de alta eficiencia (HEVC). En HEVC, los tamaños de bloque son variables y la forma especificada por un vector de movimiento se denomina unidad de predicción (PU). El tamaño de PU del vecino de arriba e izquierdo puede tener otras formas y tamaños distintos de la PU actual. Por tanto, siempre que sea relevante, la definición de vecino de arriba e izquierdo se denomina ahora vecino de arriba e izquierdo de la esquina superior izquierda de la PU actual. Para la propia codificación, solo puede cambiarse el proceso de derivación para el primer elemento binario según una realización. En lugar de evaluar la suma absoluta del MV a partir de los vecinos, puede evaluarse cada vecino por separado. Si el MV absoluto de un vecino está disponible y es mayor de 16, puede aumentarse el índice de modelo de contexto dando como resultado el mismo número de modelos de contexto para el primer elemento binario, mientras que la codificación del nivel deMVDabsoluto restante y el signo son exactamente iguales que en H.264/AVC.
En la técnica explicada anteriormente de manera resumida sobre la codificación de lamvd,tienen que codificarse hasta 9 elementos binarios con un modelo de contexto, mientras que el valor restante de unamvdpuede codificarse en un modo de derivación de baja complejidad junto con la información de signo. Esta presente realización describe una técnica para reducir el número de elementos binarios codificados con modelos de contexto dando como resultado un número aumentado de derivaciones y reduce el número de modelos de contexto requeridos para la codificación demvd. Para eso, se reduce el valor de corte de 9 a 1 o 2. Esto significa que solo se codifica el primer elemento binario que especifica si lamvdabsoluta es mayor de cero usando el modelo de contexto o se codifica el primer y el segundo elementos binarios que especifican si lamvdabsoluta es mayor de cero y uno usando el modelo de contexto, mientras que el valor restante se codifica en el modo de derivación y/o usando un código de VLC. Todos los elementos binarios resultantes de la binarización usando el código de VLC (no usando el código unario o unario truncado) se codifican usando un modo de derivación de baja complejidad. En el caso de PIPE, son posibles una inserción directa en y desde el flujo de bits. Además, puede usarse una definición diferente del vecino de arriba e izquierdo para derivar una mejor selección de modelo de contexto para el primer elemento binario, si es que se usa alguna.
En una realización preferida, se usan códigos de Golomb exponenciales para binarizar la parte restante de las componentes dem Vdabsoluta. Para ello, el orden del código de Golomb exponencial es variable. El orden del código de Golomb exponencial se deriva de la siguiente manera. Tras derivarse y codificarse el modelo de contexto para el primer elemento binario, y por tanto el índice de ese modelo de contexto, se usa el índice como orden para la parte de binarización de Golomb exponencial. En esta realización preferida, el modelo de contexto para el primer elemento binario oscila entre 1 - 3 dando como resultado el índice 0 - 2, que se usa como orden del código de Golomb exponencial. Esta realización preferida puede usarse para el caso de HE.
En una alternativa a la técnica explicada anteriormente de manera resumida de usar dos multiplicado por cinco contextos en la codificación de la MVD absoluta, con el fin de codificar los 9 elementos binarios de binarización de código unario, también pueden usarse 14 modelos de contexto (7 para cada componente). Por ejemplo, aunque los elementos binarios primero y segundo de la parte unaria pueden codificarse con cuatro contextos diferentes tal como se describió anteriormente, puede usarse un quinto contexto para el tercer elemento binario y puede usarse un sexto contexto con respecto al cuarto elemento binario, mientras que los elementos binarios del quinto al noveno se codifican usando un séptimo contexto. Por tanto, en este caso se requerirán incluso 14 contextos, y simplemente el valor restante puede codificarse en un modo de derivación de baja complejidad. Una técnica para reducir el número de elementos binarios codificados con modelos de contexto que dan como resultado un aumento del número de derivaciones y reducir el número de modelos de contexto requeridos para la codificación de MVD, es reducir el valor de corte tal como, por ejemplo, de 9 a 1 o 2. Esto significa que solo el primer elemento binario que especifica si la MVD absoluta es mayor de cero se codificará usando un modelo de contexto o el primer y el segundo elementos binarios que especifican si la MVD absoluta es mayor de cero y uno se codificarán usando un modelo de contexto respectivo, mientras que el valor restante se codifica con un código de VLC. Todos los elementos binarios resultantes de la binarización usando el código de VLC se codifican usando un modo de derivación de baja complejidad. En el caso de PIPE, es posible una inserción directa en y desde el flujo de bits. Además, la realización presentada usa otra definición del vecino de arriba e izquierdo para derivar una mejor selección de modelo de contexto para el primer elemento binario. Además de esto, el modelado de contexto se modifica de tal manera que el número de modelos de contexto requeridos para el primer o el primer y el segundo elementos binarios se reduce conduciendo a una reducción de memoria adicional. Además, la evaluación de los vecinos tales como el vecino de arriba puede deshabilitarse dando como resultado el ahorro de la memoria/memoria intermedia de línea requerida para el almacenamiento de los valores demvdde los vecinos. Finalmente, el orden de codificación de las componentes puede dividirse de manera que permite la codificación de los elementos binarios de prefijo para ambas componentes (es decir, elementos binarios codificados con modelos de contexto) seguido por la codificación de elementos binarios de derivación.
En una realización preferida, se usan códigos de Golomb exponenciales para binarizar la parte restante de las componentes demvdabsoluta. Para ello, el orden del código de Golomb exponencial es variable. El orden del código de Golomb exponencial puede derivarse de la siguiente manera. Tras derivarse el modelo de contexto para el primer elemento binario, y por tanto el índice de ese modelo de contexto, se usa el índice como orden para la binarización de Golomb exponencial. En esta realización preferida, el modelo de contexto para el primer elemento binario oscila entre 1 - 3 dando como resultado el índice 0 - 2, que se usa como orden del código de Golomb exponencial. Esta realización preferida puede usarse para el caso de HE y el número de modelos de contexto se reduce hasta 6. Con el fin de reducir de nuevo el número de modelos de contexto y por tanto ahorrar memoria, las componentes horizontal y vertical pueden compartir los mismos modelos de contexto en una realización preferida adicional. En este caso, solo se requieren 3 modelos de contexto. Además, puede tenerse en cuenta solo el vecino izquierdo para la evaluación en una realización preferida adicional de la invención. En esta realización preferida, el umbral puede no estar modificado (por ejemplo, solo se usa un único umbral de 16 dando como resultado un parámetro de Golomb exponencial de 0 o 1 o un único umbral de 32 dando como resultado un parámetro de Golomb exponencial de 0 o 2). Esta realización preferida ahorra la memoria intermedia de línea requerida para el almacenamiento demvd.En otra realización preferida, el umbral se modifica y es igual a 2 y 16. Para esta realización preferida, en total se requieren 3 modelos de contexto para la codificación de lamvdy el parámetro de Golomb exponencial posible oscila entre 0 - 2. En una realización preferida adicional, el umbral es igual a 16 y 32. De nuevo, la realización descrita es adecuada para el caso de HE.
En una realización preferida adicional de la invención, se reduce el valor de corte de 9 a 2. En esta realización preferida, el primer elemento binario y el segundo elemento binario pueden codificarse usando modelos de contexto. La selección de modelo de contexto para el primer elemento binario puede realizarse como en el estado de la técnica o modificarse de una manera descrita en la realización preferida anterior. Para el segundo elemento binario, se selecciona un modelo de contexto independiente como en el estado de la técnica. En una realización preferida adicional, el modelo de contexto para el segundo elemento binario se selecciona evaluando lamvddel vecino izquierdo. Para este caso, el índice de modelo de contexto es el mismo que para el primer elemento binario, mientras que los modelos de contexto disponibles son diferentes de los del primer elemento binario. En total, se requieren 6 modelos de contexto (obsérvese que las componentes comparten los modelos de contexto). De nuevo, el parámetro de Golomb exponencial puede depender del índice de modelo de contexto seleccionado del primer elemento binario. En otra realización preferida de la invención, el parámetro de Golomb exponencial depende del índice de modelo de contexto del segundo elemento binario. Las realizaciones descritas de la invención pueden usarse para el caso de HE.
En una realización preferida adicional de la invención, los modelos de contexto para ambos elementos binarios son fijos y no se derivan evaluando ninguno de los vecinos izquierdo o de arriba. Para esta realización preferida, el número total de modelos de contexto es igual a 2. En una realización preferida adicional de la invención, el primer elemento binario y el segundo elemento binario comparten el mismo modelo de contexto. Como resultado, solo se requiere un modelo de contexto para la codificación de lamvd.En ambas realizaciones preferidas de la invención, el parámetro de Golomb exponencial puede ser fijo e igual a 1. La realización preferida descrita de la invención es adecuada para la configuración tanto de HE como de LC.
En otra realización preferida, el orden de la parte de Golomb exponencial se deriva independientemente del índice de modelo de contexto del primer elemento binario. En este caso, se usa la suma absoluta de la selección de modelo de contexto habitual de H.264/AVC para derivar el orden para la parte de Golomb exponencial. Esta realización preferida puede usarse para el caso de HE.
En una realización preferida adicional, el orden de los códigos de Golomb exponenciales es fijo y se establece a 0. En otra realización preferida, el orden de los códigos de Golomb exponenciales se fija y se establece a 1. En una realización preferida, el orden de los códigos de Golomb exponenciales se fija a 2. En una realización adicional, el orden de los códigos de Golomb exponenciales se fija a 3. En una realización adicional, el orden de los códigos de Golomb exponenciales se fija según la forma y el tamaño de la PU actual. Las realizaciones preferidas presentadas pueden usarse para el caso de LC. Obsérvese que el orden fijado de la parte de Golomb exponencial se considera con un número reducido de elementos binarios codificados con modelos de contexto.
En una realización preferida, los vecinos se definen de la siguiente manera. Para la PU anterior, se tienen en cuenta todas las PU que cubren la PU actual y se usa la PU con el MV más grande. Esto también se realiza para el vecino izquierdo. Se evalúan todas las PU que cubren la PU actual y se usa la PU con el MV más grande. En otra realización preferida, se usa el valor de vector de movimiento absoluto promedio de todas las PU que cubren el borde superior y el izquierdo de la PU actual para derivar el primer elemento binario.
Para las realizaciones preferidas presentadas anteriormente, es posible cambiar el orden de codificación de la siguiente manera. Tiene que especificarse lamvdpara la dirección horizontal y vertical una tras otra (o viceversa). Por tanto, tienen que codificarse dos cadenas de elementos binarios. Con el fin de minimizar el número de conmutaciones de modo para el motor de codificación de entropía (es decir, la conmutación entre el modo de derivación y el regular), es posible codificar los elementos binarios codificados con modelos de contexto para ambas componentes en la primera etapa seguido por los elementos binarios codificados en modo de derivación en la segunda etapa. Obsérvese que esto solo es una reordenación.
Obsérvese que los elementos binarios resultantes de la binarización unaria o unaria truncada también pueden representarse mediante una binarización de longitud fija equivalente de un indicador por índice de elemento binario que especifica si el valor es mayor que el índice de elemento binario actual. Como ejemplo, el valor de corte para la binarización unaria truncada demvdse establece a 2 dando como resultado las palabras de código 0, 10, 11 para los valores 0, 1, 2. En la binarización de longitud fija correspondiente con un indicador por índice de elemento binario, un indicador para el índice de elemento binario 0 (es decir el primer elemento binario) especifica si el valor demvdabsoluto es mayor de 0 o no y un indicador para el segundo elemento binario con índice de elemento binario 1 especifica si el valor demvdabsoluto es mayor de 1 o no. Cuando el segundo indicador solo se codifica cuando el primer indicador es igual a 1, esto da como resultado las mismas palabras de código 0, 10, 11.
A continuación, se describe la representación de complejidad ajustable a escala del estado interno de modelos de probabilidad según una realización.
En la configuración de HE-PIPE, el estado interno de un modelo de probabilidad se actualiza tras codificar un elemento binario con el mismo. El estado actualizado se deriva mediante una consulta de tabla de transiciones de estado usando el estado antiguo y el valor del elemento binario codificado. En el caso de CABAC, un modelo de probabilidad puede adoptar 63 estados diferentes en los que cada estado corresponde a una probabilidad de modelo en el intervalo (0,0, 0,5). Cada uno de estos estados se usa para realizar dos probabilidades de modelo. Además de la probabilidad asignada al estado, también se usa 1,0 menos la probabilidad y un indicador denominado valMps almacena la información de si se usa la probabilidad o 1,0 menos la probabilidad.
Esto conduce a un total de 126 estados. Para usar un modelo de probabilidad de este tipo con el concepto de codificación de PIPE, se necesita mapear cada uno de los 126 estados en uno de los codificadores de PIPE disponibles. En implementaciones actuales de codificadores de PIPE, esto se realiza usando una tabla de consulta. Un ejemplo de un mapeo de este tipo se representa en la Tabla A.
A continuación, se describe una realización de cómo puede representarse el estado interno de un modelo de probabilidad para evitar usar una tabla de consulta para convertir el estado interno en un índice de PIPE. Únicamente se necesitan algunas operaciones de enmascaramiento de bits sencillas para extraer el índice de PIPE a partir de la variable de estado interno del modelo de probabilidad. Esta representación de complejidad ajustable a escala novedosa del estado interno de un modelo de probabilidad se diseña de una manera en dos niveles. Para aplicaciones en las que es obligatorio un funcionamiento de baja complejidad solo se usa el primer nivel. Solo describe el índice de PIPE y el indicador valMps que se usa para codificar o decodificar los elementos binarios asociados. En el caso del esquema de codificación de entropía de PIPE descrito, puede usarse el primer nivel para distinguir entre 8 probabilidades de modelo diferentes. Por tanto, el primer nivel necesitará 3 bits para pipeIdx y un bit adicional para el indicador valMps. Con el segundo nivel cada uno de los intervalos de probabilidad gruesos del primer nivel se refina para dar varios intervalos más pequeños que soportan la presentación de probabilidades a resoluciones superiores. Esta presentación más detallada permite un funcionamiento más exacto de estimadores de la probabilidad. En general, resulta adecuado para aplicaciones de codificación orientadas hacia altos rendimientos de RD. Como ejemplo esta representación de complejidad ajustable a escala del estado interno de modelos de probabilidad con el uso de PIPE se ilustra de la siguiente manera:
Los niveles primero y segundo se almacenan en una única memoria de 8 bits. Se requieren 4 bits para almacenar el primer nivel (un índice que define el índice de PIPE con el valor del MPS en el bit más significativo) y se usan otros 4 bits para almacenar el segundo nivel. Para implementar el comportamiento del estimador de probabilidad de CABAC, cada índice de PIPE tiene un número particular de índices de refinamiento permitidos que dependen de cuántos estados de CABAC se mapearon en el índice de PIPE. Por ejemplo, para el mapeo en la tabla A, el número de estados de CABAC por índice de PIPE se representa en la Tabla B.
Durante el proceso de codificación o decodificación de un elemento binario puede accederse al índice de PIPE y valMps directamente empleando operaciones sencillas de desplazamiento de bits o enmascaramiento de bits. Los procesos de codificación de baja complejidad requieren únicamente los 4 bits del primer nivel y los procesos de codificación de alta eficiencia pueden usar adicionalmente los 4 bits del segundo nivel para realizar la actualización de modelo de probabilidad del estimador de probabilidad de CABAC. Para llevar a cabo esta actualización, puede diseñarse una tabla de consulta de transiciones de estado que realiza las mismas transiciones de estado que la tabla original, pero usando la representación de estados de dos niveles de complejidad ajustable a escala. La tabla de transiciones de estado original consiste en dos multiplicado por 63 elementos. Para cada estado de entrada, contiene dos estados de salida. Cuando se usa la representación de complejidad ajustable a escala, el tamaño de la tabla de transiciones de estado no supera dos multiplicado por 128 elementos, lo cual es un aumento aceptable del tamaño de tabla. Este aumento depende de cuántos bits se usan para representar el índice de refinamiento y para emular de manera exacta el comportamiento del estimador de probabilidad de CABAC, se necesitan cuatro bits. Sin embargo, puede usarse un estimador de probabilidad diferente, que puede funcionar con un conjunto reducido de estados de CABAC de tal manera que para cada índice de PIPE no se permiten más de 8 estados. Por tanto, puede hacerse coincidir el consumo de memoria con el nivel de complejidad dado del proceso de codificación adaptando el número de bits usados para representar el índice de refinamiento. En comparación con el estado interno de probabilidades de modelo con CABAC (en el que existen 64 índices de estado de probabilidad) se evita el uso de las consultas de tablas para mapear probabilidades de modelo en un código de PIPE específico y no se requiere ninguna conversión adicional.
A continuación, se describe una actualización de modelo de contexto de complejidad ajustable a escala según una realización.
Para actualizar un modelo de contexto, su índice de estado de probabilidad puede actualizarse basándose en uno o más elementos binarios anteriormente codificados. En la configuración de HE-PIPE, esta actualización se realiza tras la codificación o decodificación de cada elemento binario. A la inversa, en la configuración de LC-PIPE, esta actualización puede no realizarse nunca.
Sin embargo, es posible realizar una actualización de modelos de contexto de una manera de complejidad ajustable a escala. Es decir, la decisión de si actualizar un modelo de contexto o no puede basarse en diversos aspectos. Por ejemplo, una configuración de codificador puede no realizar actualizaciones únicamente para modelos de contexto particulares tales como, por ejemplo, los modelos de contexto de elemento de sintaxiscoeff_significant_flag,y realizar siempre actualizaciones para todos los demás modelos de contexto.
Dicho de otro modo, el selector 402 puede estar configurado para realizar, para símbolos de cada uno de varios tipos de símbolo predeterminados, la selección entre los decodificadores de entropía 322 dependiendo de un modelo de probabilidad respectivo asociado con el símbolo predeterminado respectivo de tal manera que el número de tipos de símbolo predeterminados es menor en el modo de baja complejidad que en comparación con el modo de alta eficiencia
Además, criterios para controlar si actualizar o no un modelo de contexto pueden ser, por ejemplo, el tamaño de un paquete de flujo de bits, el número de elementos binarios decodificados hasta ese momento, o la actualización se realiza únicamente tras codificar un número fijo o variable particular de elementos binarios para un modelo de contexto.
Con este esquema para decidir si actualizar modelos de contexto o no, puede implementarse actualización de modelo de contexto de complejidad ajustable a escala. Esto permite aumentar o reducir la porción de elementos binarios en un flujo de bits para el que se realizan actualizaciones de modelo de contexto. Cuanto mayor es el número de actualizaciones de modelo de contexto, mejor es la eficiencia de codificación y mayor es la complejidad computacional. Por tanto, la actualización de modelo de contexto de complejidad ajustable a escala puede lograrse con el esquema descrito.
En una realización preferida, la actualización de modelo de contexto se realiza para elementos binarios de todos los elementos de sintaxis excepto los elementos de sintaxiscoeff_significant_flag, coeff_abs_greater1ycoeff_abs_greater2.
En una realización preferida adicional, la actualización de modelo de contexto se realiza únicamente para elementos binarios de los elementos de sintaxiscoeff_significant_flag, coeff_abs_greater1ycoeff_abs_greater2.
En una realización preferida adicional, la actualización de modelo de contexto se realiza para todos los modelos de contexto cuando comienza la codificación o decodificación de un segmento. Tras procesarse un número predefinido particular de bloques de transformación, se deshabilita la actualización de modelo de contexto para todos los modelos de contexto hasta que se alcanza el final del segmento.
Por ejemplo, el selector 402 puede estar configurado para realizar, para símbolos de un tipo de símbolo predeterminado, la selección entre los decodificadores de entropía 322 dependiendo de un modelo de probabilidad asociado con el tipo de símbolo predeterminado junto con, o sin, la actualización del modelo de probabilidad asociado, de tal manera que la longitud de una fase de aprendizaje de la secuencia de símbolos a lo largo de la cual se realiza la selección de los símbolos del tipo de símbolo predeterminado junto con la actualización es más corta en el modo de baja complejidad en comparación con el modo de alta eficiencia.
Una realización preferida adicional es idéntica a la realización preferida anteriormente descrita, pero usa la representación de complejidad ajustable a escala del estado interno de modelos de contexto de una manera tal que una tabla almacena la "primera parte" (valMps y pipeIdx) de todos los modelos de contexto y una segunda tabla almacena la "segunda parte" (refineIdx) de todos los modelos de contexto. En el punto en el que se deshabilita la actualización de modelo de contexto para todos los modelos de contexto (tal como se describió en la realización preferida anterior), ya no se necesita la tabla que almacena la "segunda parte" y puede desecharse.
A continuación, se describe la actualización de modelo de contexto para una secuencia de elementos binarios según una realización.
En la configuración de LC-PIPE, los elementos binarios de elementos de sintaxis de tipocoeff_significant_flag, coeff_abs_greater_1ycoeff_abs_greater2se agrupan en subconjuntos. Para cada subconjunto, se usa un único modelo de contexto para codificar sus elementos binarios. En este caso, puede realizarse una actualización de modelo de contexto tras la codificación de un número fijo de elementos binarios de esta secuencia. Esto se denomina a continuación actualización de múltiples elementos binarios. Sin embargo, esta actualización puede diferir de la actualización que solo usa el último elemento binario codificado y el estado interno del modelo de contexto. Por ejemplo, para cada elemento binario que se codificó, se lleva a cabo una etapa de actualización de modelo de contexto.
A continuación, se facilitan ejemplos para la codificación de un subconjunto a modo de ejemplo que consiste en 8 elementos binarios. La letra 'b' indica la decodificación de un elemento binario y la letra 'u' indica la actualización del modelo de contexto. En el caso de LC-PIPE solo se realiza la decodificación de elementos binarios sin realizar actualizaciones de modelo de contexto:
bbbbbbbb
En el caso de HE-PIPE, tras la decodificación de cada elemento binario, se realiza una actualización de modelo de contexto:
bubububububububu
Con el fin de reducir en cierta medida la complejidad, la actualización de modelo de contexto puede realizarse tras una secuencia de elementos binarios (en este ejemplo, tras cada 4 elementos binarios se realizan las actualizaciones de esos 4 elementos binarios):
bbbbuuuubbbbuuuu
Es decir, el selector 402 puede estar configurado para realizar, para símbolos de un tipo de símbolo predeterminado, la selección entre los decodificadores de entropía 322 dependiendo de un modelo de probabilidad asociado con el tipo de símbolo predeterminado junto con o sin la actualización del modelo de probabilidad asociado de tal manera que una frecuencia a la que se realiza la selección de los símbolos del tipo de símbolo predeterminado junto con la actualización es menor en el modo de baja complejidad que en comparación con el modo de alta eficiencia.
En este caso, tras la decodificación de 4 elementos binarios, siguen 4 etapas de actualización basadas en los 4 elementos binarios que acaban de decodificarse. Obsérvese que estas cuatro etapas de actualización pueden llevarse a cabo en una única etapa usando una tabla de consulta especial de consulta. Esta tabla de consulta almacena para cada combinación posible de 4 elementos binarios y cada estado interno posible del modelo de contexto el nuevo estado resultante tras las cuatro etapas de actualización convencionales.
En un modo determinado, se usa la actualización de múltiples elementos binarios para el elemento de sintaxiscoeff_significant_flag.Para elementos binarios de todos los demás elementos de sintaxis, no se usa ninguna actualización de modelo de contexto. El número de elementos binarios que se codifican antes de realizarse una etapa de actualización de múltiples elementos binarios se establece a n. Cuando el número de elementos binarios del conjunto no puede dividirse entre n, quedan de 1 a n-1 elementos binarios al final del subconjunto tras la última actualización de múltiples elementos binarios. Para cada uno de estos elementos binarios, se realiza una actualización convencional de elementos binarios individuales tras codificar todos estos elementos binarios. El número n puede ser cualquier número positivo mayor de 1. Otro modo puede ser idéntico al modo anterior, excepto porque la actualización de múltiples elementos binarios se realiza para combinaciones arbitrarias decoeff_significant_flag, coeff_abs_greater1ycoeff_abs_greater2(en lugar de tan solo paracoeff_significant_flag).Por tanto, este modo será más complejo que el otro. Todos los demás elementos de sintaxis (en los que no se usa la actualización de múltiples elementos binarios) pueden dividirse en dos subconjuntos independientes en los que para uno de los subconjuntos se usa actualización de elementos binarios individuales y para el otro subconjunto no se usa ninguna actualización de modelo de contexto. Cualquier subconjunto independiente posible es válido (incluyendo el subconjunto vacío).
En una realización alternativa, la actualización de múltiples elementos binarios puede basarse solo en los últimos m elementos binarios que se codifican inmediatamente antes de la etapa de actualización de múltiples elementos binarios. m puede ser cualquier número natural menor que n. Por tanto, la decodificación puede realizarse de la siguiente manera:
bbbbuubbbbuubbbbuubbbb...
con n=4 y m=2.
Es decir, el selector 402 puede estar configurado para realizar, para símbolos de un tipo de símbolo predeterminado, la selección entre los decodificadores de entropía 322 dependiendo de un modelo de probabilidad asociado con el tipo de símbolo predeterminado, junto con la actualización del modelo de probabilidad asociado cada n-ésimo símbolo del tipo predeterminado basándose en los m símbolos más recientes del tipo de símbolo predeterminado de tal manera que la razón n/m es mayor en el modo de baja complejidad en comparación con el modo de alta eficiencia.
En una realización preferida adicional, para el elemento de sintaxiscoeff_significant_flag,el esquema de modelado de contexto que usa una plantilla local tal como se describió anteriormente para la configuración de HE-PIPE puede usarse para asignar modelos de contexto a elementos binarios del elemento de sintaxis. Sin embargo, para estos elementos binarios, no se usa ninguna actualización de modelo de contexto.
Además, el selector 402 puede estar configurado para seleccionar, para símbolos de un tipo de símbolo predeterminado, uno de un número de contextos dependiendo de un número de símbolos anteriormente recuperados de la secuencia de símbolos y realizar la selección entre los decodificadores de entropía 322 dependiendo de un modelo de probabilidad asociado con el contexto seleccionado, de tal manera que el número de contextos, y/o el número de símbolos anteriormente recuperados, es menor en el modo de baja complejidad en comparación con el modo de alta eficiencia.
Inicialización de modelo de probabilidad usando valores de inicialización de 8 bits
Esta sección describe el proceso de inicialización del estado interno de complejidad ajustable a escala de modelos de probabilidad usando un denominado valor de inicialización de 8 bits en lugar de dos valores de 8 bits tal como es el caso en la norma de codificación de vídeo del estado de la técnica H.265/AVC. Consiste en dos partes que son comparables a los pares de valores de inicialización usados para modelos de probabilidad en CABAC de H.264/AVC. Las dos partes representan los dos parámetros de una ecuación lineal para calcular el estado inicial de un modelo de probabilidad, que representa una probabilidad particular (por ejemplo, en forma de un índice de PIPE) a partir de un QP:
• La primera parte describe la pendiente y aprovecha la dependencia del estado interno con respecto al parámetro de cuantificación (QP) que se usa durante la codificación o decodificación.
• La segunda parte define un índice de PIPE a un QP dado así como el valMps.
Hay dos modos diferentes disponibles para inicializar un modelo de probabilidad usando el valor de inicialización dado. El primer modo se indica inicialización independiente de QP. Solo usa el índice de PIPE y valMps definido en la segunda parte del valor de inicialización para todos los QP. Esto es idéntico al caso en el que la pendiente es igual a 0. El segundo modo se indica inicialización dependiente de QP y usa adicionalmente la pendiente de la primera parte del valor de inicialización para alterar el índice de PIPE y para definir el índice de refinamiento. Las dos partes de un valor de inicialización de 8 bits se ilustran de la siguiente manera:
Consiste en dos partes de 4 bits. La primera parte contiene un índice que apunta a 1 de 16 pendientes predefinidas diferentes que se almacenan en una matriz. Las pendientes predefinidas consisten en 7 pendientes negativas (índice de pendiente 0-6), una pendiente que es igual a cero (índice de pendiente 7) y 8 pendientes positivas (índice de pendiente 8-15). Las pendientes se representan en la Tabla C.
Tabla C:
Todos los valores se ajustan a escala mediante un factor de 256 para evitar el uso de operaciones de punto flotante. La segunda parte es el índice de PIPE que implementa la probabilidad creciente de valMps = 1 entre el intervalo de probabilidad p = 0 y p = 1. Dicho de otro modo, el codificador de PIPE n debe funcionar a una probabilidad de modelo superior al codificador de PIPE n - 1. Para cada modelo de probabilidad está disponible un índice de probabilidad de PIPE e identifica el codificador de PIPE cuyo intervalo de probabilidad contiene la probabilidad de pvalMPs=1 para QP = 26.
Tabla D: Mapeo de la segunda parte del valor de inicialización en codificadores de PIPE y valMps: UR = código de unario a Rice, TB = código de tres elementos binarios, BP = código de elemento binario-PIPE, EP = igual robabilidad^sin codificar
Se requieren el QP y el valor de inicialización de 8 bits para calcular la inicialización del estado interno de los modelos de probabilidad calculando una simple ecuación lineal en forma de y = m * (QP - QPref) 256 * b. Obsérvese que m define la pendiente que se toma de la tabla C usando el índice de pendiente (la primera parte del valor de inicialización de 8 bits) y b indica el codificador de PIPE a QPref = 26 (la segunda parte del valor de inicialización de 8 bits: "Índice de probabilidad de PIPE"). Entonces, valMPS es 1 y pipeIdx es igual a (y - 2048) >> 8 si y es mayor de 2047. De lo contrario, valMPS es 0 y pipeIdx es igual a (2047 - y) >> 8. El índice de refinamiento es igual a (((y-2048) & 255) * numStates) >> 8 si valMPS es igual a 1. De lo contrario, el índice de refinamiento es igual a (((2047-y) & 255) * numStates) >> 8. En ambos casos, numStates es igual al número de estados de CABAC de pipeIdx tal como se representa en la Tabla B.
El esquema anterior puede usarse no solo en combinación con codificadores de PIPE, sino también en relación con los esquemas de CABAC anteriormente mencionados. En ausencia de PIPE, el número de estados de CABAC, es decir los estados de probabilidad entre los cuales se realiza la transición de estado en la actualización de probabilidad (pState_current[elemento binario]), por Idx de PIPE (es decir los bits más significativos respectivos de pState_current[elemento binario]) es entonces tan solo un conjunto de parámetros que realiza, de hecho, una interpolación lineal por fragmentos del estado de CABAC dependiendo del QP. Además, esta interpolación lineal por fragmentos también puede deshabilitarse prácticamente en el caso en el que el parámetro numStates usa el mismo valor para todos los Idx de PIPE. Por ejemplo, establecer numStates a 8 para todos los casos proporciona un total de 16 * 8 estados y el cálculo del índice de refinamiento se simplifica a ((y-2048) & 255) >> 5 para valMPS igual a 1 o ((2047-y) & 255) >> 5 para valMPS igual a 0. Para este caso, mapear la representación usando valMPS, idx de PIPE, e idx de refinamiento de vuelta en la representación usada por el CABAC original de H.264/AVC resulta muy sencillo. El estado de CABAC viene dado como (Idx de PIPE << 3) Idx de refinamiento. Este aspecto se describe adicionalmente a continuación con respecto a la Fig. 17.
A menos que la pendiente del valor de inicialización de 8 bits sea igual a cero o a menos que el QP sea igual a 26, es necesario calcular el estado interno empleando la ecuación lineal con el QP del proceso de codificación o decodificación. En el caso en el que la pendiente es igual a cero o que el QP del proceso de codificación actual es igual a 26, la segunda parte de valor de inicialización de 8 bits puede usarse directamente para inicializar el estado interno de un modelo de probabilidad. De lo contrario, la parte decimal del estado interno resultante puede aprovecharse adicionalmente para determinar un índice de refinamiento en aplicaciones de codificación de alta eficiencia mediante interpolación lineal entre los límites del codificador de PIPE específico. En esta realización preferida, la interpolación lineal se ejecuta multiplicando simplemente la parte decimal por el número total de índices de refinamiento disponibles para el codificador de PIPE actual y mapeando el resultado en el índice de refinamiento de número entero más próximo.
El proceso de inicialización del estado interno de los modelos de probabilidad puede hacerse variar con respecto al número de estados de índice de probabilidad de PIPE. En particular, la doble aparición del modo igualmente probable usando el codificador de PIPE E1, es decir el uso de dos índices de PIPE diferentes para distinguir entre que MPS sea 1 o 0, puede evitarse de la siguiente manera. De nuevo, el proceso puede invocarse durante el inicio del análisis de sintaxis de los datos de segmento, y la entrada de este proceso puede ser un valor de inicialización de 8 bits tal como se representa en la tabla E, que se transmitirá, por ejemplo, dentro del flujo de bits para cada modelo de contexto que va a inicializarse.
Tabla E: Configuración de los 8 bits de initValue para un modelo de robabilidadPrimeros 4 bits Últimos
Bits de initValue b7 | b6 | b5 | b4
Variable slopeIdx prop
Los primeros 4 bits definen un índice de pendiente y se recuperan enmascarando los bits b4 - b7. Para cada índice de pendiente se especifica una pendiente (m) y se visualiza la Tabla F.
T l F: V l r v ri l m r l I x
Los bits b0-b3, los últimos 4 bits del valor de inicialización de 8 bits, identifican probIdx y describen la probabilidad a un QP predefinido. probIdx 0 indica la mayor probabilidad para símbolos con valor 0 y, respectivamente, probIdx 14 indica la mayor probabilidad para símbolos con valor 1. La tabla G muestra para cada probIdx el pipeCoder correspondiente y su valMps.
Con ambos valores el cálculo del estado interno puede realizarse usando una ecuación lineal como y = m * x 256 * b, donde m indica la pendiente, x indica el QP del segmento actual y b se deriva a partir de probIdx tal como se muestra en la siguiente descripción. Todos los valores en este proceso se ajustan a escala mediante un factor de 256 para evitar el uso de operaciones de punto flotante. La salida (y) de este proceso representa el estado interno del modelo de probabilidad al QP actual y se almacena en una memoria de 8 bits. Tal como se muestra en G, el estado interno consiste en los valMP, el pipeIdx y el refineIdx.
T l H: nfi r i n l in rn n m l r ili
La asignación de refineIdx y pipeIdx es similar al estado interno de los modelos de probabilidad de CABAC (pStateCtx) y se presenta en H.
Tabla I: Asignación de pipeIdx, refineIdx y pStateCtx
En una realización preferida el probIdx se define a QP26. Basándose en el valor de inicialización de 8 bits el estado interno (valMps, pipeIdx y refineIdx) de un modelo de probabilidad se procesa tal como se describe en el siguiente pseudocódigo:
n - ( probldx << 8 ) - m * 26
fullCtxState = máx( 0, mín( 3839, ( m * máx ( 0,mín( 51, SliceQPy ) ) ) } n 128 )
remCtxState = fullCtxState&255
preCtxState = fullCtxState >> 8
si( preCtxState < 8 ) {
pipeldx = 7 - preCtxState
valMPS - 0
} si no {
pipeldx = preCtxState - 8
valMPS = 1
}
desviación = {3, 7, 5, 7, 10, 14, 16, 1 }
si( pipeldx = = 0 } {
si( remCtxState <= 127 }
remCtxState = 127 - remCtxState
si no
remCtxState = remCtxState - 128
refineldx = ( { remCtxState << 1 ) * desviación) » 8
} si no {
si( valMPS = = 0 )
remCtxState = 255 - remCtxState
refineldx = ( remCtxState * desviación [pipeldx]) » 8 í ' '
Como se muestra en el pseudocódigo el refineldx se calcula mediante interpolación lineal entre el intervalo del pipeldx y cuantificando el resultado al refineIdx correspondiente. La desviación especifica el número total de refineIdx para cada pipeIdx. El intervalo [7, 8) de fullCtxState/256 se divide a la mitad. El intervalo [7, 7,5) se mapea en pipeIdx = 0 y valMps = 0 y el intervalo [7,5, 8) se mapea en pipeIdx = 0 y valMps = 1. La Fig. 22 representa el proceso de derivar el estado interno y visualiza el mapeo de fullCtxState/256 en pStateCtx.
Obsérvese que la pendiente indica la dependencia del probIdx y el QP. Si el slopeIdx del valor de inicialización de 8 bits es igual a 7, el estado interno resultante del modelo de probabilidad es el mismo para todos los QP de segmento, por tanto, el proceso de inicialización del estado interno es independiente del QP actual del segmento.
Es decir, el selector 402 puede inicializar los índices de PIPE que van a usarse en la decodificación de la siguiente porción del flujo de datos tal como el flujo completo o el siguiente segmento, usando el elemento de sintaxis que indica el tamaño de etapa de cuantificación QP usado con el fin de cuantificar los datos de esta porción, tal como los niveles de coeficiente de transformación contenidos en el mismo usando este elemento de sintaxis como índice en una tabla que puede ser común para ambos modos, LC y HE. La tabla, tal como la Tabla D, puede comprender índices de PIPE para cada tipo de símbolo, para una referencia respectiva QPref, u otros datos para cada tipo de símbolo. Dependiendo del QP real de la porción actual, el selector puede calcular un valor de índice de PIPE usando la entrada de tabla respectiva a indexada por el QP real y el propio QP, tal como mediante multiplicación de a por (QP-QPref). La única diferencia en el modo de LC y de HE: el selector calcula el resultado simplemente a una precisión menor en el caso de LC en comparación con el modo de HE. El selector puede usar simplemente, por ejemplo, la parte de número entero del resultado de cálculo. En el modo de HE, el resto de mayor precisión, tal como la parte fraccionaria, se usa para seleccionar uno de los índices de refinamiento disponibles para el índice de PIPE respectivo tal como se indica mediante la parte de número entero o menor precisión. El índice de refinamiento se usa en el modo de HE (posiblemente con menor frecuencia también en el modo de LC) con el fin de realizar la adaptación de probabilidad tal como usando el recorrido de tabla anteriormente mencionado. Cuando se dejan los índices disponibles para el índice de PIPE actual al límite superior, entonces se selecciona el índice de PIPE superior junto con minimizar el índice de refinamiento. Cuando se dejan los índices disponibles para el índice de PIPE actual al límite inferior, entonces se selecciona el siguiente índice de PIPE inferior junto con maximizar el índice de refinamiento al máximo disponible para el nuevo índice de PIPE. El índice de PIPE junto con el índice de refinamiento define el estado de probabilidad, pero para la selección entre los flujos parciales, el selector simplemente usa el índice de PIPE. El índice de refinamiento simplemente sirve para rastrear la probabilidad más estrechamente, o con una precisión más fina.
Sin embargo, la discusión anterior también mostró que puede lograrse un ajuste a escala de la complejidad de manera independiente del concepto de codificación de PIPE o CABAC de las Fig. 7 - 17, usando un decodificador tal como se muestra en la Fig. 19. El decodificador de la Fig. 19 es para decodificar un flujo de datos 601 en el que se codifican datos de medios, y comprende un conmutador de modo 600 configurado para activar un modo de baja complejidad o un modo de alta eficiencia dependiendo del flujo de datos 601, así como un desimbolizador 602 configurado para desimbolizar una secuencia 603 de símbolos obtenida (o bien directamente o bien mediante decodificación de entropía, por ejemplo) a partir del flujo de datos 601 para obtener elementos 604 de sintaxis con valor de número entero usando una función de mapeo controlable mediante un parámetro de control, para mapear un dominio de palabras de secuencia de símbolos en un codominio de los elementos de sintaxis con valor de número entero. Un reconstructor 605 está configurado para reconstruir los datos de medios 606 basándose en los elementos de sintaxis con valor de número entero. El desimbolizador 602 está configurado para realizar la desimbolización de tal manera que el parámetro de control varía según el flujo de datos a una primera tasa en el caso de que esté activado el modo de alta eficiencia y el parámetro de control es constante independientemente del flujo de datos o cambia dependiendo del flujo de datos, pero a una segunda tasa inferior a la primera tasa en el caso de que esté activado el modo de baja complejidad, tal como se ilustra mediante la flecha 607. Por ejemplo, el parámetro de control puede variar según símbolos anteriormente desimbolizados.
Algunas de las realizaciones anteriores emplearon el aspecto de la Fig. 19. Los elementos de sintaxiscoeff_abs_minus3y MVD dentro de la secuencia 327 se binarizaron, por ejemplo, en el desimbolizador 314 dependiendo del modo seleccionado tal como se indica mediante 407, y el reconstructor 605 usó estos elementos de sintaxis para la reconstrucción. Evidentemente, ambos aspectos de las Fig. 18 y 19 son fácilmente combinables, pero el aspecto de la Fig. 19 también puede combinarse con otros entornos de codificación.
Véase, por ejemplo, la codificación de diferencia de vector de movimiento indicada anteriormente. El desimbolizador 602 puede estar configurado de tal manera que la función de mapeo usa un código unario truncado para realizar el mapeo dentro de un primer intervalo del dominio de elementos de sintaxis con valor de número entero por debajo de un valor de corte y una combinación de un prefijo en forma del código unario truncado para el valor de corte y un sufijo en forma de una palabra de código de VLC dentro de un segundo intervalo del dominio de elementos de sintaxis con valor de número entero incluyendo el, y por encima del, valor de corte, en el que el decodificador puede comprender un decodificador de entropía 608 configurado para derivar varios primeros elementos binarios del código unario truncado a partir del flujo de datos 601 usando decodificación de entropía con estimación de probabilidad variable y varios segundos elementos binarios de la palabra de código de VLC usando un modo de derivación de equiprobabilidad constante. En el modo de HE, la codificación de entropía puede ser más compleja que la codificación de LC tal como se ilustra mediante la flecha 609. Es decir, puede aplicarse adaptabilidad de contexto y/o adaptación de probabilidad en el modo de HE y suprimirse en el modo de LC, o puede ajustarse a escala la complejidad de otras maneras, tal como se expuso anteriormente con respecto a las diversas realizaciones.
En la Fig. 20 se muestra un codificador adaptado al decodificador de la Fig. 18, para codificar datos de medios para dar un flujo de datos. Puede comprender un insertador 500 configurado para indicar dentro del flujo de datos 501 una activación de un modo de baja complejidad o un modo de alta eficiencia, un constructor 504 configurado para precodificar los datos de medios 505 para dar una secuencia 506 de elementos de sintaxis, un simbolizador 507 configurado para simbolizar la secuencia 506 de elementos de sintaxis para dar una secuencia 508 de símbolos, una pluralidad de codificadores de entropía 310 cada uno de los cuales está configurado para convertir secuencias parciales de símbolos en palabras de código del flujo de datos, y un selector 502 configurado para reenviar cada símbolo de la secuencia 508 de símbolos a uno seleccionado de la pluralidad de codificadores de entropía 310, en el que el selector 502 está configurado para realizar la selección dependiendo del modo activado del modo de baja complejidad y el modo de alta eficiencia, tal como se ilustra mediante la flecha 511. Opcionalmente puede proporcionarse un entrelazador 510 para entrelazar las palabras de código de los codificadores 310.
En la Fig. 21 se muestra un codificador adaptado al decodificador de la Fig. 19, para codificar datos de medios para dar un flujo de datos, como que comprende un insertador 700 configurado para indicar dentro del flujo de datos 701 una activación de un modo de baja complejidad o un modo de alta eficiencia, un constructor 704 configurado para precodificar los datos de medios 705 para dar una secuencia 706 de elementos de sintaxis que comprende un elemento de sintaxis con valor de número entero, y un simbolizador 707 configurado para simbolizar el elemento de sintaxis con valor de número entero usando una función de mapeo controlable mediante un parámetro de control, para mapear un dominio de elementos de sintaxis con valor de número entero en un codominio del palabras de secuencia de símbolos, en el que el simbolizador 707 está configurado para realizar la simbolización de tal manera que el parámetro de control varía según el flujo de datos a una primera tasa en el caso de que esté activado el modo de alta eficiencia y el parámetro de control es constante independientemente del flujo de datos o cambia dependiendo del flujo de datos, pero a una segunda tasa inferior a la primera tasa en el caso de que esté activado el modo de baja complejidad tal como se ilustra mediante la flecha 708. El resultado de simbolización se codifica en el flujo de datos 701.
De nuevo, debe mencionarse que la realización de la Fig. 18 puede transferirse fácilmente a la realización de codificación/decodificación aritmética binaria adaptativa de contexto anteriormente mencionada: el selector 509 y los codificadores de entropía 310 se condensarán para dar un codificador aritmético binario adaptativo de contexto que emitirá el flujo de datos 401 directamente y seleccionará el contexto para un elemento binario que va a derivarse actualmente a partir del flujo de datos. Esto es especialmente cierto para la adaptabilidad de contexto y/o adaptabilidad de probabilidad. Ambas funcionalidades/adaptabilidades pueden desactivarse, o diseñarse de manera más relajada, durante el modo de baja complejidad.
Se observa que muchos de los aspectos mencionados de las realizaciones anteriores son fácilmente transferibles a la codificación de audio o a la codificación de otros datos. En particular, el tipo específico de reconstructor no es crítico.
Aunque algunos aspectos se han descrito en el contexto de un aparato, resulta evidente que estos aspectos también representan una descripción del método correspondiente, donde un bloque o dispositivo corresponde a una etapa de método o una característica de una etapa de método. De forma análoga, aspectos descritos en el contexto de una etapa de método también representan una descripción de un bloque o ítem o característica correspondiente de un aparato correspondiente. Algunas o todas las etapas de método pueden ser ejecutadas por (o usando) un aparato de hardware, como por ejemplo un microprocesador, un ordenador programable o un circuito electrónico. En algunas realizaciones, algunas o más de las etapas de método más importantes pueden ser ejecutadas por dicho aparato. La señal codificada de la invención puede ser almacenada en un medio de almacenamiento digital o puede transmitirse en un medio de transmisión tal como un medio de transmisión inalámbrico o un medio de transmisión cableado tal como internet.
Dependiendo de determinados requisitos de implementación, pueden implementarse realizaciones de la invención en hardware o en software. La implementación puede realizarse usando un medio de almacenamiento digital, por ejemplo, un disquete, un DVD, un Blue-Ray, un CD, una ROM, una PROM, una EPROM, una EEPROM o una memoria FLASH, que tienen señales de control electrónicamente legibles almacenadas en el mismo, que actúan conjuntamente (o que pueden actuar conjuntamente) con un sistema informático programable de tal manera que se realiza el método respectivo. Por tanto, el medio de almacenamiento digital puede ser legible por ordenador.
Algunas realizaciones según la invención comprenden un soporte de datos que tiene señales de control electrónicamente legibles, que pueden actuar conjuntamente con un sistema informático programable, de tal manera que se realiza uno de los métodos descritos en el presente documento.
Generalmente, pueden implementarse realizaciones de la presente invención como producto de programa informático con un código de programa, siendo el código de programa operativo para realizar uno de los métodos cuando se ejecuta el producto de programa informático en un ordenador. El código de programa puede almacenarse, por ejemplo, en un soporte legible por máquina.
Otras realizaciones comprenden el programa informático para realizar uno de los métodos descritos en el presente documento, almacenado en un soporte legible por máquina.
Dicho de otro modo, una realización del método de la invención es, por tanto, un programa informático que tiene un código de programa para realizar uno de los métodos descritos en el presente documento, cuando se ejecuta el programa informático en un ordenador.
Una realización adicional de los métodos de la invención es, por tanto, un soporte de datos (o un medio de almacenamiento digital, o un medio legible por ordenador) que comprende, registrado en el mismo, el programa informático para realizar uno de los métodos descritos en el presente documento. El soporte de datos, el medio de almacenamiento digital o el medio registrado son normalmente tangibles y/o no transitorios.
Una realización adicional del método de la invención es, por tanto, un flujo de datos o una secuencia de señales que representa el programa informático para realizar uno de los métodos descritos en el presente documento. El flujo de datos o la secuencia de señales puede estar configurado, por ejemplo, para transferirse a través de una conexión de comunicación de datos, por ejemplo, a través de internet.
Una realización adicional comprende medios de procesamiento, por ejemplo, un ordenador, o un dispositivo lógico programable, configurados o adaptados para realizar uno de los métodos descritos en el presente documento. Una realización adicional comprende un ordenador que tiene instalado en el mismo el programa informático para realizar uno de los métodos descritos en el presente documento.
Una realización adicional según la invención comprende un aparato o un sistema configurado para transferir (por ejemplo, de manera electrónica u óptica) un programa informático para realizar uno de los métodos descritos en el presente documento a un receptor. El receptor puede ser, por ejemplo, un ordenador, un dispositivo móvil, un dispositivo de memoria o similar. El aparato o sistema puede comprender, por ejemplo, un servidor de archivos para transferir el programa informático al receptor.
En algunas realizaciones, puede usarse un dispositivo lógico programable (por ejemplo, una matriz de compuertas programable en el campo) para realizar algunas o todas de las funcionalidades de los métodos descritos en el presente documento. En algunas realizaciones, una matriz de compuertas programable en el campo puede actuar conjuntamente con un microprocesador con el fin de realizar uno de los métodos descritos en el presente documento. Generalmente, los métodos se realizan preferiblemente mediante cualquier aparato de hardware.
Claims (7)
1. Decodificador para decodificar un flujo de datos (401) en el que se codifican datos multimedia, que comprende
un conmutador de modo (400) configurado para activar un modo de baja complejidad o un modo de alta eficiencia dependiendo del flujo de datos;
un motor de decodificación de entropía (608) configurado para recuperar cada símbolo de una secuencia (326) de símbolos mediante decodificación de entropía del flujo de datos usando uno seleccionado de una pluralidad de esquemas de decodificación de entropía (322);
un desimbolizador (314) configurado para desimbolizar la secuencia de símbolos (326) con el fin de obtener una secuencia de elementos de sintaxis (327);
un reconstructor (404) configurado para reconstruir los datos multimedia basándose en la secuencia de elementos de sintaxis;
en donde la selección depende de la activación de uno de los modos de baja complejidad y de alta eficiencia, en donde el motor de decodificación de entropía está configurado de tal manera que cada uno de la pluralidad de esquemas de decodificación de entropía implique la decodificación aritmética de los símbolos para los que se ha seleccionado el esquema de decodificación de entropía respectivo, difiriendo los esquemas de decodificación de entropía entre sí en el uso de una estimación de probabilidad diferente en la decodificación aritmética y de tal manera que la pluralidad de esquemas de decodificación de entropía realicen su subdivisión de probabilidad en un intervalo de probabilidad común para decodificar los símbolos de un flujo de bits común;
en donde el motor de decodificación de entropía está configurado de tal manera que solo se gestiona un valor de anchura de intervalo de probabilidad R y un valor de estado de desviación V para todos los esquemas de decodificación de entropía;
en donde cada símbolo de la secuencia (326) de símbolos se asocia con uno respectivo de una pluralidad de tipos de símbolos, en donde
para cada símbolo de un tipo de símbolo predeterminado, tanto en el modo de baja complejidad como en el modo de alta eficiencia, se selecciona uno de la pluralidad de esquemas de decodificación de entropía, y la selección depende de un modelo de probabilidad asociado con el tipo de símbolo predeterminado y el modelo de probabilidad se actualiza dependiendo de los símbolos del tipo de símbolo predeterminado a una primera tasa de actualización en caso de que se active el modo de alta eficiencia, y a una segunda tasa de actualización inferior a la primera tasa de actualización en caso de que se active el modo de baja complejidad.
2. Decodificador según la reivindicación 1, en donde el reconstructor (404) está configurado para funcionar independientemente de que esté activado el modo de alta eficiencia o el modo de baja complejidad.
3. Decodificador según la reivindicación 1 o 2, en donde cada símbolo de la secuencia (326) de símbolos se asocia con uno respectivo de una pluralidad de tipos de símbolos, en donde los modelos de probabilidad asociados con los tipos de símbolos se inicializan basándose en un cálculo usando elementos de sintaxis en el flujo de datos cuyos elementos de cálculo y sintaxis son los mismos en el modo de baja complejidad y en el modo de alta eficiencia, respectivamente, siendo, sin embargo, una resolución de un resultado del cálculo menor en el modo de baja complejidad y en el modo de alta eficiencia.
4. Codificador para codificar datos multimedia en un flujo de datos (601), que comprende
un insertador (500) configurado para señalar dentro del flujo de datos una activación de un modo de baja complejidad o de un modo de alta eficiencia;
un constructor (504) configurado para precodificar los datos multimedia en una secuencia de elementos de sintaxis;
un simbolizador (507) configurado para simbolizar la secuencia de elementos de sintaxis (327) en una secuencia de símbolos;
un motor de codificación de entropía (710) configurado para codificar cada símbolo de la secuencia de símbolos en el flujo de datos usando uno seleccionado de una pluralidad de esquemas de codificación de entropía, en donde el motor de codificación de entropía está configurado para realizar la selección dependiendo del modo activado del modo de baja complejidad y el modo de alta eficiencia,
en donde el motor de codificación de entropía está configurado de tal manera que cada uno de la pluralidad de esquemas de codificación de entropía implica la codificación aritmética de los símbolos para los que se ha seleccionado el respectivo esquema de codificación de entropía, difiriendo la pluralidad de esquemas de codificación de entropía entre sí en el uso de una estimación de probabilidad diferente, y de tal manera que la pluralidad de esquemas de codificación de entropía realizan su subdivisión de probabilidad en un intervalo de probabilidad común para codificar los símbolos en un flujo de bits común,
en donde el motor de codificación de entropía está configurado de tal manera que solo se gestiona un valor de anchura de intervalo de probabilidad R y el valor L correspondiente para todos los esquemas de codificación de entropía,
en donde cada símbolo de la secuencia (326) de símbolos se asocia con uno respectivo de una pluralidad de tipos de símbolos, en donde
para cada símbolo de un tipo de símbolo predeterminado, tanto en el modo de baja complejidad como en el modo de alta eficiencia, se selecciona uno de la pluralidad de esquemas de codificación de entropía, y la selección depende de un modelo de probabilidad asociado con el tipo de símbolo predeterminado y el modelo de probabilidad se actualiza dependiendo de los símbolos del tipo de símbolo predeterminado a una primera tasa de actualización en caso de que se active el modo de alta eficiencia, y a una segunda tasa de actualización inferior a la primera tasa de actualización en caso de que se active el modo de baja complejidad.
5. Método de decodificación de un flujo de datos (401) en el que están codificados datos multimedia, que comprende
activar un modo de baja complejidad o un modo de alta eficacia dependiendo del flujo de datos;
recuperar cada símbolo de una secuencia (326) de símbolos mediante decodificación de entropía a partir del flujo de datos usando uno seleccionado de una pluralidad de esquemas de decodificación de entropía (322); desimbolizar la secuencia de símbolos (326) con el fin de obtener una secuencia de elementos de sintaxis (327); reconstruir los datos multimedia basándose en la secuencia de elementos de sintaxis;
en donde la selección entre la pluralidad de esquemas de decodificación de entropía (322) se realiza dependiendo del modo activado del modo de baja complejidad y el modo de alta eficiencia, en donde la recuperación se realiza de tal manera que cada uno de la pluralidad de esquemas de decodificación de entropía implica la decodificación aritmética de los símbolos para los que se ha seleccionado el esquema de decodificación de entropía respectivo, difiriendo la pluralidad de esquemas de decodificación de entropía entre sí en el uso de una estimación de probabilidad diferente en la decodificación aritmética y de tal manera que la pluralidad de esquemas de decodificación de entropía realizan su subdivisión de probabilidad en un intervalo de probabilidad común para decodificar los símbolos de un flujo de bits común;
en donde solo se gestiona un valor de anchura de intervalo de probabilidad R y un valor de estado de desviación V para todos los esquemas de decodificación de entropía;
en donde cada símbolo de la secuencia (326) de símbolos se asocia con uno respectivo de una pluralidad de tipos de símbolos, en donde
para cada símbolo de un tipo de símbolo predeterminado, tanto en el modo de baja complejidad como en el modo de alta eficiencia, se selecciona uno de la pluralidad de esquemas de decodificación de entropía, y la selección depende de un modelo de probabilidad asociado con el tipo de símbolo predeterminado y el modelo de probabilidad se actualiza dependiendo de los símbolos del tipo de símbolo predeterminado a una primera tasa de actualización en caso de que se active el modo de alta eficiencia, y a una segunda tasa de actualización inferior a la primera tasa de actualización en caso de que se active el modo de baja complejidad.
6. Método de codificación de datos multimedia en un flujo de datos, que comprende
indicar dentro del flujo de datos una activación de un modo de baja complejidad o un modo de alta eficiencia; precodificar los datos multimedia en una secuencia de elementos de sintaxis;
simbolizar la secuencia de elementos de sintaxis en una secuencia de símbolos;
codificar cada símbolo de la secuencia de símbolos en el flujo de datos usando uno seleccionado de una pluralidad de esquemas de codificación de entropía;
en donde la selección entre la pluralidad de esquemas de codificación de entropía se realiza dependiendo del modo activado del baja complejidad y el modo de alta eficiencia,
en donde la codificación se realiza de tal manera que cada uno de la pluralidad de esquemas de codificación de entropía implica la codificación aritmética de los símbolos para los que se ha seleccionado el respectivo esquema de codificación de entropía, difiriendo la pluralidad de esquemas de codificación de entropía entre sí en el uso de una estimación de probabilidad diferente, y de tal manera que la pluralidad de esquemas de codificación de entropía realizan su subdivisión de probabilidad en un intervalo de probabilidad común para codificar los símbolos en un flujo de bits común,
en donde solo se gestiona un valor de anchura de intervalo de probabilidad R y el valor L correspondiente para todos los esquemas de codificación de entropía,
en donde cada símbolo de la secuencia (326) de símbolos se asocia con uno respectivo de una pluralidad de tipos de símbolos, en donde
para cada símbolo de un tipo de símbolo predeterminado, tanto en el modo de baja complejidad como en el modo de alta eficiencia, se selecciona uno de la pluralidad de esquemas de codificación de entropía, y la selección depende de un modelo de probabilidad asociado con el tipo de símbolo predeterminado y el modelo de probabilidad se actualiza dependiendo de los símbolos del tipo de símbolo predeterminado a una primera tasa de actualización en caso de que se active el modo de alta eficiencia, y a una segunda tasa de actualización inferior a la primera tasa de actualización en caso de que se active el modo de baja complejidad.
7. Programa de ordenador que tiene un código de programa para realizar, cuando se ejecuta en un ordenador, un método según la reivindicación 5 o 6.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201161497794P | 2011-06-16 | 2011-06-16 | |
| US201161508506P | 2011-07-15 | 2011-07-15 | |
| PCT/EP2012/061615 WO2012172115A1 (en) | 2011-06-16 | 2012-06-18 | Entropy coding supporting mode switching |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2961663T3 true ES2961663T3 (es) | 2024-03-13 |
Family
ID=46319135
Family Applications (5)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES12728084T Active ES2961663T3 (es) | 2011-06-16 | 2012-06-18 | Codificación de entropía que soporta conmutación de modo |
| ES18203401T Active ES2897209T3 (es) | 2011-06-16 | 2012-06-18 | Codificación entrópica de diferencias de vector de movimiento |
| ES18152613T Active ES2906869T3 (es) | 2011-06-16 | 2012-06-18 | Inicialización de contexto en codificación entrópica |
| ES21189232T Active ES2953667T3 (es) | 2011-06-16 | 2012-06-18 | Codificación entrópica de diferencias de vector de movimiento |
| ES12734832T Active ES2704627T3 (es) | 2011-06-16 | 2012-06-18 | Codificación entrópica de diferencias de vector de movimiento |
Family Applications After (4)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES18203401T Active ES2897209T3 (es) | 2011-06-16 | 2012-06-18 | Codificación entrópica de diferencias de vector de movimiento |
| ES18152613T Active ES2906869T3 (es) | 2011-06-16 | 2012-06-18 | Inicialización de contexto en codificación entrópica |
| ES21189232T Active ES2953667T3 (es) | 2011-06-16 | 2012-06-18 | Codificación entrópica de diferencias de vector de movimiento |
| ES12734832T Active ES2704627T3 (es) | 2011-06-16 | 2012-06-18 | Codificación entrópica de diferencias de vector de movimiento |
Country Status (31)
| Country | Link |
|---|---|
| US (38) | US9918090B2 (es) |
| EP (11) | EP3343781B1 (es) |
| JP (16) | JP5925884B2 (es) |
| KR (13) | KR101730587B1 (es) |
| CN (26) | CN107333142B (es) |
| AP (3) | AP2016009618A0 (es) |
| AU (12) | AU2012268950B2 (es) |
| BR (4) | BR122020024986B1 (es) |
| CA (2) | CA2839560C (es) |
| CL (2) | CL2013003603A1 (es) |
| CO (2) | CO6852031A2 (es) |
| CY (1) | CY1124687T1 (es) |
| DK (5) | DK3343781T3 (es) |
| ES (5) | ES2961663T3 (es) |
| FI (2) | FI2721819T3 (es) |
| HK (3) | HK1248434B (es) |
| HR (1) | HRP20220272T1 (es) |
| HU (5) | HUE057958T2 (es) |
| IL (18) | IL290229B2 (es) |
| LT (4) | LT3471415T (es) |
| MX (7) | MX345195B (es) |
| MY (3) | MY170940A (es) |
| PH (17) | PH12013502634B1 (es) |
| PL (5) | PL3471415T3 (es) |
| PT (5) | PT3343781T (es) |
| RS (4) | RS62714B1 (es) |
| RU (7) | RU2615681C2 (es) |
| SI (4) | SI3471415T1 (es) |
| UA (2) | UA123987C2 (es) |
| WO (3) | WO2012172115A1 (es) |
| ZA (2) | ZA201400029B (es) |
Families Citing this family (254)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| ES2991424T3 (es) | 2010-04-13 | 2024-12-03 | Ge Video Compression Llc | Fusión de regiones de muestra |
| WO2011128269A1 (en) | 2010-04-13 | 2011-10-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Video coding using multi-tree sub - divisions of images |
| CN106060560B (zh) | 2010-04-13 | 2020-02-07 | Ge视频压缩有限责任公司 | 编解码器、编解码方法、重建数组方法、传输及存储数据流的方法 |
| BR122020007923B1 (pt) | 2010-04-13 | 2021-08-03 | Ge Video Compression, Llc | Predição interplano |
| US9288089B2 (en) | 2010-04-30 | 2016-03-15 | Ecole Polytechnique Federale De Lausanne (Epfl) | Orthogonal differential vector signaling |
| US9077386B1 (en) | 2010-05-20 | 2015-07-07 | Kandou Labs, S.A. | Methods and systems for selection of unions of vector signaling codes for power and pin efficient chip-to-chip communication |
| US9288082B1 (en) | 2010-05-20 | 2016-03-15 | Kandou Labs, S.A. | Circuits for efficient detection of vector signaling codes for chip-to-chip communication using sums of differences |
| US8593305B1 (en) | 2011-07-05 | 2013-11-26 | Kandou Labs, S.A. | Efficient processing and detection of balanced codes |
| US9251873B1 (en) | 2010-05-20 | 2016-02-02 | Kandou Labs, S.A. | Methods and systems for pin-efficient memory controller interface using vector signaling codes for chip-to-chip communications |
| US9246713B2 (en) | 2010-05-20 | 2016-01-26 | Kandou Labs, S.A. | Vector signaling with reduced receiver complexity |
| US9985634B2 (en) | 2010-05-20 | 2018-05-29 | Kandou Labs, S.A. | Data-driven voltage regulator |
| WO2011151469A1 (en) | 2010-06-04 | 2011-12-08 | Ecole Polytechnique Federale De Lausanne | Error control coding for orthogonal differential vector signaling |
| US20120182388A1 (en) * | 2011-01-18 | 2012-07-19 | Samsung Electronics Co., Ltd. | Apparatus and method for processing depth image |
| EP3343781B1 (en) | 2011-06-16 | 2021-12-01 | GE Video Compression, LLC | Context initialization in entropy coding |
| BR112013002450B1 (pt) | 2011-06-24 | 2022-10-25 | Velos Media International Limited | Método de codificação de imagem, método de decodificação de imagem, aparelho de codificação de imagem, aparelho de decodificação de imagem, e aparelho de codificação e decodificação de imagem. |
| BR122015021376A2 (pt) | 2011-06-28 | 2019-08-27 | Samsung Electronics Co Ltd | aparelho para decodificar um vídeo |
| US11647197B2 (en) | 2011-06-30 | 2023-05-09 | Velos Media, Llc | Context initialization based on slice header flag and slice type |
| PH12018502511A1 (en) | 2011-07-15 | 2020-03-16 | Ge Video Compression Llc | Sample array coding for low-delay |
| UA114674C2 (uk) | 2011-07-15 | 2017-07-10 | ДЖ.І. ВІДІЕУ КЕМПРЕШН, ЛЛСі | Ініціалізація контексту в ентропійному кодуванні |
| EP2988511A1 (en) | 2011-08-04 | 2016-02-24 | MediaTek Inc. | Method and apparatus for reordered binarization of syntax elements in cabac |
| US10499063B2 (en) * | 2011-09-16 | 2019-12-03 | Hfi Innovation Inc. | Method and apparatus for prediction mode and partition mode syntax coding for coding units in HEVC |
| JP6130839B2 (ja) * | 2011-10-06 | 2017-05-17 | フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン | エントロピー符号化 |
| US20130101047A1 (en) * | 2011-10-19 | 2013-04-25 | Sony Corporation | Context reduction of significance map coding of 4x4 and 8x8 transform coefficient in hm4.0 |
| US9871537B2 (en) | 2011-10-27 | 2018-01-16 | Qualcomm Incorporated | Mapping states in binary arithmetic coder for video coding |
| US9484952B2 (en) | 2011-11-03 | 2016-11-01 | Qualcomm Incorporated | Context state and probability initialization for context adaptive entropy coding |
| MY167316A (en) * | 2011-11-04 | 2018-08-16 | Sharp Kk | Arithmetic decoding device, image decoding device, arithmetic coding device, image coding device, and arithmetic decoding method |
| KR20130050403A (ko) * | 2011-11-07 | 2013-05-16 | 오수미 | 인터 모드에서의 복원 블록 생성 방법 |
| EP2777286B1 (en) | 2011-11-11 | 2017-01-04 | GE Video Compression, LLC | Effective wedgelet partition coding |
| US9503717B2 (en) | 2012-01-09 | 2016-11-22 | Texas Instruments Incorporated | Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency |
| WO2013106987A1 (en) * | 2012-01-16 | 2013-07-25 | Mediatek Singapore Pte. Ltd. | Methods and apparatuses of bypass coding and reducing contexts for some syntax elements |
| US20130188698A1 (en) * | 2012-01-19 | 2013-07-25 | Qualcomm Incorporated | Coefficient level coding |
| US9866829B2 (en) * | 2012-01-22 | 2018-01-09 | Qualcomm Incorporated | Coding of syntax elements that correspond to coefficients of a coefficient block in video coding |
| US11039138B1 (en) | 2012-03-08 | 2021-06-15 | Google Llc | Adaptive coding of prediction modes using probability distributions |
| US10158855B2 (en) * | 2012-03-08 | 2018-12-18 | Sun Patent Trust | Image decoding method, and image decoding apparatus using a selected context related to neighboring coefficients |
| US9237344B2 (en) * | 2012-03-22 | 2016-01-12 | Qualcomm Incorporated | Deriving context for last position coding for video coding |
| US9584802B2 (en) | 2012-04-13 | 2017-02-28 | Texas Instruments Incorporated | Reducing context coded and bypass coded bins to improve context adaptive binary arithmetic coding (CABAC) throughput |
| US9621921B2 (en) | 2012-04-16 | 2017-04-11 | Qualcomm Incorporated | Coefficient groups and coefficient coding for coefficient scans |
| WO2013175698A1 (ja) | 2012-05-25 | 2013-11-28 | パナソニック株式会社 | 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置および画像符号化復号装置 |
| ES2936333T3 (es) | 2012-05-25 | 2023-03-16 | Sun Patent Trust | Procedimiento de codificación de imágenes de vídeo, procedimiento de decodificación de imágenes de vídeo, dispositivo de codificación de imágenes de vídeo, dispositivo de decodificación de imágenes de vídeo y dispositivo de codificación-decodificación de imágenes de vídeo |
| WO2013175736A1 (ja) * | 2012-05-25 | 2013-11-28 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置 |
| BR122023000800B1 (pt) | 2012-06-04 | 2023-09-26 | Sun Patent Trust | Método e aparelho de codificação de imagem em movimento, e método e aparelho de decodificação de imagem em movimento |
| DE102012224060A1 (de) * | 2012-12-20 | 2014-06-26 | Robert Bosch Gmbh | Verfahren zur Datenübertragung für ein Batteriemanagementsystem |
| CN104995612B (zh) | 2013-01-17 | 2020-01-03 | 康杜实验室公司 | 低同步开关噪声芯片间通信方法和系统 |
| CN105122758B (zh) | 2013-02-11 | 2018-07-10 | 康杜实验室公司 | 高带宽芯片间通信接口方法和系统 |
| CN104053007B (zh) * | 2013-03-15 | 2019-05-07 | 乐金电子(中国)研究开发中心有限公司 | 深度图像帧内编码模式索引值配置方法及装置 |
| GB2513111A (en) | 2013-04-08 | 2014-10-22 | Sony Corp | Data encoding and decoding |
| WO2014172377A1 (en) | 2013-04-16 | 2014-10-23 | Kandou Labs, S.A. | Methods and systems for high bandwidth communications interface |
| CN105393512B (zh) | 2013-06-25 | 2019-06-28 | 康杜实验室公司 | 具有低接收器复杂度的向量信令 |
| EP3014870A4 (en) | 2013-06-25 | 2016-12-28 | Numeri Ltd | INCREASE IN SPATIO-TEMPORAL RESOLUTION AT MULTIPLE LEVELS OF VIDEO |
| US10021419B2 (en) * | 2013-07-12 | 2018-07-10 | Qualcomm Incorported | Rice parameter initialization for coefficient level coding in video coding process |
| US20150098504A1 (en) * | 2013-10-09 | 2015-04-09 | Qualcomm Incorporated | Block vector coding for intra block copying |
| EP3084968A4 (en) | 2013-12-16 | 2017-11-29 | McAfee, LLC | Process efficient preprocessing for an encryption standard |
| GB2521828A (en) | 2013-12-23 | 2015-07-08 | Sony Corp | Data encoding and decoding |
| WO2015100522A1 (en) * | 2013-12-30 | 2015-07-09 | Mediatek Singapore Pte. Ltd. | Methods for inter-component residual prediction |
| US9806761B1 (en) | 2014-01-31 | 2017-10-31 | Kandou Labs, S.A. | Methods and systems for reduction of nearest-neighbor crosstalk |
| KR102299815B1 (ko) | 2014-02-02 | 2021-09-10 | 칸도우 랩스 에스에이 | 제한된 isi 비율을 갖는 저전력 칩 대 칩 통신을 위한 방법 및 장치 |
| US10885104B2 (en) | 2014-02-27 | 2021-01-05 | Dropbox, Inc. | Systems and methods for selecting content items to store and present locally on a user device |
| US9787799B2 (en) | 2014-02-27 | 2017-10-10 | Dropbox, Inc. | Systems and methods for managing content items having multiple resolutions |
| WO2015131203A1 (en) | 2014-02-28 | 2015-09-03 | Kandou Lab, S.A. | Clock-embedded vector signaling codes |
| US9509437B2 (en) | 2014-05-13 | 2016-11-29 | Kandou Labs, S.A. | Vector signaling code with improved noise margin |
| US20150334425A1 (en) * | 2014-05-14 | 2015-11-19 | Blackberry Limited | Adaptive context initialization |
| US9148087B1 (en) | 2014-05-16 | 2015-09-29 | Kandou Labs, S.A. | Symmetric is linear equalization circuit with increased gain |
| WO2015184069A1 (en) * | 2014-05-28 | 2015-12-03 | Arris Enterprises, Inc. | Acceleration of context adaptive binary arithmetic coding (cabac) in video codecs |
| US9337862B2 (en) | 2014-06-09 | 2016-05-10 | Tidal Systems, Inc. | VLSI efficient Huffman encoding apparatus and method |
| US9852806B2 (en) | 2014-06-20 | 2017-12-26 | Kandou Labs, S.A. | System for generating a test pattern to detect and isolate stuck faults for an interface using transition coding |
| US9930341B2 (en) * | 2014-06-20 | 2018-03-27 | Qualcomm Incorporated | Block vector coding for intra block copying |
| US9112550B1 (en) | 2014-06-25 | 2015-08-18 | Kandou Labs, SA | Multilevel driver for high speed chip-to-chip communications |
| US9854253B2 (en) | 2014-06-30 | 2017-12-26 | Qualcomm Incorporated | Method for motion vector difference (MVD) and intra block copy vector difference (BVD) coding of screen content video data |
| WO2016007863A2 (en) | 2014-07-10 | 2016-01-14 | Kandou Labs, S.A. | Vector signaling codes with increased signal to noise characteristics |
| US9432082B2 (en) | 2014-07-17 | 2016-08-30 | Kandou Labs, S.A. | Bus reversable orthogonal differential vector signaling codes |
| EP3152879B1 (en) | 2014-07-21 | 2019-09-04 | Kandou Labs S.A. | Multidrop data transfer |
| US9461862B2 (en) | 2014-08-01 | 2016-10-04 | Kandou Labs, S.A. | Orthogonal differential vector signaling codes with embedded clock |
| US10283091B2 (en) * | 2014-10-13 | 2019-05-07 | Microsoft Technology Licensing, Llc | Buffer optimization |
| CN105578180B (zh) * | 2014-10-16 | 2019-01-15 | 联想(北京)有限公司 | 一种编码方法及装置 |
| US9674014B2 (en) | 2014-10-22 | 2017-06-06 | Kandou Labs, S.A. | Method and apparatus for high speed chip-to-chip communications |
| CN104392725A (zh) * | 2014-12-02 | 2015-03-04 | 中科开元信息技术(北京)有限公司 | 多声道无损音频混合编解码方法及装置 |
| US10097833B2 (en) * | 2014-12-26 | 2018-10-09 | Intel Corporation | Method and system of entropy coding using look-up table based probability updating for video coding |
| EP3241351B1 (en) * | 2015-01-30 | 2021-04-28 | MediaTek Inc. | Methods for entropy coding of source samples with large alphabet |
| US9942551B2 (en) * | 2015-01-30 | 2018-04-10 | Qualcomm Incorporated | Palette index grouping for video coding |
| WO2016124710A1 (en) * | 2015-02-05 | 2016-08-11 | Fraunhofer Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Multi-view video codec supporting residual prediction |
| US9930378B2 (en) * | 2015-02-11 | 2018-03-27 | Qualcomm Incorporated | Signaling of operation points for carriage of HEVC extensions |
| US10958927B2 (en) | 2015-03-27 | 2021-03-23 | Qualcomm Incorporated | Motion information derivation mode determination in video coding |
| SG11201708026TA (en) * | 2015-04-08 | 2017-10-30 | Hfi Innovation Inc | Methods of palette mode coding in video coding |
| EP3292687A4 (en) * | 2015-05-06 | 2019-07-03 | NGCodec Inc. | INTRAPRADICTION PROCESSOR WITH REDUCED COST BLOCK PARTITIONING AND REFINED INTRAMODE SELECTION |
| KR102051200B1 (ko) * | 2015-05-19 | 2019-12-02 | 미디어텍 인크. | 다중 테이블 기반의 컨텍스트 적응 이진 산술 코딩을 위한 방법 및 장치 |
| EP3314835B1 (en) | 2015-06-26 | 2020-04-08 | Kandou Labs S.A. | High speed communications system |
| KR102804526B1 (ko) * | 2015-08-24 | 2025-05-07 | 엘지전자 주식회사 | 인터 예측 모드 기반 영상 처리 방법 및 이를 위한 장치 |
| WO2017041271A1 (en) * | 2015-09-10 | 2017-03-16 | Mediatek Singapore Pte. Ltd. | Efficient context modeling for coding a block of data |
| CN114567785B (zh) * | 2015-09-11 | 2024-12-24 | 株式会社Kt | 图像解码方法、图像编码方法和包括比特流的设备 |
| US10158874B2 (en) * | 2015-09-30 | 2018-12-18 | Apple Inc. | Parallel bypass and regular bin coding |
| US10198355B2 (en) | 2015-10-29 | 2019-02-05 | Dropbox, Inc. | Proving a dynamic digital content cache |
| US10440399B2 (en) * | 2015-11-13 | 2019-10-08 | Qualcomm Incorporated | Coding sign information of video data |
| US10055372B2 (en) | 2015-11-25 | 2018-08-21 | Kandou Labs, S.A. | Orthogonal differential vector signaling codes with embedded clock |
| US10003315B2 (en) | 2016-01-25 | 2018-06-19 | Kandou Labs S.A. | Voltage sampler driver with enhanced high-frequency gain |
| FR3047379A1 (fr) * | 2016-01-29 | 2017-08-04 | Orange | Procede de codage et decodage de donnees, dispositif de codage et decodage de donnees et programmes d'ordinateur correspondants |
| US10791097B2 (en) | 2016-04-14 | 2020-09-29 | Sophos Limited | Portable encryption format |
| US10573324B2 (en) | 2016-02-24 | 2020-02-25 | Dolby International Ab | Method and system for bit reservoir control in case of varying metadata |
| CN115085727A (zh) | 2016-04-22 | 2022-09-20 | 康杜实验室公司 | 高性能锁相环 |
| US10003454B2 (en) | 2016-04-22 | 2018-06-19 | Kandou Labs, S.A. | Sampler with low input kickback |
| US10153591B2 (en) | 2016-04-28 | 2018-12-11 | Kandou Labs, S.A. | Skew-resistant multi-wire channel |
| WO2017189931A1 (en) | 2016-04-28 | 2017-11-02 | Kandou Labs, S.A. | Vector signaling codes for densely-routed wire groups |
| US10056903B2 (en) | 2016-04-28 | 2018-08-21 | Kandou Labs, S.A. | Low power multilevel driver |
| US10708164B2 (en) * | 2016-05-03 | 2020-07-07 | Qualcomm Incorporated | Binarizing secondary transform index |
| US10142652B2 (en) * | 2016-05-05 | 2018-11-27 | Google Llc | Entropy coding motion vector residuals obtained using reference motion vectors |
| FR3054764B1 (fr) * | 2016-07-28 | 2018-07-27 | B<>Com | Procede de decodage d'une image, procede de codage, dispositifs, equipement terminal et programmes d'ordinateurs associes |
| WO2018030293A1 (ja) * | 2016-08-10 | 2018-02-15 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 符号化装置、復号装置、符号化方法及び復号方法 |
| US9906358B1 (en) | 2016-08-31 | 2018-02-27 | Kandou Labs, S.A. | Lock detector for phase lock loop |
| US10411922B2 (en) | 2016-09-16 | 2019-09-10 | Kandou Labs, S.A. | Data-driven phase detector element for phase locked loops |
| US10419781B2 (en) * | 2016-09-20 | 2019-09-17 | Qualcomm Incorporated | Storing and retrieving high bit depth image data |
| US10264264B2 (en) * | 2016-09-24 | 2019-04-16 | Apple Inc. | Multi-bin decoding systems and methods |
| US11356693B2 (en) | 2016-09-29 | 2022-06-07 | Qualcomm Incorporated | Motion vector coding for video coding |
| US10462462B2 (en) * | 2016-09-29 | 2019-10-29 | Qualcomm Incorporated | Motion vector difference coding technique for video coding |
| CN106231318B (zh) * | 2016-09-30 | 2020-04-28 | 浙江宇视科技有限公司 | 一种基于量化变换系数的视频加扰方法及装置 |
| PE20191058A1 (es) * | 2016-10-11 | 2019-08-06 | Genomsys Sa | Metodo y sistema para el acceso selectivo de datos bioinformaticos almacenados o transmitidos |
| US10200188B2 (en) | 2016-10-21 | 2019-02-05 | Kandou Labs, S.A. | Quadrature and duty cycle error correction in matrix phase lock loop |
| US10372665B2 (en) | 2016-10-24 | 2019-08-06 | Kandou Labs, S.A. | Multiphase data receiver with distributed DFE |
| US10200218B2 (en) | 2016-10-24 | 2019-02-05 | Kandou Labs, S.A. | Multi-stage sampler with increased gain |
| CN110100440B (zh) * | 2016-12-22 | 2023-04-25 | 株式会社Kt | 一种用于对视频进行解码、编码的方法 |
| US11240526B2 (en) | 2017-01-02 | 2022-02-01 | Industry-University Cooperation Foundation Hanyang University | Method and apparatus for decoding image using interpicture prediction |
| WO2018128222A1 (ko) * | 2017-01-03 | 2018-07-12 | 엘지전자 주식회사 | 영상 코딩 시스템에서 영상 디코딩 방법 및 장치 |
| US10757412B2 (en) * | 2017-01-03 | 2020-08-25 | Avago Technologies International Sales Pte. Limited | Architecture flexible binary arithmetic coding system |
| KR102766403B1 (ko) * | 2017-01-25 | 2025-02-12 | 삼성전자주식회사 | 엔트로피 인코더 및 이를 포함하는 비디오 인코더 |
| US10595033B2 (en) | 2017-02-15 | 2020-03-17 | Sony Corporation | Variable length coding of header data for image compression |
| KR102450863B1 (ko) * | 2017-03-22 | 2022-10-05 | 에스케이텔레콤 주식회사 | 움직임벡터를 부호화 또는 복호화하기 위한 장치 및 방법 |
| US10554988B2 (en) * | 2017-03-22 | 2020-02-04 | Qualcomm Incorporated | Binary arithmetic coding with parameterized probability estimation finite state machines |
| JP2020517191A (ja) * | 2017-04-13 | 2020-06-11 | エルジー エレクトロニクス インコーポレイティド | ビデオ信号をエントロピエンコード、デコードする方法及び装置 |
| CN115567164B (zh) | 2017-04-14 | 2025-01-28 | 康杜实验室公司 | 向量信令码信道的流水线式前向纠错方法和装置 |
| US10116468B1 (en) | 2017-06-28 | 2018-10-30 | Kandou Labs, S.A. | Low power chip-to-chip bidirectional communications |
| US10686583B2 (en) | 2017-07-04 | 2020-06-16 | Kandou Labs, S.A. | Method for measuring and correcting multi-wire skew |
| US10693587B2 (en) | 2017-07-10 | 2020-06-23 | Kandou Labs, S.A. | Multi-wire permuted forward error correction |
| US11477492B2 (en) * | 2017-08-04 | 2022-10-18 | Google Inc. | Adaptation for entropy coding of blocks of image data |
| US10203226B1 (en) | 2017-08-11 | 2019-02-12 | Kandou Labs, S.A. | Phase interpolation circuit |
| US10791341B2 (en) * | 2017-10-10 | 2020-09-29 | Qualcomm Incorporated | Binary arithmetic coding with progressive modification of adaptation parameters |
| US10484695B2 (en) | 2017-10-23 | 2019-11-19 | Google Llc | Refined entropy coding for level maps |
| US11039143B2 (en) * | 2017-11-20 | 2021-06-15 | Qualcomm Incorporated | Memory reduction for context initialization with temporal prediction |
| US12355996B2 (en) | 2017-11-23 | 2025-07-08 | Interdigital Vc Holdings, Inc. | Encoding and decoding methods and corresponding devices |
| EP3490253A1 (en) * | 2017-11-23 | 2019-05-29 | Thomson Licensing | Encoding and decoding methods and corresponding devices |
| US11089316B2 (en) * | 2017-12-06 | 2021-08-10 | V-Nova International Limited | Method and apparatus for decoding a received set of encoded data |
| US10326623B1 (en) | 2017-12-08 | 2019-06-18 | Kandou Labs, S.A. | Methods and systems for providing multi-stage distributed decision feedback equalization |
| US10609421B2 (en) * | 2018-07-12 | 2020-03-31 | Google Llc | Context derivation for coefficient coding |
| US10694205B2 (en) * | 2017-12-18 | 2020-06-23 | Google Llc | Entropy coding of motion vectors using categories of transform blocks |
| US10602178B1 (en) * | 2017-12-21 | 2020-03-24 | Mozilla Corporation | Systems and methods for frame context selection |
| EP3503557A1 (en) * | 2017-12-22 | 2019-06-26 | Thomson Licensing | Method and apparatus for video encoding and decoding based on context switching |
| US10554380B2 (en) | 2018-01-26 | 2020-02-04 | Kandou Labs, S.A. | Dynamically weighted exclusive or gate having weighted output segments for phase detection and phase interpolation |
| KR102907066B1 (ko) * | 2018-01-29 | 2026-01-05 | 인터디지털 브이씨 홀딩스 인코포레이티드 | 재구성된 픽처의 정제를 갖는 인코딩 및 디코딩 |
| EP3777196B1 (en) * | 2018-03-29 | 2025-06-04 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Concept for enhancing parallel coding capabilities |
| TWI721396B (zh) | 2018-03-29 | 2021-03-11 | 弗勞恩霍夫爾協會 | 視訊解碼器、視訊編碼器、用以解碼視訊內容之方法、用以編碼視訊內容之方法、電腦程式及視訊位元串流 |
| US10986354B2 (en) * | 2018-04-16 | 2021-04-20 | Panasonic Intellectual Property Corporation Of America | Encoder, decoder, encoding method, and decoding method |
| US10645381B2 (en) | 2018-04-30 | 2020-05-05 | Google Llc | Intra-prediction for smooth blocks in image/video |
| US10630990B1 (en) * | 2018-05-01 | 2020-04-21 | Amazon Technologies, Inc. | Encoder output responsive to quality metric information |
| CN108810553B (zh) * | 2018-05-02 | 2021-01-12 | 上海大学 | 一种基于稀疏化处理的移动节点监测数据序列压缩方法 |
| TWI675441B (zh) * | 2018-05-14 | 2019-10-21 | 欣興電子股份有限公司 | 封裝載板結構及其製造方法 |
| WO2019225788A1 (ko) * | 2018-05-25 | 2019-11-28 | 라인플러스 주식회사 | 복수의 채널을 이용하여 동적 비트레이트의 비디오를 송출 및 재생하는 방법 및 시스템 |
| KR102690838B1 (ko) | 2018-05-30 | 2024-07-31 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 픽처 경계 처리를 위한 멀티형 트리 깊이 확장 |
| US10986340B2 (en) * | 2018-06-01 | 2021-04-20 | Qualcomm Incorporated | Coding adaptive multiple transform information for video coding |
| US11457217B2 (en) | 2018-06-12 | 2022-09-27 | Electronics And Telecommunications Research Institute | Context adaptive binary arithmetic coding method and device |
| US10939115B2 (en) * | 2018-06-19 | 2021-03-02 | Qualcomm Incorporated | Efficient weighted probability estimation for binary arithmetic coding |
| CN108848380B (zh) * | 2018-06-20 | 2021-11-30 | 腾讯科技(深圳)有限公司 | 视频编码和解码方法、装置、计算机设备及存储介质 |
| WO2020008329A1 (en) | 2018-07-01 | 2020-01-09 | Beijing Bytedance Network Technology Co., Ltd. | Spatial motion compression |
| EP3818705A1 (en) | 2018-07-02 | 2021-05-12 | InterDigital VC Holdings, Inc. | Context-based binary arithmetic encoding and decoding |
| CN121036773A (zh) * | 2018-07-06 | 2025-11-28 | 弗劳恩霍夫应用研究促进协会 | 算术编码器、算术解码器、编码器、解码器、编码方法、解码方法和计算机可读介质 |
| US11051025B2 (en) * | 2018-07-13 | 2021-06-29 | Tencent America LLC | Method and apparatus for video coding |
| CN108989825B (zh) * | 2018-07-18 | 2021-05-07 | 北京奇艺世纪科技有限公司 | 一种算术编码方法、装置及电子设备 |
| US11218737B2 (en) | 2018-07-23 | 2022-01-04 | Google Llc | Asymmetric probability model update and entropy coding precision |
| US10743029B2 (en) * | 2018-07-30 | 2020-08-11 | Tencent America LLC | Constraints on coding unit partition |
| WO2020031061A2 (en) | 2018-08-04 | 2020-02-13 | Beijing Bytedance Network Technology Co., Ltd. | Mvd precision for affine |
| US11336918B2 (en) | 2018-09-05 | 2022-05-17 | Qualcomm Incorporated | Regular coded bin reduction for coefficient coding |
| CN112040247B (zh) * | 2018-09-10 | 2021-09-21 | 华为技术有限公司 | 视频解码方法、视频解码器以及计算机可读存储介质 |
| CN114143554B (zh) * | 2018-09-13 | 2024-04-12 | 华为技术有限公司 | 一种预测运动信息的解码方法及装置 |
| US11006150B2 (en) | 2018-09-24 | 2021-05-11 | Tencent America LLC | Method and apparatus for video coding |
| WO2020071879A1 (ko) * | 2018-10-05 | 2020-04-09 | 엘지전자 주식회사 | 변환 계수 코딩 방법 및 그 장치 |
| WO2020070612A1 (en) | 2018-10-06 | 2020-04-09 | Beijing Bytedance Network Technology Co., Ltd. | Improvement for temporal gradient calculating in bio |
| US20200143226A1 (en) * | 2018-11-05 | 2020-05-07 | Samsung Electronics Co., Ltd. | Lossy compression of neural network activation maps |
| US10983677B2 (en) | 2018-11-16 | 2021-04-20 | Dropbox, Inc. | Prefetching digital thumbnails from remote servers to client devices based on a dynamic determination of file display criteria |
| US10841595B2 (en) * | 2018-11-27 | 2020-11-17 | Semiconductor Components Industries, Llc | Methods and apparatus for transform coefficient encoding and decoding |
| US10917636B2 (en) * | 2018-12-03 | 2021-02-09 | Tencent America LLC | Method and apparatus for video coding |
| US10904548B2 (en) * | 2018-12-06 | 2021-01-26 | Qualcomm Incorporated | Coefficient processing for video encoding and decoding |
| US11323748B2 (en) | 2018-12-19 | 2022-05-03 | Qualcomm Incorporated | Tree-based transform unit (TU) partition for video coding |
| CN115442616A (zh) * | 2018-12-21 | 2022-12-06 | 华为技术有限公司 | 视频解码方法及装置 |
| CA3114341C (en) * | 2018-12-29 | 2023-10-17 | Huawei Technologies Co., Ltd. | An encoder, a decoder and corresponding methods using compact mv storage |
| EP3906689A4 (en) | 2019-01-02 | 2022-11-23 | Telefonaktiebolaget LM Ericsson (publ) | LATERAL MOTION REFINEMENT IN VIDEO CODING/DECODING SYSTEMS |
| US11032560B2 (en) * | 2019-01-17 | 2021-06-08 | Tencent America LLC | Method and apparatus for video coding without updating the HMVP table |
| CN111475424B (zh) * | 2019-01-23 | 2023-07-28 | 伊姆西Ip控股有限责任公司 | 用于管理存储系统的方法、设备和计算机可读存储介质 |
| US11134273B2 (en) | 2019-02-14 | 2021-09-28 | Qualcomm Incorporated | Regular coded bin reduction for coefficient coding |
| CN109946229B (zh) * | 2019-02-25 | 2024-07-16 | 南京文易特电子科技有限公司 | 一种香烟条包智能数字双拉线检测系统及检测方法 |
| US10652581B1 (en) * | 2019-02-27 | 2020-05-12 | Google Llc | Entropy coding in image and video compression using machine learning |
| US10939107B2 (en) * | 2019-03-01 | 2021-03-02 | Sony Corporation | Embedded codec circuitry for sub-block based allocation of refinement bits |
| WO2020180153A1 (ko) * | 2019-03-06 | 2020-09-10 | 엘지전자 주식회사 | 인터 예측을 위한 비디오 신호의 처리 방법 및 장치 |
| CN113767624B (zh) * | 2019-03-08 | 2025-06-24 | 瑞典爱立信有限公司 | 提供相关/独立分区编码/解码的方法和有关装置 |
| US11202100B2 (en) * | 2019-03-11 | 2021-12-14 | Qualcomm Incorporated | Coefficient coding for transform skip mode |
| CN113615183B (zh) * | 2019-03-12 | 2024-09-10 | 交互数字Vc控股公司 | 用于视频编解码的残差编解码中常规二进制位的灵活分配 |
| US11178399B2 (en) * | 2019-03-12 | 2021-11-16 | Qualcomm Incorporated | Probability initialization for video coding |
| WO2020189978A1 (ko) * | 2019-03-15 | 2020-09-24 | 삼성전자 주식회사 | 비디오 복호화 방법 및 장치, 비디오 부호화 방법 및 장치 |
| CN120822552A (zh) * | 2019-03-18 | 2025-10-21 | 弗劳恩霍夫应用研究促进协会 | 用于压缩神经网络的参数的方法和装置 |
| CN109947398B (zh) * | 2019-03-25 | 2020-12-25 | 武汉轻工大学 | 三重积分求解方法、装置、终端设备及可读存储介质 |
| WO2020211770A1 (en) * | 2019-04-15 | 2020-10-22 | Beijing Bytedance Network Technology Co., Ltd. | Temporal prediction of parameters in non-linear adaptive loop filter |
| WO2020231140A1 (ko) | 2019-05-14 | 2020-11-19 | 엘지전자 주식회사 | 적응적 루프 필터 기반 비디오 또는 영상 코딩 |
| CN112135149B (zh) * | 2019-06-24 | 2023-07-18 | 华为技术有限公司 | 语法元素的熵编码/解码方法、装置以及编解码器 |
| US11184642B2 (en) * | 2019-08-02 | 2021-11-23 | Mediatek Inc. | Methods and apparatus for simplification of coding residual blocks |
| CN119520782A (zh) * | 2019-08-06 | 2025-02-25 | 现代自动车株式会社 | 熵解码、编码方法,发送比特流的方法 |
| US11553213B2 (en) * | 2019-08-13 | 2023-01-10 | Tencent America LLC | Method and apparatus for video coding |
| EP4024869A4 (en) * | 2019-08-31 | 2023-08-16 | LG Electronics Inc. | METHOD AND DEVICE FOR ENCODING TRANSFORMATION COEFFICIENTS IN A VIDEO/IMAGE ENCODING SYSTEM |
| KR20220062085A (ko) * | 2019-09-20 | 2022-05-13 | 알리바바 그룹 홀딩 리미티드 | 비디오 처리에서 양자화 파라미터 시그널링 |
| CN114731407B (zh) * | 2019-09-24 | 2024-10-18 | 弗劳恩霍夫应用研究促进协会 | 算术编码器和解码器、视频编码器和解码器、用于编码或解码符号的方法以及用于编码或解码视频内容的方法 |
| CN114731446B (zh) * | 2019-09-24 | 2025-01-07 | 弗劳恩霍夫应用研究促进协会 | 用于信息值序列的编码概念 |
| WO2021064013A2 (en) * | 2019-10-01 | 2021-04-08 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Neural network representation formats |
| EP4042702A4 (en) | 2019-10-01 | 2023-07-19 | Beijing Dajia Internet Information Technology Co., Ltd. | Methods and apparatus of residual and coefficient coding |
| GB2589066B (en) * | 2019-10-24 | 2023-06-28 | Advanced Risc Mach Ltd | Encoding data arrays |
| WO2021092531A1 (en) * | 2019-11-08 | 2021-05-14 | Google Llc | Probability estimation for entropy coding |
| CN112866181B (zh) * | 2019-11-28 | 2023-05-26 | 上海商汤智能科技有限公司 | 数据解码装置、加速器、以及片上系统 |
| CN115152215B (zh) * | 2019-12-20 | 2025-12-05 | 弗劳恩霍夫应用研究促进协会 | 支持变换系数级别的适应性相依量化的解/编码器及方法 |
| US11468601B2 (en) | 2020-01-13 | 2022-10-11 | Samsung Display Co., Ltd. | Systems and methods for scalable throughput entropy coder |
| US11822902B2 (en) * | 2020-01-21 | 2023-11-21 | California Institute Of Technology | Systems and methods for performing lossless source coding |
| CN115104305A (zh) * | 2020-02-12 | 2022-09-23 | 谷歌有限责任公司 | 用于图压缩的多上下文熵编码 |
| GB2593691B (en) * | 2020-03-30 | 2022-08-24 | Imagination Tech Ltd | Efficient encoding methods |
| CN116018758A (zh) * | 2020-06-23 | 2023-04-25 | 弗劳恩霍夫应用研究促进协会 | 用于对整数值序列进行编码和解码的装置,用于对整数值序列进行编码和解码的方法以及用于实现这些方法的计算机程序 |
| EP4179539B1 (en) * | 2020-07-10 | 2025-10-01 | Koninklijke Philips N.V. | Genomic information compression by configurable machine learning-based arithmetic coding |
| US11362681B2 (en) * | 2020-08-21 | 2022-06-14 | Seagate Technology Llc | One-shot state transition probability encoder and decoder |
| CN112260699B (zh) * | 2020-09-15 | 2024-06-28 | 深圳拓邦股份有限公司 | 属性通讯编解码方法、编码装置、解码装置及系统 |
| FR3114717B1 (fr) * | 2020-09-30 | 2023-10-13 | Fond B Com | Procédé et dispositif électronique de décodage d’un flux de données, programme d’ordinateur et flux de données associés |
| US11722672B2 (en) | 2020-10-06 | 2023-08-08 | Qualcomm Incorporated | Adaptively deriving rice parameter values for high bit-depth video coding |
| CN114501036A (zh) * | 2020-11-13 | 2022-05-13 | 联发科技股份有限公司 | 熵解码装置及相关熵解码方法 |
| CN114727109B (zh) * | 2021-01-05 | 2023-03-24 | 腾讯科技(深圳)有限公司 | 多媒体的量化处理方法、装置及编码、解码设备 |
| CN115086655B (zh) * | 2021-03-14 | 2025-03-25 | 腾讯科技(深圳)有限公司 | 视频编解码方法、装置、计算机可读介质及电子设备 |
| CN120075461A (zh) * | 2021-03-14 | 2025-05-30 | 腾讯科技(深圳)有限公司 | 视频编解码方法、装置、计算机可读介质及电子设备 |
| US11356197B1 (en) | 2021-03-19 | 2022-06-07 | Kandou Labs SA | Error-tolerant forward error correction ordered set message decoder |
| CN113079377B (zh) * | 2021-04-01 | 2022-09-30 | 中国科学技术大学 | 一种深度图像/视频压缩网络的训练方法 |
| WO2022217245A1 (en) * | 2021-04-07 | 2022-10-13 | Innopeak Technology, Inc. | Remaining level binarization for video coding |
| WO2022217417A1 (zh) * | 2021-04-12 | 2022-10-20 | Oppo广东移动通信有限公司 | 编解码方法、编码器、解码器以及存储介质 |
| CN113489979A (zh) * | 2021-05-28 | 2021-10-08 | 杭州博雅鸿图视频技术有限公司 | 熵编码方法、装置、电子设备及存储介质 |
| CN113422964B (zh) * | 2021-06-04 | 2024-07-30 | 绍兴市北大信息技术科创中心 | 一种串长度参数编解码方法和装置 |
| CN115550652A (zh) * | 2021-06-30 | 2022-12-30 | 微软技术许可有限责任公司 | 基于上下文的图像编解码 |
| WO2023023039A1 (en) * | 2021-08-17 | 2023-02-23 | Beijing Dajia Internet Information Technology Co., Ltd. | Sign prediction for block-based video coding |
| WO2023028580A1 (en) * | 2021-08-26 | 2023-03-02 | Innopeak Technology, Inc. | Operation range extension for versatile video coding |
| US11871038B2 (en) * | 2021-09-29 | 2024-01-09 | Tencent America LLC | Techniques for constraint flag signaling for range extension with residual rice coding extension |
| MX2024007341A (es) * | 2021-12-16 | 2024-06-26 | Beijing Dajia Internet Information Tech Co Ltd | Prediccion de signo para codificacion de video basada en bloque. |
| US12301832B2 (en) * | 2022-02-03 | 2025-05-13 | Tencent America LLC | Methods, devices, and storage medium for multi-symbol arithmetic coding |
| US12284398B2 (en) | 2022-03-11 | 2025-04-22 | Tencent America LLC | Systems and methods for division-free probability regularization for arithmetic coding |
| US12256077B2 (en) * | 2022-03-22 | 2025-03-18 | Tencent America LLC | Systems and methods for regularization-free multi-hypothesis arithmetic coding |
| WO2023195643A1 (ko) * | 2022-04-05 | 2023-10-12 | 삼성전자 주식회사 | 엔트로피 부호화 및 복호화 장치 및 그 방법 |
| MX2024010448A (es) | 2022-04-05 | 2024-09-05 | Samsung Electronics Co Ltd | Dispositivo para codificacion y decodificacion por entropia y metodo para el mismo. |
| CN121334371A (zh) * | 2022-06-30 | 2026-01-13 | 华为技术有限公司 | 熵译码参数的自适应选择 |
| CN117917079A (zh) * | 2022-07-04 | 2024-04-19 | 嘉兴尚坤科技有限公司 | 一种超高清视频数据编码/解码处理方法及系统 |
| US12506875B2 (en) * | 2022-10-19 | 2025-12-23 | Tencent America LLC | Method and apparatus for motion vector coding |
| US12487980B2 (en) | 2023-01-09 | 2025-12-02 | Dynatrace Llc | Compact probabilistic data structure for storing log data |
| US12493651B2 (en) * | 2023-01-09 | 2025-12-09 | Dynatrace Llc | Compact probabilistic data structure for storing streamed log lines |
| US12229107B2 (en) * | 2023-01-09 | 2025-02-18 | Dynatrace Llc | Compact probabilistic data structure for storing streamed log lines |
| WO2024148491A1 (zh) * | 2023-01-09 | 2024-07-18 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
| US12470740B2 (en) * | 2023-01-10 | 2025-11-11 | Samsung Electronics Co., Ltd. | Vertex motion vector coding and decoding |
| CN120530626A (zh) * | 2023-01-16 | 2025-08-22 | 株式会社Kt | 图像编码/解码方法和用于存储比特流的记录介质 |
| CN118100954B (zh) * | 2024-03-12 | 2025-01-28 | 北京海普方漫科技有限公司 | 一种熵编码整数编码、编码方法、解码方法及量化方法 |
| WO2025250144A1 (en) * | 2024-05-31 | 2025-12-04 | Google Llc | High-throughput entropy decoding architecture |
| US12341538B1 (en) * | 2024-11-26 | 2025-06-24 | Nintendo Co., Ltd. | Compressing entropy tables with interpolative coding |
| CN120223091B (zh) * | 2025-02-24 | 2025-11-14 | 中山大学 | 一种用于数据压缩传输的编码译码方法 |
Family Cites Families (136)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2827264B2 (ja) | 1989-03-30 | 1998-11-25 | 横河電機株式会社 | 光を用いた物理量測定装置 |
| US6885864B2 (en) | 1992-03-06 | 2005-04-26 | Aircell, Inc. | Virtual private network for cellular communications |
| US5381145A (en) | 1993-02-10 | 1995-01-10 | Ricoh Corporation | Method and apparatus for parallel decoding and encoding of data |
| US5717394A (en) | 1993-02-10 | 1998-02-10 | Ricoh Company Ltd. | Method and apparatus for encoding and decoding data |
| JPH06334993A (ja) * | 1993-03-26 | 1994-12-02 | Sony Corp | 動画像符号化又は復号化装置、並びに動きベクトルの可変長符号化及び復号化方法 |
| US5381148A (en) | 1993-07-12 | 1995-01-10 | Analog Devices, Inc. | Method and apparatus for calibrating a gain control circuit |
| KR970003102B1 (ko) * | 1993-09-17 | 1997-03-14 | 대우전자 주식회사 | 영상 복호기에서의 하프 픽셀 움직임 보상 회로 |
| JP3560393B2 (ja) | 1995-07-06 | 2004-09-02 | 株式会社日鉱マテリアルズ | アルミニウム合金スパッタリングターゲットの製造方法 |
| JP2866616B2 (ja) | 1996-06-24 | 1999-03-08 | 昇 大串 | 健康ベッド |
| US5847776A (en) | 1996-06-24 | 1998-12-08 | Vdonet Corporation Ltd. | Method for entropy constrained motion estimation and coding of motion vectors with increased search range |
| JPH10151789A (ja) | 1996-11-22 | 1998-06-09 | Eiji Shiozaki | 粉体飛翔式印字制御方法および印字装置 |
| EP0973147A4 (en) * | 1997-03-31 | 2007-09-26 | Matsushita Electric Industrial Co Ltd | DYNAMIC IMAGE DISPLAY METHOD AND DEVICE THEREFOR |
| KR100255754B1 (ko) * | 1997-08-30 | 2000-05-01 | 전주범 | 이진 형상 신호 부호화 방법 |
| CN1146245C (zh) * | 1997-12-22 | 2004-04-14 | 株式会社大宇电子 | 隔行二进制形状编码方法和装置 |
| US6677868B2 (en) * | 2001-03-16 | 2004-01-13 | Sharp Laboratories Of America, Inc. | Entropy coding with adaptive syntax to replace high probability symbols with lower probabilities symbols |
| US6865298B2 (en) | 2001-03-30 | 2005-03-08 | Sharp Laboratories Of America, Inc. | Compound document compression based upon neighboring pixels |
| JP4125565B2 (ja) * | 2001-08-31 | 2008-07-30 | 松下電器産業株式会社 | 画像符号化方法、画像復号化方法及びその装置 |
| US20030048808A1 (en) * | 2001-09-12 | 2003-03-13 | Stahl Thomas Anthony | Method and apparatus for changing received streaming content channels |
| KR100765060B1 (ko) | 2001-11-09 | 2007-10-09 | 주식회사 포스코 | 침전조의 워터배출 조정장치 |
| US7435543B2 (en) * | 2001-11-27 | 2008-10-14 | Animal Technology Institute Of Taiwan | Genetic markers for pig backfat thickness |
| EP1457056B1 (en) * | 2001-12-17 | 2016-08-10 | Microsoft Technology Licensing, LLC | Skip macroblock coding |
| US7003035B2 (en) * | 2002-01-25 | 2006-02-21 | Microsoft Corporation | Video coding methods and apparatuses |
| JP2003348598A (ja) * | 2002-04-12 | 2003-12-05 | Seiko Epson Corp | メモリ効率のいい圧縮領域ビデオ処理のための且つ因数分解及び整数近似法を用いる高速逆動き補償のための方法並びに装置 |
| JP2003319391A (ja) * | 2002-04-26 | 2003-11-07 | Sony Corp | 符号化装置および方法、復号装置および方法、記録媒体、並びにプログラム |
| PT1467491E (pt) | 2002-05-02 | 2007-03-30 | Fraunhofer Ges Forschung | Codificação aritmética de coeficientes de transformação |
| DK1550219T3 (da) * | 2002-05-02 | 2009-03-09 | Fraunhofer Ges Forschung | Fremgangsmåde og anordning til aritmetisk indkodning og dekodning af binære tilstande samt et tilsvarende computerprogram og et tilsvarende computerlæsbart lagermedium |
| JP4230188B2 (ja) * | 2002-06-06 | 2009-02-25 | パナソニック株式会社 | 可変長符号化方法および可変長復号化方法 |
| US6919105B2 (en) | 2003-01-06 | 2005-07-19 | Philip Morris Usa Inc. | Continuous process for retaining solid adsorbent particles on shaped micro-cavity fibers |
| 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 |
| US6900748B2 (en) * | 2003-07-17 | 2005-05-31 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Method and apparatus for binarization and arithmetic coding of a data value |
| US7499495B2 (en) * | 2003-07-18 | 2009-03-03 | Microsoft Corporation | Extended range motion vectors |
| US20050013498A1 (en) * | 2003-07-18 | 2005-01-20 | Microsoft Corporation | Coding of motion vector information |
| US7233622B2 (en) * | 2003-08-12 | 2007-06-19 | Lsi Corporation | Reduced complexity efficient binarization method and/or circuit for motion vector residuals |
| EP1513350A1 (en) * | 2003-09-03 | 2005-03-09 | Thomson Licensing S.A. | Process and arrangement for encoding video pictures |
| US6771197B1 (en) | 2003-09-26 | 2004-08-03 | Mitsubishi Electric Research Laboratories, Inc. | Quantizing signals using sparse generator factor graph codes |
| US7599435B2 (en) | 2004-01-30 | 2009-10-06 | Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. | Video frame encoding and decoding |
| JP4241417B2 (ja) * | 2004-02-04 | 2009-03-18 | 日本ビクター株式会社 | 算術復号化装置、および算術復号化プログラム |
| JP4408766B2 (ja) | 2004-07-30 | 2010-02-03 | Ntn株式会社 | Icタグ付き車輪用軸受装置 |
| CN1589023A (zh) * | 2004-08-06 | 2005-03-02 | 联合信源数字音视频技术(北京)有限公司 | 一种基于上下文的多码表变长编解码方法及编解码装置 |
| US7609947B2 (en) | 2004-09-10 | 2009-10-27 | Panasonic Corporation | Method and apparatus for coordinating playback from multiple video sources |
| CN101052972A (zh) * | 2004-09-22 | 2007-10-10 | 液滴技术有限公司 | 多技术熵编码系统和方法 |
| DE102004049156B4 (de) * | 2004-10-08 | 2006-07-13 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Codierschema für einen ein zeitlich veränderliches Graphikmodell darstellenden Datenstrom |
| KR20060038189A (ko) * | 2004-10-29 | 2006-05-03 | 삼성전자주식회사 | 컨텍스트 기반 적응형 이진 산술 복부호화 방법 및 장치 |
| KR100636229B1 (ko) * | 2005-01-14 | 2006-10-19 | 학교법인 성균관대학 | 신축형 부호화를 위한 적응적 엔트로피 부호화 및 복호화방법과 그 장치 |
| KR100703760B1 (ko) | 2005-03-18 | 2007-04-06 | 삼성전자주식회사 | 시간적 레벨간 모션 벡터 예측을 이용한 비디오인코딩/디코딩 방법 및 장치 |
| RU2336661C2 (ru) * | 2005-04-19 | 2008-10-20 | Самсунг Электроникс Ко., Лтд. | Способ и устройство адаптивного выбора контекстной модели для кодирования по энтропии |
| AU2006201490B2 (en) * | 2005-04-19 | 2008-05-22 | Samsung Electronics Co., Ltd. | Method and apparatus for adaptively selecting context model for entropy coding |
| EP1727371A1 (en) * | 2005-05-27 | 2006-11-29 | Thomson Licensing | Method for controlling the encoder output bit rate in a block-based video encoder, and corresponding video encoder apparatus |
| CN1878309A (zh) * | 2005-06-08 | 2006-12-13 | 松下电器产业株式会社 | 视频编码装置 |
| JP4856954B2 (ja) * | 2005-06-08 | 2012-01-18 | パナソニック株式会社 | 画像符号化装置 |
| KR20130099253A (ko) | 2005-06-22 | 2013-09-05 | 제론 코포레이션 | 영장류 다능성 줄기 세포의 심근세포 계통 세포로의 분화 |
| KR100683788B1 (ko) | 2005-06-25 | 2007-02-20 | 삼성에스디아이 주식회사 | 복수의 층들의 전극 라인들이 형성된 교류형 방전디스플레이 패널 |
| RU2371881C1 (ru) * | 2005-07-08 | 2009-10-27 | ЭлДжи ЭЛЕКТРОНИКС ИНК. | Способ моделирования информации кодирования видеосигнала для компрессии/декомпрессии информации |
| CN101223780A (zh) * | 2005-07-18 | 2008-07-16 | 三星电子株式会社 | 减少编码器和解码器之间的不匹配的视频编码方法和设备 |
| CN100461863C (zh) * | 2005-08-05 | 2009-02-11 | 上海富瀚微电子有限公司 | 基于上下文自适应二进制算术解码器 |
| EP1755341A1 (en) * | 2005-08-19 | 2007-02-21 | Texas Instruments Incorporated | Method of quantization of transform coefficients |
| US7221296B2 (en) * | 2005-08-22 | 2007-05-22 | Streaming Networks (Pvt.) Ltd. | Method and system for fast context based adaptive binary arithmetic coding |
| KR100813963B1 (ko) | 2005-09-16 | 2008-03-14 | 세종대학교산학협력단 | 동영상의 무손실 부호화, 복호화 방법 및 장치 |
| CN100403801C (zh) * | 2005-09-23 | 2008-07-16 | 联合信源数字音视频技术(北京)有限公司 | 一种基于上下文的自适应熵编/解码方法 |
| CN100466739C (zh) | 2005-10-12 | 2009-03-04 | 华为技术有限公司 | Cabac解码系统及方法 |
| WO2007051345A1 (en) | 2005-10-31 | 2007-05-10 | Life Spring Biotech Co., Ltd. | Scleral buckle band and method for making it |
| KR100873636B1 (ko) * | 2005-11-14 | 2008-12-12 | 삼성전자주식회사 | 단일 부호화 모드를 이용하는 영상 부호화/복호화 방법 및장치 |
| WO2007059788A1 (en) | 2005-11-25 | 2007-05-31 | Gregor Zebic | Home network application using wirelined and wireless secure links |
| US7245242B2 (en) * | 2005-11-28 | 2007-07-17 | Conexant Systems, Inc. | Decoding systems and methods |
| US7355387B2 (en) | 2005-12-08 | 2008-04-08 | Micron Technology, Inc. | System and method for testing integrated circuit timing margins |
| US7956930B2 (en) | 2006-01-06 | 2011-06-07 | Microsoft Corporation | Resampling and picture resizing operations for multi-resolution video coding and decoding |
| JP4318050B2 (ja) | 2006-01-24 | 2009-08-19 | ソニー株式会社 | ワイヤレスチャンネル決定選択方法およびアクセスポイント装置 |
| JP2007206370A (ja) | 2006-02-01 | 2007-08-16 | Toppan Printing Co Ltd | 着色アルカリ現像型感光性樹脂組成物及び該着色アルカリ現像型感光性樹脂組成物を用いたカラーフィルタ |
| KR100750165B1 (ko) * | 2006-02-22 | 2007-08-17 | 삼성전자주식회사 | 압축률 향상을 위해 개선된 컨텍스트 모델 선택을 사용하는cabac 부호화 방법 및 장치, 그리고 cabac복호화 방법 및 장치 |
| US20070217702A1 (en) * | 2006-03-14 | 2007-09-20 | Sung Chih-Ta S | Method and apparatus for decoding digital video stream |
| US8848789B2 (en) | 2006-03-27 | 2014-09-30 | Qualcomm Incorporated | Method and system for coding and decoding information associated with video compression |
| US7929608B2 (en) * | 2006-03-28 | 2011-04-19 | Sony Corporation | Method of reducing computations in intra-prediction and mode decision processes in a digital video encoder |
| JP2007300455A (ja) * | 2006-05-01 | 2007-11-15 | Victor Co Of Japan Ltd | 算術符号化装置、および算術符号化装置におけるコンテキストテーブル初期化方法 |
| JP2007306370A (ja) * | 2006-05-12 | 2007-11-22 | Victor Co Of Japan Ltd | 画像符号化記録装置 |
| US8472527B2 (en) * | 2006-09-13 | 2013-06-25 | Texas Instruments Incorporated | Hierarchical motion estimation using original frame for sub-sampled reference |
| CN101198051B (zh) * | 2006-12-07 | 2011-10-05 | 深圳艾科创新微电子有限公司 | 基于h.264的熵解码器的实现方法及装置 |
| US7573405B2 (en) * | 2006-12-29 | 2009-08-11 | Texas Instruments Incorporated | System updating accumulated statistics coding variable values after multiple encodings |
| US20080162432A1 (en) * | 2006-12-29 | 2008-07-03 | Wen-Shan Wang | Search table for unary k-th order exp-golomb decoder |
| CN101005287A (zh) * | 2007-01-26 | 2007-07-25 | 北京中星微电子有限公司 | 提高算术编码速度的方法、系统及编码装置 |
| JP5025286B2 (ja) * | 2007-02-28 | 2012-09-12 | シャープ株式会社 | 符号化装置及び復号装置 |
| US20080225947A1 (en) * | 2007-03-13 | 2008-09-18 | Matthias Narroschke | Quantization for hybrid video coding |
| US8806059B1 (en) | 2007-04-05 | 2014-08-12 | Juniper Networks, Inc. | Rule tree for network device |
| CN101115200B (zh) * | 2007-04-20 | 2010-05-19 | 西安交通大学 | 一种有效的运动矢量可伸缩编码方法 |
| KR101166732B1 (ko) * | 2007-05-04 | 2012-07-19 | 퀄컴 인코포레이티드 | 추정된 코딩 비용을 이용하는 비디오 코딩 모드 선택 |
| JP2008300455A (ja) | 2007-05-29 | 2008-12-11 | Sumitomo Electric Ind Ltd | パワーモジュール |
| JP5351021B2 (ja) * | 2007-06-29 | 2013-11-27 | シャープ株式会社 | 画像符号化装置、および画像復号装置 |
| US8254455B2 (en) * | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
| US9648325B2 (en) * | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
| JP4908336B2 (ja) | 2007-07-04 | 2012-04-04 | シャープ株式会社 | テレビ受信機、テレビゲームシステム、及びテレビゲームシステムのゲームモード終了方法 |
| KR101408698B1 (ko) | 2007-07-31 | 2014-06-18 | 삼성전자주식회사 | 가중치 예측을 이용한 영상 부호화, 복호화 방법 및 장치 |
| US7839311B2 (en) * | 2007-08-31 | 2010-11-23 | Qualcomm Incorporated | Architecture for multi-stage decoding of a CABAC bitstream |
| US7535387B1 (en) * | 2007-09-10 | 2009-05-19 | Xilinx, Inc. | Methods and systems for implementing context adaptive binary arithmetic coding |
| CN103037220B (zh) * | 2008-01-04 | 2016-01-13 | 华为技术有限公司 | 视频编码、解码方法及装置和视频处理系统 |
| EP2077550B8 (en) * | 2008-01-04 | 2012-03-14 | Dolby International AB | Audio encoder and decoder |
| JP4915350B2 (ja) * | 2008-01-16 | 2012-04-11 | 日本電気株式会社 | エントロピ符号化器、映像符号化装置、映像符号化方法および映像符号化プログラム |
| EP2245857B1 (en) * | 2008-01-22 | 2015-06-03 | Dolby Laboratories Licensing Corporation | Adaptive motion information cost estimation with dynamic look-up table updating |
| US20090201983A1 (en) | 2008-02-07 | 2009-08-13 | Motorola, Inc. | Method and apparatus for estimating high-band energy in a bandwidth extension system |
| JP4479829B2 (ja) | 2008-04-03 | 2010-06-09 | ソニー株式会社 | 撮像装置及び撮像方法 |
| US7656320B2 (en) | 2008-04-10 | 2010-02-02 | Red Hat, Inc. | Difference coding adaptive context model using counting |
| JP4962400B2 (ja) | 2008-04-30 | 2012-06-27 | ソニー株式会社 | 算術復号装置 |
| US8179974B2 (en) * | 2008-05-02 | 2012-05-15 | Microsoft Corporation | Multi-level representation of reordered transform coefficients |
| CN101267559A (zh) * | 2008-05-08 | 2008-09-17 | 上海交通大学 | 视频解码器的通用熵解码方法及装置 |
| US20090304071A1 (en) * | 2008-06-06 | 2009-12-10 | Apple Inc. | Adaptive application of entropy coding methods |
| CN101304522A (zh) * | 2008-06-20 | 2008-11-12 | 中国民航大学 | 一种以jpeg2000压缩图像为载体的大容量信息隐藏方法 |
| WO2010041855A2 (en) * | 2008-10-06 | 2010-04-15 | Lg Electronics Inc. | A method and an apparatus for processing a video signal |
| US7932843B2 (en) * | 2008-10-17 | 2011-04-26 | Texas Instruments Incorporated | Parallel CABAC decoding for video decompression |
| EP2338281A4 (en) * | 2008-10-17 | 2012-08-15 | Nokia Corp | SHARING MOTION VECTOR IN 3D VIDEO CODING |
| EP2182732A1 (en) * | 2008-10-28 | 2010-05-05 | Panasonic Corporation | Switching between scans in image coding |
| US20100127904A1 (en) | 2008-11-26 | 2010-05-27 | Horizon Semiconductors Ltd. | Implementation of a rapid arithmetic binary decoding system of a suffix length |
| RU2487473C2 (ru) * | 2008-12-03 | 2013-07-10 | Нокиа Корпорейшн | Переключение между режимами кодирования коэффициентов дискретного косинусного преобразования |
| JP2010268094A (ja) * | 2009-05-13 | 2010-11-25 | Sony Corp | 画像復号化装置および画像復号化方法 |
| JP2010278668A (ja) * | 2009-05-27 | 2010-12-09 | Sony Corp | 符号化装置及び符号化方法、並びに復号装置及び復号方法 |
| US9479812B2 (en) * | 2009-06-05 | 2016-10-25 | Time Warner Cable Enterprises Llc | User selection of software components in a television set-top box |
| KR101601653B1 (ko) | 2009-06-24 | 2016-03-10 | 삼성전자 주식회사 | 제빙장치 및 이를 구비하는 냉장고 |
| KR101377530B1 (ko) * | 2009-08-21 | 2014-03-27 | 에스케이텔레콤 주식회사 | 적응적 움직임 벡터 해상도를 이용한 영상 부호화/복호화 방법 및 장치 |
| KR101678968B1 (ko) * | 2009-08-21 | 2016-11-25 | 에스케이텔레콤 주식회사 | 참조 픽처 보간 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
| CN102055483B (zh) * | 2009-10-29 | 2013-05-08 | 鸿富锦精密工业(深圳)有限公司 | 熵解码装置 |
| JP5409268B2 (ja) * | 2009-10-30 | 2014-02-05 | 株式会社日立ソリューションズ | 情報提示装置及び携帯端末 |
| KR20110071047A (ko) * | 2009-12-20 | 2011-06-28 | 엘지전자 주식회사 | 비디오 신호 디코딩 방법 및 장치 |
| US9237355B2 (en) | 2010-02-19 | 2016-01-12 | Qualcomm Incorporated | Adaptive motion resolution for video coding |
| US9973768B2 (en) | 2010-03-16 | 2018-05-15 | Texas Instruments Incorporated | CABAC decoder with decoupled arithmetic decoding and inverse binarization |
| CN101841707B (zh) * | 2010-03-19 | 2012-01-04 | 西安电子科技大学 | 基于jpeg2000标准的高速实时处理算术熵编码方法 |
| JP5676744B2 (ja) * | 2010-04-13 | 2015-02-25 | フラウンホーファー−ゲゼルシャフト・ツール・フェルデルング・デル・アンゲヴァンテン・フォルシュング・アインゲトラーゲネル・フェライン | エントロピー符号化 |
| US20120014429A1 (en) * | 2010-07-15 | 2012-01-19 | Jie Zhao | Methods and Systems for Parallel Video Encoding and Parallel Video Decoding |
| US9319448B2 (en) | 2010-08-10 | 2016-04-19 | Qualcomm Incorporated | Trick modes for network streaming of coded multimedia data |
| CN101938654B (zh) * | 2010-08-17 | 2013-04-10 | 浙江大学 | 一种变换系数的优化量化方法及装置 |
| CN101951516B (zh) * | 2010-09-25 | 2013-06-05 | 清华大学 | 基于h.264/avc中cabac的并行编码实现电路及编码方法 |
| US8913666B2 (en) * | 2010-10-01 | 2014-12-16 | Qualcomm Incorporated | Entropy coding coefficients using a joint context model |
| US10327008B2 (en) * | 2010-10-13 | 2019-06-18 | Qualcomm Incorporated | Adaptive motion vector resolution signaling for video coding |
| JP5570437B2 (ja) * | 2011-01-12 | 2014-08-13 | 三菱電機株式会社 | エントロピー符号化装置、エントロピー復号装置、エントロピー符号化方法及びエントロピー復号方法 |
| US9008181B2 (en) | 2011-01-24 | 2015-04-14 | Qualcomm Incorporated | Single reference picture list utilization for interprediction video coding |
| ITTO20110414A1 (it) * | 2011-05-11 | 2012-11-12 | St Microelectronics Pvt Ltd | Procedimento ed apparecchiatura per elaborare segnali video, prodotto informatico e segnale codificato relativi |
| EP3343781B1 (en) | 2011-06-16 | 2021-12-01 | GE Video Compression, LLC | Context initialization in entropy coding |
| US9654772B2 (en) | 2012-01-19 | 2017-05-16 | Qualcomm Incorporated | Context adaptive entropy coding with a reduced initialization value set |
| US9584802B2 (en) | 2012-04-13 | 2017-02-28 | Texas Instruments Incorporated | Reducing context coded and bypass coded bins to improve context adaptive binary arithmetic coding (CABAC) throughput |
| US10856009B2 (en) * | 2014-09-04 | 2020-12-01 | Mediatek Inc. | Method of block vector clipping and coding for screen content coding and video coding |
-
2012
- 2012-06-18 EP EP18152613.8A patent/EP3343781B1/en active Active
- 2012-06-18 CN CN201710491640.0A patent/CN107333142B/zh active Active
- 2012-06-18 JP JP2014515230A patent/JP5925884B2/ja active Active
- 2012-06-18 CN CN201710694424.6A patent/CN107529708B/zh active Active
- 2012-06-18 RU RU2014101166A patent/RU2615681C2/ru active
- 2012-06-18 PL PL18203401T patent/PL3471415T3/pl unknown
- 2012-06-18 RU RU2017109078A patent/RU2658883C1/ru active
- 2012-06-18 CN CN201710694799.2A patent/CN107529710B/zh active Active
- 2012-06-18 ES ES12728084T patent/ES2961663T3/es active Active
- 2012-06-18 WO PCT/EP2012/061615 patent/WO2012172115A1/en not_active Ceased
- 2012-06-18 ES ES18203401T patent/ES2897209T3/es active Active
- 2012-06-18 HU HUE18152613A patent/HUE057958T2/hu unknown
- 2012-06-18 BR BR122020024986-2A patent/BR122020024986B1/pt active IP Right Grant
- 2012-06-18 RS RS20211362A patent/RS62714B1/sr unknown
- 2012-06-18 KR KR1020167003248A patent/KR101730587B1/ko active Active
- 2012-06-18 CN CN201710694425.0A patent/CN107529709B/zh active Active
- 2012-06-18 AU AU2012268950A patent/AU2012268950B2/en active Active
- 2012-06-18 CN CN201710694391.5A patent/CN107347161B/zh active Active
- 2012-06-18 PH PH1/2013/502634A patent/PH12013502634B1/en unknown
- 2012-06-18 WO PCT/EP2012/061614 patent/WO2012172114A1/en not_active Ceased
- 2012-06-18 IL IL290229A patent/IL290229B2/en unknown
- 2012-06-18 BR BR112013032333-7A patent/BR112013032333B1/pt active IP Right Grant
- 2012-06-18 IL IL305221A patent/IL305221B2/en unknown
- 2012-06-18 PL PL12734832T patent/PL2721822T3/pl unknown
- 2012-06-18 MX MX2016001282A patent/MX345195B/es unknown
- 2012-06-18 CN CN201710477825.6A patent/CN107465927B/zh active Active
- 2012-06-18 IL IL252388A patent/IL252388B/en unknown
- 2012-06-18 MX MX2017000909A patent/MX364201B/es unknown
- 2012-06-18 CN CN201710694268.3A patent/CN107801041B/zh active Active
- 2012-06-18 CN CN201710694423.1A patent/CN107529707B/zh active Active
- 2012-06-18 EP EP24166607.2A patent/EP4407995A3/en active Pending
- 2012-06-18 IL IL311563A patent/IL311563B2/en unknown
- 2012-06-18 PT PT181526138T patent/PT3343781T/pt unknown
- 2012-06-18 DK DK18152613.8T patent/DK3343781T3/da active
- 2012-06-18 MY MYPI2014000424A patent/MY170940A/en unknown
- 2012-06-18 CN CN201710694312.0A patent/CN107801042B/zh active Active
- 2012-06-18 CN CN201710977462.2A patent/CN107517384B/zh active Active
- 2012-06-18 AP AP2016009618A patent/AP2016009618A0/en unknown
- 2012-06-18 KR KR1020247003097A patent/KR102784652B1/ko active Active
- 2012-06-18 LT LTEP18203401.7T patent/LT3471415T/lt unknown
- 2012-06-18 BR BR112013032332-9A patent/BR112013032332B1/pt active IP Right Grant
- 2012-06-18 PT PT211892328T patent/PT3930330T/pt unknown
- 2012-06-18 PL PL18152613T patent/PL3343781T3/pl unknown
- 2012-06-18 ES ES18152613T patent/ES2906869T3/es active Active
- 2012-06-18 DK DK12728084.0T patent/DK2721819T3/da active
- 2012-06-18 CN CN201710694354.4A patent/CN107529704B/zh active Active
- 2012-06-18 SI SI201231961T patent/SI3471415T1/sl unknown
- 2012-06-18 MY MYPI2018001555A patent/MY202391A/en unknown
- 2012-06-18 CN CN201710694930.5A patent/CN107360434B/zh active Active
- 2012-06-18 KR KR1020177010779A patent/KR101882848B1/ko active Active
- 2012-06-18 CN CN201710695327.9A patent/CN107360423B/zh active Active
- 2012-06-18 RS RS20230766A patent/RS64604B1/sr unknown
- 2012-06-18 AP AP2014007361A patent/AP3686A/xx active
- 2012-06-18 CN CN201710477937.1A patent/CN107333140B/zh active Active
- 2012-06-18 MY MYPI2014000425A patent/MY184473A/en unknown
- 2012-06-18 JP JP2014515229A patent/JP6059212B2/ja active Active
- 2012-06-18 KR KR1020197035422A patent/KR102187981B1/ko active Active
- 2012-06-18 ES ES21189232T patent/ES2953667T3/es active Active
- 2012-06-18 AP AP2014007360A patent/AP4072A/en active
- 2012-06-18 KR KR1020147001047A patent/KR101662136B1/ko active Active
- 2012-06-18 DK DK21189232.8T patent/DK3930330T3/da active
- 2012-06-18 KR KR1020227029290A patent/KR102631388B1/ko active Active
- 2012-06-18 LT LTEP18152613.8T patent/LT3343781T/lt unknown
- 2012-06-18 PL PL12728084.0T patent/PL2721819T3/pl unknown
- 2012-06-18 IL IL299953A patent/IL299953B2/en unknown
- 2012-06-18 HU HUE12728084A patent/HUE063990T2/hu unknown
- 2012-06-18 EP EP18203401.7A patent/EP3471415B1/en active Active
- 2012-06-18 IL IL297827A patent/IL297827B2/en unknown
- 2012-06-18 CA CA2839560A patent/CA2839560C/en active Active
- 2012-06-18 CN CN201710962467.8A patent/CN107770559B/zh active Active
- 2012-06-18 EP EP24166608.0A patent/EP4407996B1/en active Active
- 2012-06-18 KR KR1020187021221A patent/KR102052471B1/ko active Active
- 2012-06-18 PT PT127280840T patent/PT2721819T/pt unknown
- 2012-06-18 FI FIEP12728084.0T patent/FI2721819T3/fi active
- 2012-06-18 EP EP12728084.0A patent/EP2721819B1/en active Active
- 2012-06-18 EP EP12728524.5A patent/EP2721820A1/en not_active Ceased
- 2012-06-18 RS RS20231075A patent/RS64867B1/sr unknown
- 2012-06-18 AU AU2012268951A patent/AU2012268951B2/en active Active
- 2012-06-18 SI SI201232044T patent/SI2721819T1/sl unknown
- 2012-06-18 PL PL21189232.8T patent/PL3930330T3/pl unknown
- 2012-06-18 DK DK18203401.7T patent/DK3471415T3/da active
- 2012-06-18 FI FIEP21189232.8T patent/FI3930330T3/fi active
- 2012-06-18 UA UAA201701791A patent/UA123987C2/uk unknown
- 2012-06-18 WO PCT/EP2012/061613 patent/WO2012172113A1/en not_active Ceased
- 2012-06-18 IL IL312098A patent/IL312098B2/en unknown
- 2012-06-18 HU HUE12734832A patent/HUE042350T2/hu unknown
- 2012-06-18 CN CN201710694395.3A patent/CN107529706B/zh active Active
- 2012-06-18 EP EP21189232.8A patent/EP3930330B1/en active Active
- 2012-06-18 ES ES12734832T patent/ES2704627T3/es active Active
- 2012-06-18 KR KR1020187000824A patent/KR101994869B1/ko active Active
- 2012-06-18 RU RU2014101164/08A patent/RU2595934C2/ru active
- 2012-06-18 KR KR1020147000948A patent/KR101619333B1/ko active Active
- 2012-06-18 CN CN201710965903.7A patent/CN107613307B/zh active Active
- 2012-06-18 PH PH1/2013/502633A patent/PH12013502633A1/en unknown
- 2012-06-18 LT LTEP21189232.8T patent/LT3930330T/lt unknown
- 2012-06-18 SI SI201232038T patent/SI3930330T1/sl unknown
- 2012-06-18 HR HRP20220272TT patent/HRP20220272T1/hr unknown
- 2012-06-18 KR KR1020197018337A patent/KR102160647B1/ko active Active
- 2012-06-18 RU RU2016129117A patent/RU2642373C1/ru active
- 2012-06-18 IL IL309379A patent/IL309379B2/en unknown
- 2012-06-18 CN CN201710477936.7A patent/CN107465928B/zh active Active
- 2012-06-18 MX MX2013014868A patent/MX2013014868A/es active IP Right Grant
- 2012-06-18 KR KR1020167026722A patent/KR101818978B1/ko active Active
- 2012-06-18 UA UAA201600953A patent/UA115186C2/uk unknown
- 2012-06-18 KR KR1020207034609A patent/KR102437504B1/ko active Active
- 2012-06-18 JP JP2014515231A patent/JP5952900B2/ja active Active
- 2012-06-18 CN CN201710478537.2A patent/CN107333141B/zh active Active
- 2012-06-18 RS RS20220220A patent/RS63053B1/sr unknown
- 2012-06-18 CN CN201710477823.7A patent/CN107465926B/zh active Active
- 2012-06-18 CA CA2839569A patent/CA2839569C/en active Active
- 2012-06-18 PT PT182034017T patent/PT3471415T/pt unknown
- 2012-06-18 IL IL316862A patent/IL316862B2/en unknown
- 2012-06-18 CN CN201280039896.3A patent/CN103931194B/zh active Active
- 2012-06-18 CN CN201280039922.2A patent/CN103748886B/zh active Active
- 2012-06-18 IL IL304856A patent/IL304856B2/en unknown
- 2012-06-18 CN CN201280039832.3A patent/CN103733622B/zh active Active
- 2012-06-18 KR KR1020207015415A patent/KR102254000B1/ko active Active
- 2012-06-18 CN CN201710694292.7A patent/CN107801025B/zh active Active
- 2012-06-18 HU HUE21189232A patent/HUE062605T2/hu unknown
- 2012-06-18 PT PT12734832T patent/PT2721822T/pt unknown
- 2012-06-18 LT LTEPPCT/EP2012/061615T patent/LT2721819T/lt unknown
- 2012-06-18 EP EP20155692.5A patent/EP3703367A1/en active Pending
- 2012-06-18 HU HUE18203401A patent/HUE056273T2/hu unknown
- 2012-06-18 EP EP21211399.7A patent/EP4033672A1/en active Pending
- 2012-06-18 BR BR122021000264-9A patent/BR122021000264B1/pt active IP Right Grant
- 2012-06-18 CN CN201710694392.XA patent/CN107529705B/zh active Active
- 2012-06-18 EP EP12734832.4A patent/EP2721822B1/en active Active
- 2012-06-18 SI SI201231980T patent/SI3343781T1/sl unknown
- 2012-06-18 MX MX2013014867A patent/MX336735B/es unknown
- 2012-06-18 EP EP23177778.0A patent/EP4277276A1/en active Pending
- 2012-06-18 DK DK12734832.4T patent/DK2721822T3/en active
- 2012-06-18 CN CN201710962381.5A patent/CN107517383B/zh active Active
-
2013
- 2013-12-16 US US14/108,173 patent/US9918090B2/en active Active
- 2013-12-16 MX MX2019004403A patent/MX2019004403A/es unknown
- 2013-12-16 CL CL2013003603A patent/CL2013003603A1/es unknown
- 2013-12-16 MX MX2023005264A patent/MX2023005264A/es unknown
- 2013-12-16 MX MX2023005265A patent/MX2023005265A/es unknown
- 2013-12-16 US US14/108,108 patent/US9473170B2/en active Active
- 2013-12-16 CL CL2013003601A patent/CL2013003601A1/es unknown
- 2013-12-16 US US14/108,132 patent/US9455744B2/en active Active
- 2013-12-17 IL IL230023A patent/IL230023A/en active IP Right Grant
-
2014
- 2014-01-06 ZA ZA2014/00029A patent/ZA201400029B/en unknown
- 2014-01-06 ZA ZA2014/00030A patent/ZA201400030B/en unknown
- 2014-01-12 IL IL230415A patent/IL230415A/en not_active IP Right Cessation
- 2014-01-16 CO CO14007528A patent/CO6852031A2/es active IP Right Grant
- 2014-01-16 CO CO14007521A patent/CO6852030A2/es unknown
-
2016
- 2016-04-20 JP JP2016084671A patent/JP6356723B2/ja active Active
- 2016-04-26 AU AU2016202638A patent/AU2016202638B2/en active Active
- 2016-08-16 US US15/238,523 patent/US9729883B2/en active Active
- 2016-08-16 US US15/238,294 patent/US9596475B2/en active Active
- 2016-08-23 US US15/244,156 patent/US9686568B2/en active Active
- 2016-08-23 US US15/244,126 patent/US9628827B2/en active Active
- 2016-12-08 JP JP2016238858A patent/JP6492047B2/ja active Active
- 2016-12-19 IL IL249644A patent/IL249644A/en active IP Right Grant
-
2017
- 2017-01-30 US US15/419,006 patent/US9743090B2/en active Active
- 2017-02-13 US US15/430,826 patent/US9762913B2/en active Active
- 2017-05-15 US US15/595,097 patent/US9768804B1/en active Active
- 2017-06-28 US US15/636,476 patent/US9930370B2/en active Active
- 2017-06-28 US US15/636,425 patent/US9918104B2/en active Active
- 2017-06-28 US US15/636,451 patent/US10021393B2/en active Active
- 2017-07-05 US US15/641,992 patent/US9936227B2/en active Active
- 2017-07-05 US US15/642,085 patent/US9930371B2/en active Active
- 2017-08-10 US US15/674,150 patent/US9973761B2/en active Active
- 2017-09-03 IL IL254274A patent/IL254274B/en active IP Right Grant
- 2017-09-14 AU AU2017228613A patent/AU2017228613B2/en active Active
- 2017-12-15 US US15/843,679 patent/US10057603B2/en active Active
-
2018
- 2018-01-09 RU RU2018100106A patent/RU2699677C2/ru active
- 2018-01-26 US US15/880,837 patent/US10063858B2/en active Active
- 2018-01-26 US US15/880,772 patent/US10148962B2/en active Active
- 2018-01-30 AU AU2018200699A patent/AU2018200699B2/en active Active
- 2018-02-14 PH PH12018500329A patent/PH12018500329A1/en unknown
- 2018-02-14 PH PH12018500328A patent/PH12018500328B1/en unknown
- 2018-02-14 PH PH12018500331A patent/PH12018500331A1/en unknown
- 2018-02-14 PH PH12018500330A patent/PH12018500330A1/en unknown
- 2018-02-15 PH PH12018500356A patent/PH12018500356B1/en unknown
- 2018-02-15 PH PH12018500348A patent/PH12018500348A1/en unknown
- 2018-02-15 PH PH12018500350A patent/PH12018500350B1/en unknown
- 2018-02-15 PH PH12018500353A patent/PH12018500353B1/en unknown
- 2018-02-15 PH PH12018500355A patent/PH12018500355A1/en unknown
- 2018-02-15 PH PH12018500349A patent/PH12018500349B1/en unknown
- 2018-02-15 PH PH12018500354A patent/PH12018500354B1/en unknown
- 2018-02-15 PH PH12018500351A patent/PH12018500351B1/en unknown
- 2018-02-15 PH PH12018500352A patent/PH12018500352A1/en unknown
- 2018-03-12 US US15/918,105 patent/US10440364B2/en active Active
- 2018-04-02 JP JP2018070521A patent/JP6560393B2/ja active Active
- 2018-06-03 IL IL259768A patent/IL259768A/en active IP Right Grant
- 2018-06-06 RU RU2018120845A patent/RU2758981C2/ru active
- 2018-06-10 HK HK18107525.9A patent/HK1248434B/zh unknown
- 2018-06-12 US US16/006,288 patent/US10298964B2/en active Active
- 2018-06-27 JP JP2018121555A patent/JP6867334B2/ja active Active
- 2018-06-28 HK HK18108378.5A patent/HK1248948B/zh unknown
- 2018-07-03 HK HK18108563.0A patent/HK1249313B/zh unknown
- 2018-07-17 US US16/037,914 patent/US10313672B2/en active Active
- 2018-07-20 US US16/040,764 patent/US10230954B2/en active Active
- 2018-08-14 US US16/103,266 patent/US10306232B2/en active Active
- 2018-11-19 JP JP2018216486A patent/JP6814780B2/ja active Active
-
2019
- 2019-01-02 US US16/238,013 patent/US10425644B2/en active Active
- 2019-01-18 AU AU2019200328A patent/AU2019200328B2/en active Active
- 2019-01-28 US US16/259,815 patent/US10432940B2/en active Active
- 2019-01-28 US US16/259,738 patent/US10432939B2/en active Active
- 2019-03-26 IL IL265636A patent/IL265636B/en active IP Right Grant
- 2019-04-11 PH PH12019500792A patent/PH12019500792A1/en unknown
- 2019-04-11 PH PH12019500790A patent/PH12019500790A1/en unknown
- 2019-05-30 AU AU2019203792A patent/AU2019203792B2/en active Active
- 2019-06-27 US US16/454,387 patent/US10630988B2/en active Active
- 2019-06-27 US US16/454,247 patent/US10630987B2/en active Active
- 2019-08-28 RU RU2019127048A patent/RU2755020C2/ru active
- 2019-11-25 US US16/693,886 patent/US10819982B2/en active Active
-
2020
- 2020-01-31 US US16/778,048 patent/US11533485B2/en active Active
- 2020-05-05 US US16/867,149 patent/US11277614B2/en active Active
- 2020-10-23 JP JP2020178469A patent/JP7231594B2/ja active Active
-
2021
- 2021-04-08 JP JP2021065563A patent/JP7100836B2/ja active Active
- 2021-06-02 IL IL283649A patent/IL283649B/en unknown
- 2021-07-29 AU AU2021209284A patent/AU2021209284B2/en active Active
- 2021-11-03 CY CY20211100947T patent/CY1124687T1/el unknown
-
2022
- 2022-02-01 US US17/590,596 patent/US11838511B2/en active Active
- 2022-06-21 JP JP2022099860A patent/JP7571084B2/ja active Active
- 2022-06-30 IL IL294454A patent/IL294454B2/en unknown
- 2022-09-09 US US17/930,997 patent/US12069267B2/en active Active
- 2022-09-19 AU AU2022235513A patent/AU2022235513B2/en active Active
- 2022-11-07 US US18/053,219 patent/US12316846B2/en active Active
-
2023
- 2023-02-16 JP JP2023022627A patent/JP7464768B2/ja active Active
- 2023-06-16 AU AU2023203785A patent/AU2023203785B2/en active Active
- 2023-10-06 US US18/482,683 patent/US12301819B2/en active Active
-
2024
- 2024-03-15 AU AU2024201731A patent/AU2024201731B2/en active Active
- 2024-03-28 JP JP2024053787A patent/JP7572582B2/ja active Active
- 2024-10-09 JP JP2024177286A patent/JP2025004187A/ja active Pending
- 2024-10-10 JP JP2024177994A patent/JP7727072B2/ja active Active
- 2024-11-27 AU AU2024266934A patent/AU2024266934A1/en active Pending
-
2025
- 2025-04-22 US US19/186,131 patent/US20250317566A1/en active Pending
- 2025-05-09 US US19/203,384 patent/US20250337907A1/en active Pending
- 2025-08-07 JP JP2025132268A patent/JP2025170279A/ja active Pending
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2961663T3 (es) | Codificación de entropía que soporta conmutación de modo | |
| HK40036839A (en) | Entropy coding supporting mode switching | |
| HK1250864A1 (en) | Decoder, encoder, decoding method, encoding method, medium and storing method | |
| HK1250864B (zh) | 解码器、编码器、解码方法、编码方法、介质和存储方法 | |
| HK1197128B (en) | Entropy coding supporting mode switching |