ES2378393T3 - Utilización selectiva de múltiples modelos para codificación y descodificación adaptativa - Google Patents

Utilización selectiva de múltiples modelos para codificación y descodificación adaptativa Download PDF

Info

Publication number
ES2378393T3
ES2378393T3 ES06787173T ES06787173T ES2378393T3 ES 2378393 T3 ES2378393 T3 ES 2378393T3 ES 06787173 T ES06787173 T ES 06787173T ES 06787173 T ES06787173 T ES 06787173T ES 2378393 T3 ES2378393 T3 ES 2378393T3
Authority
ES
Spain
Prior art keywords
models
entropic
encoder
tables
coefficients
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES06787173T
Other languages
English (en)
Inventor
Wei-Ge Chen
Sanjeev Mehrotra
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of ES2378393T3 publication Critical patent/ES2378393T3/es
Anticipated expiration legal-status Critical
Active legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/02Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using spectral analysis, e.g. transform vocoders or subband vocoders
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/0017Lossless audio signal coding; Perfect reconstruction of coded audio signal by transmission of coding error
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L19/00Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis
    • G10L19/04Speech or audio signals analysis-synthesis techniques for redundancy reduction, e.g. in vocoders; Coding or decoding of speech or audio signals, using source filter models or psychoacoustic analysis using predictive techniques
    • G10L19/06Determination or coding of the spectral characteristics, e.g. of the short-term prediction coefficients
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion 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/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Theoretical Computer Science (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Método para ser ejecutado por un codificador o un descodificador, que comprende: para una serie de símbolos, seleccionar un modelo entrópico a partir de un primer conjunto de modelos que incluye múltiples modelos entrópicos, cada uno de los múltiples modelos entrópicos del primer conjunto de modelos incluyendo un punto de conmutación de modelo para conmutar a un segundo conjunto de modelos que incluye uno o varios modelos entrópicos, en el que la serie de símbolos son para coeficientes espectrales cuantificados para datos de audio; y en el que la selección de un modelo entrópico se basa en la evaluación del rendimiento de la codificación utilizando los múltiples modelos entrópicos; procesar la serie de símbolos utilizando el modelo entrópico seleccionado; y entregar los resultados del proceso; en el que los múltiples modelos entrópicos del primer conjunto de modelos, y dichos uno o varios modelos entrópicos del segundo conjunto de modelos reflejan distribuciones de probabilidad para codificación y/o descodificación aritmética, y en el que los múltiples modelos entrópicos del primer conjunto de modelos reflejan las distribuciones de probabilidad de los símbolos más probables, y los múltiples modelos entrópicos del segundo conjunto de modelos reflejan las distribuciones de probabilidad de los símbolos menos probables; y en el que es seguido un punto de conmutación si la distribución de probabilidad seleccionada no comprende el símbolo respectivo de la serie de símbolos.

Description

Utilización selectiva de múltiples modelos entrópicos para codificación y descodificación adaptativa
ANTECEDENTES
Los ingenieros utilizan diversas técnicas para procesar eficientemente el audio digital, manteniendo a la vez la calidad del audio digital. Para comprender estas técnicas, resulta de ayuda comprender cómo la información de audio es representada y procesada en un ordenador.
I. Representación de información de audio en un ordenador.
Un ordenador procesa la información de audio como una serie de números que representan la información de audio. Por ejemplo, un único número puede representar una muestra de audio, que es un valor de amplitud en un tiempo dado. Diversos factores afectan a la calidad de la información de audio, incluyendo la profundidad de la muestra, la velocidad de muestreo y el modo de canal.
La profundidad (o precisión) de la muestra indica el rango de números utilizados para representar una muestra. Cuanto más valores posibles hay para la muestra mayor es la calidad, debido a que el número puede capturar variaciones de amplitud más sutiles. Por ejemplo, una muestra de 8 bits tiene 256 posibles valores, mientras que una muestra de 16 bits tiene 65 536 posibles valores.
La velocidad de muestreo (habitualmente medida como el número de muestras por segundo) afecta asimismo a la calidad. A mayor velocidad de muestreo, mayor calidad debido a que pueden representarse más frecuencias de sonido. Algunas velocidades de muestreo comunes son 8000, 11 025, 22 050, 32 000, 44 100, 48 000, y 96 000 muestras/segundo.
Dos modos de canal comunes para el audio son mono y estéreo. En modo mono, la información de audio está presente en un canal. En modo estéreo, la información de audio está presente en dos canales, denominados normalmente canales izquierdo y derecho. Asimismo, son posibles otros modos con más canales, tales como el sonido envolvente del canal 5.1, el canal 7.1, o el canal 9.1 (el "1" indica un canal de efectos de graves o de baja frecuencia). La tabla 1 muestra varios formatos de audio con diferentes niveles de calidad, junto con correspondientes costos en velocidad de bits en bruto.
Tabla 1. Velocidades de bits para información de audio de diferente calidad.
Profundidad de la muestra (bits/muestra)
Velocidad de muestreo (muestras/segundo) Modo del canal Velocidad de bits en bruto (bits/segundo)
Telefonía por internet
8 8 mono 64
Teléfono
8 11,025 mono 88,2
Aucio CD
16 44,1 estéreo 1 411 200
El audio de sonido envolvente tiene habitualmente una velocidad de bits en bruto incluso mayor. Tal como muestra la tabla 1, el costo de una información de audio de alta calidad es una velocidad de bits elevada. La información de audio de alta calidad consume grandes cantidades de almacenamiento informático y de capacidad de transmisión. Sin embargo, las compañías y los consumidores dependen cada vez más de los ordenadores para crear, distribuir y reproducir contenido de audio de alta calidad.
II. Procesamiento de información de audio en un ordenador.
Muchos ordenadores y redes informáticas carecen de recursos para procesar audio digital en bruto. La compresión (denominada, asimismo, codificación o descodificación) reduce el costo de almacenar y transmitir información de audio, transformando la información a una forma con una menor velocidad de bits. La compresión puede ser sin pérdidas (en la cual la calidad no es afectada) o con pérdidas (en la cual la calidad es afectada, pero la reducción de la velocidad de bits a partir de la subsiguiente compresión sin pérdidas es más dramática). Por ejemplo, la comprensión con pérdidas se utiliza para aproximar información de audio original, y a continuación la aproximación se comprime sin pérdidas. La descompresión (denominada, asimismo, descodificación) extrae una versión reconstruida de la información original, a partir de la forma comprimida.
Un objetivo de la compresión de audio es representar digitalmente señales de audio para proporcionar la máxima calidad de señal percibida, con la menor cantidad bits posible. Con este objetivo como meta, diversos sistemas presentes de codificación de audio utilizan modelos de la percepción humana. Sistemas de codificador y descodificador incluyen ciertas versiones del codificador y descodificador Windows Media Audio ("WMA") y del codificador y descodificador WMA Pro, de Microsoft Corporation. Otros sistemas están especificados por ciertas versiones del estándar Audio Layer 3 (capa de audio 3) del Motion Picture Experts Group (grupo de expertos en imágenes en movimiento), el estándar Advanced Audio Coding (codificación de audio avanzada) ("AAC"), y Dolby AC3. Dichos sistemas utilizan habitualmente una combinación de compresión y descompresión con pérdidas y sin pérdidas.
A. Compresión con pérdidas y descompresión correspondiente.
Convencionalmente, un codificador de audio utiliza una serie de diferentes técnicas de compresión con pérdidas. Estas técnicas de compresión con pérdidas involucran habitualmente modelización/ponderación perceptual y cuantificación después de una transformada de frecuencia. La correspondiente descompresión involucra cuantificación inversa, ponderación inversa y transformadas de frecuencia inversas.
Las técnicas de transformadas de frecuencia transforman los datos a una forma que facilita separar la información importante perceptualmente respecto de la información no importante perceptualmente. A continuación, la información menos importante puede ser sometida a una compresión con más pérdidas, mientras que la información más importante es preservada, con objeto de proporcionar la mejor calidad percibida para una velocidad de bits dada. Habitualmente, una transformada de frecuencia recibe muestras de audio y las convierte en datos en el dominio de frecuencias, en ocasiones denominados coeficientes de frecuencia o coeficientes espectrales.
La modelización perceptual involucra el procesamiento de datos de audio de acuerdo con un modelo del sistema auditivo humano, para mejorar la calidad percibida de la señal de audio reconstruida para una velocidad de bits dada. Utilizando los resultados de la modelización perceptual, un codificador conforma ruido (por ejemplo, el ruido de cuantificación) en los datos de audio, con el objetivo de minimizar la audibilidad del ruido para una velocidad de bits dada.
La cuantificación mapea rangos de valores de entrada a valores únicos, introduciendo pérdidas de información irreversibles pero, asimismo, permitiendo a un codificador regular la calidad y la velocidad de bits de la salida. En ocasiones, el codificador lleva a cabo la cuantificación junto con un controlador de velocidad que ajusta la cuantificación para regular la velocidad de bits y/o la calidad. Existen varias clases de cuantificación, incluyendo adaptativa y no adaptativa, escalar y vectorial, y uniforme y no uniforme. La ponderación perceptual puede considerarse una forma de cuantificación no uniforme.
La cuantificación inversa y la ponderación inversa reconstruyen los datos de coeficientes de frecuencia ponderados, cuantificados, a una aproximación de los datos de coeficientes de frecuencia originales. A continuación, una transformada de frecuencias inversa convierte los datos de coeficientes de frecuencia reconstruidos, en muestras de audio reconstruidas en el dominio temporal.
B. Compresión y descompresión sin pérdidas.
Convencionalmente, un codificador de audio utiliza una o varias de una serie de diferentes técnicas de compresión sin pérdidas, que se denominan asimismo técnicas de codificación entrópicas. En general, las técnicas de compresión sin pérdidas incluyen codificación por longitud de serie, codificación de longitud variable, y codificación aritmética. Las correspondientes técnicas de descompresión (denominadas, asimismo, técnicas de descompresión entrópicas) incluyen descodificación por longitud de serie, descodificación de longitud variable, y descodificación aritmética.
La codificación de longitud de serie es una técnica de compresión simple, bien conocida. En general, la codificación de longitud de serie sustituye una secuencia (es decir, una serie) de símbolos consecutivos que tienen el mismo valor, por el valor y la longitud de la secuencia. En la descodificación por longitud de serie, la secuencia de símbolos consecutivos es reconstruida a partir del valor de la serie y la longitud de la serie. Se han desarrollado numerosas variaciones de codificación/descodificación por longitud de serie.
Se proporciona un ejemplo de una variación de este tipo en el documento US2005/0015249, publicado el 20 de enero de 2005, y que describe un codificador de audio que conmuta entre codificación Huffman vectorial de dimensión variable, de niveles directos de datos de audio cuantificados, y codificación de serie-nivel de longitudes de serie y niveles de datos de audio cuantificados.
La codificación de serie-nivel es similar a la codificación por longitudes de serie, en cuanto que las series de símbolos consecutivos que tienen el mismo valor son sustituidas por las longitudes de las series. El valor para las
series es el valor predominante (por ejemplo, 0) en los datos, y las series son separadas mediante uno o varios niveles que tienen un valor diferente (por ejemplo, un valor distinto de cero).
Los resultados de la codificación por longitud de serie (por ejemplo, los valores de la serie y las longitudes de la serie) o de la codificación de serie-nivel, pueden ser sometidos a codificación de longitud variable para reducir más la velocidad de bits. En este caso, los datos sometidos a codificación de longitud variable son sometidos a descodificación de longitud variable antes de la descodificación por longitud de serie.
La codificación de longitud variable es otra técnica de compresión bien conocida. En general, una tabla de códigos de longitud variable ["VLC" (variable length code)] asocia VLCs con valores de símbolo únicos (o combinaciones únicas de valores). Los códigos Huffman son un tipo común de VLC. Se asignan códigos más cortos a valores de símbolo más probables, y se asignan códigos más largos a valores de símbolo menos probables. Las probabilidades son calculadas para ejemplos típicos de alguna clase de contenido. O bien, las probabilidades son calculadas para datos recién codificados o datos a codificar, en cuyo caso los VLC se adaptan a probabilidades cambiantes para los valores de símbolo únicos. En comparación con la codificación estática de longitud variable, la configuración adaptativa de longitud variable reduce habitualmente la velocidad de bits de los datos comprimidos, al incorporar probabilidades más precisas para los datos, pero es necesario asimismo transmitir información extra que especifica los VLCs.
Para codificar símbolos, un codificador de longitud variable sustituye valores de símbolo con los VLC asociados con los valores de símbolo en la tabla de VLC. Para descodificar, un descodificador de longitud variable sustituye los VLC por los valores de símbolo asociados con los VLC.
En codificación escalar de longitud variable, una tabla VLC asocia un único VLC a un valor, por ejemplo, un nivel directo de un valor de datos cuantificados. En codificación vectorial de longitud variable, una tabla VLC asocia un único VLC a una combinación de valores, por ejemplo, un grupo de niveles directos de valores de datos cuantificados en un orden particular. La codificación vectorial de longitud variable puede conducir a una reducción de la velocidad de bits mejor que la codificación escalar de longitud variable (por ejemplo, permitiendo al codificador explotar probabilidades fraccionalmente, en VLCs binarios). Por otra parte, la tabla de VLCs para codificación vectorial de longitud variable puede ser extremadamente grande, cuando códigos únicos representan grandes grupos de símbolos, o símbolos que tienen grandes rangos de valores potenciales (debido al gran número de combinaciones potenciales), lo que consume memoria y recursos de procesamiento para calcular la tabla VLC y para encontrar los VLCs. Se han desarrollado numerosas variaciones de codificación/descodificación de longitud variable.
La codificación aritmética es otra técnica de compresión bien conocida. La codificación aritmética se utiliza en ocasiones en aplicaciones en las que el número óptimo de bits para codificar un símbolo de entrada dado es un número de bits fraccionario, y en casos en los que existe una correlación estadística entre ciertos símbolos de entrada individuales. En general, la codificación aritmética implica representar una secuencia de entrada como un único número dentro de un rango dado. Habitualmente, el número es un número fraccionario entre 0 y 1. Los símbolos en la secuencia de entrada están asociados con rangos que ocupan partes del espacio entre 0 y 1. Los rangos se calculan en base a la probabilidad de que se produzca el símbolo concreto en la secuencia de entrada. El número fraccionario utilizado para representar la secuencia de entrada es construido haciendo referencia a los rangos. Por lo tanto, las distribuciones de probabilidad para los símbolos de entrada son importantes en los esquemas de codificación aritmética.
En la codificación aritmética basada en contexto, diferentes distribuciones de probabilidad para los símbolos de entrada están asociadas con contextos diferentes. La distribución de probabilidad utilizada para codificar la secuencia de entrada cambia cuando el contexto cambia. El contexto puede ser calculado midiendo diferentes factores que se supone afectan a la probabilidad de que aparezca un símbolo de entrada concreto en una secuencia de entrada.
Dada la importancia de la comprensión y la descompresión en el procesamiento de medios, no es sorprendente que la compresión y la descompresión sean campos muy desarrollados. Cualesquiera sean las ventajas de las técnicas y los sistemas previos para compresión y descompresión sin pérdidas, no obstante, carecen de diversas ventajas de las técnicas y los sistemas descritos en el presente documento.
RESUMEN
La invención está definida la mediante las reivindicaciones independientes 1 y 16, respectivamente.
En el presente documento se describen técnicas y herramientas para utilizar selectivamente múltiples modelos entrópicos en codificación y descodificación adaptativas. Por ejemplo, utilizar selectivamente múltiples modelos entrópicos puede reducir significativamente la utilización de recursos para múltiples distribuciones/tablas VLC. Al
mismo tiempo, puede conseguirse gran parte de la ganancia de codificación asociada con la utilización de múltiples distribuciones/tablas VLC.
De acuerdo con un primer conjunto de técnicas y herramientas, una herramienta tal como un codificador o un descodificador, para símbolos, selecciona un modelo entrópico a partir de un primer conjunto de modelos que incluye múltiples modelos entrópicos. Cada uno de los múltiples modelos entrópicos del primer conjunto de modelos incluye un punto de conmutación de modelo para conmutar a un segundo conjunto de modelos, que incluye uno o varios modelos entrópicos. La herramienta procesa los símbolos utilizando el modelo entrópico seleccionado y entrega resultados del proceso.
Cada uno de los uno o varios modelos entrópicos del segundo conjunto de modelos puede incluir por sí mismo un punto de conmutación de modelo para conmutar a otro conjunto de modelos. Además, cada uno de los múltiples modelos entrópicos del primer conjunto de modelos puede incluir además un segundo punto de conmutación de modelo, para conmutar a otro conjunto de modelos. De manera más general, cada uno de los múltiples modelos entrópicos del primer conjunto de modelos puede incluir ninguno o más puntos de conmutación de modelos para conmutar a otro conjunto u otros conjuntos de modelos (incluyendo, por sí mismos, cada conjunto del otro conjunto o conjuntos de modelos, cero o más modelos entrópicos). De manera recursiva, para un conjunto de modelos dado del otro conjunto o conjuntos de modelos, el modelo o modelos entrópicos para dicho conjunto de modelos puede incluir cero o más puntos de conmutación de modelo, para conmutar a otro conjunto o conjuntos de modelos, y así sucesivamente.
De acuerdo con un segundo conjunto de técnicas y herramientas, un sistema genera modelos entrópicos. El sistema agrupa distribuciones de probabilidad de acuerdo con una primera métrica de costos (tal como el error cuadrático medio), lo que tiene como resultado grupos preliminares. El sistema refina los grupos preliminares de acuerdo con una segunda métrica de costos (tal como la entropía relativa), que es diferente respecto de la primera métrica de costos, lo que tiene como resultado grupos finales. A continuación, el sistema establece los modelos entrópicos en base, por lo menos en parte, a los grupos finales.
De acuerdo con un tercer conjunto de técnicas y herramientas, un sistema obtiene distribuciones de probabilidad para valores de símbolo. El sistema genera modelos entrópicos. Al hacerlo, el sistema limita múltiples valores de símbolo menos probables, a tener una distribución condicional común a través de las distribuciones de probabilidad, sin limitar de este modo múltiples valores de símbolo más probables.
Los anteriores y otros objetivos, características y ventajas de la invención resultarán más evidentes a partir de la siguiente descripción detallada, que hace referencia a las figuras adjuntas.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La figura 1 es un diagrama de bloques de un entorno operativo generalizado, junto con el cual pueden implementarse diversas realizaciones descritas.
Las figuras 2, 3, 4, 5, 6 y 7 son diagramas de bloques de codificadores y/o descodificadores generalizados, junto con los cuales pueden ser implementadas diversas realizaciones descritas.
Las figuras 8a y 8b son diagramas que muestran una señal de audio multicanal y una configuración de ventanas correspondiente, respectivamente.
Las figuras 9 y 10 son diagramas de bloques que muestran un codificador y un descodificador, respectivamente, con modulación de ruido temporal.
Las figuras 11 y 12 son diagramas de bloques que muestran un codificador y un descodificador, respectivamente, con predicción de coeficientes para la reducción de la velocidad de bits.
Las figuras 13 y 14 son diagramas de flujo que muestran técnicas para la predicción de coeficientes en codificación y descodificación, respectivamente, de coeficientes espectrales cuantificados.
Las figuras 15a y 15b son diagramas que muestran una señal de audio periódica en el dominio temporal y coeficientes espectrales correspondientes, respectivamente.
Las figuras 16 y 17 son diagramas de bloque que muestran un codificador y un descodificador, respectivamente, con reordenación de coeficientes.
Las figuras 18a hasta 18c son diagramas de flujo que muestran técnicas para reordenar coeficientes espectrales antes de la codificación entrópica.
Las figuras 19a hasta 19c son diagramas de flujo que muestran técnicas para reordenar coeficientes espectrales después de la descodificación entrópica.
La figura 20 es un diagrama que muestra los coeficientes espectrales de la figura 15b después de la reordenación.
La figura 21 es un diagrama que muestra una ganancia de codificación debida a la reordenación de coeficientes por subtrama, de un ejemplo de archivo de audio.
La figura 22 es un diagrama que muestra modelos entrópicos organizados jerárquicamente.
La figura 23 es un diagrama que muestra códigos de Huffman para distribuciones aproximadas de valores de símbolo.
Las figuras 24 y 25 son diagramas de flujo que muestran técnicas para agrupar vectores de aprendizaje para distribuciones de probabilidad.
La figura 26 es un diagrama de flujo que muestra una técnica para la codificación con el uso selectivo de múltiples modelos entrópicos.
La figura 27 es un diagrama de flujo que muestra una técnica para la descodificación con el uso selectivo de múltiples modelos entrópicos.
DESCRIPCIÓN DETALLADA
Se describen diversas técnicas y herramientas para codificación/descodificación y procesamiento asociado. Estas técnicas y herramientas facilitan la creación, distribución y reproducción de contenido de audio de alta calidad, incluso a velocidades de bits muy bajas.
Las diversas técnicas y herramientas descritas en el presente documento pueden ser utilizadas de manera independiente. Algunas de las técnicas y herramientas pueden ser utilizadas en combinación (por ejemplo, en diferentes fases de un proceso de codificación y/o descodificación combinado).
A continuación, se describen diversas técnicas haciendo referencia a diagramas de flujo de acciones de procesamiento. Las diversas acciones de procesamiento mostradas en los diagramas de flujo pueden ser consolidadas en menos acciones, o separadas en más acciones. Por simplicidad, a menudo no se muestra la relación de las acciones mostradas en un diagrama de flujo concreto, con las acciones descritas en otro lugar. En muchos casos, las acciones de un diagrama de flujo pueden ser reordenadas.
I. Ejemplos de entornos operativos para codificadores y/o descodificadores.
La figura 1 muestra un ejemplo generalizado de un entorno informático adecuado 100, en el que pueden implementarse varias de las realizaciones descritas. El entorno informático 100 no pretende insinuar ninguna limitación en relación con el alcance de la utilización o de la funcionalidad, puesto que las técnicas y herramientas descritas pueden ser implementadas en diversos entornos informáticos de propósito general o especializados.
Haciendo referencia a la figura 1, el entorno informático 100 incluye, por lo menos, una unidad 110 de proceso y una memoria 120. En la figura 1, esta configuración más básica 130 está contenida en una línea de trazos. La unidad 110 de proceso ejecuta instrucciones legibles por ordenador y puede ser un procesador real o virtual. En un sistema de multiprocesamiento, múltiples unidades de proceso ejecutan instrucciones legibles por ordenador para incrementar la potencia de procesamiento. La memoria 120 puede ser memoria volátil (por ejemplo registros, memoria caché, RAM), memoria no volátil (por ejemplo RAM, EEPROM, memoria flash, etc.) o alguna combinación de las dos. La memoria 120 almacena soporte lógico 180, que implementa un codificador y/o un descodificador que utiliza una o varias de las técnicas descritas en el presente documento.
Un entorno informático puede tener características adicionales. Por ejemplo, el entorno informático 100 incluye almacenamiento 140, uno o varios dispositivos de entrada 150, uno o varios dispositivos de salida 160, y una o varias conexiones de comunicación 170. Un mecanismo de interconexión (no mostrado) tal como un bus, un controlador o una red, interconecta los componentes del entorno informático 100. Habitualmente, un soporte lógico de sistema operativo (no mostrado) proporciona un entorno operativo para otro soporte lógico que se ejecuta en el entorno informático 100, y coordina actividades de los componentes del entorno de informático 100.
El almacenamiento 140 puede ser extraíble o no extraíble, e incluye discos magnéticos, cintas magnéticas o casetes, CD-ROMs, DVDs, o cualquier otro medio que pueda utilizarse para almacenar información y que sea accesible dentro del entorno informático 100. El almacenamiento 140 almacena instrucciones para el soporte lógico
180.
El dispositivo o dispositivos de entrada 150 pueden ser un dispositivo de entrada táctil tal como un teclado, un ratón, un lápiz o una rueda de desplazamiento, un dispositivo de entrada de voz, un dispositivo de escaneo, u otro dispositivo que proporcione entradas al entorno informático 100. Para codificación de audio o de video, el dispositivo
o dispositivos de entrada 150 pueden ser un micrófono, una tarjeta de sonido, una tarjeta de video, una tarjeta de sintonizador de TV, o un dispositivo similar que admita entradas de audio o de video en forma analógica o digital, o un CD-ROM o un CD-RW que lea muestras de audio o de video en el entorno informático 100. El dispositivo o dispositivos de salida 160 pueden ser una pantalla, una impresora, un altavoz, un grabador de CDs, u otro dispositivo que proporcione una salida desde el entorno informático 100.
La conexión o conexiones de comunicación 170 permiten la comunicación, sobre un medio de comunicación, hasta otra entidad informática. El medio de comunicación transporta información tal como instrucciones ejecutables por ordenador, entradas o salidas de audio o de video, u otros datos en una señal de datos modulada. Una señal de datos modulada es una señal que tiene una o varias de sus características establecidas o modificadas de tal modo que codifica la información en la señal. A modo de ejemplo, y no de limitación, un medio de comunicación incluye técnicas cableadas o inalámbricas implementadas con una portadora eléctrica, óptica, de RF, infrarroja, acústica u otra.
Las técnicas y herramientas pueden describirse en el contexto general de los medios legibles por ordenador. Los medios legibles por ordenador son cualquier medio disponible al que pueda accederse dentro de un entorno informático. A modo de ejemplo, y no de limitación, con el entorno informático 100, los medios legibles por ordenador incluyen la memoria 120, el almacenamiento 140, los medios de comunicación, y combinaciones de cualesquiera de los anteriores.
Las técnicas y herramientas pueden describirse en el contexto general de las instrucciones legibles ejecutables por ordenador, tales como las incluidas en módulos de programa, que son ejecutadas en un entorno informático en un procesador objetivo, real o virtual. En general, los módulos de programa incluyen rutinas, programas, bibliotecas, objetos, clases, componentes, estructuras de datos, etc., que llevan a cabo tareas concretas o implementan tipos concretos de datos abstractos. La funcionalidad de los módulos del programa puede combinarse o dividirse a conveniencia entre módulos de programa, en diversas realizaciones. Las instrucciones legibles por ordenador para módulos de programa pueden ser ejecutadas dentro de un entorno informático local o distribuido.
Para simplificar la presentación, la descripción detallada utiliza términos tales como "señalizar", "determinar" y "aplicar" para describir operaciones informáticas en un entorno informático. Estos términos son abstracciones de alto nivel para operaciones llevadas a cabo por un ordenador, y no deben confundirse con acciones realizadas por un ser humano. Las verdaderas operaciones informáticas correspondientes a estos términos pueden variar dependiendo de la implementación.
II. Ejemplos de codificadores y descodificadores.
La figura 2 muestra un primer codificador 200 de audio en el cual pueden implementarse una o varias realizaciones descritas. El codificador 200 es un codificador 200 de audio perceptual, basado en transformadas. La figura 3 muestra un descodificador 300 de audio correspondiente.
La figura 4 muestra un segundo codificador 400 de audio, en el cual pueden implementarse una o varias realizaciones descritas. De nuevo, el codificador 400 es un codificador de audio perceptual, basado en transformadas, pero el codificador 400 incluye módulos adicionales para procesar audio multicanal. La figura 5 muestra un descodificador 500 de audio correspondiente.
La figura 6 muestra un codificador 600 de medios, más generalizado, en el que pueden implementarse una o varias realizaciones descritas. La figura 7 muestra un descodificador 700 de medios correspondiente.
Si bien los sistemas mostrados en las figuras 2 a 7 son generalizados, cada uno tiene características que se encuentran en sistemas del mundo real. En cualquier caso, las relaciones entre estos módulos dentro de los codificadores y descodificadores indican flujos de información en los codificadores y descodificadores; otras relaciones no se muestran por simplicidad. Dependiendo de la implementación y del tipo de compresión deseada, los módulos de un codificador o descodificador pueden ser añadidos, omitidos, divididos en múltiples módulos, combinados con otros módulos, y/o sustituidos con módulos similares. En realizaciones alternativas, codificadores y descodificadores con módulos diferentes y/o con otras combinaciones, procesan datos de audio o algún otro tipo de datos, de acuerdo con una o varias realizaciones descritas. Por ejemplo, en las figuras 2 a 7, los módulos que
procesan coeficientes espectrales pueden ser utilizados para procesar solamente coeficientes en uno o varios rangos secundarios de banda base o de frecuencia base (tal como a frecuencias inferiores), con diferentes módulos (no mostrados) procesando coeficientes espectrales en otros rangos secundarios de frecuencia (tales como frecuencias superiores).
A. Primer codificador de audio.
Globalmente, el codificador 200 recibe una serie temporal de muestras 205 de audio de entrada a ciertas velocidad y profundidad de muestreo. Las muestras 205 de audio de entrada son para audio multicanal (por ejemplo, estéreo) o audio mono. El codificador 200 comprime las muestras 205 de audio y multiplexa la información producida por los diversos módulos del codificador 200, para entregar un flujo de bits 295 en un formato tal como un formato WMA, un formato de transmisión continua avanzada (“ASF”, Advanced Streaming Format ) u otro formato.
El transformador 210 de frecuencias recibe muestras 205 de audio y las convierte en datos en el dominio espectral. Por ejemplo, el transformador 210 de frecuencias divide las muestras 205 de audio en bloques, que pueden tener tamaño variable para permitir una resolución temporal variable. Los bloques pueden solaparse para reducir discontinuidades perceptibles entre bloques, que de lo contrario podría ser introducidas por una cuantificación posterior. El transformador 210 de frecuencias aplica a los bloques una transformada solapada modulada ("MLT", Modulated Lapped Transform), DCT modulada ("MDCT", modulated DCT), o alguna otra variedad de MLT ó DCT, o algún otro tipo de transformada de frecuencia modulada o no modulada, solapada o no solapada, o utiliza codificación de tren de ondas o sub-banda. El transformador 210 de frecuencia entrega bloques de datos de coeficientes espectrales, y entrega información complementaria tal como tamaños de bloque, al multiplexor ("MUX")
280.
Para datos de audio multicanal, el transformador 220 multicanal puede convertir los múltiples canales originales, codificados independientemente, en canales codificados conjuntamente. O bien, el transformador 220 multicanal puede pasar los canales izquierdo y derecho a través de canales codificados independientemente. El transformador 220 multicanal produce información complementaria para el MUX 280 indicando el modo de canal utilizado. El codificador 200 puede aplicar rematrización multicanal a un bloque de datos de audio después de una transformada multicanal.
El modelizador 230 de la percepción modela propiedades del sistema auditivo humano, para mejorar la calidad percibida de la señal de audio reconstruida, para una velocidad de bits dada. El modelizador 230 de la percepción utiliza cualquiera entre diversos modelos auditivos.
El modelizador 230 de la percepción entrega información que el dispositivo de ponderación 240 utiliza para modular el ruido de los datos de audio, con objeto de reducir la audibilidad del ruido. Por ejemplo, utilizando cualquiera entre diversas técnicas, el dispositivo 240 de ponderación genera factores de ponderación (en ocasiones, denominados factores de escala) para matrices de cuantificación (en ocasiones, denominadas máscaras) en base a la información recibida. A continuación, el dispositivo 240 de ponderación aplica los factores de ponderación a los datos recibidos desde el transformador multicanal 220. Un conjunto de factores de ponderación puede comprimirse para una representación más eficiente.
El cuantificador 250 cuantifica la salida del dispositivo 240 de ponderación, produciendo datos de coeficientes cuantificados para el codificador entrópico 260 e información complementaria que incluye el tamaño de la etapa de cuantificación para el MUX 280. En la figura 2, el cuantificador 250 es un cuantificador escalar uniforme, adaptativo. El cuantificador 250 aplica el mismo tamaño de etapa de cuantificación a cada coeficiente espectral, pero el propio tamaño de la etapa de cuantificación puede cambiar entre una iteración de un bucle de cuantificación y la siguiente, para afectar a la velocidad de bits de la salida del codificador entrópico 260. Otras clases de cuantificación son la cuantificación no uniforme, la cuantificación vectorial y/o la cuantificación no adaptativa.
El codificador entrópico 260 comprime sin pérdidas los datos de coeficientes cuantificados, recibidos desde el cuantificador 250, por ejemplo, llevando a cabo una codificación de serie-nivel y una codificación de longitud variable vectorial. En las secciones III hasta V se describen en detalle diversos mecanismos para codificación entrópica (potencialmente, incluyendo preprocesamiento) en algunas realizaciones. Alternativamente, el codificador entrópico 260 utiliza alguna otra forma de combinación de mecanismos de codificación entrópica. El codificador entrópico 260 puede calcular el número de bits gastados codificando información de audio, y pasar esta información al controlador 270 de velocidad/calidad.
El controlador 270 funciona junto con el cuantificador 250 para regular la velocidad de bits y/o la calidad de la salida del codificador 200. El controlador 270 entrega el tamaño de la etapa de cuantificación al cuantificador 250, con el objetivo de satisfacer restricciones de velocidad de bits y calidad.
Además, el codificador 200 puede aplicar sustitución de ruido y/o truncado de banda a un bloque de datos de audio.
El MUX 280 multiplexa la información complementaria recibida desde los otros módulos del codificador 200 de audio, junto con los datos sometidos a codificación entrópica, recibidos desde el codificador entrópico 260. El MUX 280 puede incluir una memoria tampón virtual que almacena el flujo de bits 295 a ser entregado por el codificador
200.
B. Primer descodificador de audio.
Globalmente, el descodificador 300 recibe un flujo de bits 305 de información de audio comprimida que incluye datos sometidos a codificación entrópica, así como información complementaria, a partir de la cual el descodificador 300 reconstruye muestras de audio 395.
El desmultiplexor ("DEMUX") 310 realiza un análisis sintáctico de la información en el flujo de bits 305 y envía información a los módulos del descodificador 300. El DEMUX 310 incluye una o varias memorias intermedias para compensar las variaciones a corto plazo en la velocidad de bits debidas a fluctuaciones en la complejidad del audio, a la variabilidad temporal de la red, y/o a otros factores.
El descodificador entrópico 320 descomprime sin pérdidas códigos entrópicos recibidos desde el DEMUX 310, produciendo datos de coeficientes espectrales cuantificados. El descodificador entrópico 320 aplica habitualmente la inversa de la técnica de codificación entrópica utilizada en el codificador. En las secciones III a V se describen en detalle diversos mecanismos para la descodificación entrópica en algunas realizaciones.
El cuantificador inverso 330 recibe un tamaño de etapa de cuantificación procedente del DEMUX 310, y recibe datos de coeficientes espectrales cuantificados procedentes del descodificador entrópico 320. El cuantificador inverso 330 aplica el tamaño de etapa de cuantificación a los datos de coeficientes de frecuencia cuantificados, para reconstruir parcialmente los datos de coeficientes de frecuencia, o lleva a cabo de otro modo la cuantificación inversa.
Desde el DEMUX 310, el generador de ruido 340 recibe información que indica qué bandas en un bloque de datos están sustituidas con ruido así como cualesquiera parámetros para la forma del ruido. El generador 340 de ruido genera los modelos para las bandas indicadas, y pasa la información al dispositivo de ponderación inversa 350.
El dispositivo de ponderación inverso 350 recibe los factores de ponderación desde el DEMUX 310, modelos para cualesquiera bandas sustituidas con ruido desde el generador 340 de ruido, y los datos de coeficientes de frecuencia reconstruidos parcialmente, procedentes del cuantificador inverso 330. Cuando es necesario, el dispositivo de ponderación inversa 350 descomprime los factores de ponderación. El dispositivo de ponderación inversa 350 aplica los factores de ponderación a los datos de coeficientes de frecuencia reconstruidos parcialmente, para bandas que no han sido sustituidas con ruido. El dispositivo de ponderación inversa 330 añade a continuación los modelos de ruido recibidos desde el generador 340 de ruido para las bandas sustituidas con ruido.
El transformador multicanal inverso 360 recibe los datos de coeficientes espectrales reconstruidos, procedentes del dispositivo de ponderación inversa 350, y la información del modo de canal procedente del DEMUX 310. Si el audio multicanal está en canales codificados independientemente, el transformador multicanal inverso 360 pasa los canales. Si los datos multicanal están en canales codificados conjuntamente, el transformador multicanal inverso 360 convierte los datos en canales codificados independientemente.
El transformador inverso 370 de frecuencia recibe los datos de coeficientes espectrales entregados por el transformador multicanal 360, así como información complementaria tal como tamaños de bloque, procedente del DEMUX 380. El transformador inverso de frecuencia 370 aplica la inversa de la transformada de frecuencia utilizada en el codificador, y entrega bloques de muestras de audio reconstruidas 395.
C. Segundo codificador de audio.
Haciendo referencia a la figura 4, el codificador 400 recibe una serie temporal de muestras de audio de entrada 405, a cierta velocidad y profundidad de muestreo. Las muestras 405 de audio de entrada son para audio multicanal (por ejemplo, estéreo) o audio mono. El codificador 400 comprime las muestras de audio 405 y multiplexa la información producida por los diversos módulos del codificador 400 para entregar un flujo de bits 495 en un formato, tal como un formato WMA Pro u otro formato.
El codificador 400 selecciona entre múltiples modelos de codificación para las muestras de audio 405. En la figura 4, el codificador 400 conmuta entre un modo de codificación sin pérdidas mixto/puro y un modo de codificación con pérdidas. El modo de codificación sin pérdidas incluye el codificador sin pérdidas mixto/puro 472 y, habitualmente, se utiliza para compresión de alta calidad (y elevada velocidad de bits). El modo de codificación con pérdidas incluye componentes tales como el dispositivo de ponderación 442 y el cuantificador 460, y se utiliza habitualmente para compresión de calidad ajustable (y velocidad de bits controlada). La decisión de la selección depende de la entrada del usuario o de otros criterios.
Para la codificación con pérdidas, de datos de audio multicanal, el pre-procesador multicanal 410 realiza opcionalmente una rematrización de las muestras de audio 45 en el dominio temporal. En algunas realizaciones, el pre-procesador multicanal 410 realiza selectivamente una rematrización de las muestras de audio 405 para descartar uno o varios canales codificados, o incrementar la correlación entre canales en el codificador 400, mientras sigue permitiendo la reconstrucción (en alguna forma) en el descodificador 500. El pre-procesador multicanal 410 puede enviar al MUX 490 información complementaria, tal como instrucciones para el procesamiento posterior multicanal.
El módulo 420 de división en ventanas divide una trama de muestras 405 de entradas de audio en bloques de subtrama (ventanas). Las ventanas pueden tener tamaños variables en el tiempo y funciones de modulación de ventanas. Cuando el codificador 400 utiliza codificación con pérdidas, las ventanas de tamaño variable permiten una resolución temporal variable. El módulo 420 de división en ventanas entrega bloques de datos divididos, y entrega información complementaria, tal como tamaños de bloque, al MUX 490.
En la figura 4, el configurador 422 de mosaicos divide tramas de audio multicanal en un esquema por canal. El configurador 422 de mosaicos divide independientemente cada canal en la trama, si lo permite la calidad/velocidad de bits. Por ejemplo, el configurador 422 de mosaicos agrupa ventanas del mismo tamaño que son situadas conjuntamente en el tiempo, como un mosaico.
El transformador de frecuencia 430 recibe muestras de audio, y las convierte en datos en el dominio de frecuencias, aplicando una transformada tal como se ha descrito anteriormente para el transformador de frecuencia 210 de la figura 2. El transformador 430 de frecuencia entrega al dispositivo de ponderación 442 bloques de datos de coeficientes espectrales, y entrega al MUX 490 información complementaria, tal como tamaños de bloques. El transformador 430 de frecuencias entrega los coeficientes de frecuencia y la información complementaria al modelizador 440 de la percepción.
El modelizador 440 de la percepción modeliza propiedades del sistema auditivo humano, procesando datos de audio de acuerdo con un modelo auditivo.
El dispositivo de ponderación 442 genera factores de ponderación para matrices de cuantificación, en base a la información recibida desde el modelizador 440 de la percepción. El dispositivo de ponderación 442 aplica los factores de ponderación a los datos recibidos desde el transformador de frecuencia 430. El dispositivo de ponderación 442 entrega información complementaria, tal como matrices de cuantificación y factores de ponderación de canal, al MUX 490, y las matrices de cuantificación pueden ser comprimidas.
Para datos de audio multicanal, el transformador multicanal 450 puede aplicar una transformada multicanal. Por ejemplo, el transformador multicanal 450 aplica de manera selectiva y flexible la transformada multicanal, a parte de los canales y/o de las bandas de cuantificación en el mosaico, pero no a la totalidad. El transformador multicanal 450 utiliza selectivamente matrices predefinidas o matrices a medida, y aplica compresión eficiente a las matrices a medida. El transformador multicanal 450 produce información complementaria para el MUX 490 que indica, por ejemplo, las transformadas multicanal utilizadas y las partes de mosaico transformadas multicanal.
El cuantificador 460 cuantifica la salida del transformador multicanal 450, produciendo datos de coeficientes cuantificados para el codificador entrópico 470 e información complementaria que incluye tamaños de etapas de cuantificación, para el MUX 490. En la figura 4, el cuantificador 460 es un cuantificador escalar adaptativo, uniforme, que calcula un factor de cuantificación por mosaico, pero en lugar de esto el cuantificador 460 puede llevar a cabo alguna otra clase de cuantificación.
El codificador entrópico 460 comprime sin pérdidas datos de coeficientes cuantificados recibidos desde el cuantificador 460, en general tal como se ha descrito anteriormente haciendo referencia al codificador entrópico 260 de la figura 2. En las secciones III a V se describen en detalle diversos mecanismos para codificación entrópica (potencialmente, incluyendo preprocesamiento) en algunas realizaciones.
El controlador 480 funciona junto con el cuantificador 460 para regular la velocidad de bits y/o la calidad de la salida del codificador 400. El controlador 480 entrega los factores de cuantificación al cuantificador 460, con el objetivo de satisfacer restricciones de calidad y/o de velocidad de bits.
El codificador sin pérdidas mixto/puro 472 y el codificador entrópico asociado 474 comprimen datos de audio para el modo de codificación sin pérdidas mixto/puro. El codificador 400 utiliza el modo de codificación sin pérdidas mixto/puro para una secuencia completa, o conmuta entre modos de codificación en un esquema trama a trama, bloque a bloque, o mosaico a mosaico.
El MUX 490 multiplexa la información complementaria recibida desde los otros módulos del codificador 400 de audio, junto con los datos sometidos a codificación entrópica, recibidos desde los codificadores entrópicos 470, 474. El MUX 490 comprende una o varias memorias intermedias para el control de velocidad, o para otros propósitos.
D. Segundo descodificador de audio.
Haciendo referencia a la figura 5, el segundo descodificador de audio 500 recibe un flujo de bits 505 de información de audio comprimida. El flujo de bits 505 incluye datos sometidos a codificación entrópica, así como información complementaria a partir de la cual el descodificador 500 reconstruye las muestras de audio 595.
El DEMUX 510 analiza sintácticamente la información en el flujo de bits 505 y envía información a los módulos del descodificador 500. El DEMUX 510 incluye una o varias memorias intermedias para compensar las variaciones a corto plazo en la velocidad de bits, debidas a fluctuaciones en la complejidad del audio, la variabilidad temporal de la red y/u otros factores.
El descodificador entrópico 520 descomprime sin pérdidas códigos entrópicos recibidos desde el DEMUX 510, habitualmente aplicando la inversa de las técnicas de codificación entrópica utilizadas en el codificador 400. Cuando se descodifican datos comprimidos en el modo de codificación con pérdidas, el descodificador entrópico 520 produce datos de coeficientes espectrales cuantificados. En las secciones III a V se describen en detalle diversos mecanismos para la descodificación entrópica en algunas realizaciones.
El descodificador sin pérdidas mixto/puro 522 y el descodificador o descodificadores entrópicos asociados 520 descomprimen sin pérdidas datos de audio codificados por el modo de codificación sin pérdidas mixto/puro.
El descodificador 530 de configuración de mosaicos recibe y, si es necesario, descodifica información que indica los modelos de mosaicos para tramas procedentes del DEMUX 590. La información de modelos de mosaico puede ser sometida a codificación entrópica o parametrizada de otro modo. A continuación, el descodificador 530 de configuración de mosaicos pasa la información del modelos de mosaico a algunos otros módulos del descodificador
500.
El transformador multicanal inverso 540 recibe del descodificador entrópico 520 los datos de coeficientes espectrales cuantificados, así como información del modelo de mosaico procedente del descodificador 530 de configuración de mosaicos, e información complementaria procedente del DEMUX 510 que indica, por ejemplo, la transformada multicanal utilizada y partes de mosaico transformadas. Utilizando esta información, el transformador multicanal inverso 540 descomprime, si es necesario, la matriz transformada, y aplica de manera selectiva y flexible una o varias transformadas multicanal inversas a los datos de audio.
El cuantificador inverso/dispositivo de ponderación inversa 550 recibe factores de cuantificación de mosaico y de canal así como matrices de cuantificación procedentes del DEMUX 510, y recibe datos de coeficientes espectrales cuantificados procedentes del transformador multicanal inverso 440. El cuantificador inverso/dispositivo de ponderación inversa 550 descomprime cuando es necesario la información de factor/matriz de cuantificación recibida, y a continuación lleva a cabo la ponderación y la cuantificación inversas.
El transformador inverso 560 de frecuencia recibe los datos de coeficientes espectrales entregados por el cuantificador inverso/dispositivo de ponderación inversa 550, así como información complementaria procedente del DEMUX 510, y la información del modelo de mosaico procedente del descodificador 530 de configuración de mosaicos. El transformador inverso 570 de frecuencia aplica la inversa de la transformada de frecuencia utilizada en el codificador, y entrega bloques al dispositivo de superposición/sumador 570.
Además de recibir información del modelo de mosaico procedente del descodificador 530 de configuración de mosaicos, el dispositivo de superposición/sumador 570 recibe información codificada procedente del transformador inverso 560 de frecuencia y/o del descodificador sin pérdidas mixto/puro 522. El dispositivo de superposición/sumador 570 superpone y suma datos de audio si es necesario, e intercala tramas u otras secuencias de datos de audio codificados con modos diferentes.
El post-procesador multicanal 580 realiza una rematrización de las muestras de audio en el dominio de temporal, entregadas por el dispositivo de superposición/sumador 570. Para un post-procesamiento controlado en flujo de bits, las matrices transformadas de post-procesamiento varían en el tiempo y son señalizadas o incluidas en el flujo de bits 505.
E. Codificador de medios generalizado.
La figura 6 muestra partes de un codificador de medios generalizado 600 que codifica audio, video, u otro contenido de medios. Por simplicidad, no se muestran numerosos módulos del codificador 600 y tipos de información complementaria que pueden depender del tipo de contenido de medios.
Tal como los codificadores 200, 400 mostrados en las figuras 2 y 4, respectivamente, el codificador 600 está basado en transformadas, asumiendo que la entrada mostrada en la figura 6 son coeficientes espectrales no cuantificados
605. Sin embargo, en algunas realizaciones uno o varios de los mecanismos de codificación entrópica descritos en el presente documento (por ejemplo, un mecanismo descrito en la sección V) se lleva a cabo para alguna otra clase de entrada.
El cuantificador 620 cuantifica los coeficientes 605, produciendo datos de coeficientes cuantificados. Por ejemplo, el cuantificador 620 es un cuantificador escalar adaptativo, uniforme, o alguna otra clase de cuantificador.
El preprocesador 640 de codificación entrópica lleva a cabo selectivamente un preprocesamiento previo a la codificación entrópica. Por ejemplo, el preprocesador 640 lleva a cabo predicción de coeficientes sobre coeficientes espectrales cuantificados, tal como se describe en la sección III. O bien, el preprocesador 640 reordena coeficientes espectrales cuantificados, tal como se describe en la sección IV. Alternativamente, el preprocesador 640 lleva a cabo algún otro tipo de preprocesamiento.
Además de coeficientes preprocesados, el preprocesador 640 entrega información complementaria que describe el preprocesamiento al flujo de bits de salida 695. Por ejemplo, la información complementaria incluye factores de predicción utilizados en la predicción de coeficientes, tal como se describe en la sección III. O bien, la información complementaria incluye información utilizada en la reordenación de coeficientes espectrales cuantificados, tal como se describe en la sección IV.
El codificador entrópico 660 comprime sin pérdidas datos de coeficientes cuantificados, por ejemplo, llevando a cabo codificación de serie-nivel y codificación vectorial de longitud variable. La sección V describe mecanismos para codificación entrópica adaptativa. Alternativamente, el codificador entrópico 660 utiliza alguna otra forma de combinación de mecanismos de codificación entrópica.
Si bien la figura 6 muestra simplemente el preprocesador 640 proporcionando una entrada al codificador entrópico 660, el codificador entrópico 660 proporciona alternativamente retroalimentación al preprocesador 640, la cual es utilizada por el preprocesador 640 para ajustar el preprocesamiento. Por ejemplo, el preprocesador 640 ajusta la reordenación de coeficientes en base a la retroalimentación procedente del codificador entrópico 660, de manera que la entrada al codificador entrópico 660 se ajusta mejor a un modelo de codificación entrópica.
F. Descodificador de medios generalizado.
La figura 7 muestra partes de un descodificador de medios generalizado 700 que descodifica audio, video, u otro contenido de medios. Por simplicidad, no se muestran numerosos módulos del descodificador 700 y tipos de información complementaria, que pueden depender del tipo de contenido de medios.
Tal como los descodificadores 300, 500 mostrados en las figuras 3 y 5 respectivamente, el descodificador 700 está basado en transformadas, asumiendo que la salida mostrada en la figura 7 son coeficientes espectrales reconstruidos 705. Sin embargo, en algunas realizaciones uno o varios de los mecanismos de descodificación entrópica descritos en el presente documento (por ejemplo, un mecanismo descrito en la sección V) se llevan a cabo para alguna otra clase de salida.
El descodificador entrópico 760 descomprime sin pérdidas datos de coeficientes cuantificados, por ejemplo, llevando a cabo descodificación de serie-nivel y descodificación vectorial de longitud variable. La sección V describe mecanismos para descodificación entrópica adaptativa. Alternativamente, el descodificador entrópico 760 utiliza alguna otra forma de combinación de mecanismos de descodificación entrópica.
El postprocesador 740 de descodificación entrópica lleva a cabo selectivamente un postprocesamiento después de la descodificación entrópica. Por ejemplo, el postprocesador 740 lleva a cabo predicción de coeficientes, sobre coeficientes espectrales cuantificados, tal como se describe en la sección III. O bien, el postprocesador 740 reordena coeficientes espectrales cuantificados, tal como se describe en la sección IV. Alternativamente, el postprocesador 740 lleva a cabo algún otro tipo de postprocesamiento.
Aparte de coeficientes sometidos a descodificación entrópica, el postprocesador 740 recibe información complementaria que describe el postprocesamiento, desde el flujo de bits 795. Por ejemplo, la información complementaria incluye factores de predicción utilizados en la predicción de coeficientes, tal como se describe en la
sección III. O bien, la información complementaria incluye información utilizada en la reordenación de coeficientes espectrales cuantificados, tal como se describe en la sección 4.
El cuantificador inverso 720 lleva a cabo cuantificación inversa, produciendo datos de coeficientes reconstruidos
705. Por ejemplo, el cuantificador inverso 720 es un cuantificador inverso escalar uniforme, adaptativo, o alguna otra clase de cuantificador.
III. Predicción de coeficientes en el dominio espectral para codificación y descodificación.
Un codificador de audio utiliza frecuentemente codificación de transformada, seguida por cuantificación y codificación entrópica para conseguir comprensión. Cuando se utiliza una transformada fija, para algunos modelos de señales de audio, permanece cierta correlación entre coeficientes adyacentes después de la transformada. A continuación se describen diversas técnicas y herramientas que explotan dicha correlación para mejorar la eficiencia de la codificación. En particular, en algunas realizaciones, un codificador tal como uno mostrado en las figuras 2, 4 ó 6, lleva a cabo predicción de coeficientes, sobre coeficientes espectrales cuantificados, durante la codificación. Un descodificador correspondiente (tal como uno mostrado en las figuras 3, 5 ó 7) lleva a cabo predicción de coeficientes, sobre coeficientes espectrales cuantificados, durante la descodificación.
A. Ejemplo de dominio del problema.
En un codificador de audio típico que comprime audio como una forma de onda, una señal de audio de entrada es transformada utilizando una MDCT de tamaño de entrada variable u otra transformada con una ventana de tamaño variable. Por ejemplo, supóngase que el análisis por división en ventanas del audio estéreo mostrado en la figura 8a tiene como resultado la configuración de ventanas mostrada en la figura 8b. En general, una configuración de ventanas de este tipo reduce el pre-eco y el post-eco en las señales codificadas (utilizando ventanas más cortas para segmentos transitorios), facilitando al mismo tiempo la eficiencia de codificación global (utilizando ventanas más largas para otros segmentos). Un objetivo del análisis por división en ventanas, es identificar límites de ventana, tales que la señal en el interior de cualquier ventana dada es fundamentalmente estacionaría.
Los coeficientes espectrales, antes o después de la transformada de canal, son cuantificados. Convencionalmente, se asume que los coeficientes espectrales de una subtrama u otra ventana no tienen ninguna correlación lineal entre ellos. En cambio, se asume que los coeficientes espectrales tienen habitualmente alguna relación estadística de orden superior, que los codificadores intentan explotar durante la codificación entrópica.
En la práctica, en diversas circunstancias no se cumplen varias hipótesis que están implícitas en dicha codificación. Por ejemplo, para ciertos tipos y modelos de señal de audio, los coeficientes espectrales para una subtrama u otra ventana no están necesariamente descorrelacionados. Por muchas de las mismas razones por las que una señal en una ventana puede ser no estacionaria (ver más abajo), los coeficientes espectrales pueden mostrar correlación lineal. Los actuales codificadores basados en la forma de onda no consiguen sacar una ventaja de dicha correlación en la codificación entrópica.
Como otro ejemplo, cuando se aplica análisis por división en ventanas a algunas señales de audio, la señal en el interior de la ventana concreta no es necesariamente estacionaría. Si la entrada de audio cambia sustancialmente con el tiempo (por ejemplo, para una señal de voz), incluso las ventanas cortas pueden ser insuficientes para aislar segmentos transitorios. O, si la memoria intermedia en un controlador de velocidad está llena, el controlador puede forzar al codificador a utilizar ventanas mayores para reducir la velocidad de bits, incluso si de lo contrario pudieran utilizarse ventanas menores. O, si la transición es lenta, el análisis por división en ventanas puede no conseguir detectar el transitorio, de tal modo que no se introducen ventanas más cortas. O bien, el análisis por división en ventanas puede proteger contra pre-eco introducido solamente por un transitorio por trama, y no por otros transitorios en la trama. O la señal en el interior de una ventana puede ser no estacionaría por alguna otra razón.
Los factores de escala pueden ayudar a controlar la distribución espectral de la distorsión. Sin embargo, en relación con la distribución temporal de la distorsión, la simple cuantificación sobre un espectro introduce una distorsión que es constante sobre un bloque completo transformado, lo que puede provocar una distorsión audible en segmentos temporales de la trama.
La modulación de ruido temporal ("TNS", Temporal Noise Shaping) es una tecnología de ciertas variantes de MPEG, que utiliza un enfoque predictivo en el dominio de frecuencias para modular el ruido de cuantificación en el tiempo. Con TNS, un codificador aplica un filtro de predicción a los coeficientes espectrales y cuantifica la señal filtrada, con objeto de limitar la ofuscación o el ruido de cuantificación a través de una ventana temporal completa. Las figuras 9 y 10 muestran TNS en un codificador y un descodificador, respectivamente.
Haciendo referencia a la figura 9, el codificador calcula la diferencia entre un coeficiente espectral no cuantificado 905 y un predictor, que es una combinación de dos coeficientes reconstruidos anteriores. Para la combinación, dos
coeficientes retardados temporalmente (en retardos 910 y 912), reconstruidos, son multiplicados cada uno por un factor de predicción 911, 913, y sumados entre sí. Los factores de predicción 911, 913 son cuantificados e incluidos en el flujo de bits 995. El cuantificador 970 cuantifica el valor diferencial, y el codificador entrópico 990 somete a codificación entrópica el valor diferencial cuantificado para entregarlo en el flujo de bits 995. El cuantificador inverso 980 reconstruye el valor diferencial y lo añade al predictor para el coeficiente 905. Esto tiene como resultado una reconstrucción del coeficiente, que es almacenado en memoria tampón en el primer retardo 910, y a continuación en el segundo retardo 912, para la contribución al predictor para un coeficiente de subsiguiente 905.
En el descodificador correspondiente, el descodificador entrópico 1090 somete a descodificación entrópica un valor diferencial procedente del flujo de bits 1095, y el cuantificador inverso 1080 realiza cuantificación inversa del valor diferencial. El descodificador combina el valor diferencial con un predictor, para producir un coeficiente espectral reconstruido 1005, en donde el predictor es una combinación de dos coeficientes reconstruidos previamente. El cálculo de la combinación involucra dos retardos 1010, 1012 y dos factores de predicción 1011, 1013, que son recuperados del flujo de bits 1095. El coeficiente espectral reconstruido 1005 es almacenado en memoria intermedia en el primer retardo 1010, y a continuación en el segundo retardo 1012, para su contribución al predictor para un coeficiente posterior 1005.
La TNS en la AAC MPEG permite hasta tres distintos filtros (o predictores) de respuesta infinita al impulso, a aplicar a diferentes regiones espectrales de una señal de entrada. Los coeficientes de los filtros son cuantificados e incluidos en el flujo de bits.
Incluso cuando la AAC de MPEG permite el uso de ventanas cortas, la TNS no se utiliza en las ventanas cortas, puesto que la información total requerida para la información de descripción del predictor es relativamente grande, lo que tiene como resultado menos bits para valores espectrales. De este modo, la TNS se permite solamente para ventanas largas en AAC de MPEG, lo que limita la utilidad de la TNS.
Asimismo, tal como se muestra en las figuras 9 y 10, la predicción en TNS se produce en el dominio no cuantificado/reconstruido. Como resultado, un descodificador tiene que intercalar operaciones de cuantificación inversa y predicción (y, posiblemente, incluso descodificación entrópica), lo que tiene como resultado una complejidad incrementaba. Adicionalmente, para la predicción en el dominio no cuantificado/reconstruido, la operación TNS es especificada en AAC de MPEG como una operación de coma flotante, lo que provoca dificultades en implementaciones de punto fijo.
El predictor TNS es un predictor de segundo orden, que requiere dos multiplicaciones para la operación de predicción en cada coeficiente espectral. En el lado del codificador, el diseño de predictores eficaces puede ser difícil, y las predicciones inestables pueden constituir un problema.
Una arquitectura similar a la mostrada en las figuras 9 y 10, puede ser utilizada para la modulación diferencial por códigos de pulsos, en donde un codificador calcula la diferencia entre una muestra temporal y un predictor, y el predictor se basa en factores de predicción y muestras temporales cuantificadas inversas, almacenadas en memorias tampón. Habitualmente, la predicción utiliza un predictor detallado, que es difícil de diseñar y a menudo inestable, y que requiere señalización extensiva y lógica de reconstrucción. Además, la eficiencia de compresión de dichos escenarios no es buena.
En resumen, han sido descritos varios problemas que pueden ser tratados por técnicas y herramientas de predicción de coeficientes. Sin embargo, no es necesario aplicar dichas técnicas y herramientas de predicción de coeficientes, con objeto de tratar algunos o la totalidad de estos problemas.
B. Ejemplos de arquitecturas para predicción de coeficientes.
En algunas realizaciones, durante la codificación un codificador lleva a cabo la predicción de coeficientes sobre coeficientes espectrales cuantificados, y durante la descodificación un descodificador lleva a cabo la predicción de coeficientes sobre coeficientes espectrales cuantificados. En ciertos modelos y tipos de contenidos, la predicción de coeficientes reduce la redundancia en los coeficientes espectrales, con objeto de mejorar la eficiencia de la subsiguiente codificación entrópica. La predicción es reversible (durante la descodificación, la predicción de coeficientes (seguida a la descodificación entrópica) refleja la predicción de coeficientes en el codificador).
La figura 11 muestra un codificador con predicción de coeficientes espectrales cuantificados. Por ejemplo, el codificador es una versión modificada del codificador mostrado en la figura 2 ó 4, con etapas añadidas para calcular un predictor y un valor diferencial. O bien, el codificador es una versión modificada del codificador mostrado en la figura 6, con predicción de coeficientes como el preprocesamiento previo a la codificación entrópica.
Haciendo referencia a la figura 11, el codificador calcula la diferencia (denominada, asimismo, predicción residual) entre un coeficiente espectral cuantificado 1105 y un predictor. Para el predictor, un coeficiente espectral
cuantificado retardado temporalmente (en el retardo 1110) es multiplicado por un factor de predicción 1111. El factor de predicción 1111 es señalizado como información complementaria en el flujo de bits 1195. El codificador entrópico 1190 realiza codificación entrópica sobre el valor diferencial, para entregarlo en el flujo de bits 1195. El coeficiente espectral cuantificado 1105 es, asimismo, almacenado en memoria tampón en el primer retardo 1110, para el cálculo del predictor para un subsiguiente coeficiente espectral cuantificado 1105.
La figura 12 muestra un descodificador correspondiente, con predicción de los coeficientes espectrales cuantificados. Por ejemplo, el descodificador es una versión modificada del descodificador mostrado en la figura 3 ó 5, con etapas añadidas para calcular un predictor y combinar el predictor con un valor diferencial. O el descodificador es una versión modificada del descodificador mostrado en la figura 7, con predicción de coeficientes como postprocesamiento posterior a la descodificación entrópica.
Haciendo referencia a la figura 12, un descodificador entrópico 1290 descodifica un valor diferencial a partir del flujo de bits 1295. El descodificador calcula un predictor y combina el valor diferencial con el predictor, produciendo un coeficiente espectral cuantificado 1205. Para el predictor, un coeficiente espectral cuantificado retardado temporalmente (en el retardo 1210) es multiplicado por un factor de predicción 1211. El factor de predicción 1211 es sometido a análisis sintáctico desde el flujo de bits 1295. Asimismo, el coeficiente espectral cuantificado 1205 es almacenado en memoria intermedia en el primer retardo 1210, para el cálculo del predictor para un subsiguiente coeficiente espectral cuantificado 1205.
En las figuras 11 y 12, las operaciones de predicción y diferencial en el codificador y las operaciones de predicción y de suma en el descodificador, se producen en el dominio cuantificado. Esto simplifica el diseño del codificador y del descodificador y la complejidad, en la medida en que las operaciones se producen en el mismo dominio.
En algunas implementaciones, las operaciones de predicción, suma y resta, se producen sobre valores enteros. Habitualmente, esto simplifica la implementación puesto que las operaciones pueden ser realizadas con operaciones con enteros, frente a operaciones de coma flotante. Para simplificar más la predicción, puede cuantificarse un factor de predicción en un rango comprendido entre -1 y 1, utilizando un tamaño de etapa uniforme de 0,25. A continuación, las operaciones de multiplicación para el predictor pueden ser implementadas utilizando operaciones binarias de desplazamiento/suma.
En las figuras 11 y 12, el predictor es un predictor de primer orden, lo cual reduce de nuevo la complejidad del sistema del codificador/descodificador ("códec"). Con un predictor adaptativo de primer orden, el factor de predicción cambia, de manera que no es necesario utilizar el factor de predicción a largo plazo. Para un predictor de primer orden, un test de estabilidad es trivial. Por ejemplo, el codificador simplemente restringe el factor de predicción, a estar comprendido dentro del rango de –1 a +1, incluidos. Alternativamente, el predictor es un predictor de orden superior. Por ejemplo, el predictor tiene hasta 16 factores de predicción para un predictor de orden 16-ésimo.
Para la predicción adaptativa de coeficientes, el codificador cambia el factor de predicción entre subtrama y subtrama, o según otro esquema. Por ejemplo, el codificador divide una subtrama en múltiples segmentos de tamaño uniforme y calcula un factor de predicción por segmento. En relación con la señalización, el codificador señaliza el número de segmentos para la subtrama, así como los factores de predicción. Es decir, si una subtrama de 2048 coeficientes espectrales es dividida en 16 segmentos, el codificador señaliza el número de segmentos y un factor de predicción por cada segmento de 128 coeficientes. El número de segmentos por subtrama es señalizado una vez por secuencia, una vez por subtrama, o según otro esquema. Alternativamente, los elementos tienen longitudes variables y/o el codificador utiliza un mecanismo diferente para señalizar factores de predicción (por ejemplo, señalizado solamente cambios en los factores de predicción, o señalización un factor de predicción y un número de segmentos para el cual es utilizado el factor de predicción).
Para algunas entradas, la predicción de coeficientes no mejora el rendimiento. Aparte de deshabilitar la predicción de coeficientes en un esquema segmento a segmento (descrito a continuación), un codificador y un descodificador pueden deshabilitar la predicción de coeficientes para una secuencia completa (por ejemplo, con un indicador de activación/desactivación de la capa de secuencia) o a algún otro nivel.
Cuando la predicción de coeficientes es utilizada para audio multicanal, la predicción de coeficientes se produce por canal codificado, cuando la cuantificación, etc., es posterior a la transformada multicanal durante la codificación. Durante la descodificación, la predicción de coeficientes se produce asimismo por canal codificado. De este modo, para dicho audio multicanal, la información de predicción que es señalizada por segmento o por subtrama es, habitualmente, señalizada por segmento o por subtrama de un canal codificado concreto. La predicción de canal puede deshabilitarse selectivamente por canal codificado, a nivel de secuencia o a algún otro nivel. Cuando se utiliza una predicción de coeficientes para audio multicanal, el número de segmentos por subtrama puede señalizarse por canal codificado, por subtrama de un canal codificado, o a algún otro nivel.
En algunos casos, la predicción de coeficientes proporciona una ganancia de codificación principalmente para coeficientes espectrales a frecuencias bajas y medias. Por lo tanto, la predicción de coeficientes puede deshabilitarse automáticamente para coeficientes espectrales a frecuencias superiores. O bien, si la ganancia de codificación a partir de la predicción de coeficientes es principalmente para coeficientes espectrales en rangos secundarios de frecuencia concretos, la predicción de coeficientes puede habilitarse selectivamente en dichos rangos secundarios de frecuencia y deshabilitarse en cualesquiera otros.
C. Ejemplos de técnicas para predicción de coeficientes durante la codificación.
La figura 13 muestra una técnica 1300 para la predicción de coeficientes espectrales cuantificados durante la codificación. Por ejemplo, un codificador tal como el mostrado en la figura 11 lleva a cabo la técnica 1300. Alternativamente, otro codificador lleva a cabo la técnica 1300.
Para empezar, el codificador calcula 1310 un factor de predicción para un segmento de audio. En general, el codificador calcula el factor de predicción utilizando cualquiera entre varias técnicas. Por ejemplo, para un predictor de primer orden, el codificador lleva a cabo una búsqueda exhaustiva de posibles factores de predicción con objeto de encontrar el factor de predicción final (por ejemplo, el factor que tiene como resultado un número menor de bits codificados entrópicamente). O bien, el codificador calcula una correlación constante para los coeficientes espectrales cuantificados del segmento (a saber, E{x[i-1]x[i]} / E{x[i]x[i]}), para derivar el factor de predicción. O bien, para un predictor de orden superior, el codificador utiliza un algoritmo lineal de coeficientes de predicción (por ejemplo, que implique el cálculo de autocorrelación y autocovarianza) y no se requiere estabilidad. O bien, si el orden y la precisión del filtro son flexibles, el codificador calcula el orden del predictor (primero, segundo, tercero, etc.), y valores del factor de predicción y precisión para el segmento. Alternativamente, el codificador utiliza algún otro mecanismo para calcular el factor de predicción.
En muchos casos, los coeficientes espectrales cuantificados no presentan una correlación uniforme a través de todo el espectro de una subtrama. Para mejorar la precisión en dichas situaciones, el codificador puede cambiar el factor de predicción en un esquema espectral segmento a segmento. Por ejemplo, el codificador divide el espectro completo para una subtrama (u otro bloque de coeficientes espectrales) en múltiples segmentos de tamaño uniforme, y calcula un factor de predicción por segmento. Alternativamente, el codificador calcula un factor de predicción para un segmento que es el espectro completo de una subtrama u otro bloque de coeficientes espectrales, o divide el espectro de algún otro modo.
El codificador señaliza 1320 la información del factor de predicción para el segmento. Por ejemplo, el codificador cuantifica el factor de predicción y lo señaliza en un flujo de bits. El factor de predicción puede ser sometido a codificación entrópica. El codificador puede señalizar un bit de activación/desactivación, como parte de la información del factor de predicción, con objeto de deshabilitar selectivamente la predicción de coeficientes en la descodificación, en una esquema segmento a segmento. La tabla 2 muestra representaciones de bit para un factor de predicción en una implementación en la cual los factores de predicción comprendidos en un rango de -1 a 1 están cuantificados utilizando un tamaño de etapa uniforme de 0,25.
Tabla 2. Representación del factor de predicción (información complementaria).
Factor de predicción
Representación binaria
-1,00
1000
-0,75
1001
-0,50
1010
-0,25
1011
0,00
0
0,25
1100
0,50
1101
0,75
1110
1,00
1111
Alternativamente, la información del factor de predicción es señalizada utilizando alguna otra representación.
Tal como se ha indicado anteriormente, es posible que no todos los segmentos se beneficien de la predicción de coeficientes espectrales. El factor de predicción de 0 deshabilita eficazmente la predicción para un segmento; la predicción no recibe ponderación y no tiene que ser calculada. Con los códigos mostrados en la tabla 2, el único símbolo de bit utilizado para señalizar el factor de predicción de 0 actúa como un bit activación/desactivación para el
segmento afectado. Señalizar el predictor cero con un solo bit, ahorra bits cuando el predictor cero es el factor de predicción más común.
Tal como se ha indicado anteriormente, se permiten predictores de orden superior. Para señalizar información del factor de predicción para un predictor de orden superior, por ejemplo, el codificador envía en primer lugar la precisión y el orden del predictor, y a continuación envía los factores de predicción de uno en uno.
A continuación, el codificador determina 1330 si se utiliza, o no, predicción de coeficientes espectrales para el segmento. En caso afirmativo, el codificador predice 1340 dichos uno o varios coeficientes espectrales cuantificados en el segmento, y a continuación somete a codificación entrópica 1350 el coeficiente o coeficientes codificados predictivamente. Por ejemplo, el codificador utiliza memorias intermedias de retardo y aritmética, tal como se muestra en la figura 11, para la predicción de coeficientes. Alternativamente, el codificador utiliza algún otro mecanismo de predicción. (La predicción 1340 y la subsiguiente codificación entrópica 1350 pueden llevarse a cabo iterativamente para algunos tipos de codificación entrópica 1350, pero más habitualmente se realizan por lotes para codificación vectorial de longitud variable, codificación de serie-nivel, o algún otro tipo de codificación entrópica.)
Si el codificador se salta la predicción de coeficientes 1340, el codificador simplemente somete a codificación entrópica 1350 dichos uno o varios coeficientes espectrales cuantificados. Alternativamente, el codificador sigue el trayecto de codificación predictiva cuando el factor de predicción es 0.
A continuación, el codificador determina 1360 si continuar con el segmento siguiente o finalizar la técnica 1300. Si el codificador continúa, el codificador calcula 1310 el factor de predicción para el segmento siguiente, señaliza 1320 la información del factor de predicción, y así sucesivamente.
La figura 13 muestra el cálculo y la señalización de un factor de predicción en un esquema segmento a segmento, donde el número de segmentos está predeterminado y no es señalizado. Alternativamente, el número de segmentos para los cuales son calculados y señalizados los factores de predicción, es flexible. Habitualmente, esto mejora la precisión de la predicción, al costo de una sobrecarga de bits incrementada en la especificación de la información del segmento. Para una subtrama u otro bloque, el codificador encuentra una segmentación uniforme o no uniforme (por ejemplo, que tiene como resultado el número mínimo de bits), y el número total de segmentos y/u otra información de segmentación es señalizada en el flujo de bits.
D. Ejemplos de técnicas para la predicción de coeficientes durante la descodificación.
La figura 14 muestra una técnica 1400 para la predicción, durante la descodificación, de coeficientes espectrales cuantificados. Por ejemplo, un descodificador tal como el mostrado en la figura 12, lleva a cabo la técnica 1400. Alternativamente, otro descodificador lleva a cabo la técnica 1400.
Inicialmente, el descodificador obtiene 1410 información del factor de predicción para un segmento de audio. Por ejemplo, el descodificador analiza sintácticamente la información del factor de predicción, a partir de un flujo de bits, y reconstruye un factor de predicción. Si el factor de predicción está codificado entrópicamente, el descodificador somete a descodificación entrópica al factor de predicción. Si el codificador señaliza un bit de activación/desactivación como parte de la información del factor de predicción, con objeto de habilitar/deshabilitar selectivamente la predicción de coeficientes durante la descodificación, el descodificador obtiene el bit de activación/desactivación. De este modo, el descodificador puede cambiar el factor de predicción en un esquema segmento a segmento espectral, en donde el segmento es la totalidad o parte del espectro completo de una subtrama u otro bloque en función de la implementación, y donde la información del factor de predicción es señalizada utilizando cualquiera de los mecanismos descritos anteriormente haciendo referencia a la figura 13.
El descodificador entrópico descodifica 1420 información para uno o varios coeficientes espectrales cuantificados del segmento. Cuando durante la codificación ha sido utilizada predicción de coeficientes, la información consiste en uno o varios residuos de predicción (uno o varios valores diferenciales) para el o los coeficientes espectrales cuantificados. Cuando no se ha utilizado predicción de coeficientes durante la codificación (predictor cero), la información son los propios coeficientes espectrales cuantificados.
A continuación, el descodificador determina 1430 si se ha utilizado o no predicción de coeficientes espectrales para el segmento . En caso afirmativo, el descodificador predice 1440 el o los coeficientes espectrales cuantificados en el segmento. Por ejemplo, el descodificador utiliza memorias intermedias de retardo y aritmética, tal como se muestra en la figura 12, para la predicción de coeficientes. Alternativamente, el descodificador utiliza algún otro mecanismo de predicción. (La descodificación entrópica 1420 y la predicción 1440 pueden realizarse iterativamente para algunos tipos de descodificación entrópica 1420, pero más habitualmente son realizadas por lotes para descodificación vectorial de longitud variable, descodificación de serie-nivel, o algún otro tipo de descodificación entrópica.)
En algunos casos, el descodificador se salta la predicción de coeficientes durante la descodificación, simplemente sometiendo a descodificación entrópica 1420 el o los coeficientes espectrales cuantificados. Alternativamente, el descodificador sigue el trayecto de descodificación predictiva cuando el factor de predicción es 0.
A continuación, el descodificador determina 1450 si continuar con el segmento siguiente o finalizar la técnica 1400. Si el descodificador continua, el descodificador obtiene 1410 la información del factor de predicción para el segmento siguiente, y así sucesivamente.
En la figura 14, el número de segmentos está predeterminado y no es señalizado. Alternativamente, el número de segmentos y factores de predicción es flexible, y el descodificador analiza sintácticamente la información de segmentación señalizada por el codificador.
E. Resultados.
En general, la predicción de coeficientes espectrales cuantificados mejora la eficiencia de la codificación entrópica subsiguiente, para ciertos tipos y patrones de contenidos. Por ejemplo, la predicción reduce la redundancia entre coeficientes adyacentes, haciendo más eficiente la subsiguiente codificación vectorial de longitud variable y/o codificación de serie-nivel. Por contraste, el propósito de MPEG TNS es controlar la distribución temporal de la distorsión.
Para medir la mejora en la eficiencia de la codificación, debida a la predicción de los coeficientes espectrales cuantificados, se codificó un gran conjunto de canciones de prueba utilizando predicción de coeficientes. Para una típica canción de entrada, la mayor parte de las subtramas en la canción no obtuvieron ningún beneficio utilizando predicción de coeficientes en el dominio cuantificado, sin bien algunas subtramas se beneficiaron de manera muy sustancial. Por ejemplo, los bits producidos para algunas subtramas descendieron tanto como al 30% con predicción de coeficientes espectrales cuantificados. Para algunas canciones, la reducción global de la velocidad de bits con predicción de coeficientes fue del 3% trabajando a una velocidad de bits nominal de 32 Kb/s, y la reducción global de la velocidad de bits fue del 3,75% a 128 Kb/s. Para el conjunto completo de canciones, la reducción global de la velocidad de bits estuvo en torno al 0,5%.
Si bien muchos tipos de predicción utilizan un predictor de orden superior o una precisión superior para conseguir ganancia de codificación, un predictor de primer orden con precisión relativamente baja (por ejemplo, 3 bits por valor de factor de predicción cuantificado) funciona muy bien en coeficientes espectrales cuantificados en la mayor parte de los escenarios. Habitualmente, los coeficientes espectrales cuantificados son enteros muy pequeños, de manera que incrementar la precisión del factor de predicción no cambia necesariamente el valor predicho o no lo mejora (el valor residual es un entero para codificación entrópica, y calcular el valor predicho como un entero es aceptable). Además, incluso cuando existe una correlación de orden superior en los coeficientes espectrales, habitualmente la correlación de orden superior es distorsionada por la cuantificación, de manera que no son necesarios predictores de orden superior.
Sin embargo, en algunos escenarios, cuando los tamaños de la etapa de cuantificación son pequeños y los coeficientes espectrales cuantificados tienen grandes amplitudes, predictores de orden superior y/o factores de predicción de precisión superior pueden tener como resultado mayores mejoras en la eficiencia de la codificación. Las técnicas y herramientas de predicción de coeficientes descritas anteriormente soportan predictores de orden superior y factores de predicción de precisión superior, en una forma general.
IV. Intercalación o reordenación de coeficientes espectrales.
Tal como se indicado previamente, un codificador de audio utiliza a menudo codificación de transformada seguida por cuantificación y codificación entrópica, para conseguir comprensión. Para algunos patrones de señales de audio, permanece un patrón periódico en los coeficientes espectrales después de la transformada de frecuencia. Se describen diversas técnicas y herramientas para explotar dicha redundancia con objeto de mejorar la eficiencia de codificación. En particular, en algunas realizaciones, un codificador tal como el mostrado en las figuras 2, 4 ó 6, lleva a cabo intercalación o reordenación de los coeficientes espectrales cuantificados. Un descodificador correspondiente (tal como uno mostrado en las figuras 3, 5 ó 7) invierte la intercalación o reordenación de los coeficientes espectrales cuantificados.
A. Ejemplo de dominio del problema.
Convencionalmente, se asume que los coeficientes espectrales de una subtrama u otra ventana no tienen ninguna correlación lineal entre ellos. En cambio, se asume que los coeficientes espectrales tienen habitualmente alguna relación estadística de orden superior, la cual intentan explotar los codificadores durante la codificación entrópica.
Estas hipótesis no se sostienen en ciertas circunstancias. Para ciertos tipos de patrones de señales de audio, los coeficientes espectrales para una subtrama u otra ventana no están necesariamente no correlacionados. Esto ocurre, por ejemplo, cuando una señal de audio es periódica en el dominio temporal, y los coeficientes espectrales de la señal periódica muestran, asimismo, periodicidad. En la práctica, las señales sinusoidales muestran a menudo este comportamiento, así como ciertas señales no estacionarías.
A modo ilustrativo, la figura 15a muestra una señal de audio periódica en el dominio temporal, que registra amplitudes para una serie temporal de muestras. La figura 15b muestra los coeficientes espectrales cuantificados correspondientes, a partir de una operación de DCT. En la figura 15b, hay potentes coeficientes espectrales máximos, distintos de cero, en torno a cada 57 coeficientes espectrales, y los coeficientes espectrales en otras posiciones tienen fundamentalmente un valor cero o menor. Codificar entrópicamente directamente coeficientes espectrales con esta clase de patrón periódico utilizando técnicas tales como codificación de serie-nivel o codificación vectorial de longitud variable, no es eficiente. En particular, codificar un coeficiente máximo con coeficientes de valor cero o de valores pequeños en torno al mismo, utiliza habitualmente muchos bits tanto en codificación de serie-nivel como en codificación vectorial de longitud variable. Sin embargo, este tipo de patrón de máximos es común para señales periódicas.
En resumen, han sido descritos varios problemas que pueden ser tratados mediante técnicas y herramientas de reordenación de coeficientes. Sin embargo, no es necesario aplicar dichas técnicas y herramientas de reordenación de coeficientes para tratar algunos o la totalidad de estos problemas.
B. Ejemplos de arquitecturas para reordenar coeficientes espectrales.
En algunas realizaciones, un codificador lleva a cabo reordenación sobre los coeficientes espectrales cuantificados antes de la codificación entrópica, y un descodificador correspondiente lleva a cabo reordenación sobre los coeficientes espectrales cuantificados después de la descodificación entrópica. Para ciertos patrones y tipos de contenidos tales como señales periódicas con tonos o armónicos, la reordenación reduce la redundancia en los coeficientes espectrales para mejorar la eficiencia de la subsiguiente codificación entrópica. Durante la descodificación, la reordenación (siguiente a la descodificación entrópica) compensa la reordenación en el codificador.
La figura 16 muestra un codificador con reordenación de los coeficientes espectrales cuantificados. Por ejemplo, el codificador es una versión modificada del codificador mostrado en las figuras 2 ó 4, con etapas añadidas para reordenar coeficientes espectrales. O bien, el codificador es una versión modificada del codificador mostrado en la figura 6, con reordenación como el preprocesamiento previo a la codificación entrópica.
Haciendo referencia a la figura 16, el codificador recibe los coeficientes espectrales cuantificados 1605 desde un cuantificador. Los coeficientes espectrales cuantificados son procesados por el módulo de reordenación/intercalación 1680, que reordena opcionalmente parte o la totalidad de los coeficientes espectrales 1605, señalizando la información de reordenación en el flujo de bits 1695.
Supóngase que los coeficientes espectrales cuantificados 1605 presentan un patrón periódico que puede ser explotado para mejorar la eficiencia de la codificación entrópica. Antes de la codificación entrópica, los coeficientes espectrales cuantificados son intercalados o reordenados considerando la periodicidad de los coeficientes. Por ejemplo, la reordenación agrupa conjuntamente coeficientes máximos de valor superior, lo que mejora la eficiencia de la subsiguiente codificación vectorial de longitud variable para dichos coeficientes, y la reordenación agrupa conjuntamente otros coeficientes (por ejemplo, coeficientes de valor cero y coeficientes de valor reducido entre máximos), lo que mejora la eficiencia de la subsiguiente codificación de serie-nivel para dichos coeficientes.
Para intercalar coeficientes espectrales, el codificador intercala los coeficientes espectrales a lo largo del segmento que muestra el patrón periódico. Como un simple ejemplo, el codificador explora a través de los coeficientes en los periodos, en un modo de múltiples pasadas, seleccionando en primer lugar los primeros coeficientes en los periodos respectivos, seleccionando a continuación los segundos coeficientes en los periodos respectivos, seleccionando después los terceros coeficientes en los periodos respectivos, y así sucesivamente. El codificador prosigue la reordenación hasta que todos los coeficientes han sido seleccionados. Supóngase que una serie de coeficientes espectrales incluyen cuatro periodos A, B, C y D, y que cada periodo contiene cuatro coeficientes espectrales. Antes de la intercalación, las serie es:
A0 A1 A2 A3 B0 B1 B2 B3 C0 C1 C2 C3 D0 D1 D2 D3,
y después de la intercalación, las serie es:
A0 B0 C0 D0 A1 B1 C1 D1 A2 B2 C2 D2 A3 B3 C3 D3.
De este modo, la serie reordenada sitúa los coeficientes 0, 4, 8 y 12 en primer lugar, a continuación los coeficientes 1, 5, 9 y 13, y así sucesivamente. Si, en cada periodo, solamente el primer coeficiente tiene un valor significativo, después de la intercalación solamente los primeros cuatro coeficientes en la serie tienen valores significativos, y todos los demás coeficientes tienen un valor pequeño o un valor cero. La codificación vectorial de longitud variable comprime de manera eficiente los primeros cuatro coeficientes, y la codificación de serie-nivel trata eficientemente el resto.
Volviendo a la figura 16, después de la reordenación opcional 1680, el codificador entrópico 1690 codifica entrópicamente los coeficientes espectrales (potencialmente reordenados). El codificador señaliza la información sometida a codificación entrópica, en el flujo de bits 1695.
La figura 17 muestra un descodificador correspondiente con reordenación de los coeficientes espectrales cuantificados. Por ejemplo, el descodificador es una versión modificada del descodificador mostrado en las figuras 3 ó 5, con etapas añadidas para la reordenación. O bien, el descodificador es una versión modificada del descodificador mostrado en la figura 7, con reordenación como el postprocesamiento posterior a la descodificación entrópica.
Haciendo referencia a la figura 17, el descodificador entrópico 1790 descodifica información para el coeficiente espectral cuantificado desde el flujo de bits 1795. Utilizando información de reordenación analizada sintácticamente desde el flujo de bits 1795, el módulo de reordenación/intercalación 1780 reordena opcionalmente parte o la totalidad de los coeficientes espectrales descodificados, produciendo los coeficientes espectrales cuantificados 1705 en el orden original. Esencialmente, la reordenación en el descodificador invierte la reordenación realizada en el codificador.
En la serie de ejemplo mostrada anteriormente, se lleva a cabo una simple reordenación basada en una longitud de periodo. Sin embargo, en algunos casos una simple reordenación de este tipo no tiene en cuenta información no periódica importante en un segmento, ceros importantes u otros desplazamientos en periodos específicos, y/o el agrupamiento de coeficientes máximos en los comienzos de los periodos. Información adicional de reordenación (descrita a continuación) puede tratar estos fenómenos. Para proporcionar un ejemplo numérico simple, supóngase que un segmento tiene 128 coeficientes espectrales e incluye un patrón periódico para algunos de los coeficientes. El patrón del período tiene una longitud de período promedio de 10 coeficientes, comienza en el coeficiente 19ésimo, y finaliza en el coeficiente 102-ésimo. En términos de múltiplos de la longitud del período, como una estimación aproximada, el primer periodo reordenado es el tercer periodo (coeficientes 20-29) del segmento, y el último período reordenado es el décimo periodo (coeficientes 90-99). El desplazamiento para el tercer periodo es -1 (que indica una posición de comienzo para el período en el coeficiente 19-ésimo en lugar del 20-ésimo), y el desplazamiento para el décimo periodo es 2. Pueden señalizarse asimismo desplazamientos para otros periodos, cuando proceda. Si los periodos a reordenar comienzan típicamente con múltiples coeficientes máximos, puede señalizarse un valor para indicar el número de coeficientes iniciales por periodo que deberían mantenerse adyacentes incluso después de la reordenación.
Para la reordenación de coeficientes adaptativos, el codificador cambia la reordenación de subtrama a subtrama, o sobre alguna otra base. Por ejemplo, el codificador divide una subtrama en múltiples segmentos y calcula la información de reordenación para uno o varios de los segmentos, señalizando la información de segmentación así como la información de reordenación. Alternativamente, el codificador utiliza un mecanismo diferente para segmentación y/o señalización.
Para algunas entradas, la reordenación de coeficientes no mejora el rendimiento. Aparte de deshabilitar la reordenación de coeficientes en un esquema segmento a segmento (descrito a continuación), un codificador y un descodificador pueden deshabilitar la reordenación de coeficientes para una secuencia completa (por ejemplo, con un indicador de activación/desactivación de la capa de secuencia) o a algún otro nivel.
Cuando la reordenación de coeficientes es utilizada para audio multicanal, la reordenación de coeficientes se produce por canal codificado, cuando la cuantificación, etc., ocurre más abajo que la transformada multicanal durante la codificación. Durante la descodificación, la reordenación de coeficientes se produce asimismo por canal codificado. De este modo, para audio multicanal de este tipo, la información de reordenación que es señalizada por segmento, por subtrama, o por periodo, es habitualmente señalizada por segmento, por subtrama o por periodo, para un canal codificado concreto. Cuando la reordenación de coeficientes se utiliza para audio multicanal, la información de segmentación y la información de activación/desactivación de reordenación puede ser señalizada por canal codificado, por subtrama de un canal codificado, o a algún otro nivel.
En muchos casos, la reordenación de coeficientes proporciona ganancias de codificación principalmente para coeficientes espectrales en frecuencias bajas y medias. Por lo tanto, la reordenación de coeficientes puede deshabilitarse automáticamente para coeficientes espectrales a frecuencias superiores. O bien, si la ganancia de codificación a partir de la reordenación de coeficientes es principalmente para coeficientes espectrales en rangos
secundarios de frecuencia concretos, la reordenación de coeficientes puede habilitarse selectivamente en dichos rangos secundarios de frecuencia y deshabilitarse en cualesquiera otros.
La predicción de coeficientes descrita en la sección III puede ser utilizada junto con la reordenación de coeficientes, pero la predicción de coeficientes y la reordenación de coeficientes se utilizan de manera más habitual por separado, para diferentes categorías de entradas. Cuando se utilizan conjuntamente, la predicción de coeficientes sigue a la reordenación durante la codificación, y la reordenación de coeficientes sigue a la predicción durante la descodificación, y la predicción de coeficientes se utiliza, por lo menos, sobre parte (por ejemplo, coeficientes de pico) de los coeficientes reordenados.
C. Ejemplos de técnicas para reordenar coeficientes durante la codificación.
La figura 18a muestra una técnica 1800 para reordenar los coeficientes espectrales cuantificados durante la codificación, y las figuras 18b y 18c detallan posibles modos de llevar a cabo ciertas acciones de la técnica 1800. Por ejemplo, un codificador tal como el mostrado en la figura 16 lleva a cabo la técnica 1800. Alternativamente, otro codificador lleva a cabo la técnica 1800.
Inicialmente, el codificador 1810 calcula información de reordenación para un segmento. Por ejemplo, el codificador calcula 1810 la información de reordenación, tal como se muestra en la figura 18b. Alternativamente, el codificador calcula información de reordenación diferente y/o adicional.
Haciendo referencia a la figura 18b, el codificador identifica 1812 un segmento en cuyo interior se reordenarán los coeficientes. Por ejemplo, el codificador encuentra un segmento de los coeficientes espectrales que tiene un patrón periódico. Con fines ilustrativos, en la figura 15b, solamente los primeros 800 coeficientes más o menos tienen un patrón periódico.
El codificador puede excluir de la reordenación algunos periodos del segmento. Por ejemplo, si los primeros uno o dos períodos no se parecen a los otros periodos, los primeros uno o dos periodos son excluidos del proceso de reordenación. En algunos casos, la primera parte del segmento incluye coeficientes no periódicos o ceros importantes. Así, el codificador hace un seguimiento del primer periodo a reordenar en el segmento. Igualmente, el codificador hace asimismo un seguimiento del último periodo a reordenar en el segmento.
A continuación, el codificador identifica 1814 la longitud del período del segmento. Por ejemplo, el codificador cuenta el número de máximos en el segmento y divide la longitud del segmento por el número de máximos. O bien, el codificador lleva a cabo una búsqueda exhaustiva de longitudes de periodo candidatas. O bien, el codificador busca longitudes de periodo candidatas utilizando un enfoque de refinamiento binario (a diferencia de una búsqueda exhaustiva del espacio de parámetros). O el codificador evalúa longitudes de series de coeficientes de valor cero/valor pequeño. O bien, el codificador utiliza algún otro mecanismo para identificar la longitud de periodo para el segmento. La longitud del periodo puede limitarse a valores enteros, o la longitud del periodo puede ser asimismo un valor no entero. Permitir una precisión por debajo de los enteros puede mejorar significativamente la eficiencia de la reordenación, mejorando finalmente la ganancia de la codificación entrópica.
Asimismo, el codificador identifica 1816 otra información de reordenación, que puede incluir ajustes de períodos y valores de preámbulo. Por ejemplo, en una implementación que permite longitudes de periodo no enteras, el codificador calcula otra información de reordenación, como sigue.
La posición de comienzo inicial del periodo i es redondear(i * lontitud_del_periodo), y la posición de finalización inicial del periodo i es la posición de comienzo inicial del período siguiente. El codificador mantiene una lista de posiciones de periodos, que almacena las posiciones de comienzo y/o las posiciones finales de los periodos, con fines de seguimiento. Asimismo, esto permite al codificador ajustar simplemente las posiciones de los periodos en la lista cuando evalúa diferentes posiciones.
En particular, el codificador puede desplazar la posición de comienzo y/o la posición de finalización del periodo, en uno o varios coeficientes desde la posición inicial, con objeto de mejorar la codificación entrópica. Por ejemplo, si existen varios coeficientes grandes, significativos, inmediatamente antes de la posición de comienzo inicial del periodo, el codificador desplaza un par de coeficientes a la izquierda la posición de comienzo, de manera que dichos coeficientes grandes, significativos, aparecen al principio del periodo en lugar de al final del periodo anterior. Alternativamente, el codificador utiliza algún otro mecanismo para determinar cantidades de ajuste para las posiciones de comienzo y/o finalización de los periodos a reordenar.
Asimismo, el codificador elige un valor de preámbulo. Preámbulo, indica coeficientes al comienzo de un periodo que no son reordenados entre sí. Habitualmente, el pico al comienzo de un periodo no es un solo coeficiente espectral. Puede haber dos o tres coeficientes con valores grandes al comienzo del periodo, por ejemplo, y dichos coeficientes son coeficientes de preámbulo. Los coeficientes de preámbulo son intercalados de manera especial, siendo tratados
eficazmente como un grupo para la reordenación. En otras palabras, los coeficientes de preámbulo son adyacentes incluso después de la reordenación para los periodos de segmento. El valor de preámbulo indica el número de coeficientes de preámbulo (por ejemplo, 1, 2, 3) para los periodos a reordenar. O bien, en lugar de calcular el preámbulo por segmento, el codificador calcula el preámbulo por período a reordenar.
Alternativamente, el codificador utiliza algún otro mecanismo para identificar 1816 la otra información de reordenación.
Volviendo a la figura 18a, el codificador señaliza 1830 la información de reordenación para el segmento, en el flujo de bits. Por ejemplo, el codificador señaliza 1830 la información de reordenación tal como se muestra en la figura 18c, para reordenar la información calculada tal como se muestra en la figura 18b. Alternativamente, el codificador señaliza información de reordenación diferente y/o adicional.
Haciendo referencia a la figura 18c, el codificador señaliza 1832 un bit de activación/desactivación para la reordenación. Por ejemplo, el codificador compara el costo de bits cuando se utiliza reordenación de coeficientes, con el costo de bits cuando no se utiliza reordenación de coeficientes. El codificador selecciona el modo que proporciona un mejor rendimiento, y el codificador utiliza en un único bit por segmento para indicar qué modo se selecciona. Alternativamente, el codificador señaliza información de activación/desactivación utilizando algún otro mecanismo y/o durante alguna duración diferente a un segmento completo.
Cuando se utiliza reordenación (la salida "sí" de la decisión 1834), el codificador señaliza 1836 la longitud del periodo. Cuando se permiten longitudes de periodo no enteras, la longitud del periodo puede representarse con una parte entera y una parte fraccionaria, ambas señalizadas en el flujo de bits. Una longitud de periodo entera (o la parte entera de una longitud de periodo no entera) es señalizada como un código de longitud fija ["FLC", fixed length code] con log2(longitud_de_período_más_larga) bits. Por ejemplo, la longitud de periodo más larga es 128 y la longitud del periodo entera es señalizada con log2(128) = 7 bits. Una parte fraccionaria puede señalizarse con un FLC de tres bits. Alternativamente, la longitud del período es señalizada con otro mecanismo.
Asimismo, el codificador 1838 señaliza el primer periodo para el cual serán reordenados los coeficientes. De hecho, esto indica aproximadamente la posición del comienzo para la reordenación. El primer período reordenado puede representarse en unidades de la longitud del periodo. El primer periodo reordenado es señalizado, por ejemplo, con un FLC de tres bits, en cuyo caso el primer periodo reordenado es algún periodo entre el primer período y el octavo periodo en el segmento. Alternativamente, el primer periodo reordenado es señalizado con otro mecanismo.
Asimismo, el codificador 1840 señaliza el último periodo para el cual serán reordenados los coeficientes. El último período reordenado puede representarse en unidades de la longitud del periodo. El último periodo reordenado es señalizado, por ejemplo, como un FLC con log2(máximo_número_de_periodos) bits. El codificador obtiene el número máximo de periodos a partir del número de coeficientes en el segmento y la longitud del periodo. Alternativamente, el último periodo reordenado es señalizado con otro mecanismo.
El codificador señaliza 1842 ajustes de posición. Para los periodos para los cuales se reordenarán los coeficientes, el codificador señaliza información que indica desplazamientos en relación con las posiciones iniciales de comienzo y/o de finalización. Por ejemplo, se señaliza un valor de ajuste por periodo, y el valor de ajuste es señalizado como un número de coeficientes. Dicho valor de ajuste puede ser señalizado como un FLC con log2(rango_de_desplazamiento) bits. Por lo tanto, si el valor de desplazamiento es 16, el valor de ajuste es señalizado con log2(16) = 4 bits, con un rango de ajuste de -8 ... 7 coeficientes. Alternativamente, el valor de ajuste es señalizado con otro mecanismo (por ejemplo, señalizando ajustes en relación con valores de ajuste previos (no en términos absolutos), o señalizando un ajuste para todos los periodos).
Asimismo, el codificador señaliza 1844 un valor de preámbulo. Un valor de preámbulo de algún número de coeficientes es señalizado como un FLC con log2(preámbulo_mayor + 1) bits. Por ejemplo, la longitud del preámbulo más largo es de 3 (para un preámbulo de 0, 1, 2 ó 3), y el valor de preámbulo es señalizado con log2(4) = 2 bits. Alternativamente, los valores de preámbulo son señalizados con otro mecanismo.
Volviendo a la figura 18a, el codificador determina 1860 si se utiliza o no reordenación de coeficientes. En caso negativo, el codificador simplemente realiza codificación entrópica 1880 de los coeficientes espectrales cuantificados del segmento, utilizando codificación vectorial de longitud variable, codificación de serie-nivel, o alguna otra codificación entrópica. Por otra parte, si se utiliza reordenación de coeficientes, el codificador reordena 1870, por lo menos, parte de los coeficientes del segmento y realiza codificación entrópica 1880 sobre los coeficientes (selectivamente) reordenados, utilizando codificación vectorial de longitud variable, codificación de serie-nivel o alguna otra codificación entrópica. Por ejemplo, el codificador realiza la reordenación 1870 tal como sigue, para reordenar información calculada tal como se muestra en la figura 18b y señalizada tal como se muestra en la figura 18c.
En resumen, el codificador reordena coeficientes y entrega los coeficientes a una nueva memoria intermedia de coeficientes (o, directamente, a un codificador entrópico, de manera que el proceso de reordenación no utiliza recursos extra para el almacenamiento en memoria intermedia). El codificador analiza una lista (descrita anteriormente) que indica las posiciones de comienzo y/o las posiciones de finalización de periodos para los cuales serán reordenados los coeficientes. Generalmente, el codificador trata desde el primero de dichos periodos hasta el último de dichos periodos.
Para un periodo, el codificador encuentra el primer coeficiente no procesado aún en la reordenación. Si el coeficiente está en el interior de una región de preámbulo, el codificador entrega el coeficiente y dichos uno o varios coeficientes de preámbulo, en su orden original. De lo contrario, el codificador entrega únicamente el primer coeficiente aún no procesado. A continuación, el codificador marca cualesquiera coeficientes procesados en el periodo, como habiendo sido procesados. El codificador sigue con el primer coeficiente no procesado del siguiente periodo.
Si, para algún periodo, no existen coeficientes no procesados, el codificador simplemente pasa al periodo siguiente.
Después de que el codificador verifica todos los periodos en una iteración desde el primero al último, el codificador repite desde el primer periodo. Finalmente, el codificador procesa la totalidad de los coeficientes en los periodos a reordenar. Cuando los coeficientes en el segmento no están reordenados, el codificador puede simplemente copiar dichos coeficientes a la nueva memoria intermedia de coeficientes (o enviarlos directamente al codificador entrópico en los momentos apropiados).
Alternativamente, el codificador lleva a cabo la reordenación 1870 utilizando algún otro mecanismo. O bien, el codificador lleva a cabo la reordenación 1870 de acuerdo con información de reordenación diferente y/o adicional.
A continuación, el codificador determina 1890 si continuar con el segmento siguiente o finalizar la técnica 1800. Si el codificador continúa, el codificador calcula 1810 la información de reordenación para el segmento siguiente, señaliza 1820 la información de reordenación, y así sucesivamente.
Si bien las figuras 18a hasta 18c muestran las acciones de calcular información de reordenación, como diferentes y anteriores a las acciones de señalizar información de realización, estas acciones pueden, alternativamente, intercalarse entre sí o con otras acciones.
D. Ejemplos de técnicas para reordenar coeficientes durante la descodificación.
La figura 19a muestra una técnica 1900 para la reordenación de los coeficientes espectrales cuantificados durante la descodificación, y las figuras 19b y 19c detallan posibles formas de llevar a cabo ciertas acciones de la técnica 1900. Por ejemplo, un descodificador tal como el mostrado en la figura 12, lleva a cabo la técnica 1900. Alternativamente, otro descodificador lleva a cabo la técnica 1900.
Inicialmente, el descodificador obtiene 1910 información de reordenación para un segmento. Habitualmente, el descodificador lee información complementaria procedente de un flujo de bits, para utilizar en la intercalación/reordenación. Por ejemplo, el codificador obtiene 1910 información de reordenación tal como se muestra en la figura 19b, para reordenar información señalizada tal como se muestra en la figura 18c. Alternativamente, el descodificador obtiene información de reordenación diferente y/o adicional.
Haciendo referencia a la figura 19b, el descodificador analiza sintácticamente 1912 un bit de activación/desactivación para la reordenación a partir del flujo de bits. Por ejemplo, el descodificador lee un sólo bit desde el flujo de bits, donde el único bit indica si utilizar un modo con reordenación de coeficientes o un modo sin reordenación de coeficientes. Alternativamente, la información de activación/desactivación es señalizada y analizada sintácticamente utilizando algún otro mecanismo y/o para alguna duración diferente a un segmento completo.
Cuando se utiliza reordenación de coeficientes (bifurcación "sí" de la decisión 1914), el descodificador analiza sintácticamente 1916 la longitud de período a partir del flujo de bits. Cuando se permiten longitudes de periodos no enteras, la longitud del periodo puede representarse con una parte entera y una parte fraccionaria, que son ambas analizadas sintácticamente a partir del flujo de bits. Una longitud de período entera (o una parte entera de una longitud de periodo no entera) es representada como un FLC con log2(longitud_del_periodo_más_larga) bits. Alternativamente, la longitud del período es señalizada con otro mecanismo.
Asimismo, el descodificador analiza sintácticamente 1918 el primer periodo para el cual los coeficientes serán reordenados a partir del flujo de bits, lo cual indica aproximadamente la posición de comienzo de la reordenación. El primer período reordenado puede representarse en unidades de la longitud del periodo. El primer período reordenado es representado, por ejemplo, con un FLC de tres bits. Alternativamente, el primer período reordenado es señalizado y analizado sintácticamente con otro mecanismo.
Asimismo, el descodificador analiza sintácticamente 1940 el último periodo para el cual los coeficientes serán reordenados a partir del el flujo de bits. El último período reordenado puede representarse en unidades de la longitud del periodo. El último período reordenado es señalizado, por ejemplo, como un FLC con log2(número_máximo_de_periodos) bits, donde el descodificador obtiene el número máximo de periodos a través a partir del número de coeficientes en el segmento y de la longitud del periodo. Alternativamente, el último período reordenado es señalizado y analizado sintácticamente con otro mecanismo.
Con la longitud del periodo, el primer período reordenado y el último período reordenado, el descodificador tiene información para llenar una tabla de posiciones de períodos que almacena las posiciones de comienzo y/o posiciones de finalización de los períodos, con propósitos de seguimiento. Por lo tanto, el descodificador puede reproducir la tabla de posiciones de periodos utilizada por un codificador correspondiente.
El descodificador analiza sintácticamente 1902 ajustes de posiciones a partir del flujo de bits. Para los periodos para los cuales se reordenarán los coeficientes, el descodificador analiza sintácticamente información que indica desplazamientos en relación con posiciones iniciales de comienzo y/o de finalización. Por ejemplo, se analiza sintácticamente un valor de ajuste por periodo, y el valor de ajuste es representado como un número de coeficientes. Dicho valor de ajuste puede ser representado como un FLC con log2(rango_de_desplazamiento) bits. Alternativamente, el valor de ajuste es señalizado y analizado sintácticamente por otro mecanismo.
Con la información del ajuste de posiciones, el descodificador tiene información para ajustar las posiciones de comienzo y/o las posiciones de finalización de los periodos, en la tabla de posiciones de períodos.
Asimismo, el descodificador analiza sintácticamente 1924 un valor de preámbulo. Un valor de preámbulo de algún número de coeficientes es representado como un FLC con log2(preámbulo_mayor + 1) bits. Alternativamente, el valor de preámbulo es señalizado y analizado sintácticamente por otro mecanismo.
Volviendo a la figura 19a, el descodificador realiza la descodificación entrópica 1930 de la información de coeficientes a partir del flujo de bits, utilizando descodificación vectorial de longitud variable, descodificación de serie-nivel o alguna otra descodificación entrópica. Cuando no se utilizó reordenación en la codificación, el descodificador realiza la descodificación entrópica 1930 de los coeficientes espectrales cuantificados del segmento en su orden original. Por otra parte, cuando se utilizó reordenación en la codificación, el descodificador realiza descodificación entrópica 1930 de los coeficientes espectrales cuantificados reordenados.
Asimismo, el descodificador determina 1960 si se utiliza o no reordenación de coeficientes durante la descodificación. Si se utiliza reordenación de coeficientes durante la descodificación, el descodificador reordena 1970, por lo menos, parte de los coeficientes del segmento sometidos a descodificación entrópica. Por ejemplo, el descodificador lleva a cabo la reordenación 1970 como sigue, para reordenar información recibida tal como se muestra en la figura 19b.
El descodificador genera 1972 una tabla de posiciones de períodos a partir de información de reordenación para el segmento (por ejemplo, longitud de período, primer período reordenado, último período reordenado) y aplica 1974 ajustes de períodos a la tabla. La tabla almacena las posiciones de comienzo y/o las posiciones de finalización de períodos para utilizar en la reordenación. Alternativamente, el descodificador se salta el proceso de generación de la tabla o utiliza alguna otra estructura de tabla.
A continuación, el descodificador reordena 1976 coeficientes utilizando la tabla de posiciones de períodos y el valor de preámbulo. En resumen, el descodificador reordena coeficientes y entrega los coeficientes a una nueva memoria intermedia de coeficientes, invirtiendo la reordenación realizada durante la codificación. (Alternativamente, el descodificador puede reordenar las salidas del descodificador entrópico directamente, de manera que no se utilizan recursos adicionales para el almacenamiento de coeficientes en memoria intermedia.) El descodificador utiliza la tabla de posiciones de periodos (descrita anteriormente), que indica las posiciones de comienzo y/o las posiciones de finalización de periodos para los cuales los coeficientes deben ser reordenados. En general, el descodificador procesa los coeficientes espectrales sometidos a descodificación entrópica, en el orden resultante de la descodificación entrópica. Por ejemplo, en posiciones para el primer período reordenado, el descodificador coloca el primer coeficiente no procesado así como cualesquiera coeficientes no procesados en la región de preámbulo para el primer período reordenado. A continuación, en posiciones para el segundo período reordenado, el descodificador coloca el siguiente coeficiente no procesado así como cualesquiera coeficientes no procesados en la región de preámbulo para el segundo período reordenado. El descodificador repite este proceso de preámbulo para cada uno de los periodos hasta el último período reordenado. A continuación, el descodificador coloca de manera iterativa sucesivos coeficientes no procesados, en posiciones para el primer, segundo, tercer, etc. periodos reordenados, saltando un período reordenado cuando dicho período reordenado se ha llenado. Finalmente, el descodificador procesa la totalidad de los coeficientes en los periodos a reordenar. Cuando los coeficientes en el segmento no están reordenados, el descodificador puede simplemente copiar dichos coeficientes a posiciones correspondientes en la nueva memoria intermedia de coeficientes.
Alternativamente, el descodificador lleva a cabo reordenación 1970 utilizando algún otro mecanismo. Por ejemplo, utilizando la tabla de posiciones de períodos y el valor de preámbulo, el descodificador busca a través de los coeficientes sometidos a descodificación entrópica, seleccionando y entregando coeficientes espectrales para el primer período reordenado. A continuación, el codificador busca a través de los coeficientes sometidos a descodificación entrópica, seleccionando y entregando coeficientes espectrales para el segundo período reordenado, y así sucesivamente, hasta el último período reordenado. O bien, el descodificador lleva a cabo la reordenación 1970 de acuerdo con información de reordenación diferente y/o adicional.
A continuación, el descodificador determina 1990 si continuar con el segmento siguiente o finalizar la técnica 1900. Si el descodificador continua, el descodificador obtiene 1910 la información del la reordenación para el segmento siguiente, y así sucesivamente.
Si bien las figuras 19a hasta 19c muestran las acciones de obtención de información de reordenación como diferentes y anteriores a las otras acciones de reordenación, alternativamente estas acciones están intercaladas entre sí o con otras acciones.
E. Resultados.
En general, la reordenación de los coeficientes espectrales cuantificados mejora la eficiencia de la subsiguiente codificación entrópica para señales periódicas. Por ejemplo, la reordenación agrupa localmente coeficientes que tienen valores similares, haciendo más eficiente la subsiguiente codificación vectorial de longitud variable y/o codificación de serie-nivel.
La reordenación descrita anteriormente es de implementación relativamente simple, y tiene una complejidad computacional reducida. En relación con el uso de memoria, en algunas implementaciones, la única memoria extra requerida por las operaciones de reordenación es una tabla de posiciones de períodos, que es muy pequeña.
La figura 20 muestra los coeficientes espectrales de la figura 15b después de la reordenación de coeficientes. La longitud del período de 56,7. La reordenación comienza en la posición 114 (comenzando el tercer periodo en el segmento), y la reordenación finaliza en torno a la posición 1021 (finalizando el periodo 18-ésimo en el segmento). El preámbulo vale tres para los períodos del segmento. Después de la reordenación, los coeficientes hasta aproximadamente la posición 250 son apropiados para codificación vectorial de longitud variable, y los coeficientes a continuación son apropiados para codificación de serie-nivel.
La ganancia de codificación atribuible a la reordenación depende de la periodicidad de la señal. Si una señal es periódica en el dominio temporal, existe a menudo una ganancia significativa reordenando los coeficientes espectrales. De lo contrario, las ganancias de codificación son habitualmente menos significativas o inexistentes. La figura 21 muestra la ganancia de codificación debida a la reordenación por subtrama de un archivo de audio de ejemplo, con una señal periódica. La mayor ganancia para una subtrama está por encima del 40%, y la ganancia promedio para el archivo es de aproximadamente el 11%.
V. Utilización selectiva de múltiples modelos entrópicos en codificación/descodificación adaptativa.
En algunas realizaciones, un codificador tal como uno mostrado en la figura 2, 4, ó 6 realiza codificación entrópica adaptativa, en la cual el codificador utiliza selectivamente múltiples modelos entrópicos. Un descodificador correspondiente (tal como uno mostrado en las figuras 3, 5 ó 7) lleva a cabo descodificación entrópica adaptativa, en la cual el descodificador utiliza selectivamente múltiples modelos entrópicos. Las técnicas y herramientas para el uso selectivo de múltiples modelos entrópicos son aplicables en diversos escenarios, en los cuales los valores de símbolo tienen múltiples distribuciones de probabilidad, incluyendo compresión y descompresión, sin pérdidas y con pérdidas, de audio, video, imágenes o cualesquiera otros datos.
A. Ejemplo de dominio del problema.
La codificación adaptativa de símbolos se utiliza a menudo para mejorar la eficiencia de la codificación entrópica cuando la distribución de probabilidad para los valores de símbolos varía. La codificación aritmética adaptativa puede utilizar directamente distribuciones de probabilidad diferentes o cambiantes. Para la codificación de longitud variable adaptativa (tal como la codificación de Huffman), se realizan diferentes modelos entrópicos para valores de símbolos, en tablas VLC diferentes o cambiantes.
Con adaptación hacia atrás, la codificación/descodificación se adapta en base a símbolos ya procesados. Con adaptación hacia delante, la información que describe la adaptación es señalizada explícitamente. Por ejemplo, un código de conmutación de tabla es señalizado para indicar una tabla VLC a utilizar para una serie de símbolos.
La adaptación puede conseguirse variando dinámicamente la distribución de probabilidad (o los VLC correspondientes utilizados para codificación/descodificación de longitud variable). O la adaptación puede conseguirse escogiendo entre un conjunto fijo de distribuciones (o tablas VLC correspondientes) de probabilidad diferentes, pre-aprendidas.
Un inconveniente de utilizar múltiples distribuciones/tablas VLC diferentes, es la memoria necesaria para el codificador y el descodificador, puesto que la memoria utilizada crece linealmente con el número de distribuciones/tablas VLC. Por ejemplo, si se utilizan 16 tablas VLC, entonces se utiliza aproximadamente 16 veces más memoria para las tablas VLC, en el codificador y el descodificador, que con el caso de una única tabla VLC.
En resumen, se ha descrito un problema que pueden tratar las técnicas y herramientas para el uso selectivo de múltiples modelos entrópicos. Sin embargo, no es necesario aplicar dichas técnicas herramientas para tratar este problema.
B. Utilización selectiva de múltiples modelos entrópicos.
La utilización selectiva de múltiples modelos entrópicos puede reducir significativamente la utilización de recursos para múltiples distribuciones/tablas VLC. Al mismo tiempo, sigue siendo posible conseguir gran parte de la ganancia de codificación asociada con la utilización de múltiples modelos entrópicos. En diversos escenarios comunes, utilizar selectivamente múltiples modelos entrópicos implica elegir entre diferentes distribuciones/tablas VLC para algunos, pero no todos, los valores de símbolo. Más en general, implica elegir entre diferentes distribuciones/tablas VLC que están organizadas jerárquicamente para permitir más adaptatividad para algunos valores de símbolo y menos adaptatividad para otros valores de símbolo.
Supóngase un conjunto de valores de símbolo que incluye ciertos valores de símbolo más probables y ciertos valores de símbolo menos probables, de acuerdo con alguna prueba. Para reducir la memoria utilizada para las distribuciones/tablas, un codificador y un descodificador utilizan múltiples distribuciones/tablas para los valores de símbolo más probables, pero los valores de símbolo menos probables no están representados en múltiples distribuciones/tablas. Esto reduce la memoria utilizada para las múltiples distribuciones/tablas, con una penalización despreciable sobre la ganancia de codificación. (En muchas situaciones, una fracción relativamente pequeña de los valores de símbolo son responsables de un gran porcentaje de una distribución de probabilidad.). En particular, si se ve el modelo entrópico como siendo condicional para un estado dado de adaptación, existe una distribución diferente para los valores de símbolo más probables en los diferentes estados respectivos. Sin embargo, la distribución relativa para los valores de símbolo menos probables es idéntica en los diferentes estados.
Para un conjunto de 256 valores de símbolo, si la mayor parte del tiempo se utilizan 32 de los valores de símbolo, un codificador y un descodificador pueden conmutar entre 6 tablas VLC para los 32 valores de símbolo, donde cada una de las 6 tablas VLC incluye asimismo un código de escape para conmutar a una sola tabla VLC para los otros 224 valores de símbolo.
O bien, supóngase que para el conjunto de 256 valores de símbolo, 7 de los valores de símbolo son utilizados la mayor parte del tiempo, con 21 de los valores de símbolo utilizados ocasionalmente, y el resto de los valores de símbolo utilizados solamente raras veces. El codificador y el descodificador pueden conmutar entre 11 tablas VLC para los 7 valores de símbolo más comunes, donde cada una de las 11 tablas VLC incluye un código de escape para conmutar a 2 tablas VLC para los 21 siguientes valores de símbolo más comunes. (El código de escape puede estar seguido de la información de selección de tabla, para adaptación hacia delante.) Cada una de las 2 tablas VLC para los 21 valores de símbolo incluye un código de escape para conmutar a una tabla VLC para el resto de los valores de símbolo.
La figura 22 muestra un ejemplo que es más complejo, en términos de organización jerárquica de los modelos entrópicos/estados (por ejemplo, distribuciones, tablas VLC). Un codificador y un descodificador utilizan 8 modelos entrópicos para los valores de símbolo B, F, H e I, donde cada uno de los 8 modelos entrópicos incorpora asimismo dos puntos de conmutación. Por ejemplo, si el codificador y el descodificador utilizan distribuciones de probabilidad para los modelos entrópicos, un punto de conmutación es un valor de probabilidad especial de conmutación, en una distribución. Si el codificador y el descodificador utilizan tablas VLC para los modelos entrópicos, un punto de conmutación es un código de escape u otro VLC especial. En los 8 modelos entrópicos, el primer punto de conmutación es para conmutar a modelos entrópicos para los valores de símbolo A y C, y el segundo punto de conmutación es para conmutar a modelos entrópicos para los valores de símbolo D, E, G, J y K.
El codificador y el descodificador utilizan 3 modelos entrópicos para los valores de símbolo A y C. El codificador y el descodificador utilizan 4 modelos entrópicos para los valores de símbolo E, J y K, donde cada uno de los 4 modelos entrópicos incorporan asimismo un punto de conmutación. Este punto de conmutación es para conmutar a un modelo entrópico para los valores de símbolo D y G.
En la figura 22, un subconjunto de los valores de símbolo tiene menos modelos entrópicos asociados que su superconjunto. Esto es consistente con muchos escenarios comunes en los que se permite más adaptatividad para valores de símbolo más probables, y se permite menos adaptatividad para valores de símbolo menos probables. Sin embargo, alternativamente un subconjunto puede tener más modelos entrópicos asociados que su superconjunto.
La selección entre múltiples modelos entrópicos puede ser a través de un mecanismo adaptativo hacia atrás, o de un mecanismo adaptativo hacia delante. Los propios múltiples modelos entrópicos pueden se fijos y pre-aprendidos,
o pueden cambiar dinámicamente. Los modelos entrópicos pueden ser aplicados en diversos esquemas de codificación y descodificación entrópica. La codificación y descodificación aritmética puede utilizar selectivamente múltiples distribuciones de probabilidad para algunos valores de símbolo pero no para todos. O la codificación y descodificación de longitud variable puede utilizar múltiples tablas VLC para parte, pero no la totalidad, de los valores de símbolo.
1. Ajuste de distribuciones para estados.
Para que un codificador o un descodificador utilice selectivamente múltiples modelos entrópicos para algunos valores de símbolo (pero no para todos los valores de símbolo), los múltiples modelos entrópicos se ajustan en consecuencia. El siguiente análisis ilustra ajustes para probabilidades de distribución reales para un conjunto de estados, haciendo referencia a un ejemplo simple.
Supóngase que existen N estados etiquetados como S(j) = S(0), S(1), ... , S(N-1), para adaptar una distribución de M valores de símbolo, etiquetados como X(i) = X(0), X(1), ... , X(M-1).
PS indica distribuciones de probabilidad para los estados, siendo PS(j) la probabilidad de que el estado sea S(j). PS(j),X indica la distribución de probabilidad para los valores de símbolo estado el estado S(j), siendo PS(j),X(i) la probabilidad de que el símbolo tenga un valor X(i) estando en el estado S(j). Entre los M valores de símbolo, se designan L valores de símbolo como más probables, y se designan M - L valores de símbolo como menos probables. El conjunto de los L valores de símbolo más probables es el conjunto Q, y el conjunto de los M - L valores de símbolo menos probables es el conjunto R.
La designación de valores de símbolo más probables frente a otros menos probables depende de la implementación y es flexible, si bien una designación apropiada conduce una modificación más eficiente. No es necesario que PS(j),X(q) > PS(j),X(r) para todos los estados S(j), donde X(q) indica un valor de símbolo en Q y X(r) indica un valor de símbolo en R. En otras palabras, no se requiere que un valor de símbolo "más probable" dado, tenga una probabilidad mayor que un valor de símbolo "menos probable" dado, en todos los estados.
Una distribución revisada P'S(j),X para el estado S(j) aproxima la distribución real de valores de símbolo PS(j),X para el estado S(j). P'S(j),X aproxima PS(j),X de tal modo que: (1) la distribución condicional P'S(j),X(i),R para los varones de símbolo X(i) en el conjunto R es la misma para todos los S(j), pero (2) la distribución para valores de símbolo en el conjunto Q no cambia para cualquier S(j) dado (P'S(j),X(i) = P'S(j),X(i) para los valores de símbolo X(i) en el conjunto Q).
Supóngase que N = 3 y M = 6. El conjunto de los estados es N= {S(0), S(1), S(2)}, y el conjunto de los valores de símbolo es M = {X(0),X(1), X(2), X(3),X(4)}.
Asimismo, supóngase que las probabilidades de los estados son PS(0) = 0,5, PS(1) = 0,2, PS(2) = 0,3 tal como se muestra la tabla 3. Por lo tanto, la probabilidad de estar en el estado 0 es del 50%, la probabilidad de estar en el estado 1 es del 20%, y la probabilidad de estar en el estado 2 es del 30%.
Tabla 3. Probabilidades de estados.
PS(0)
PS(1) PS(1)
0,5
0,2 0,3
La tabla 4 muestra las distribuciones de probabilidad reales PS(j),X(i) para los valores de símbolo en cada uno de los estados.
Tabla 4. Distribuciones de probabilidad reales para valores de símbolo en los estados.
X(0)
X(1) X(2) X(3) X(4)
PS(0),X(i)
0,09 0,4 0,04 0,4 0,07
PS(1),X(i)
0,055 0,7 0,03 0,2 0,015
PS(2),X(i)
0,165 0,1 0,09 0,6 0,045
Como un umbral arbitrario, supóngase que un valor de símbolo X(i) pertenece al conjunto más probable Q si, para cualquiera de los estados, la probabilidad del valor de símbolo en el estado, multiplicada por la probabilidad de estar en ese estado, es mayor que 0,1. Es decir, si PS(j),X(i) * PS(j) > 0,1 para cualquier S(j) para un X(i) dado, entonces el valor de símbolo X(i) está en el conjunto Q. De lo contrario, el valor de símbolo X(i) está en el conjunto R. Para las distribuciones en la tabla 4, L = 2, Q= {X(1),X(3)} y R = {X(0),X(2),X(4)} (Obsérvese que incluso aunque PS(2),X(0) > PS(2),X(1), el valor de símbolo X(1) se designa como un valor de símbolo más probable, mientras que el valor de símbolo X(0) se designa como un valor de símbolo menos probable. En el estado S(1), X(1) tiene una probabilidad elevada.) Alternativamente, el valor umbral y/o la prueba son diferentes. Por ejemplo, el umbral se determina en términos del porcentaje de valores de símbolo, o la prueba requiere una probabilidad elevada en múltiples estados diferentes. En general, para una restricción dada sobre el tamaño de conjuntos Q y R, puede encontrarse una división óptima observando la entropía relativa entre las distribuciones real y aproximada. (En general, tal como se utiliza en el presente documento, el término "óptima" describe una solución que satisface mejor que otras soluciones un conjunto de criterios, de acuerdo con alguna parametrización o modelización, la cual puede, o no, ser óptima en términos absolutos dependiendo de circunstancias, y el término "optimizar" se utiliza para indicar el proceso de encontrar una solución de este tipo.)
En la aproximación, P'S(j),X(i) = P'S(j),X(i) para valores de símbolo X(i) en el conjunto Q. La distribución para un estado S(j) no se modifica para valores de símbolo en el conjunto Q. Sin embargo, para valores de símbolo X(i) en el conjunto R, la distribución aproximada es diferente. Para empezar, se calculan las distribuciones condicionales reales PS(j),X(i),R para los valores de símbolo en el conjunto R. Para los valores de símbolo en el conjunto R, en la tabla 5 se proporcionan las distribuciones condicionales reales eliminando las contribuciones de los valores de símbolo X(1), X(3) en el conjunto Q, y ponderando solamente las contribuciones a partir de X(0), X(2), X(4). PS(0),X(0),R es 0,09 /(0,09 + 0,04 + 0,07) = 0,45, y PS(0),X(1),R es 0,04 / (0,09 + 0,04 + 0,07) = 0,2.
Tabla 5. Distribuciones condiciones reales para valores de símbolo en el conjunto R.
X(0)
X(2) X(4)
PS(0),X(i),R
0,45 0,2 0,35
PS(1),X(i),R
0,55 0,3 0,15
PS(2),X(i),R
0,55 0,3 0,15
A continuación, la distribución condicional aproximada P'S(j),X(i),R se calcula como:
Es decir, la distribución condicional aproximada en el conjunto R es la media ponderada (mediante PS(j) de la distribución condicional real PS(j),X(i),R sobre los N estados). Para los valores de las tablas 4 y 5, en la tabla 6 se muestra la distribución condicional aproximada P'S(j),X(i),R en el conjunto R. Para X(0), P'S(J),X(0),R es (0,5 * 0,45) + (0,2
* 0,55) + (0,3 *0,55 ) = 0,5.
Tabla 6. Distribución condicional aproximada para valores de símbolo en el conjunto R.
X(0)
X(2) X(4)
P'S(j),X(i),R
0,5 0,25 0,25
La distribución final aproximada para cada estado S(j) es: 5
De este modo, para los valores de símbolo en el conjunto Q, el valor de probabilidad real en el estado S(j) se utiliza en la distribución aproximada para el estado S(j). Para un valor de símbolo en el conjunto R, la distribución de probabilidad condicional aproximada P'S(j),X(i),R para el valor de símbolo, se multiplica por la suma de las probabilidades reales para los valores de símbolo en el conjunto R para el estado S(j). Para el valor de símbolo X(0) y el estado S(0), P'S(0),X(0) es 0,5 * (0,09 + 0,04 + 0,07) = 0,1 Para los otros valores en las tablas 4 y 6, las distribuciones de probabilidad finales aproximadas para los estados S(j) se proporcionan en la tabla 7.
Tabla 7. Distribuciones finales aproximadas para valores de símbolo en los estados.
X(0)
X(1) X(2) X(3) X(4)
PS(0),X(i)
0,1 0,4 0,05 0,4 0,05
PS(1),X(i)
0,05 0,7 0,025 0,2 0,025
PS(2),X(i)
0,15 0,1 0,075 0,6 0,075
Básicamente, comparando la tabla 7 con la tabla 4, las distribuciones no han cambiado para los valores de símbolo más probables X(1), X(3), y las distribuciones han cambiado para los valores de símbolo menos probables X(0), X(2), X(4), para reforzar la condición de que la probabilidad relativa para valores de símbolo en el interior del conjunto R es la misma entre estados. En concreto, en cada estado en la tabla en 7, X(0) es el doble del probable que X(2), y X(0) el doble de probable que X(4).
Para el caso general, comenzando con N estados para M valores de símbolo, el número de estados para parte de los valores de símbolo (conjunto R) puede reducirse agrupando las N distribuciones condicionales para el conjunto R, en P distribuciones, donde P < N. A continuación, este procedimiento puede repetirse para algún otro subconjunto de los M valores de símbolo. Asimismo, esto puede repetirse de forma recursiva sobre las P distribuciones agrupadas del conjunto R, donde el conjunto R tiene |R| valores de símbolo (|R| representa el número cardinal o número de elementos del conjunto R) con P estados. Esto impone restricciones sobre los N estados (o distribuciones, o grupos) para los M valores de símbolo. Estas restricciones pueden ser aplicadas después de que han sido fijados los N estados para los M valores de símbolo, o para una mayor optimización pueden ser aplicadas durante la propia fase de aprendizaje. El aprendizaje comenzará con un gran número de distribuciones para los M valores de símbolo, y tendrá como resultado N distribuciones agrupadas, tales que satisfarán las restricciones extra sobre las distribuciones condicionales.
2. Ejemplos de tablas VLC.
Las distribuciones aproximadas para valores de símbolo en diferentes estados pueden ser utilizadas en diversos tipos de codificación y descodificación entrópica adaptativa, incluyendo codificación y descodificación de Huffman, y otras codificaciones y descodificaciones de longitud variable.
Una tabla de códigos de Huffman puede verse como un árbol, en el que cada hoja del árbol corresponde a un valor de símbolo. La rama izquierda del árbol tiene una asociación con un valor binario (por ejemplo, 0), y la rama derecha del árbol tiene una asociación con el valor binario opuesto (por ejemplo, 1). Los árboles mostrados en la figura 23 corresponden a las distribuciones aproximadas mostradas en la tabla 7.
En la figura 23, las partes de trazos de los árboles respectivos son para los valores de símbolo en el conjunto R, y las otras partes de los árboles son para los valores de símbolo en el conjunto Q. En las distribuciones aproximadas mostradas en la tabla 7, la distribución condicional de los valores de símbolo del conjunto R es la misma independientemente del estado, de manera que cada uno de los árboles en la figura 23 puede tener una rama común e idéntica para los valores de símbolo en el conjunto R. La ubicación de la rama idéntica común, puede ser en cualquier posición de un árbol, dependiendo, en general, de cómo el agregado de las probabilidades de los valores de símbolo representados en la rama común se compara con las probabilidades de los otros valores de símbolo para el árbol. De este modo, la rama común podría estar más arriba o más abajo, en uno u otro árbol.
Para cualquier árbol/estado dado en la figura 23, los VLCs para todos los valores de símbolo en el conjunto R tienen el mismo prefijo, que se indica mediante la posición de la rama de un árbol. Además, independientemente del estado en la figura 23, cada valor de símbolo del conjunto R tienen un sufijo común, que se indica mediante la rama idéntica común. Para los árboles de la figura 23, los ejemplos de códigos de Huffman son los siguientes.
Tabla 8. Ejemplos de códigos y tablas de Huffman.
Código de Huffman para S(0)
Código de Huffman para S(1) Código de Huffman para S(2)
X(0)
110 110 100
X(1)
0 0 11
X(2)
1110 1110 1010
X(3)
10 10 0
X(4)
1111 1111 1011
La misma tabla puede ser utilizada para estados S(0) y S(1). En los estados S(0) y S(1), el prefijo común (que se muestra subrayado) para valores de símbolo en el conjunto R es "11", independientemente del valor de símbolo en
5 el conjunto R. En el estado S(2), el prefijo común (que se muestra subrayado) para valores de símbolo en el conjunto R es "10". En los estados S(0), S(1), y S(2), los sufijos (que se muestran en negrita) para los valores de símbolos respectivos son los mismos. (El sufijo para X(0) es "0," el sufijo para X(1) es "10," y el sufijo para X(2) es "11.")
En este caso, los códigos de Huffman para las distribuciones aproximadas facilitan, y pueden implementarse con, la
10 codificación/descodificación de dos etapas para valores de símbolo en el conjunto R. Los códigos mostrados en la tabla 8 pueden además dividirse, tal como se muestra en las tablas 9 y 10.
Tabla 9. Tablas de códigos de la primera etapa, para los estados respectivos.
Código de Huffman para S(0)
Código de Huffman para S(1) Código de Huffman para S(2)
X(1)
0 0 11
X(3)
10 10 0
X(0), X(2), X(4)
11 11 10
Tabla 10. Tablas de códigos de la segunda etapa, para la totalidad de los estados.
Código de Huffman para S(0), S(1), y S(2)
X(0)
0
X(2)
10
X(4)
11
Para un símbolo que tenga un valor en el conjunto R, el codificador codifica en primer lugar un código de escape que representa la totalidad de los valores de símbolo en el conjunto R. Esto señala una conmutación desde una primera tabla de códigos para valores de símbolo en el conjunto Q para un estado específico, a una segunda tabla de códigos para valores de símbolo en el conjunto R a través de todos los estados. A continuación, el codificador
20 codifica el código apropiado a partir de la segunda tabla de códigos.
En una organización jerárquica más compleja de las tablas de códigos de Huffman, las tablas de códigos de Huffman pueden incluir múltiples ramas comunes, correspondiendo cada rama común a una sola distribución condicional para un diferente subconjunto de valores de símbolo. En una implementación en dos etapas, las tablas de códigos de Huffman de la primera etapa pueden incluir múltiples códigos de escape, uno para cada una de las
25 múltiples ramas comunes.
Más en general, las tablas de códigos de Huffman pueden organizarse en una jerarquía arbitraria, con códigos de escape (y, posiblemente, otra información de selección) utilizados para conmutar a otra tabla de códigos de Huffman, o conjunto de tablas de códigos de Huffman.
En una tabla concreta, un código de escape puede ser utilizado, asimismo, para conmutar a un esquema de 30 codificación/descodificación de longitud fija, para ciertos valores de símbolo (en lugar de conmutar a otra tabla).
Alternativamente, se construyen otros tipos de tablas VLC que no siguen las reglas de los códigos de Huffman. Por ejemplo, una sola tabla VLC asocia VLCs con valores de símbolo en el conjunto R para todo un grupo de estados, y múltiples tablas VLC (una tabla por cada estado del grupo) asocia VLCs con valores de símbolo en el conjunto Q.
Además, si bien los ejemplos precedentes ilustran tablas de códigos fijas, pre-aprendidas, alternativamente, las tablas de código varían dinámicamente sus códigos en función de los valores de símbolo que han sido procesados. Para dichas tablas que varían dinámicamente, el codificador y el descodificador pueden seguir utilizando selectivamente múltiples tablas de códigos para algunos valores de símbolo, y una sola tabla de códigos para otros valores de símbolo.
En general, si existen N estados para M valores de símbolo, entonces existen N tablas VLC, o N árboles si se utilizan códigos de Huffman. Si existen L subconjuntos disjuntos de los M valores de símbolos, cada uno de los L subconjuntos con Pl estados, para l = 0, 1, ..., L-1, y Pl < N para todo l, entonces cada uno de los N árboles tendrá L ramas (etiquetadas b0, b1, ..., bL-1), escogiéndose cada rama bl a partir de una de las ramas comunes Pl disponibles para dicho subconjunto l. Además, si cualquiera de los subconjuntos L es dividido de nuevo en subconjuntos recursivamente, teniendo cada subconjunto menos estados que su conjunto padre, puede decirse lo mismo sobre las ramas que se ramifican desde las Pl ramas.
3. Ejemplos de distribuciones para codificación/descodificación aritmética.
En otros codificadores/descodificadores se utilizan distribuciones aproximadas en la codificación/descodificación aritmética. La codificación aritmética implica, en general, representar una serie de símbolos como un único número en el interior de un rango dado. Habitualmente, el número es un número fraccionario entre 0 y 1. Un símbolo es codificado colocándolo en parte de un rango, donde el rango es dividido dependiendo de la distribución de probabilidad de los valores de símbolo.
Para su utilización en codificación y descodificación aritmética, las distribuciones aproximadas mostradas en la tabla 7 podrían dividirse en la tabla 6 y la tabla 11. El valor de conmutación en la tabla 11 para X(0), X(2) y X(4) indica un cambio desde uno de los estados/distribuciones mostrados en la tabla 11 al estado/distribución mostrado en la tabla
6.
Tabla 11. Distribuciones aproximadas con valores de símbolo en Q combinado.
X(1)
X(3) X(0), X(2), X(4)
PS(0),X(i)
0,4 0,4 0,2
PS(1),X(i)
0,7 0,2 0,1
PS(2),X(i)
0,1 0,6 0,3
Si bien el ejemplo anterior ilustra distribuciones fijas, pre-aprendidas, alternativamente, las distribuciones varían dinámicamente dependiendo de los valores de símbolo que han sido procesados. Para dichas distribuciones que varían dinámicamente, el codificador y el descodificador pueden seguir utilizando selectivamente múltiples distribuciones para algunos valores de símbolos, y una única distribución para otros valores de símbolo.
4. Ejemplo de aprendizaje para determinar modelos entrópicos.
Cuando un codificador y un descodificador utilizan selectivamente múltiples modelos entrópicos para símbolos, los modelos entrópicos dependen finalmente de información de la distribución de probabilidad para los símbolos. En algunas implementaciones, una herramienta tal como un codificador, o soporte lógico de análisis estadístico, utiliza el siguiente enfoque para determinar estados y distribuciones de probabilidad para modelos entrópicos.
La figura 24 muestra una técnica 2400 de dos etapas para agrupar distribuciones de probabilidad en estados, para un esquema de codificación/descodificación de múltiples modelos entrópicos. La técnica 2400 trata distribuciones de probabilidad de valores de símbolo con vectores de aprendizaje, y los vectores de aprendizaje son agrupados en grupos, de manera similar a los enfoques de agrupamiento utilizados para los esquemas de cuantificación vectorial.
Para comenzar, la herramienta obtiene 2410 distribuciones de probabilidad reales para vectores de aprendizaje. Los vectores de aprendizaje proceden de un conjunto de aprendizaje de fuentes representativas. Por ejemplo, para codificación/descodificación de audio, la distribución de probabilidad de valores de símbolo en una subtrama representa un vector de aprendizaje. Para codificación/descodificación de audio general, el conjunto de aprendizaje incluye múltiples fuentes de audio, de tal modo que se obtienen distribuciones de probabilidad para múltiples
subtramas de las diferentes fuentes de audio. Pueden obtenerse vectores de prueba a partir de aprendizaje, a diversas velocidades de bits y/o configuraciones de calidad.
A continuación, la herramienta agrupa 2420 los vectores de aprendizaje utilizando una primera métrica de costos. Por ejemplo, la primera métrica de costos es el error cuadrático medio ("MSE", mean squared error). El propio agrupamiento puede utilizar una variación del algoritmo de Lloyd generalizado ("GLA", generalized Lloyd algorithm), que se explica haciendo referencia a la figura 25, o puede utilizar algún otro mecanismo. Básicamente, en la variación GLA, la herramienta agrupa iterativamente vectores de aprendizaje en un número dado de grupos, iterando entre encontrar un codificador óptimo para un descodificador dado, y encontrar un descodificador óptimo para un codificador dado. Después de cierto número de iteraciones, la herramienta encuentra un conjunto de grupos tal que se minimiza la primera métrica de costos.
A continuación, la herramienta refina 2430 los grupos, utilizando una segunda métrica de costos. Por ejemplo, la segunda métrica de costos es una métrica entrópica relativa. La distancia Itakura-Saito es una manera de medir la entropía relativa entre dos distribuciones de probabilidad. En el refinamiento 2430, partes de la lógica de agrupamiento pueden ser iguales o diferentes respecto de partes de la lógica de agrupamiento utilizadas en la primera métrica de costos.
Por lo tanto, de acuerdo con la figura 24, la herramienta utiliza un proceso de aprendizaje en dos etapas. En la primera etapa, la herramienta utiliza la primera métrica de costos (por ejemplo, MSE) para obtener grupos de funciones de masa de probabilidad ("PMF", probability mass function) aproximadas, para las distribuciones. En una segunda etapa, la herramienta utiliza la segunda métrica de costos (por ejemplo, la distancia Itakura-Saito) para seguir refinando los grupos PMF. El MSE es relativamente simple de calcular, pero no modeliza la entropía como la métrica entrópica relativa con propósitos de codificación/descodificación. Por otra parte, la entropía relativa es una métrica eficaz para refinar grupos, pero puede tener como resultado un agrupamiento no óptimo cuando es la única métrica utilizada. En muchos casos, el aprendizaje en dos etapas es no solamente más rápido en términos de complejidad (puesto que la entropía relativa es más compleja de calcular), sino que asimismo tiene como resultado grupos mejores para aplicaciones de codificación/descodificación.
Alternativamente, una herramienta utiliza otro enfoque para determinar estados y distribuciones de probabilidad. Por ejemplo, la herramienta utiliza otra métrica diferente al MSE o a la entropía relativa, para la primera o la segunda métrica de costos. O la herramienta utiliza una sola métrica de costos en un proceso de una sola capa.
La figura 25 muestra una técnica 2500 para agrupar vectores de aprendizaje, de acuerdo con una variación de GLA. Tal como en la figura 24, la técnica 2500 trata distribuciones de probabilidad de valores de símbolo como vectores de aprendizaje, y los vectores de aprendizaje son agrupados en grupos.
Para comenzar, la herramienta calcula 2510 un solo grupo a partir de vectores de aprendizaje. Para codificación/descodificación de audio en general, por ejemplo, los vectores de aprendizaje son distribuciones de probabilidad para subtramas procedentes de diferentes fuentes de audio, tales como archivos de audio codificados a diferentes velocidades de bits y/o configuraciones de calidad. El número de vectores de aprendizaje obtenido depende de la implementación. En una implementación, la herramienta obtiene aproximadamente 100 veces más vectores de aprendizaje que grupos finales calculados. El grupo único es el centroide de los vectores de aprendizaje, calculado promediando los vectores de aprendizaje, o alguna otra combinación de los vectores de aprendizaje.
A continuación, la herramienta divide 2520 en el grupo único en múltiples grupos. Por ejemplo, la herramienta utiliza análisis de componentes principales para dividir el grupo único en dos grupos; uno es el grupo original y el otro es el grupo original más una constante, que depende de la implementación, multiplicada por el componente principal (por ejemplo, el otro es un grupo que está a cierto desplazamiento a lo largo de la dirección del componente principal). Alternativamente, la herramienta utiliza algún otro análisis para dividir el grupo en múltiples grupos.
La herramienta clasifica 2530 los vectores de aprendizaje entre los múltiples grupos actuales, de acuerdo con alguna métrica de costos. Por ejemplo, la métrica de costos es MSE, entropía relativa o alguna otra métrica. El MSE de un vector de aprendizaje, respecto de un grupo, indica la distancia euclídea entre los puntos de la distribución de probabilidad del vector de aprendizaje, y los puntos correspondientes del grupo. La entropía relativa entre un vector de aprendizaje y un grupo puede proporcionar la diferencia entre un vector de aprendizaje y un grupo, como sigue:
−Lvector _de_aprendizaje∗ log2(grupo k) (3),
k
donde k indica puntos en el vector de aprendizaje y el grupo. De manera menos formal, la entropía relativa indica una penalización en la velocidad de bits debida al desajuste entre el vector de aprendizaje y el grupo. La herramienta clasifica un vector de aprendizaje con el grupo frente al cual el vector de aprendizaje tiene el MSE menor, la entropía relativa menor, etc.
La herramienta recalcula 2540 los grupos actuales a partir de los vectores de aprendizaje clasificados. Por ejemplo, para el grupo actual, la herramienta calcula el centroide de los vectores de aprendizaje clasificados para dicho grupo. Alternativamente, la herramienta recalcula cada grupo actual, como alguna otra combinación de los vectores de aprendizaje clasificados para dicho grupo.
La herramienta determina 2545 si los grupos se han estabilizado. Por ejemplo, la herramienta verifica si el cambio entre los grupos anteriores y los siguientes en el recálculo 2540 satisface algún criterio. Un criterio es que en el recálculo 2540 los grupos no se hayan desplazado en más de cierta cantidad umbral, en donde la cantidad umbral depende de la implementación. Alternativamente, la herramienta considera criterios diferentes y/o adicionales. Si los grupos no se han estabilizado, la herramienta clasifica 2530 los vectores de aprendizaje entre los grupos actuales (recalculados (2540)), de acuerdo con la métrica de costos.
Cuando los grupos actuales se han estabilizado, la herramienta determina 2550 si existen grupos suficientes. En general, el número deseado de grupos puede ajustarse como un compromiso entre la utilización de memoria y al rendimiento de la codificación. Tener más grupos tiende a conducir a más estados y adaptatividad en los modelos entrópicos, al costo de una utilización incrementada de memoria para almacenar las distribuciones, tablas VLC, etc. Cuando se utiliza adaptación hacia delante, tener más grupos significa asimismo que se señaliza más información complementaria (por ejemplo, para indicar distribuciones, tablas, etc.). Por contraste, tener menos grupos tiende a incrementar el desajuste entre los vectores de aprendizaje y los grupos finales, lo que habitualmente indica un desajuste incrementado entre los modelos entrópicos y las distribuciones reales de los valores de símbolo durante la codificación.
Si no se ha alcanzado el número deseado de grupos, la herramienta divide 2560 parte o la totalidad de los grupos actuales. Por ejemplo, la herramienta utiliza análisis de componentes principales o algún otro análisis, para dividir un grupo en dos grupos. Supóngase que la herramienta busca G grupos finales, y actualmente tiene F grupos actuales, donde F < G. Dividir cada uno de los F grupos actuales tendría como resultado demasiados grupos, y la herramienta puede dividir cada uno de los G - F grupos actuales superiores (por ejemplo, "superiores" en términos de cuántos vectores de aprendizaje están clasificados en los grupos actuales) en dos grupos. O la herramienta puede dividir simplemente el grupo superior en cada interacción, o utilizar alguna otra regla para la división. A continuación, la herramienta clasifica 2530 los vectores de aprendizaje entre grupos actuales (divididos (2560)), de acuerdo con la métrica de costos.
Cuando los grupos actuales se han estabilizado y se ha alcanzado el número deseado de grupos, la técnica 1500 finaliza. La clasificación 2530, el recálculo 2540 y la división 2560 constituyen esencialmente una iteración de la variante GLA, y durante las iteraciones la métrica de costos puede reducirse.
La técnica 2500 de la figura 25 puede incorporarse a la técnica 2400 de la figura 24, tal como sigue. La herramienta lleva a cabo la técnica 2500 de la figura 25 utilizando MSE como la métrica de costos, hasta que se alcanza el número deseado de grupos. En ese momento, la herramienta lleva a cabo de manera iterativa la clasificación 2530, el recálculo 2540, y verifica 2545 la estabilidad utilizando entropía relativa como métrica de costos, hasta que los grupos se estabilizan/no se desplazan en más de cierta cantidad umbral.
Las técnicas 2400, 2500 pueden ser utilizadas para producir grupos finales con distribuciones de probabilidad que se aproximan a las distribuciones reales, pero pueden tener la misma distribución condicional para ciertos valores de símbolo. En términos del marco analítico de la sección V.B.1, las técnicas 2400, 2500 pueden ser utilizadas para producir distribuciones de probabilidad aproximadas, tales como las mostradas en la tabla 7 mediante añadir, en las operaciones de clasificación y agrupamiento, la restricción de que la distribución condicional para los valores de símbolo en un conjunto R sea la misma para todos los grupos/estados (P'S(j),X(i),R es la misma para todos los estados S(j)). Esencialmente, aquellas dimensiones de los grupos que corresponden a valores de símbolo en el conjunto R se restringen tal como se muestra en las ecuaciones (1) y (2). En el análisis, la probabilidad PS(j) de estar en un estado dado se indica mediante el número de vectores de aprendizaje clasificados en el grupo para dicho estado. Otra limitación es que las dimensiones de cada uno de los grupos sume 1.
Haciendo referencia a la figura 25, después del recálculo 2540 de los grupos actuales, pueden imponerse una o más restricciones a la distribución condicional. En general, supóngase que existen N estados para M valores de símbolo, y que existen L subconjuntos de M valores de símbolo, cada uno de los L subconjuntos con Pl estados, Pl < N, l = 0, 1,...., L-1, y El elementos. La totalidad de los valores de símbolo en el interior de uno concreto de los L subconjuntos, puede agruparse en un valor de símbolo (escape/conmutación) común. Existirán L de dichos valores de símbolo de escape/conmutación. A continuación, el aprendizaje pasa a encontrar los N grupos (o distribuciones) para los M - (E0
+ E1 +... + EL-1) + L valores de símbolo (restando los El elementos en los L subconjuntos, y añadiendo L elementos para los valores de símbolo de escape/conmutación). A continuación, para cada uno de los L subconjuntos de los M valores de símbolo, se calculan una o varias distribuciones condicionales en el interior del conjunto. El aprendizaje se repite sobre cada uno de los L subconjuntos para encontrar Pl grupos, l = 0, 1, ... , L-1, para cada uno de estos subconjuntos. Los vectores de aprendizaje para esto, serán la distribución o distribuciones condicionales en el interior de los L subconjuntos, respectivamente. Si cualquiera de los L subconjuntos es subdividido adicionalmente,
el procedimiento puede repetirse recursivamente para dicho subconjunto subdividido l, puesto que actualmente existen Pl estados para El valores de símbolo.
En cuanto a la designación de qué valores de símbolo están en los conjuntos Q y R, inicialmente esto se basa en la distribución de probabilidad del único grupo inicial. Por consiguiente, los componentes de los conjuntos Q y R dependen de la probabilidad de estar en los estados respectivos (proporciones de los vectores de aprendizaje en los grupos respectivos) y de las distribuciones de probabilidad para los grupos.
5. Alternativas.
Muchos de los ejemplos precedentes implican la utilización de múltiples distribuciones/tablas para algunos valores de símbolo, y utilizan una única distribución/tabla para otros valores de símbolo. Si bien esta configuración reduce típicamente la utilización de memoria sin menoscabar significativamente el rendimiento de la codificación entrópica, las técnicas y herramientas descritas en la sección V son más generalmente aplicables a los modelos entrópicos organizados jerárquicamente. Un codificador o un descodificador pueden elegir selectivamente entre diferentes modelos entrópicos en una organización jerárquica que permita más adaptatividad para algunos valores de símbolo y menos adaptatividad para otros valores de símbolo.
Los modelos entrópicos organizados jerárquicamente pueden hacer referencia a múltiples modelos entrópicos por conmutación (por ejemplo, no conmutando solamente a un único modelo entrópico para valores de símbolo menos probables). Por ejemplo, un conjunto de tablas de códigos de Huffman, a cierto nivel comprende una tabla de códigos de Huffman o múltiples tablas de códigos de Huffman. El aprendizaje puede producirse en múltiples fases. En una primera fase de aprendizaje, los valores de símbolo son designados como perteneciendo a un conjunto Q o a un conjunto R, donde la distribución condicional para los valores de símbolo en el conjunto R es la misma para todos los estados. A continuación, en una fase de aprendizaje subsiguiente para los valores de símbolo del conjunto R, se levanta la restricción previa sobre la distribución condicional para los valores de símbolo en el conjunto R, y las distribuciones de probabilidad para los valores de símbolo del conjunto R son clasificadas en múltiples grupos/estados para diferentes modelos entrópicos.
Cada elemento de un conjunto de modelos entrópicos puede incluir múltiples puntos de conmutación a diferentes conjuntos de modelos entrópicos en otro nivel. Por ejemplo, para adaptación hacia delante, cada tabla de un primer conjunto de tablas de códigos de Huffman incluye dos códigos de escape (un primer código de escape a un segundo conjunto de una o varias tablas de códigos de Huffman, y un segundo código de escape a un tercer conjunto de una
o varias tablas de códigos de Huffman). En relación con el aprendizaje, los valores de símbolo pueden ser designados como pertenecientes a un conjunto Q para un primer conjunto de modelos entrópicos, a un conjunto R para un segundo conjunto de modelos entrópicos, o a un conjunto S para un tercer conjunto de modelos entrópicos. La distribución condicional para valores de símbolo en el conjunto R (ignorando los valores de símbolo en Q y S) es la misma para todos los estados, y la distribución condicional para valores de símbolo en el conjunto S (ignorando los valores de símbolo en Q y R) es la misma para todos los estados.
Aparte de una amplitud adicional, los modelos entrópicos organizados jerárquicamente pueden incluir tres, cuatro o más niveles de modelos entrópicos. Por ejemplo, para adaptación hacia delante, cada tabla de un primer conjunto de tablas de códigos de Huffman incluye un código de escape a un segundo conjunto de tablas de códigos de Huffman, y cada tabla del segundo conjunto de códigos de Huffman incluye un código de escape a un tercer conjunto de tablas de códigos de Huffman. El aprendizaje puede producirse en múltiples fases. En una primera fase, los valores de símbolo son designados como perteneciendo a un conjunto Q para un primer conjunto de modelos entrópicos, o a un conjunto R para otros conjuntos de modelos entrópicos. La distribución condicional para valores de símbolo en el conjunto R (ignorando valores de símbolo en Q) es igual para todos los estados. A continuación, en la fase de aprendizaje adicional para los valores de símbolo del conjunto R, se levanta esta restricción sobre la distribución condicional, y los valores de símbolo del conjunto R son designados como perteneciendo a un conjunto S para un segundo conjunto de modelos entrópicos, o a un conjunto T para cualquier otro conjunto de modelos entrópicos. En esta fase, la distribución condicional para valores de símbolo del conjunto T (ignorando valores de símbolo del conjunto S) es la misma para todos los estados.
Aparte de codificación de longitud variable (por ejemplo, Huffman) y codificación y descodificación aritmética, otros tipos de codificación y descodificación entrópica pueden incorporar la utilización selectiva de modelos entrópicos. Por ejemplo, la codificación y descodificación variable a variable puede incorporar tablas VLC en una organización jerárquica.
C. Ejemplos de técnicas para codificación.
La figura 26 muestra una técnica 2600 para codificar símbolos con utilización selectiva de múltiples modelos entrópicos. Un codificador, tal como el codificador mostrado en la figura 2, 4 ó 6, lleva a cabo la técnica 2600.
En un codificador de audio de forma de onda, los símbolos son típicamente para coeficientes espectrales cuantificados. Los coeficientes espectrales cuantificados pueden ser preprocesados (por ejemplo, mediante predicción de coeficientes o reordenación de coeficientes). Cada uno de los símbolos puede representar un coeficiente espectral cuantificado. O bien, cada uno de los símbolos puede representar un grupo de coeficientes espectrales cuantificados. Para codificación Huffman vectorial, un símbolo representa, por ejemplo, un grupo de 4 coeficientes espectrales cuantificados. Para codificación de serie-nivel, un símbolo representa, por ejemplo, un par de serie-nivel.
Para una serie de símbolos, el codificador selecciona 2610 un modelo entrópico a partir de un primer conjunto de modelos entrópicos. Por ejemplo, el codificador selecciona una tabla de códigos Huffman a partir múltiples tablas de códigos Huffman disponibles, para codificación Huffman o codificación de serie-nivel. Alternativamente, el codificador selecciona un modelo entrópico utilizado en otro esquema de codificación entrópica. En algunas implementaciones, el codificador selecciona el modelo entrópico dependiendo de información contextual. En otras implementaciones, el codificador selecciona el modelo entrópico después de evaluar el rendimiento de la codificación utilizando los diversos modelos entrópicos. A continuación, se describe un ejemplo de un proceso de selección para tablas de códigos Huffman utilizando una estructura de enrejado. Alternativamente, el codificador utiliza otro mecanismo para seleccionar el modelo entrópico.
Volviendo la figura 26, el codificador señaliza opcionalmente 2620 información que indica el modelo entrópico seleccionado. Para adaptación hacia adelante, el codificador señaliza explícitamente información que indica el modelo entrópico seleccionado. A continuación se describe en detalle un mecanismo de adaptación hacia delante para conmutación de tablas de códigos Huffman. Alternativamente, el codificador utiliza otro mecanismo de señalización. Para adaptación hacia atrás, la selección del modelo entrópico se deduce del contexto disponible en el descodificador.
A continuación, el codificador codifica entrópicamente 2360 la serie de símbolos, utilizando el modelo entrópico seleccionado. En cualesquiera puntos de conmutación en el modelo entrópico, el codificador puede conmutar a otro conjunto de uno o varios modelos entrópicos. Por ejemplo, el codificador utiliza un código de escape en una primera tabla de códigos de Huffman, para señalar una conmutación a una segunda tabla de códigos de Huffman, y a continuación codifica un símbolo utilizando la segunda tabla de códigos de Huffman.
A continuación, el codificador señaliza 2640 los símbolos codificados entrópicamente. Cuando se ha producido una conmutación, el codificador puede señalizar asimismo información de conmutación, tal como códigos de escape u otra información de conmutación de modelo, para la selección dentro de un conjunto de modelos.
El codificador determina 2650 si continuar con la siguiente serie y, en caso afirmativo, selecciona 2610 el modelo entrópico para los símbolos de la serie siguiente. Por ejemplo, cuando se codifican coeficientes espectrales cuantificados utilizando tablas de códigos de Huffman en la implementación, se permite al codificador cambiar las tablas de códigos en límites de corteza. En otras palabras, los límites de corteza, que dividen el espectro de frecuencias, actúan como posibles posiciones de cambio para cambiar la tabla de códigos de Huffman seleccionada a partir de un primer conjunto de tablas de códigos. Si los coeficientes para el símbolo que está siendo codificado actualmente se extienden pasado un límite de corteza (por ejemplo, debido a que el símbolo representa un vector de coeficientes de un par de serie-nivel de coeficientes, que cruza el límite), entonces el final de los coeficientes para el símbolo actual resulta ser la posición de cambio válida. Alternativamente, el codificador cambia la selección del modelo entrópico desde el primer conjunto de modelos, en otras posiciones de cambio, y la serie de símbolos codificados de acuerdo con el modelo entrópico seleccionado tiene alguna otra duración.
Tal como se indicado anteriormente, en una implementación, el codificador selecciona una tabla de códigos de Huffman utilizando una estructura de enrejado para la evaluación de las diferentes tablas. El codificador codifica la totalidad de los símbolos entre dos posiciones válidas de cambio de tabla (que son límites de corteza), con todas las tablas posibles. El codificador realiza un seguimiento del número de bits utilizados por tabla para codificar los símbolos. El codificador constituye un enrejado para encontrar la mejor codificación posible, teniendo en cuenta los bits a señalizar si se cambia una tabla.
Supóngase que bt,i es el número mínimo de bits utilizados cuando se codifica hasta la posición t de cambio de tabla, siendo la tabla i la última tabla utilizada. El cómputo de bits rt,i son los bits necesarios para codificar los símbolos entre la posición de cambio t y la posición de cambio t + 1 utilizando la tabla i. El cómputo de bits st,i,k son los bits necesarios para codificar un cambio de tabla desde la tabla i a la tabla k, en la posición de cambio t. En otras palabras, la última tabla que se estaba utilizando en la posición de cambio t fue la tabla i, y a continuación se utiliza la tabla k para codificar hasta la posición de cambio t + 1. La tabla nt,i es la tabla utilizada en la posición de cambio t 1 con objeto de obtener la codificación óptima en la cual la tabla actual en la posición de cambio t es la tabla i. Then:
El codificador determina la codificación óptima para la subtrama completa u otra parte de una secuencia, encontrando la i que minimiza btmax,i, donde tmax es el valor máximo para t. El codificador encuentra las tablas óptimas rastreando el trayecto óptimo, mediante buscar el valor de n. Los bits necesarios para codificar un cambio de tabla son esencialmente log2(número_de_tablas) + log2(número_de_cortezas_pasadas) + 1. Cuando una tabla es modificada, el codificador señaliza un bit para indicar si ésta es la última tabla utilizada y, si no es la última tabla utilizada, el codificador señaliza log2(número_de_cortezas_pasadas) para codificar a cuántas bandas de corteza aplica la tabla.
D. Ejemplos de técnicas para descodificación.
La figura 27 muestra una técnica 2700 para descodificar símbolos con utilización selectiva de múltiples modelos entrópicos. Un codificador, tal como el descodificador mostrado en la figura 3, 5 ó 7, lleva a cabo la técnica 2700.
En un descodificador de audio de forma de onda, los símbolos son típicamente para coeficientes espectrales cuantificados. Si los coeficientes espectrales cuantificados han sido preprocesados (por ejemplo, mediante predicción de coeficientes o reordenación de coeficientes) durante la descodificación, los coeficientes son postprocesados (por ejemplo, mediante predicción de coeficientes o reordenación de coeficientes) a continuación de la descodificación entrópica. Cada uno de los símbolos puede representar un coeficiente espectral cuantificado. O bien, cada uno de los símbolos puede representar un grupo de coeficientes espectrales cuantificados. Para descodificación Huffman vectorial, un símbolo representa, por ejemplo, un grupo de 4 coeficientes espectrales cuantificados. Para descodificación de serie-nivel, un símbolo representa, por ejemplo, un par de serie-nivel.
Para una serie de símbolos, opcionalmente el descodificador analiza sintácticamente 2710 información que indica el modelo entrópico seleccionado. Para adaptación hacia delante, por ejemplo, el descodificador analiza sintácticamente información que indica el modelo entrópico seleccionado, utilizando un mecanismo que refleja la señalización del lado del codificador.
El descodificador selecciona 2720 un modelo entrópico a partir de un primer conjunto de modelos entrópicos. Por ejemplo, el descodificador selecciona una tabla de códigos Huffman entre múltiples tablas disponibles de códigos Huffman, para descodificación vectorial Huffman o descodificación de serie-nivel. Alternativamente, el descodificador selecciona un modelo entrópico utilizado en otro esquema de descodificación entrópica. En algunas implementaciones, el descodificador selecciona el modelo entrópico dependiendo de información contextual para adaptación hacia atrás. En otras implementaciones, el descodificador selecciona el modelo entrópico en base a información señalizada mediante un codificador y analizada sintácticamente 2710 a partir del flujo de bits.
A continuación, el descodificador descodifica entrópicamente 2730 la serie de símbolos, utilizando el modelo entrópico seleccionado. En cualesquiera puntos de conmutación en el modelo entrópico, el descodificador puede conmutar a otro conjunto de uno o varios modelos entrópicos. Por ejemplo, el descodificador recibe un código de escape para una primera tabla de códigos de Huffman, que indica una conmutación a una segunda tabla de códigos de Huffman, y a continuación codifica el símbolo utilizando la segunda tabla de códigos de Huffman.
A continuación, el codificador entrega 2740 información para los símbolos descodificados entrópicamente, por ejemplo, los coeficientes espectrales cuantificados listos para el procesamiento posterior.
El descodificador determina 2750 si continuar con la siguiente serie y, en caso afirmativo, selecciona 2710 el modelo entrópico para los símbolos de la serie siguiente. Por ejemplo, cuando se descodifican coeficientes espectrales cuantificados utilizando tablas de códigos de Huffman en la implementación, se permite al descodificador cambiar las tablas de códigos en límites de corteza. Si los coeficientes para el símbolo que está siendo descodificado actualmente se extienden pasado un límite de corteza (por ejemplo, debido a que el símbolo representa un vector de coeficientes de un par de serie-nivel de coeficientes que cruza el límite), entonces la finalización de los coeficientes para el símbolo actual resulta la posición de cambio válida. Alternativamente, el descodificador cambia la selección del modelo entrópico a partir del primer conjunto de modelos en otras posiciones de cambio, y la serie de símbolos descodificados de acuerdo con el modelo entrópico seleccionado tiene alguna otra duración.
E. Resultados.
La codificación utilizando una distribución aproximada para valores de símbolo menos probables, permite ahorros de memoria necesarios para las distribuciones o tablas de código, en el codificador y el descodificador. En términos del marco analítico de la sección V.B.1, el codificador y el descodificador almacenan las distribuciones y/o tablas de código para PS(j),X(g). Es decir, el codificador y el descodificador almacenan una distribución y/o tabla por estado S(j) para valores de símbolo X(i) en el conjunto Q. Para valores de símbolo X(i) en el conjunto R, el codificador y el descodificador almacenan la distribución y/o la tabla para una sola distribución P'S(j),X(i),R.
Supóngase que una tabla ocupa B octetos de memoria para cada estado, y que existen 16 estados. Entonces, en el
5 típico caso de tablas completas, el codificador y el descodificador necesitarían 16 * B octetos de memoria para las 16 tablas. Sin embargo, si solamente el 10% de los valores de símbolos se designan como más probables (en el conjunto Q), entonces una aproximación simple de la memoria necesaria es (16 * B * 0,1) + (B * 0,9) = 2,5 * B. Por lo tanto, la memoria necesaria se ha reducido en más de 6 veces, con solamente una ligera reducción en las ganancias de codificación entrópica, en comparación con el caso de tablas completas.
10 A la vista de las muchas realizaciones posibles a las que pueden ser aplicados los principios de la invención dada a conocer, debe admitirse que las realizaciones ilustradas son solamente ejemplos preferidos de la invención, y no deben tomarse como limitativos del alcance de la invención. Por el contrario, el alcance de la invención está definido por las siguientes reivindicaciones. Por lo tanto, reivindicamos como nuestra invención todo lo que queda dentro del alcance de estas reivindicaciones.

Claims (19)

  1. REIVINDICACIONES
    1. Método para ser ejecutado por un codificador o un descodificador, que comprende:
    para una serie de símbolos, seleccionar un modelo entrópico a partir de un primer conjunto de modelos que incluye múltiples modelos entrópicos, cada uno de los múltiples modelos entrópicos del primer conjunto de modelos incluyendo un punto de conmutación de modelo para conmutar a un segundo conjunto de modelos que incluye uno o varios modelos entrópicos, en el que la serie de símbolos son para coeficientes espectrales cuantificados para datos de audio;
    y en el que la selección de un modelo entrópico se basa en la evaluación del rendimiento de la codificación utilizando los múltiples modelos entrópicos;
    procesar la serie de símbolos utilizando el modelo entrópico seleccionado; y
    entregar los resultados del proceso;
    en el que los múltiples modelos entrópicos del primer conjunto de modelos, y dichos uno o varios modelos entrópicos del segundo conjunto de modelos reflejan distribuciones de probabilidad para codificación y/o descodificación aritmética, y en el que los múltiples modelos entrópicos del primer conjunto de modelos reflejan las distribuciones de probabilidad de los símbolos más probables, y los múltiples modelos entrópicos del segundo conjunto de modelos reflejan las distribuciones de probabilidad de los símbolos menos probables;
    y en el que es seguido un punto de conmutación si la distribución de probabilidad seleccionada no comprende el símbolo respectivo de la serie de símbolos.
  2. 2.
    El método acorde con la reivindicación 1, en el que el procesamiento incluye codificación entrópica si el método es ejecutado por un codificador.
  3. 3.
    El método acorde con la reivindicación 1, en el que el procesamiento incluye descodificación entrópica si el método es ejecutado por un descodificador.
  4. 4.
    El método acorde con la reivindicación 1, en el que el punto de conmutación de modelos es una probabilidad de conmutación de modelos en las múltiples distribuciones de probabilidad del primer conjunto de modelos.
  5. 5.
    El método acorde con la reivindicación 1, en el que los múltiples modelos entrópicos del primer conjunto de modelos están realizados, respectivamente, en las múltiples tablas VLC de un primer conjunto de tablas, en el que dichos uno o varios modelos entrópicos del segundo conjunto de modelos están realizados respectivamente en una
    o varias tablas VLC de un segundo conjunto de modelos, en el que el punto de conmutación de modelos es un código de escape, y en el que cada una de las múltiples tablas VLC del primer conjunto de tablas incluye el código de escape para conmutar al segundo conjunto de tablas.
  6. 6.
    El método acorde con la reivindicación 5, en el que las múltiples tablas VLC del primer conjunto de tablas y dichas una o varias tablas VLC del segundo conjunto de tablas son tablas de códigos de Huffman, y en el que el segundo conjunto de tablas incluye una sola tabla de códigos de Huffman, de tal modo que dicha única tabla de códigos de Huffman representa una rama común en los árboles que representan las respectivas múltiples tablas de códigos de Huffman del primer conjunto de tablas.
  7. 7.
    El método acorde con la reivindicación 5, en el que las múltiples tablas VLC del primer conjunto de tablas están adaptadas para un primer conjunto de valores de símbolo que incluye valores de símbolo más probables, y en el que dichas una o varias tablas VLC del segundo conjunto de tablas están adaptadas para un segundo conjunto de valores de símbolo que incluye valores de símbolo menos probables.
  8. 8.
    El método acorde con la reivindicación 7, en el que el segundo conjunto de tablas incluye una sola tabla VLC, y en el que el proceso es para codificación o descodificación de longitud variable en dos etapas, de aquellos de la serie de símbolos que tienen valores de símbolo menos probables.
  9. 9.
    El método acorde con la reivindicación 1, que comprende además generar los múltiples modelos entrópicos del primer conjunto de modelos y dichos uno o varios modelos entrópicos del segundo conjunto de modelos, en el que la generación incluye:
    agrupar distribuciones de probabilidad de acuerdo con la primera métrica de costos, obteniendo como resultado una serie de grupos preliminares; y
    refinar la serie de grupos preliminares de acuerdo con una segunda métrica de costos diferente a la primera métrica de costos, obteniendo como resultado una serie de grupos finales.
  10. 10.
    El método acorde con la reivindicación 1, en el que en el segundo conjunto de modelos incluye un solo modelo entrópico, comprendiendo además el método la generación de los múltiples modelos entrópicos del primer conjunto de modelos y del único modelo entrópico del segundo conjunto de modelos, en el que la generación incluye, para el único modelo entrópico del segundo conjunto de modelos, restringir los valores de símbolo menos probables a tener una distribución condicional común a través de las distribuciones de probabilidad.
  11. 11.
    El método acorde con la reivindicación 1, en el que cada uno de dichos uno o varios modelos entrópicos del segundo conjunto de modelos incluye un segundo punto de conmutación de modelos, para conmutar a un tercer conjunto de modelos que incluye uno o varios modelos entrópicos.
  12. 12.
    El método acorde con la reivindicación 1, en el que, para por lo menos parte de los múltiples modelos entrópicos del primer conjunto de modelos, el punto de conmutación de modelos tiene un valor diferente entre modelo y modelo.
  13. 13.
    El método acorde con la reivindicación 1, en el que cada uno de los múltiples modelos entrópicos del primer conjunto de modelos incluye además un segundo punto de conmutación de modelos para conmutar a un tercer conjunto de modelos que incluye uno o varios modelos entrópicos.
  14. 14.
    El método acorde con la reivindicación 1, en el que la selección forma parte de una conmutación adaptativa hacia adelante.
  15. 15.
    El método acorde con la reivindicación 1, en el que la selección forma parte de una conmutación adaptativa hacia atrás.
  16. 16.
    Un sistema que comprende un codificador y descodificador, comprendiendo además:
    medios para obtener distribuciones de probabilidad para una serie de valores de símbolo, en el que los valores de símbolo son para coeficientes espectrales cuantificados para datos de audio; y
    medios para generar modelos entrópicos, que incluyen restringir la serie de valores de símbolo menos probables, a tener una distribución condicional común a través de las distribuciones de probabilidad, sin restringir por ello la serie de valores de símbolo más probables,
    medios para seleccionar un modelo entrópico a partir de un primer conjunto de modelos que incluye múltiples modelos entrópicos, cada uno de los múltiples modelos entrópicos del primer conjunto de modelos incluyendo un punto de conmutación de modelos para conmutar a un segundo conjunto de modelos que incluye uno o varios modelos entrópicos, en el que la selección de un modelo entrópico está basada en la evaluación del rendimiento de la codificación utilizando los múltiples modelos entrópicos;
    medios para procesar dicha serie de símbolos utilizando el modelo entrópico seleccionado; y
    medios para entregar los resultados del proceso;
    en el que los múltiples modelos entrópicos del primer conjunto de modelos y dichos uno o varios modelos entrópicos del segundo conjunto de modelos reflejan distribuciones de probabilidad para codificación y/o descodificación aritmética; y
    en el que los múltiples modelos entrópicos del primer conjunto de modelos reflejan las distribuciones de probabilidad de los símbolos más probables, y los múltiples modelos entrópicos del segundo conjunto de modelos reflejan las distribuciones de probabilidad de los símbolos menos probables; y
    en el que se sigue un punto de conmutación si la distribución de probabilidad seleccionada no comprende el símbolo respectivo de la serie de valores de símbolo.
  17. 17. El sistema acorde con la reivindicación 16, en el que uno o varios módulos generan modelos entrópicos mediante:
    agrupar distribuciones de probabilidad de acuerdo con la primera métrica de costos, obteniendo como resultado una serie de grupos preliminares;
    refinar la serie de grupos preliminares de acuerdo con una segunda métrica de costos diferente a la primera métrica de costos, obteniendo como resultado una serie de grupos finales; y
    seleccionar los modelos entrópicos en base, por lo menos en parte, a la serie de grupos finales.
  18. 18.
    El sistema acorde con la reivindicación 17, en el que la segunda métrica de costos es la entropía relativa.
  19. 19.
    El sistema acorde con la reivindicación 17, en el que los modelos entrópicos son realizados respectivamente en múltiples tablas VLC de un primer conjunto de tablas y en una tabla VLC única de un segundo conjunto de tablas, en el que las múltiples tablas VLC están adaptadas para la serie de valores de símbolo más probables, y en el que la tabla VLC única está adaptada para la serie de valores de símbolo menos probables.
ES06787173T 2005-07-15 2006-07-14 Utilización selectiva de múltiples modelos para codificación y descodificación adaptativa Active ES2378393T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US183266 2002-06-25
US11/183,266 US7599840B2 (en) 2005-07-15 2005-07-15 Selectively using multiple entropy models in adaptive coding and decoding
PCT/US2006/027231 WO2007011653A2 (en) 2005-07-15 2006-07-14 Selectively using multiple entropy models in adaptive coding and decoding

Publications (1)

Publication Number Publication Date
ES2378393T3 true ES2378393T3 (es) 2012-04-12

Family

ID=37662739

Family Applications (1)

Application Number Title Priority Date Filing Date
ES06787173T Active ES2378393T3 (es) 2005-07-15 2006-07-14 Utilización selectiva de múltiples modelos para codificación y descodificación adaptativa

Country Status (12)

Country Link
US (1) US7599840B2 (es)
EP (1) EP1905000B1 (es)
JP (1) JP5085543B2 (es)
KR (1) KR101278805B1 (es)
CN (1) CN101223573B (es)
AT (1) ATE536001T1 (es)
AU (1) AU2006270259B2 (es)
CA (1) CA2612537C (es)
ES (1) ES2378393T3 (es)
MX (1) MX2008000524A (es)
NO (1) NO341186B1 (es)
WO (1) WO2007011653A2 (es)

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60330198D1 (de) * 2002-09-04 2009-12-31 Microsoft Corp Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
US7882167B2 (en) * 2005-02-18 2011-02-01 Beth Israel Deaconess Medical Center Complexity-based dynamical analysis of a network
US20080243518A1 (en) * 2006-11-16 2008-10-02 Alexey Oraevsky System And Method For Compressing And Reconstructing Audio Files
TWI312981B (en) * 2006-11-30 2009-08-01 Inst Information Industr Voice detection apparatus, method, computer program product, and computer readable medium for adjusting a window size dynamically
FR2911228A1 (fr) * 2007-01-05 2008-07-11 France Telecom Codage par transformee, utilisant des fenetres de ponderation et a faible retard.
JP2008228208A (ja) * 2007-03-15 2008-09-25 Ricoh Co Ltd 画像符号化方法、画像符号化装置、画像符号化回路、情報記録媒体、及び、コンピュータプログラム
KR101418248B1 (ko) * 2007-04-12 2014-07-24 삼성전자주식회사 정현파 성분의 진폭 코딩 및 디코딩 방법과 그 장치
KR101317269B1 (ko) * 2007-06-07 2013-10-14 삼성전자주식회사 정현파 오디오 코딩 방법 및 장치, 그리고 정현파 오디오디코딩 방법 및 장치
US8463615B2 (en) * 2007-07-30 2013-06-11 Google Inc. Low-delay audio coder
EP2023339B1 (en) * 2007-07-30 2010-08-25 Global IP Solutions (GIPS) AB A low-delay audio coder
US8483282B2 (en) * 2007-10-12 2013-07-09 Qualcomm, Incorporated Entropy coding of interleaved sub-blocks of a video block
JP5414684B2 (ja) 2007-11-12 2014-02-12 ザ ニールセン カンパニー (ユー エス) エルエルシー 音声透かし、透かし検出、および透かし抽出を実行する方法および装置
US8972247B2 (en) * 2007-12-26 2015-03-03 Marvell World Trade Ltd. Selection of speech encoding scheme in wireless communication terminals
US8457951B2 (en) * 2008-01-29 2013-06-04 The Nielsen Company (Us), Llc Methods and apparatus for performing variable black length watermarking of media
TWI349487B (en) * 2008-03-25 2011-09-21 Novatek Microelectronics Corp Entropy encoding circuit and encoding method thereof
US8179974B2 (en) 2008-05-02 2012-05-15 Microsoft Corporation Multi-level representation of reordered transform coefficients
US8630848B2 (en) * 2008-05-30 2014-01-14 Digital Rise Technology Co., Ltd. Audio signal transient detection
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
KR101485339B1 (ko) 2008-09-29 2015-01-26 삼성전자주식회사 무손실 부호화/복호화 장치 및 방법
KR100968373B1 (ko) * 2008-10-07 2010-07-09 주식회사 코아로직 가변장 부호 테이블 분할 방법 및 이를 이용한 멀티 코덱의메모리 공유 방법 및 장치
GB2466666B (en) * 2009-01-06 2013-01-23 Skype Speech coding
US8805723B2 (en) * 2009-05-27 2014-08-12 Iviu Technologies, Llc Acoustically transmitting a resource identifier in multiple concurrent segments
CN101615910B (zh) 2009-05-31 2010-12-22 华为技术有限公司 压缩编码的方法、装置和设备以及压缩解码方法
EP2273495A1 (en) * 2009-07-07 2011-01-12 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Digital audio signal processing system
WO2011022043A1 (en) * 2009-08-20 2011-02-24 Thomson Licensing Method and apparatus for reusing tree structures to encode and decode binary sets
US8788277B2 (en) * 2009-09-11 2014-07-22 The Trustees Of Columbia University In The City Of New York Apparatus and methods for processing a signal using a fixed-point operation
ES2441069T3 (es) * 2009-10-08 2014-01-31 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Decodificador multimodo para señal de audio, codificador multimodo para señal de audio, procedimiento y programa de computación que usan un modelado de ruido en base a linealidad-predicción-codificación
US8380524B2 (en) * 2009-11-26 2013-02-19 Research In Motion Limited Rate-distortion optimization for advanced audio coding
KR101885258B1 (ko) 2010-05-14 2018-08-06 삼성전자주식회사 비디오 신호의 부호화 방법과 그 장치, 및 비디오 복호화 방법과 그 장치
US8761240B2 (en) * 2010-07-13 2014-06-24 Blackberry Limited Methods and devices for data compression using context-based coding order
WO2012046685A1 (ja) * 2010-10-05 2012-04-12 日本電信電話株式会社 符号化方法、復号方法、符号化装置、復号装置、プログラム、記録媒体
HUE028417T2 (en) 2011-01-14 2016-12-28 Ge Video Compression Llc Entropy encoding and decoding scheme
KR20130111611A (ko) * 2011-01-25 2013-10-10 니뽄 덴신 덴와 가부시키가이샤 부호화 방법, 부호화 장치, 주기성 특징량 결정 방법, 주기성 특징량 결정 장치, 프로그램, 기록 매체
US8942917B2 (en) 2011-02-14 2015-01-27 Microsoft Corporation Change invariant scene recognition by an agent
WO2012144128A1 (ja) 2011-04-20 2012-10-26 パナソニック株式会社 音声音響符号化装置、音声音響復号装置、およびこれらの方法
US9557836B2 (en) * 2011-11-01 2017-01-31 Microsoft Technology Licensing, Llc Depth image compression
US9459866B2 (en) 2011-12-30 2016-10-04 Intel Corporation Vector frequency compress instruction
CN103391433B (zh) * 2012-05-09 2017-07-18 腾讯科技(深圳)有限公司 视频编码帧内预测扫描方法及视频编码方法
DE102012211031B3 (de) * 2012-06-27 2013-11-28 Siemens Aktiengesellschaft Verfahren zur Codierung eines Datenstroms
PL3525208T3 (pl) * 2012-10-01 2021-12-13 Nippon Telegraph And Telephone Corporation Sposób kodowania, koder, program i nośnik zapisu
MX339741B (es) * 2012-11-19 2016-06-07 Lg Electronics Inc Aparato de transmision/recepcion de señales y metodo de transmision/recepcion de señales.
US9857470B2 (en) 2012-12-28 2018-01-02 Microsoft Technology Licensing, Llc Using photometric stereo for 3D environment modeling
US10043535B2 (en) 2013-01-15 2018-08-07 Staton Techiya, Llc Method and device for spectral expansion for an audio signal
US9940553B2 (en) 2013-02-22 2018-04-10 Microsoft Technology Licensing, Llc Camera/object pose from predicted coordinates
JP5641090B2 (ja) * 2013-03-14 2014-12-17 ソニー株式会社 送信装置、送信方法、受信装置および受信方法
US9786269B2 (en) * 2013-03-14 2017-10-10 Google Inc. Language modeling of complete language sequences
US9607624B2 (en) * 2013-03-29 2017-03-28 Apple Inc. Metadata driven dynamic range control
US9245352B1 (en) 2013-04-12 2016-01-26 Google Inc. Systems and methods for near lossless image compression
US20140327737A1 (en) 2013-05-01 2014-11-06 Raymond John Westwater Method and Apparatus to Perform Optimal Visually-Weighed Quantization of Time-Varying Visual Sequences in Transform Space
US20140355769A1 (en) * 2013-05-29 2014-12-04 Qualcomm Incorporated Energy preservation for decomposed representations of a sound field
US9626184B2 (en) 2013-06-28 2017-04-18 Intel Corporation Processors, methods, systems, and instructions to transcode variable length code points of unicode characters
BR112016007264B1 (pt) * 2013-10-09 2021-12-28 Sony Corporation Dispositivos e métodos de codificação e de decodificação, e, meios de armazenamento legíveis por computador
RU2638734C2 (ru) 2013-10-18 2017-12-15 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Кодирование спектральных коэффициентов спектра аудиосигнала
US10045135B2 (en) 2013-10-24 2018-08-07 Staton Techiya, Llc Method and device for recognition and arbitration of an input connection
US10043534B2 (en) 2013-12-23 2018-08-07 Staton Techiya, Llc Method and device for spectral expansion for an audio signal
ES2768090T3 (es) * 2014-03-24 2020-06-19 Nippon Telegraph & Telephone Método de codificación, codificador, programa y soporte de registro
EP2963949A1 (en) * 2014-07-02 2016-01-06 Thomson Licensing Method and apparatus for decoding a compressed HOA representation, and method and apparatus for encoding a compressed HOA representation
US9794714B2 (en) * 2014-07-02 2017-10-17 Dolby Laboratories Licensing Corporation Method and apparatus for decoding a compressed HOA representation, and method and apparatus for encoding a compressed HOA representation
US10452658B2 (en) 2014-12-23 2019-10-22 Teradata Us, Inc. Caching methods and a system for entropy-based cardinality estimation
WO2016142002A1 (en) * 2015-03-09 2016-09-15 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder, method for encoding an audio signal and method for decoding an encoded audio signal
US10763893B2 (en) * 2016-07-20 2020-09-01 Georges Harik Method for data compression
KR102252298B1 (ko) * 2016-10-21 2021-05-14 삼성전자주식회사 표정 인식 방법 및 장치
US10735736B2 (en) 2017-08-29 2020-08-04 Google Llc Selective mixing for entropy coding in video compression
US11177823B2 (en) * 2018-05-21 2021-11-16 Google Llc Data compression by local entropy encoding
US10475456B1 (en) * 2018-06-04 2019-11-12 Qualcomm Incorporated Smart coding mode switching in audio rate adaptation
US11257254B2 (en) * 2018-07-20 2022-02-22 Google Llc Data compression using conditional entropy models
CN111641826B (zh) * 2019-03-01 2022-05-20 杭州海康威视数字技术股份有限公司 对数据进行编码、解码的方法、装置与系统
US11095311B2 (en) * 2019-11-27 2021-08-17 Qualcomm Incorporated Quantization codeword selection for low cost parity checking
US11348594B2 (en) * 2020-06-11 2022-05-31 Qualcomm Incorporated Stream conformant bit error resilience
EP4211683B1 (en) 2020-09-09 2026-04-01 VoiceAge Corporation Method and device for classification of uncorrelated stereo content, cross-talk detection, and stereo mode selection in a sound codec
FR3124671B1 (fr) * 2021-06-25 2023-07-07 Fond B Com Procédés de décodage et de codage d’une image, dispositifs et signal associés
CN113656906B (zh) * 2021-07-29 2023-10-03 浙江大学 一种面向燃气轮机的非平稳多变量因果关系分析方法
WO2023150611A1 (en) 2022-02-03 2023-08-10 Dolby Laboratories Licensing Corporation Systems and methods for improved entropy coding efficiency

Family Cites Families (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4420771A (en) 1981-02-09 1983-12-13 Bell Telephone Laboratories, Incorporated Technique for encoding multi-level signals
ATE108587T1 (de) 1986-09-13 1994-07-15 Philips Nv Verfahren und schaltungsanordung zur bitratenreduktion.
US4730348A (en) 1986-09-19 1988-03-08 Adaptive Computer Technologies Adaptive data compression system
US4698672A (en) 1986-10-27 1987-10-06 Compression Labs, Inc. Coding system for reducing redundancy
FR2618354B1 (fr) * 1987-07-20 1989-12-01 Sames Sa Installation de pulverisation de produit de revetement a commande manuelle et projecteur pneumatique d'un tel produit de revetement
US4968135A (en) 1987-08-17 1990-11-06 Digital Equipment Corporation System for producing pixel image data from CCITT encoded pixel data
US4792981A (en) 1987-09-21 1988-12-20 Am International, Inc. Manipulation of run-length encoded images
US4813056A (en) 1987-12-08 1989-03-14 General Electric Company Modified statistical coding of digital signals
JPH0621830Y2 (ja) 1988-03-11 1994-06-08 本田技研工業株式会社 自動車のサイドシル構造
EP0339589A3 (en) 1988-04-28 1992-01-02 Sharp Kabushiki Kaisha Orthogonal transform coding system for image data
US5043919A (en) 1988-12-19 1991-08-27 International Business Machines Corporation Method of and system for updating a display unit
US5033087A (en) * 1989-03-14 1991-07-16 International Business Machines Corp. Method and apparatus for the automatic determination of phonological rules as for a continuous speech recognition system
DE3943879B4 (de) 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digitales Codierverfahren
FR2646978B1 (fr) 1989-05-11 1991-08-23 France Etat Procede et installation a codage de signaux sonores
US5128758A (en) 1989-06-02 1992-07-07 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
US5179442A (en) 1989-06-02 1993-01-12 North American Philips Corporation Method and apparatus for digitally processing a high definition television augmentation signal
JPH0773249B2 (ja) * 1989-06-29 1995-08-02 富士通株式会社 音声符号化・復号化伝送方式
US5270832A (en) 1990-03-14 1993-12-14 C-Cube Microsystems System for compression and decompression of video data using discrete cosine transform and coding techniques
US5146324A (en) 1990-07-31 1992-09-08 Ampex Corporation Data compression using a feedforward quantization estimator
JPH04199981A (ja) 1990-11-29 1992-07-21 Nec Corp 即時処理型1次元符号器
US5253053A (en) 1990-12-31 1993-10-12 Apple Computer, Inc. Variable length decoding using lookup tables
US5266941A (en) 1991-02-15 1993-11-30 Silicon Graphics, Inc. Apparatus and method for controlling storage of display information in a computer system
JP2670201B2 (ja) 1991-08-30 1997-10-29 富士写真フイルム株式会社 画像データ圧縮符号化装置および方法
JP2586260B2 (ja) 1991-10-22 1997-02-26 三菱電機株式会社 適応的ブロッキング画像符号化装置
JP3134424B2 (ja) 1991-10-31 2001-02-13 ソニー株式会社 可変長符号化方法及び装置
US5227878A (en) 1991-11-15 1993-07-13 At&T Bell Laboratories Adaptive coding and decoding of frames and fields of video
JP2812446B2 (ja) 1991-11-21 1998-10-22 三洋電機株式会社 画像符号化方式
EP0547696B1 (fr) 1991-12-18 1999-04-21 Laboratoires D'electronique Philips S.A.S. Système de transmission et/ou stockage de signaux correspondant à des images texturées
CA2090052C (en) 1992-03-02 1998-11-24 Anibal Joao De Sousa Ferreira Method and apparatus for the perceptual coding of audio signals
EP0559348A3 (en) 1992-03-02 1993-11-03 AT&T Corp. Rate control loop processor for perceptual encoder/decoder
US5227788A (en) 1992-03-02 1993-07-13 At&T Bell Laboratories Method and apparatus for two-component signal compression
KR950010913B1 (ko) 1992-07-23 1995-09-25 삼성전자주식회사 가변장부호화 및 복호화시스템
US5714950A (en) 1992-07-23 1998-02-03 Samsung Electronics Co., Ltd. System for variable-length-coding and variable-length-decoding digitaldata
JP3348310B2 (ja) 1992-09-28 2002-11-20 ソニー株式会社 動画像符号化方法および動画像符号化装置
CA2107727C (en) 1992-10-07 1999-06-01 Hiroaki Ueda Synchronous compression and reconstruction system
US5982437A (en) 1992-10-26 1999-11-09 Sony Corporation Coding method and system, and decoding method and system
JP2959916B2 (ja) 1992-10-28 1999-10-06 松下電器産業株式会社 デジタル・ビデオ・コーダ用のバーサタイルなエスケープ・ラン・レベル・コーダ
KR0166722B1 (ko) 1992-11-30 1999-03-20 윤종용 부호화 및 복호화방법 및 그 장치
US5467134A (en) 1992-12-22 1995-11-14 Microsoft Corporation Method and system for compressing video data
JP2922376B2 (ja) * 1992-12-26 1999-07-19 キヤノン株式会社 シート厚測定装置
US5535305A (en) * 1992-12-31 1996-07-09 Apple Computer, Inc. Sub-partitioned vector quantization of probability density functions
US5400075A (en) 1993-01-13 1995-03-21 Thomson Consumer Electronics, Inc. Adaptive variable length encoder/decoder
JPH06217110A (ja) 1993-01-20 1994-08-05 Process Shizai Kk 画像変換方法
US5544286A (en) 1993-01-29 1996-08-06 Microsoft Corporation Digital video data compression technique
TW224553B (en) 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
US5376968A (en) 1993-03-11 1994-12-27 General Instrument Corporation Adaptive compression of digital video data using different modes such as PCM and DPCM
US5408234A (en) 1993-04-30 1995-04-18 Apple Computer, Inc. Multi-codebook coding process
ES2165389T3 (es) 1993-05-31 2002-03-16 Sony Corp Aparato y metodo para codificar o descodificar señales, y medio de grabacion.
US5664057A (en) 1993-07-07 1997-09-02 Picturetel Corporation Fixed bit rate speech encoder/decoder
US5590960A (en) * 1993-11-04 1997-01-07 E. I. Du Pont De Nemours And Company One tank paint makeup process using a recirculation loop with liquid injection
KR0155784B1 (ko) 1993-12-16 1998-12-15 김광호 영상데이타의 적응형 가변장 부호화/복호화방법
KR970009408B1 (ko) * 1994-01-18 1997-06-13 대우전자 주식회사 인터/인트라 테이블 선택 회로
US5504591A (en) 1994-04-25 1996-04-02 Microsoft Corporation System and method for compressing graphic images
US5457495A (en) 1994-05-25 1995-10-10 At&T Ipm Corp. Adaptive video coder with dynamic bit allocation
US6195465B1 (en) 1994-09-21 2001-02-27 Ricoh Company, Ltd. Method and apparatus for compression using reversible wavelet transforms and an embedded codestream
US6141446A (en) 1994-09-21 2000-10-31 Ricoh Company, Ltd. Compression and decompression system with reversible wavelets and lossy reconstruction
US5568167A (en) 1994-09-23 1996-10-22 C-Cube Microsystems, Inc. System for providing antialiased video overlays
JP3474005B2 (ja) 1994-10-13 2003-12-08 沖電気工業株式会社 動画像符号化方法及び動画像復号方法
US5802213A (en) 1994-10-18 1998-09-01 Intel Corporation Encoding video signals using local quantization levels
AU697176B2 (en) 1994-11-04 1998-10-01 Koninklijke Philips Electronics N.V. Encoding and decoding of a wideband digital information signal
JP2951861B2 (ja) 1994-12-28 1999-09-20 シャープ株式会社 画像符号化装置及び画像復号装置
JP3371590B2 (ja) 1994-12-28 2003-01-27 ソニー株式会社 高能率符号化方法及び高能率復号化方法
US5574449A (en) 1995-02-24 1996-11-12 Intel Corporation Signal processing with hybrid variable-length and entropy encodidng
US5991451A (en) 1995-03-23 1999-11-23 Intel Corporation Variable-length encoding using code swapping
US5884269A (en) 1995-04-17 1999-03-16 Merging Technologies Lossless compression/decompression of digital audio data
US5864711A (en) 1995-07-05 1999-01-26 Microsoft Corporation System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate
US5825830A (en) 1995-08-17 1998-10-20 Kopf; David A. Method and apparatus for the compression of audio, video or other data
US5995670A (en) 1995-10-05 1999-11-30 Microsoft Corporation Simplified chain encoding
US5819215A (en) 1995-10-13 1998-10-06 Dobson; Kurt Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data
US5889891A (en) * 1995-11-21 1999-03-30 Regents Of The University Of California Universal codebook vector quantization with constrained storage
JP3283413B2 (ja) 1995-11-30 2002-05-20 株式会社日立製作所 符号化復号方法、符号化装置および復号装置
JPH09162748A (ja) * 1995-12-01 1997-06-20 Fujitsu Ltd データ符号化方法、データ復号方法、データ圧縮装置、データ復元装置、及びデータ圧縮・復元システム
US5956674A (en) 1995-12-01 1999-09-21 Digital Theater Systems, Inc. Multi-channel predictive subband audio coder using psychoacoustic adaptive bit allocation in frequency, time and over the multiple channels
US5831559A (en) 1996-01-24 1998-11-03 Intel Corporation Encoding/decoding video signals using multiple run-val mapping tables
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US5682152A (en) 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US5812971A (en) 1996-03-22 1998-09-22 Lucent Technologies Inc. Enhanced joint stereo coding method using temporal envelope shaping
US6215910B1 (en) 1996-03-28 2001-04-10 Microsoft Corporation Table-based compression with embedded coding
US5850482A (en) 1996-04-17 1998-12-15 Mcdonnell Douglas Corporation Error resilient method and apparatus for entropy coding
ES2171377T3 (es) 1996-05-28 2002-09-16 Matsushita Electric Industrial Co Ltd Dispositivo de prediccion y decodificado de imagen.
WO1998000924A1 (en) 1996-06-28 1998-01-08 Philips Electronics N.V. High performance variable length decoder with two-word bit stream segmentation and related method
DE19628292B4 (de) 1996-07-12 2007-08-02 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren zum Codieren und Decodieren von Stereoaudiospektralwerten
DE19628293C1 (de) 1996-07-12 1997-12-11 Fraunhofer Ges Forschung Codieren und Decodieren von Audiosignalen unter Verwendung von Intensity-Stereo und Prädiktion
JP3318825B2 (ja) 1996-08-20 2002-08-26 ソニー株式会社 デジタル信号符号化処理方法、デジタル信号符号化処理装置、デジタル信号記録方法、デジタル信号記録装置、記録媒体、デジタル信号伝送方法及びデジタル信号伝送装置
US5828426A (en) 1996-08-20 1998-10-27 Samsung Electronics Co., Ltd. Apparatus for decoding variable length coded data of both MPEG-1 and MPEG-2 standards
US6233017B1 (en) 1996-09-16 2001-05-15 Microsoft Corporation Multimedia compression system with adaptive block sizes
US5748789A (en) 1996-10-31 1998-05-05 Microsoft Corporation Transparent block skipping in object-based video coding systems
KR100318056B1 (ko) 1996-11-06 2001-12-24 모리시타 요이찌 화상 복호화 방법
EP1603244B1 (en) 1996-11-07 2007-08-22 Koninklijke Philips Electronics N.V. Transmitting of a bitstream signal
CN1208513A (zh) 1996-11-11 1999-02-17 菲利浦电子有限公司 使用莱斯编码器/解码器进行数据压缩/扩展
JP3484310B2 (ja) 1997-01-17 2004-01-06 松下電器産業株式会社 可変長符号器
NL1005084C2 (nl) 1997-01-24 1998-07-27 Oce Tech Bv Werkwijze voor het uitvoeren van een beeldbewerkingsoperatie op looplengte gecodeerde bitmaps.
US6038536A (en) 1997-01-31 2000-03-14 Texas Instruments Incorporated Data compression using bit change statistics
US6272175B1 (en) 1997-02-13 2001-08-07 Conexant Systems, Inc. Video signal coding systems and processes using adaptive quantization
US6005980A (en) 1997-03-07 1999-12-21 General Instrument Corporation Motion estimation and compensation of video object planes for interlaced digital video
US5974184A (en) 1997-03-07 1999-10-26 General Instrument Corporation Intra-macroblock DC and AC coefficient prediction for interlaced digital video
FI114248B (fi) 1997-03-14 2004-09-15 Nokia Corp Menetelmä ja laite audiokoodaukseen ja audiodekoodaukseen
US6728775B1 (en) 1997-03-17 2004-04-27 Microsoft Corporation Multiple multicasting of multimedia streams
US6404813B1 (en) 1997-03-27 2002-06-11 At&T Corp. Bidirectionally predicted pictures or video object planes for efficient and flexible video coding
US6259810B1 (en) 1997-04-15 2001-07-10 Microsoft Corporation Method and system of decoding compressed image data
US5883633A (en) 1997-04-15 1999-03-16 Microsoft Corporation Method and system of variable run length image encoding using sub-palette
US6580834B2 (en) 1997-05-30 2003-06-17 Competitive Technologies Of Pa, Inc. Method and apparatus for encoding and decoding signals
DE19730129C2 (de) 1997-07-14 2002-03-07 Fraunhofer Ges Forschung Verfahren zum Signalisieren einer Rauschsubstitution beim Codieren eines Audiosignals
US6421738B1 (en) 1997-07-15 2002-07-16 Microsoft Corporation Method and system for capturing and encoding full-screen video graphics
JP3884172B2 (ja) 1997-10-02 2007-02-21 株式会社東芝 可変長復号化装置および復号化方法
WO1999022525A1 (fr) 1997-10-23 1999-05-06 Mitsubishi Denki Kabushiki Kaisha Procede de codage d'images, codeur d'images, procede de decodage d'images, decodeur d'images
JPH11161782A (ja) 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置
US6111914A (en) 1997-12-01 2000-08-29 Conexant Systems, Inc. Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes
US5946043A (en) 1997-12-31 1999-08-31 Microsoft Corporation Video coding using adaptive coding of block parameters for coded/uncoded blocks
US6226407B1 (en) 1998-03-18 2001-05-01 Microsoft Corporation Method and apparatus for analyzing computer screens
US6054943A (en) 1998-03-25 2000-04-25 Lawrence; John Clifton Multilevel digital information compression based on lawrence algorithm
US7263127B1 (en) 1998-04-02 2007-08-28 Intel Corporation Method and apparatus for simplifying frame-based motion estimation
KR20010071519A (ko) 1998-06-19 2001-07-28 벤자민 에프 커틀러 제1 해상도를 가지는 인코딩된 이미지를 제2 해상도를가지는 이미지로 직접 디코딩하는 방법 및 장치
JP3413720B2 (ja) 1998-06-26 2003-06-09 ソニー株式会社 画像符号化方法及び装置、並びに画像復号方法及び装置
US6253165B1 (en) * 1998-06-30 2001-06-26 Microsoft Corporation System and method for modeling probability distribution functions of transform coefficients of encoded signal
DE19840835C2 (de) 1998-09-07 2003-01-09 Fraunhofer Ges Forschung Vorrichtung und Verfahren zum Entropiecodieren von Informationswörtern und Vorrichtung und Verfahren zum Decodieren von Entropie-codierten Informationswörtern
CN1197254C (zh) 1998-10-06 2005-04-13 松下电器产业株式会社 编码无损压缩方法及其装置和译码无损压缩方法及其装置
US6377930B1 (en) 1998-12-14 2002-04-23 Microsoft Corporation Variable to variable length entropy encoding
US6300888B1 (en) 1998-12-14 2001-10-09 Microsoft Corporation Entrophy code mode switching for frequency-domain audio coding
US6223162B1 (en) * 1998-12-14 2001-04-24 Microsoft Corporation Multi-level run length coding for frequency-domain audio coding
US6404931B1 (en) 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
US6100825A (en) 1998-12-31 2000-08-08 Microsoft Corporation Cluster-based data compression system and method
US6678419B1 (en) 1999-03-26 2004-01-13 Microsoft Corporation Reordering wavelet coefficients for improved encoding
US6477280B1 (en) 1999-03-26 2002-11-05 Microsoft Corporation Lossless adaptive encoding of finite alphabet data
US6573915B1 (en) 1999-12-08 2003-06-03 International Business Machines Corporation Efficient capture of computer screens
US6567781B1 (en) 1999-12-30 2003-05-20 Quikcat.Com, Inc. Method and apparatus for compressing audio data using a dynamical system having a multi-state dynamical rule set and associated transform basis function
JP2001236088A (ja) * 2000-02-22 2001-08-31 Mitsubishi Electric Corp 統計的言語モデル作成装置、統計的言語モデル作成方法及び統計的言語モデル作成プログラムが記述された記録媒体
JP3573735B2 (ja) 2000-05-23 2004-10-06 松下電器産業株式会社 可変長符号化方法および可変長符号化装置
US6542863B1 (en) 2000-06-14 2003-04-01 Intervideo, Inc. Fast codebook search method for MPEG audio encoding
JP4508490B2 (ja) * 2000-09-11 2010-07-21 パナソニック株式会社 符号化装置および復号化装置
US6961685B2 (en) 2000-09-19 2005-11-01 Sy Bon K Probability model selection using information-theoretic optimization criterion
US6735339B1 (en) 2000-10-27 2004-05-11 Dolby Laboratories Licensing Corporation Multi-stage encoding of signal components that are classified according to component value
US6650784B2 (en) 2001-07-02 2003-11-18 Qualcomm, Incorporated Lossless intraframe encoding using Golomb-Rice
US6587057B2 (en) 2001-07-25 2003-07-01 Quicksilver Technology, Inc. High performance memory efficient variable-length coding decoder
US20030033143A1 (en) 2001-08-13 2003-02-13 Hagai Aronowitz Decreasing noise sensitivity in speech processing under adverse conditions
US6825847B1 (en) 2001-11-30 2004-11-30 Nvidia Corporation System and method for real-time compression of pixel colors
US7165028B2 (en) 2001-12-12 2007-01-16 Texas Instruments Incorporated Method of speech recognition resistant to convolutive distortion and additive distortion
US6934677B2 (en) 2001-12-14 2005-08-23 Microsoft Corporation Quantization matrices based on critical band pattern information for digital audio wherein quantization bands differ from critical bands
CN101448162B (zh) 2001-12-17 2013-01-02 微软公司 处理视频图像的方法
US7139703B2 (en) 2002-04-05 2006-11-21 Microsoft Corporation Method of iterative noise estimation in a recursive framework
US6653955B1 (en) 2002-05-09 2003-11-25 Lsi Logic Corporation Multi-symbol variable length code decoder
GB2388502A (en) 2002-05-10 2003-11-12 Chris Dunn Compression of frequency domain audio signals
US7016547B1 (en) 2002-06-28 2006-03-21 Microsoft Corporation Adaptive entropy encoding/decoding for screen capture content
DE10236694A1 (de) 2002-08-09 2004-02-26 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum skalierbaren Codieren und Vorrichtung und Verfahren zum skalierbaren Decodieren
US7424434B2 (en) 2002-09-04 2008-09-09 Microsoft Corporation Unified lossy and lossless audio compression
DE60330198D1 (de) * 2002-09-04 2009-12-31 Microsoft Corp Entropische Kodierung mittels Anpassung des Kodierungsmodus zwischen Niveau- und Lauflängenniveau-Modus
US7433824B2 (en) 2002-09-04 2008-10-07 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
JP4728568B2 (ja) * 2002-09-04 2011-07-20 マイクロソフト コーポレーション レベル・モードとラン・レングス/レベル・モードの間での符号化を適応させるエントロピー符号化
US7328150B2 (en) 2002-09-04 2008-02-05 Microsoft Corporation Innovations in pure lossless audio compression
US7502743B2 (en) 2002-09-04 2009-03-10 Microsoft Corporation Multi-channel audio encoding and decoding with multi-channel transform selection
US6795584B2 (en) 2002-10-03 2004-09-21 Nokia Corporation Context-based adaptive variable length coding for adaptive block transforms
US20040136457A1 (en) 2002-10-23 2004-07-15 John Funnell Method and system for supercompression of compressed digital video
US6646578B1 (en) 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method
US7324927B2 (en) 2003-07-03 2008-01-29 Robert Bosch Gmbh Fast feature selection method and system for maximum entropy modeling
US7724827B2 (en) 2003-09-07 2010-05-25 Microsoft Corporation Multi-layer run level encoding and decoding

Also Published As

Publication number Publication date
US7599840B2 (en) 2009-10-06
NO341186B1 (no) 2017-09-04
EP1905000B1 (en) 2011-11-30
NO20076261L (no) 2008-02-06
EP1905000A4 (en) 2009-08-26
EP1905000A2 (en) 2008-04-02
KR101278805B1 (ko) 2013-06-25
WO2007011653A2 (en) 2007-01-25
WO2007011653A3 (en) 2007-06-07
CN101223573A (zh) 2008-07-16
ATE536001T1 (de) 2011-12-15
JP2009501943A (ja) 2009-01-22
CA2612537C (en) 2014-09-09
JP5085543B2 (ja) 2012-11-28
MX2008000524A (es) 2008-03-06
US20070016418A1 (en) 2007-01-18
KR20080025399A (ko) 2008-03-20
CN101223573B (zh) 2011-07-27
AU2006270259B2 (en) 2011-03-03
AU2006270259A1 (en) 2007-01-25
CA2612537A1 (en) 2007-01-25

Similar Documents

Publication Publication Date Title
ES2378393T3 (es) Utilización selectiva de múltiples modelos para codificación y descodificación adaptativa
US7693709B2 (en) Reordering coefficients for waveform coding or decoding
US7684981B2 (en) Prediction of spectral coefficients in waveform coding and decoding
US8630861B2 (en) Mixed lossless audio compression
RU2696292C2 (ru) Аудиокодер и декодер
US7383180B2 (en) Constant bitrate media encoding techniques
US7424434B2 (en) Unified lossy and lossless audio compression
US7328150B2 (en) Innovations in pure lossless audio compression
JP5400143B2 (ja) オーバーラッピング変換の2つのブロック変換への因数分解
RU2793725C2 (ru) Аудиокодер и декодер