ES2615891T3 - Codificador de audio, decodificador de audio, método para codificar una información de audio, método para decodificar una información de audio y programa informático que utiliza una tabla de troceo que describe tanto valores de estado significativos como límites de intervalo - Google Patents

Codificador de audio, decodificador de audio, método para codificar una información de audio, método para decodificar una información de audio y programa informático que utiliza una tabla de troceo que describe tanto valores de estado significativos como límites de intervalo Download PDF

Info

Publication number
ES2615891T3
ES2615891T3 ES11700132.1T ES11700132T ES2615891T3 ES 2615891 T3 ES2615891 T3 ES 2615891T3 ES 11700132 T ES11700132 T ES 11700132T ES 2615891 T3 ES2615891 T3 ES 2615891T3
Authority
ES
Spain
Prior art keywords
value
context
values
chopping
audio
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
ES11700132.1T
Other languages
English (en)
Inventor
Guillaume Fuchs
Markus Multrus
Nikolaus Rettelbach
Vignesh Subbaraman
Oliver Weiss
Marc Gayer
Patrick Warmbold
Christian Griebel
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.)
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Original Assignee
Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
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 Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV filed Critical Fraunhofer Gesellschaft zur Forderung der Angewandten Forschung eV
Application granted granted Critical
Publication of ES2615891T3 publication Critical patent/ES2615891T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • G10L19/002Dynamic bit allocation
    • 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
    • G10L19/0204Speech 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 using subband decomposition
    • G10L19/0208Subband 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/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
    • G10L19/032Quantisation or dequantisation of spectral components
    • 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

Landscapes

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

Abstract

Un decodificador de audio (200; 800) para proporcionar una información de audio decodificada (212; 812) basándose en una información de audio codificada (210; 810), comprendiendo el decodificador de audio: un decodificador aritmético (230; 820) para proporcionar una pluralidad de valores espectrales decodificados (232; 822) basándose en una representación codificada aritméticamente (222; 821) de los valores espectrales comprendida en la información de audio codificada (210; 810); y un convertidor del dominio de la frecuencia al dominio del tiempo (260; 830) para proporcionar una representación de audio en el dominio del tiempo (262; 812) usando los valores espectrales decodificados (232; 822), para obtener la información de audio decodificada (212; 812); en el que el decodificador aritmético (232; 820) está configurado para seleccionar una regla de mapeo (297; cum_freq[]) que describe un mapeo de un valor de código (acod_m; valor) de la representación codificada aritméticamente (821) de valores espectrales sobre un código de símbolo (símbolo) que representa uno o más de los valores espectrales decodificados, o al menos una porción de uno o más de los valores espectrales decodificados dependiendo de un estado del contexto (s) descrito por un valor numérico de contexto actual (c); en el que el decodificador aritmético (230; 820) está configurado para determinar el valor numérico de contexto actual (c) dependiendo de una pluralidad de valores espectrales previamente decodificados; en el que el decodificador aritmético está configurado para evaluar una tabla de troceo (ari_hash_m[]), las entradas de la cual definen tanto valores de estado significativos entre los valores numéricos de contexto como los límites de los intervalos de valores de estado no significativos entre los valores numéricos de contexto, para seleccionar la regla de mapeo, en el que un valor de índice de regla de mapeo está individualmente asociado a un valor numérico de contexto que es un valor de estado significativo, y en el que un valor de índice común de regla de mapeo está asociado a diferentes valores numéricos de contexto que radican dentro de uno de dichos intervalos delimitados por dichos límites de intervalo.

Description

5
10
15
20
25
30
35
40
45
50
55
60
Codificador de audio, decodificador de audio, metodo para codificar una informacion de audio, metodo para decodificar una informacion de audio y programa informatico que utiliza una tabla de troceo que describe tanto valores de estado significativos como lfmites de intervalo
DESCRIPCION
Campo tecnico
Las realizaciones de acuerdo con la invencion estan relacionadas con un decodificador de audio para proporcionar informacion de audio decodificada basandose en una informacion de audio codificada, un codificador de audio para proporcionar una informacion de audio codificada basandose en una informacion de audio de entrada, un metodo para proporcionar una informacion de audio decodificada basandose en una informacion de audio codificada, un metodo para proporcionar una informacion de audio codificada basandose en una informacion de audio de entrada y un programa informatico.
Las realizaciones de acuerdo con la invencion estan relacionadas con una codificacion espectral sin ruido mejorada, que se puede utilizar en un codificador o decodificador de audio o similar, un denominado codificador unificado de habla y audio (USAC).
Antecedentes de la invencion
A continuacion, se explicara brevemente los antecedentes de la invencion para facilitar el entendimiento de la invencion y las ventajas de la misma. Durante la ultima decada, se invirtieron grandes esfuerzos en la creacion de la posibilidad de almacenar digitalmente y distribuir contenidos de audio con buena eficacia de tasa de bits. Un logro importante en este sentido es la definicion de la Norma Internacional ISO/IEC 14496-3. La parte 3 de esta Norma esta relacionada con una codificacion y decodificacion de contenidos de audio, y la subparte 4 de la parte 3 esta relacionada con la codificacion general de audio. ISO/IEC 14496 parte 3, subparte 4, define un concepto para la codificacion y decodificacion del contenido general de audio. Ademas, se han propuesto otras mejoras para mejorar la calidad y/o reducir la tasa de bits requerida.
De acuerdo con el concepto descrito en dicha Norma, se convierte una senal de audio en el dominio del tiempo a una representacion de tiempo-frecuencia. La transformacion del dominio del tiempo al dominio de tiempo-frecuencia se realiza tipicamente empleando bloques de transformadas, que tambien se denominan como “tramas” de muestras en el dominio del tiempo. Se ha encontrado que es ventajoso utilizar tramas superpuestas, que estan desplazadas, por ejemplo, por media trama, puesto que la superposicion permite evitar con eficacia (o al menos reducir) los artefactos. Ademas, se ha encontrado que se debena realizar una generacion de ventanas para evitar los artefactos que se originan a partir de este procesamiento de tramas limitadas temporalmente.
Al transformar una porcion en ventana de la senal de audio de entrada del dominio del tiempo al dominio de frecuencia-tiempo, se obtiene una compactacion de la energfa en muchos casos, de tal manera que algunos de los valores espectrales comprenden una magnitud significativamente mayor que una pluralidad de otros valores espectrales. En consecuencia, en muchos casos hay un numero comparativamente pequeno de valores espectrales que tienen una magnitud que es significativamente superior a una magnitud promedio de los valores espectrales. Un ejemplo tfpico de una transformacion del dominio del tiempo al dominio del tiempo-frecuencia que da como resultado una compactacion de la energfa es la llamada transformada de coseno discreta modificada (MDCT).
Los valores espectrales con frecuencia se cambian de escala y cuantifican de acuerdo con un modelo psicoacustico, de manera que los errores de cuantificacion son comparativamente menores para los valores espectrales piscoacusticamente mas importantes y son comparativamente mayores para valores espectrales piscoacusticamente menos importantes. Los valores espectrales cambiados de escala y cuantificados se codifican para proporcionar una representacion de los mismos eficaz con respecto a la tasa de bits.
Por ejemplo, el uso de la denominada codificacion de Huffman de coeficientes espectrales cuantificados se describe en la Norma Internacional ISO/IEC 14496-3:2005(E), parte 3, subparte 4.
Meine N et al, “Improved Quantization and Lossless Coding for Subband Audio Coding”, preimpresiones de los artfculos presentados en 118th AES Convention, mayo de 2005, paginas 1-9, XP008071322, desvela un algoritmo de codificacion de origen, que usa cuantificacion de vector y codificacion aritmetica junto con un contexto adaptado dinamicamente de indices de vector previamente codificados. El nucleo de este algoritmo es el mapeo numericamente optimizado de un gran numero de estados de origen a un numero pequeno de diferentes tablas de codigo. Esto posibilita su aplicacion a codificacion de audio, donde proporciona eficacia superior a la cuantificacion y codificacion sin perdidas usada en MPEG-AAC.
Sin embargo, se ha encontrado que la calidad de la codificacion de los valores espectrales tiene un impacto
5
10
15
20
25
30
35
40
45
50
55
60
significativo en la tasa de bits requerida. Tambien, se ha encontrado que la complejidad de un decodificador de audio, que con frecuencia esta implementado en un dispositivo portatil del consumidor, y que, por lo tanto debena ser economico y de bajo consumo de potencia, depende de la codificacion utilizada para codificar los valores espectrales.
En vista de esta situacion, existe una necesidad de un concepto para una codificacion y decodificacion de un contenido de audio, que proporciona una compensacion mejorada entre eficacia de tasa de bits y eficacia de recursos.
Sumario de la invencion
Una realizacion de acuerdo con la invencion crea un decodificador de audio para proporcionar una informacion de audio decodificada basandose en una informacion de audio codificada, como se expone en la reivindicacion independiente 1. El decodificador de audio comprende un decodificador aritmetico para proporcionar una pluralidad de valores espectrales decodificados basandose en una representacion aritmeticamente codificada de los valores espectrales. El decodificador de audio comprende ademas un convertidor del dominio de la frecuencia al dominio del tiempo para proporcionar una representacion de audio en el dominio del tiempo utilizando los valores espectrales decodificados, para obtener la informacion de audio decodificada. El decodificador aritmetico esta configurado para seleccionar una regla de mapeo que describe el mapeo de un valor codigo en un codigo de sfmbolo (codigo de sfmbolo que tipicamente describe un valor espectral o una pluralidad de valores espectrales o un plano de bit mas significativo de un valor espectral o de una pluralidad de valores espectrales) dependiendo de un estado del contexto descrito por un valor numerico actual del contexto. El decodificador aritmetico esta configurado para determinar el valor numerico actual del contexto dependiendo de una pluralidad de valores espectrales previamente decodificados. El decodificador aritmetico tambien esta configurado para evaluar una tabla de troceo, las entradas de la cual definen tanto los valores de estado significativos entre los valores numericos del contexto como los lfmites de los intervalos de valores numericos de contexto, para seleccionar la regla de mapeo. Un valor de mdice de regla de mapeo esta individualmente asociado con un valor numerico de contexto que es un valor de estado significativo. Un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto que radican dentro de un intervalo delimitado por lfmites de intervalo (en el que los lfmites de intervalo estan descritos por las entradas de la tabla de troceo).
Esta realizacion de acuerdo con la invencion se basa en el hallazgo de que se puede mejorar la eficacia computacional cuando se mapea un valor numerico de contexto actual sobre un valor de mdice de regla de mapeo con respecto a las soluciones convencionales mediante el uso de una unica tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores numericos de contexto. En consecuencia, es suficiente una busqueda de tabla en una tabla unica para mapear un numero comparativamente grande de valores posibles del valor numerico de contexto actual sobre un numero comparativamente pequeno de valores de mdice de regla de mapeo diferentes. La asociacion de un doble significado a las entradas de la tabla de troceo y, preferentemente, a una sola entrada de la tabla de troceo, permite mantener bajo el numero de accesos de la tabla, lo que a su vez reduce los recursos computacionales requeridos para la seleccion de la regla de mapeo. Ademas, se ha encontrado que el uso de entradas de la tabla de troceo, que definen tanto los valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores numericos de contexto, tfpicamente se adapta bien a un mapeo eficaz del contexto, puesto que tfpicamente hay intervalos comparativamente grandes de valores numericos de contexto, para los cuales se debe utilizar un valor de mdice comun de regla de mapeo, en el que dichos intervalos de valores numericos de contexto estan separados tfpicamente por valores de estado significativos del valor numerico de contexto. Sin embargo, se ha descubierto que el concepto inventivo, en el cual las entradas de la tabla de troceo definen tanto valores de estado significativos como lfmites de los intervalos de valores numericos de contexto se adapta tambien satisfactoriamente a los casos en los cuales dos intervalos de valores numericos de contexto, a los que estan asociados valores de mdice de regla de mapeo diferentes, estan directamente adyacentes sin un valor de estado significativo entre ellos.
Para resumir, el uso de una tabla de troceo cuyas entradas definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores numericos de contexto, proporciona una buena compensacion entre eficacia de codificacion, complejidad computacional y demanda de memoria.
En una realizacion preferida, el decodificador aritmetico esta configurado para comparar el valor numerico de contexto actual, o una version cambiada de escala del valor numerico de contexto actual, con una pluralidad de entradas numericamente ordenadas de la tabla de troceo para obtener un valor de mdice de la tabla de troceo de una entrada de tabla de troceo, de tal manera que el valor numerico de contexto actual radique dentro de un intervalo definido por la entrada de la tabla de troceo designada por el valor de mdice de tabla de troceo obtenido y una entrada adyacente de la tabla de troceo. El decodificador aritmetico esta configurado preferentemente para determinar si el valor numerico de contexto actual comprende un valor definido por una entrada de la tabla de troceo designada por el valor de mdice de la tabla de troceo obtenido, y para proporcionar selectivamente, dependiendo de
5
10
15
20
25
30
35
40
45
50
55
60
un resultado de la determinacion, un valor de mdice de regla de mapeo individualmente asociado con un valor numerico de contexto (actual) definido por la entrada de la tabla de troceo designada por el valor de mdice de la tabla de troceo obtenido, o un valor de mdice de regla de mapeo designado por el valor de mdice de la tabla de troceo obtenido y asociado con diferentes valores numericos de contexto (actual) dentro de un intervalo delimitado, en un lado, por un valor de estado (tambien denominado valor de contexto) definido por la entrada de la tabla de troceo designada por el valor de mdice de la tabla de troceo obtenido. En consecuencia, las entradas de la tabla de troceo pueden definir tanto valores de estado significativos (tambien denominados valores de contexto significativos) como intervalos del valor numerico de contexto (actual). La decision final de si un valor numerico de contexto actual es un valor de estado significativo o radica dentro de un intervalo de valores de estado con el cual esta asociado un valor de mdice de regla de mapeo se realiza comparando el valor numerico de contexto actual con el valor de estado representado por la entrada de la tabla de troceo obtenida finalmente. En consecuencia, se crea un mecanismo eficaz para hacer uso del doble significado de las entradas de la tabla de troceo.
En una realizacion preferida, el decodificador aritmetico esta configurado para determinar, usando la tabla de troceo, si el valor numerico de contexto actual es igual a un valor estado lfmite del intervalo (que tfpicamente, aunque no necesariamente, es un valor estado significativo) definido por una entrada de la tabla de troceo, o que radica dentro de un intervalo definido por dos entradas de la tabla de troceo (preferentemente adyacentes). En consecuencia, el decodificador aritmetico esta configurado preferentemente para proporcionar un valor de mdice de regla de mapeo asociado con una entrada de la tabla de troceo, si se encuentra que el valor numerico de contexto actual es igual a un valor de estado lfmite del intervalo y para proporcionar un valor de mdice de regla de mapeo asociado con un intervalo entre valores de estado definidos por dos entradas adyacentes de la tabla de troceo, si se encuentra que el valor numerico de contexto actual radica dentro de un intervalo entre valores de estado lfmites definidos por dos entradas adyacentes de la tabla de troceo. El decodificador aritmetico esta configurado ademas para seleccionar una tabla de frecuencias acumulativa para el decodificador aritmetico dependiendo del valor de mdice de la regla de mapeo. En consecuencia, el decodificador aritmetico esta configurado para proporcionar un valor de mdice de regla de mapeo “especializado” para un valor numerico de contexto actual que es igual a un valor de estado lfmite del intervalo, mientras proporciona de otra manera un valor de mdice de la regla de mapeo “relacionado con el intervalo”. En consecuencia, es posible manejar tanto los estados significativos como las transiciones entre dos intervalos utilizando un mecanismo comun y computacionalmente eficaz.
En una realizacion preferida, un valor de mdice de regla de mapeo asociado con la primera entrada dada de la tabla de troceo es diferente de un valor de mdice de regla de mapeo asociado con un primer intervalo de valores numericos de contexto, un lfmite superior de cual esta definido por la primera entrada dada de la tabla de troceo, y tambien diferente de un valor de mdice de regla de mapeo asociado con un segundo intervalo de valores numericos de contexto, el lfmite inferior del cual esta definido por la primera entrada dada de la tabla de troceo, de manera que la primera entrada dada de la tabla de troceo define, mediante un valor unico, los lfmites de dos intervalos de valores numericos de contexto (actuales) y un estado significativo del valor de contexto numerico (actual). En este caso, el primer intervalo esta delimitado por el valor de estado definido por la primera entrada dada de la tabla de troceo, en la que el valor de estado definido por la primera entrada dada de la tabla de troceo no pertenece al primer intervalo. De manera similar, el segundo intervalo esta delimitado por el valor de estado definido por la primera entrada dada de la tabla de troceo, en la que el valor de estado definido por la primera entrada dada de la tabla de troceo no pertenece al segundo intervalo. Ademas, debe observarse que utilizando este mecanismo, es posible asociar “individualmente” un valor regla de mdice de mapeo “especializado” a un unico estado de contexto numerico actual, que numericamente se halla entre el valor de estado mas alto (tambien designado un valor de contexto) del primer intervalo y el valor de estado mas bajo (tambien designado como valor de contexto) del segundo intervalo (donde hay, tfpicamente, un numero entero entre el valor numerico mas alto del primer intervalo y el valor numerico mas bajo del segundo intervalo, en concreto el numero definido por la primera entrada dada de la tabla de troceo. Por consiguiente, se pueden mapear valores numericos de contexto actual particularmente caractensticos en un valor de mdice de regla de mapeo individualmente asociado, mientras otros valores numericos de contexto actual menos caractensticos se pueden mapear a valores de mdice de regla de mapeo asociados en una base a intervalos.
En una realizacion preferida, el valor de mdice de regla de mapeo asociado con el primer intervalo de valores de contexto es igual al valor de mdice de regla de mapeo asociado con el segundo intervalo de valores de contexto, de manera que la primera entrada dada de la tabla de troceo define un valor de estado significativo aislado dentro de un entorno bipartite de valores de estado no significativos. En otras palabras, es posible mapear un valor numerico de contexto actual particularmente caractenstico a un valor de mdice de regla de mapeo asociado, mientras los valores numericos de contexto actuales adyacentes a ambos lados de dichos valores numericos actuales de contexto particularmente caractensticos se mapean a un valor de mdice comun de regla de mapeo, que es diferente del valor de mdice de regla de mapeo asociado con el valor numerico actual de contexto particularmente caractenstico.
En una realizacion preferida, un valor de mdice de regla de mapeo asociado con una segunda entrada dada de la tabla de troceo es identico a un valor de mdice de regla de mapeo asociado con un tercer intervalo de valores de contexto, un lfmite del cual esta definido por la segunda entrada dada de la tabla de troceo, y diferente de un valor de mdice de regla de mapeo asociado con un cuarto intervalo de valores de contexto, un lfmite del cual esta definido
5
10
15
20
25
30
35
40
45
50
55
60
por la segunda entrada dada de la tabla de troceo, de tal manera que la segunda entrada dada de la tabla de troceo define un lfmite entre dos intervalos de valores numericos de contexto actuales sin definir un estado significativo de los valores numericos de contexto. Por consiguiente, el concepto de acuerdo con la presente invencion tambien permite definir intervalos adyacentes de valores numericos de contexto (actuales), a los que estan asociados diferentes valores de mdice de regla de mapeo, sin la presencia de un estado significativo entre ellos. Esto se puede conseguir empleando un mecanismo relativamente sencillo y computacionalmente eficaz.
En una realizacion preferida, el decodificador aritmetico esta configurado para evaluar una sola tabla de troceo, las entradas numericamente ordenadas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como lfmites de los intervalos de valores numericos de contexto, para obtener un valor de mdice de la tabla de troceo que designa un intervalo, de los intervalos definidos por las entradas de la tabla de troceo, en los cuales radica el valor numerico de contexto actual y para determinar posteriormente, utilizando la entrada de la tabla designada por el valor de mdice de la tabla de troceo obtenido, si el valor numerico de contexto actual toma un valor de estado significativo o un valor de estado no significativo. Haciendo uso de un concepto de este tipo, se puede mantener razonablemente baja la complejidad de los calculos que se realizan de manera iterativa, de tal manera que se pueda evaluar una pluralidad de entradas numericamente ordenadas de la tabla de troceo con bajo esfuerzo computacional. Solo en una etapa final, que se puede realizar solamente una vez por valor numerico actual de contexto, se puede tomar la decision de si el valor numerico de contexto actual toma un valor de estado significativo o un valor de estado no significativo.
En una realizacion preferida, el decodificador aritmetico esta configurado para evaluar selectivamente una tabla de mapeo, que mapea valores de mdice del intervalo en valores de mdice de regla de mapeo, si se encuentra que el valor numerico de contexto actual no toma un valor de estado significativo, para obtener un valor de mdice de regla de mapeo asociado con un intervalo de valores de estado no significativos (tambien denominados valores de contexto no significativos) dentro del cual radica el valor numerico de contexto actual. En consecuencia, se crea un mecanismo computacionalmente eficaz para obtener un valor de mdice de regla de mapeo de valores numericos actuales de contexto definidos por las entradas de la tabla de troceo.
En una realizacion preferida, las entradas de la tabla de troceo estan en orden numerico y el decodificador aritmetico esta configurado para evaluar una secuencia de entradas de la tabla de troceo para obtener un valor de mdice de tabla de troceo resultado de una entrada de la tabla de troceo, de tal manera que el valor numerico de contexto actual radique dentro de un intervalo definido por la entrada de la tabla de troceo designada por el valor de mdice de la tabla de troceo resultado obtenido y una entrada adyacente de la tabla de troceo. En este caso, el decodificador aritmetico esta configurado para realizar un numero predeterminado de iteraciones para determinar de manera iterativa el valor de mdice de la tabla de troceo resultado. Cada iteracion comprende solo una comparacion unica entre un valor de estado representado por una entrada actual de la tabla de troceo y un valor de estado representado por el valor numerico de contexto actual, y una actualizacion selectiva de un valor de mdice actual de la tabla de troceo que depende de un resultado de dicha unica comparacion. En consecuencia, se obtiene una baja complejidad computacional para evaluar la tabla de troceo y para identificar un valor de mdice de regla de mapeo.
En una realizacion preferida, el decodificador aritmetico esta configurado para distinguir entre un valor numerico de contexto actual que comprende un valor de estado significativo y un valor numerico actual de contexto que comprende un valor de estado no significativo, solo despues de la ejecucion del numero predeterminado de iteraciones. Al hacerlo asf, se reduce la complejidad computacional, puesto que la evaluacion realizada en cada una de las iteraciones se mantiene sencilla.
Otra realizacion de acuerdo con la invencion esta relacionada con un codificador de audio para proporcionar informacion de audio codificada basandose en una informacion de audio de entrada, como se expone en la reivindicacion independiente 1. El codificador de audio comprende un convertidor compactador de energfa del dominio del tiempo al dominio de la frecuencia para proporcionar una representacion de audio en el dominio de la frecuencia basandose en una representacion en el dominio del tiempo de la informacion de audio de entrada, de manera que la representacion de audio en el dominio de la frecuencia comprende un conjunto de valores espectrales. El codificador de audio comprende tambien un codificador aritmetico configurado para codificar un valor espectral o una version previamente procesada del mismo o, de manera equivalente, una pluralidad de valores espectrales o una version previamente procesada de los mismos, utilizando una palabra de codigo de longitud variable. El codificador aritmetico esta configurado para mapear un valor espectral, o un valor de un plano de bits mas significativo de un valor espectral (o, de manera equivalente, una pluralidad de valores espectrales, o un valor de un plano de bits mas significativo de una pluralidad de valores espectrales) sobre un valor de codigo. El codificador aritmetico esta configurado para seleccionar una regla de mapeo que describe un mapeo de un valor espectral, o de un plano de bits mas significativo de un valor espectral, sobre un valor de codigo, dependiendo de un estado de contexto descrito por un valor numerico de contexto actual. El codificador aritmetico esta configurado para determinar el valor numerico de contexto actual dependiendo de una pluralidad de valores espectrales previamente codificados. El codificador aritmetico esta configurado para evaluar una tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como lfmites de los intervalos de valores numericos de contexto, en el que un valor de mdice de regla de mapeo esta individualmente asociado a
5
10
15
20
25
30
35
40
45
50
55
60
un valor numerico (actual) de contexto que es un valor de estado significativo, y en el que un valor de mdice de regla de mapeo comun esta asociado a diferentes valores numericos de contexto (actuales) que radican dentro de un intervalo delimitado por lfmites de intervalo (en el que los lfmites de los intervalos se describen por las entradas de la tabla de troceo).
Este codificador de audio se basa en los mismos hallazgos que el decodificador de audio anteriormente analizado y puede complementarse por las mismas caractensticas y funcionalidades que el decodificador de audio anteriormente descrito, en el que los valores espectrales codificados toman el lugar de los valores espectrales decodificados. En particular, el calculo del valor de mdice de regla de mapeo se puede realizar de la misma manera a la del codificador de audio.
Una realizacion de acuerdo con la invencion crea un metodo para obtener una informacion de audio decodificada basandose en una informacion de audio codificada, como se expone en la reivindicacion independiente 15. El metodo comprende proporcionar una pluralidad de valores espectrales decodificados basandose en una representacion aritmeticamente codificada de los valores espectrales y proporcionar una representacion de audio en el dominio del tiempo usando los valores espectrales decodificados para obtener la informacion de audio decodificada. Proporcionar la pluralidad de valores espectrales decodificados comprende seleccionar una regla de mapeo que describe el mapeo de un valor de codigo que representa un valor espectral o un plano de bits mas significativo de un valor espectral (o, de manera equivalente, una pluralidad de valores espectrales, o un plano de bits mas significativo de una pluralidad de valores espectrales), en una forma codificada sobre un codigo de sfmbolo que representa un valor espectral, o un plano de bits mas significativo de un valor espectral (o, de manera equivalente, una pluralidad de valores espectrales, o un plano de bits mas significativo de una pluralidad de valores espectrales), en forma decodificada, dependiendo de un estado de contexto descrito por un valor numerico de contexto actual. El valor numerico de contexto actual se determina dependiendo de una pluralidad de valores espectrales previamente decodificados. Se evalua una tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como lfmites de los intervalos de valores numericos de contexto. Un valor de mdice de regla de mapeo esta individualmente asociado con un valor numerico de contexto actual que es un valor de estado significativo, y un valor de mdice comun de regla de mapeo esta asociado con un valor numerico de contexto actual que radica dentro de un intervalo delimitado por lfmites de intervalo (donde los lfmites de los intervalos estan definidos por las entradas de la tabla de troceo).
Una realizacion de acuerdo con la invencion crea un metodo para obtener una informacion de audio codificada basandose en una informacion de audio de entrada, como se expone en la reivindicacion independiente 16. El metodo comprende proporcionar una representacion de audio en el dominio de la frecuencia basandose en una representacion en el dominio del tiempo de la informacion de audio de entrada utilizando una conversion compactadora de energfa del dominio del tiempo al dominio de la frecuencia, de tal manera que la representacion de audio en el dominio de la frecuencia comprende un conjunto de valores espectrales. El metodo comprende ademas la codificacion aritmetica de un valor espectral, o una version previamente procesada del mismo, utilizando una palabra codigo de longitud variable, en la que se mapea un valor espectral o un valor de un plano de bits mas significativo de un valor espectral (o, de manera equivalente, una pluralidad de valores espectrales, o un plano de bits mas significativo de una pluralidad de valores espectrales) sobre un valor de codigo. Se selecciona una regla de mapeo que describe un mapeo de un valor espectral o de un plano de bits mas significativo de un valor espectral (o, de manera equivalente, una pluralidad de valores espectrales, o un plano de bits mas significativo de una pluralidad de valores espectrales) sobre un valor de codigo dependiendo de un estado de contexto descrito por un valor numerico de contexto actual. El valor numerico de contexto actual se determina dependiendo de una pluralidad de valores espectrales adyacentes previamente codificados. Se evalua una tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como lfmites de los intervalos de valores numericos de contexto, en el que un valor de mdice de regla de mapeo esta individualmente asociado a un valor numerico de contexto (actual) que es un valor de estado significativo, y en el que un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto (actuales) que radican dentro de un intervalo delimitado por lfmites de intervalo.
Otra realizacion de acuerdo con la invencion esta relacionada con un programa informatico para ejecutar uno de dichos metodos, como se expone en la reivindicacion independiente 17.
Breve descripcion de las figuras
Posteriormente se describen las realizaciones de acuerdo con la presente invencion tomando como referencia las figuras adjuntas, en las cuales:
La Figura 1 muestra un diagrama esquematico de bloques de un codificador de audio, de
acuerdo con una realizacion de la invencion;
La Figura 2 muestra un diagrama esquematico de bloques de un decodificador de audio, de
acuerdo con una realizacion de la invencion:
La Figura 3
muestra una representacion de pseudo-codigo de programa de un algoritmo “values_decode()” para decodificar valores espectrales;
5 La Figura 4
muestra una representacion esquematica de un contexto para un calculo de estado;
La Figura 5a
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_map_context()” para mapear un contexto;
10 La Figura 5b
muestra una representacion de pseudo-codigo de programa de otro algoritmo “arith_map_context()” para mapear un contexto;
La Figura 5c 15
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_get_context()” para obtener un valor de estado de contexto;
La Figura 5d
muestra una representacion de pseudo-codigo de programa de otro algoritmo “arith_get_context()” para obtener un valor de estado de contexto;
20 La Figura 5e
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_get_pk()” para derivar un valor de mdice de tabla de frecuencias acumulativas “pki” a partir de un valor de estado (o una variable de estado);
La Figura 5f 25
muestra una representacion de pseudo-codigo de programa de otro algoritmo “arith_get_pk()”para derivar un valor de mdice de tabla de frecuencias acumulativas “pki” a partir de un valor de estado (o una variable de estado);
La Figura 5g
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_decode()” para la decodificacion aritmetica de un sfmbolo a partir de una
30
palabra codigo de longitud variable;
La Figura 5h
muestra una primera parte de una representacion de pseudo-codigo de programa de otro algoritmo “arith_decode()”para la decodificacion aritmetica de un sfmbolo a partir de una palabra codigo de longitud variable;
35 La Figura 5i
muestra una segunda parte de una representacion de pseudo-codigo de programa de otro algoritmo “arith_decode()” para la decodificacion aritmetica de un sfmbolo a partir de una palabra codigo de longitud variable;
40 La Figura 5j
muestra una representacion de pseudo-codigo de programa de un algoritmo para derivar valores absolutos a,b de valores espectrales a partir de un valor comun m;
La Figura 5k
muestra una representacion de pseudo-codigo de programa de un algoritmo para introducir los valores decodificados a,b en una matriz de valores espectrales
45
decodificados;
La Figura 51
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_update_context()” para obtener un valor de subregion de contexto basandose en los valores absolutos a,b de los valores espectrales decodificados;
50 La Figura 5m
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_finish()” para rellenar entradas de una matriz de valores espectrales decodificados y una matriz de valores de subregion de contexto;
55 La Figura 5n
muestra una representacion de pseudo-codigo de programa de otro algoritmo para derivar los valores absolutos a,b de valores espectrales decodificados a partir de un valor comun m;
La Figura 5o 60
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_update_context()” para actualizar una matriz de valores espectrales decodificados y una matriz de valores de subregion de contexto;
La Figura 5p
muestra una representacion de pseudo-codigo de programa de un algoritmo “arith_save_context()”para rellenar entradas de una matriz de valores espectrales
La Figura cn _Q
5
La Figura 5r
La Figura 6a
10
La Figura 6b
La Figura 6c
La Figura 6d
15
La Figura 6e
La Figura 6f
20
La Figura 6g
25
La Figura 6h
La Figura 6i
30
La Figura 6j
La Figura 7
35
La Figura 8
La Figura 9
40
La Figura 10
45
La Figura 11
La Figura 12
50
La Figura 13
La Figura 14a
55
La Figura 14b
La Figura 15a
decodificados y entradas de una matriz de valores de subregion de contexto; muestra una leyenda de definiciones; muestra otra leyenda de definiciones;
muestra una representacion de la sintaxis de un bloque de datos sin procesar de una codificacion unificada de habla y audio (USAC);
muestra una representacion de la sintaxis de un elemento de canal unico;
muestra una representacion de la sintaxis de un elemento de par de canales;
muestra una representacion de la sintaxis de una informacion de control “ICS”;
muestra una representacion de la sintaxis de un flujo de canal en el dominio de la frecuencia;
muestra una representacion de la sintaxis de datos espectrales aritmeticamente codificados;
muestra una representacion de la sintaxis para decodificar un conjunto de valores espectrales;
muestra otra representacion de la sintaxis para decodificar un conjunto de valores espectrales;
muestra una leyenda de elementos de datos y variables; muestra otra leyenda de elementos de datos y variables;
muestra un diagrama esquematico de bloques de un codificador de audio, de acuerdo con el primer aspecto de la invencion;
muestra un diagrama esquematico de bloques de un decodificador de audio, de acuerdo con el primer aspecto de la invencion;
muestra una representacion grafica de un mapeo de un valor numerico de contexto actual sobre un valor de mdice de regla de mapeo, de acuerdo con el primer aspecto de la invencion;
muestra un diagrama esquematico de bloques de un codificador de audio, de acuerdo con un segundo aspecto de la invencion;
muestra un diagrama esquematico de bloques de un decodificador de audio, de acuerdo con el segundo aspecto de la invencion;
muestra un diagrama esquematico de bloques de un codificador de audio, de acuerdo con un tercer aspecto de la invencion;
muestra un diagrama esquematico de bloques de un decodificador de audio, de acuerdo con el tercer aspecto de la invencion;
muestra una representacion esquematica de un contexto para un calculo de estado, como se utiliza de acuerdo con el borrador de trabajo 4 del Proyecto de Norma USAC;
muestra una vista general de las tablas como se utilizan en el esquema de codificacion aritmetica de acuerdo con el borrador de trabajo 4 del Proyecto de Norma USAC;
muestra una representacion esquematica de un contexto para el calculo de estado como se utiliza en las realizaciones de acuerdo con la invencion;
5
10
15
20
25
30
35
40
45
50
55
60
La Figura 15b
La Figura 16a
La Figura 16b
La Figura 17
La Figura 18
La Figura 19
La Figura 20
muestra una vista general de las tablas como se utilizan en el esquema de codificacion aritmetica de acuerdo con la presente invencion;
muestra una representacion grafica de una demanda de memoria de solo lectura para el esquema de codificacion sin ruido de acuerdo con la presente invencion y de acuerdo con el borrador de trabajo 5 del Proyecto de Norma USAC y de acuerdo con la Codificacion de Huffman AAC (codificacion avanzada de audio);
muestra una representacion grafica de una demanda de datos de memoria de solo lectura total del decodificador USAC de acuerdo con la presente invencion y de acuerdo con el concepto de acuerdo con el borrador de trabajo 5 del Proyecto de Norma USAC;
muestra una representacion esquematica de una disposicion para una comparacion de una codificacion sin ruido de acuerdo con el borrador de trabajo 3 o el borrador de trabajo 5 del Proyecto de Norma USAC con un esquema de codificacion de acuerdo con la presente invencion;
muestra una representacion de tabla de tasas de bits promedio producidas por un codificador aritmetico USAC de acuerdo con el borrador de trabajo 3 del Proyecto de Norma USAC y de acuerdo con una realizacion de la presente invencion;
muestra una representacion de tabla los niveles mmimo y maximo de reserva de bits para un decodificador aritmetico de acuerdo con el borrador de trabajo 3 del Proyecto de Norma USAC y para un decodificador aritmetico de acuerdo con una realizacion de la presente invencion;
muestra una representacion de tabla de los numeros de complejidad promedio para decodificar un flujo de bits de 32 kbits de acuerdo con el borrador de trabajo 3 del Proyecto de Norma USAC para diferentes versiones del codificador aritmetico;
Las Figuras 21(1) y 21(2)
muestran una representacion “ari_lookup_m[600]”; de tabla de un contenido de una tabla
Las Figuras 22(1) a 22(4)
muestran una representacion “ari_hash_m[600]”; de tabla de un contenido de una tabla
Las Figuras 23(1) a 23(7)
muestran una representacion “ari_cf_m[96][17]”; y de tabla de un contenido de una tabla
La Figura 24 muestra una representacion de tabla de un contenido de una tabla “ari_cf_r[]”.
Descripcion detallada de las realizaciones
1. Codificador de audio de acuerdo con la Figura 7
Figura 7 muestra un diagrama esquematico de bloques de un codificador de audio de acuerdo con una realizacion de la invencion. El codificador de audio 700 esta configurado para recibir una informacion de audio de entrada 710 para proporcionar, basandose en la misma, una informacion de audio codificada 712. El codificador de audio comprende un convertidor compactador de energfa del dominio del tiempo al dominio de la frecuencia 720 que esta configurado para proporcionar una representacion de audio en el dominio de la frecuencia 722 basandose en una representacion en el dominio del tiempo de la informacion de audio de entrada 710, de manera tal que la representacion de audio en el dominio de la frecuencia 722 comprende un conjunto de valores espectrales. El codificador de audio 700 comprende tambien un codificador aritmetico 730 configurado para codificar un valor espectral (del conjunto de valores espectrales que forman la representacion de audio en el dominio de la frecuencia 722), o una version previamente procesada del mismo, utilizando una palabra codigo de longitud variable para obtener la informacion de audio codificada 712 (que puede comprender, por ejemplo, una pluralidad de palabras codigo de longitud variable).
El codificador aritmetico 730 esta configurado para mapear un valor espectral, o un valor de un plano de bits mas significativo de un valor espectral, sobre un valor de codigo (es decir, sobre una palabra codigo de longitud variable) dependiendo de un estado del contexto. El codificador aritmetico esta configurado para seleccionar una regla de mapeo que describe un mapeo de un valor espectral, o de un plano de bits mas significativo de un valor espectral, sobre un valor de codigo, dependiendo de un estado (actual) del contexto. El codificador aritmetico esta configurado
5
10
15
20
25
30
35
40
45
50
55
60
para determinar el estado actual del contexto, o un valor numerico de contexto actual que describe el estado actual del contexto, dependiendo de una pluralidad de valores espectrales previamente codificados (preferentemente, aunque no necesariamente adyacentes). Para este fin, el codificador aritmetico esta configurado para evaluar una tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto, como los lfmites de los intervalos de valores numericos de contexto, en el que un valor de mdice de regla de mapeo esta individualmente asociado a un valor numerico de contexto (actual) que es un valor de estado significativo, y en el que un valor de mdice comun de la regla de mapeo esta asociado a diferentes valores numericos de contexto (actuales) que radican dentro de un intervalo delimitado por lfmites de intervalo (en el que los lfmites del intervalo estan definidos preferentemente por las entradas de la tabla de troceo).
Como se puede apreciar, se puede realizar el mapeo de un valor espectral (de la representacion de audio en el dominio de la frecuencia 722), o de un plano de bits mas significativo de un valor espectral, sobre un valor de codigo (de la informacion de audio codificada 712), mediante una codificacion de valor espectral 740 utilizando una regla de mapeo 742. Un rastreador de estado 750 puede estar configurado para rastrear el estado del contexto. El rastreador de estado 750 proporciona una informacion 754 que describe el estado actual del contexto. La informacion 754 que describe el estado actual del contexto puede tomar la forma, preferentemente, de un valor numerico de contexto actual. Un selector de reglas de mapeo 760 esta configurado para seleccionar una regla de mapeo, por ejemplo, una tabla de frecuencias acumulativas, que describe un mapeo de un valor espectral, o de un plano de bits mas significativo de un valor espectral, sobre un valor de codigo. En consecuencia, el selector de reglas de mapeo 760 proporciona la informacion de reglas de mapeo 742 a la codificacion de valor espectral 740. La informacion de reglas de mapeo 742 puede tomar la forma de un valor de mdice de regla de mapeo o de una tabla de frecuencias acumulativas seleccionada dependiendo de un valor de mdice de regla de mapeo. El selector de reglas de mapeo 760 comprende (o al menos evalua) una tabla de troceo 752, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites y los intervalos de valores numericos de contexto, en el que un valor de mdice de regla de mapeo esta asociado individualmente a un valor numerico de contexto que es un valor de estado significativo, y en el que un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto que radican dentro de un intervalo delimitado por lfmites de intervalo. Se evalua la tabla de troceo 762 para seleccionar la regla de mapeo, es decir para proporcionar la informacion de reglas de mapeo 742.
Para resumir lo anterior, el codificador de audio 700 ejecuta una codificacion aritmetica de una representacion de audio en el dominio de la frecuencia proporcionada por el convertidor del dominio del tiempo al dominio de la frecuencia. La codificacion aritmetica es dependiente del contexto, de manera que se selecciona una regla de mapeo (por ejemplo una tabla de frecuencias acumulativas) dependiendo de valores espectrales previamente codificados. En consecuencia, se considera que los valores espectrales adyacentes en el tiempo y/o en la frecuencia (o, al menos, dentro de un entorno predeterminado) entre sf y/o al valor espectral codificado actualmente (es decir, los valores espectrales dentro de un entorno predeterminado del valor espectral que se esta codificando actualmente) en la codificacion aritmetica para ajustar la distribucion de probabilidades evaluada por la codificacion aritmetica. Al seleccionar una regla de mapeo apropiada, se evaluan los valores numericos actuales del contexto 754 proporcionados por un rastreador de estado 750. Como tfpicamente el numero de reglas de mapeo diferentes es significativamente menor que el numero de valores posibles de valores numericos actuales de contexto 754, el selector de reglas de mapeo 760 asigna las mismas reglas de mapeo (descritas, por ejemplo, por un valor de mdice de regla de mapeo) a un numero comparativamente grande de diferentes valores numericos de contexto. Sin embargo, hay tfpicamente configuraciones espectrales espedficas (representadas por valores numericos espedficos de contexto) con las cuales debe estar asociada una regla de mapeo particular para obtener una eficacia de codificacion satisfactoria.
Se ha encontrado que se puede realizar la seleccion de una regla de mapeo dependiendo de un valor numerico de contexto actual con una eficacia computacional particularmente elevada si las entradas de una unica tabla de troceo definen tanto valores de estado significativos como los lfmites de los intervalos de valores numericos de contexto (actuales). Se ha encontrado que este mecanismo se adapta bien a los requisitos de la seleccion de reglas de mapeo, puesto que hay muchos casos en que un unico valor de estado significativo (o un valor numerico de contexto significativo) esta embebido entre un intervalo de la izquierda de una pluralidad de valores de estado no significativos (con los cuales se asocia una regla de mapeo comun) y el intervalo de la derecha de una pluralidad de valores de estado no significativos (con los cuales se asocia una regla de mapeo comun). Ademas, el mecanismo de uso de una unica tabla de troceo, las entradas de la cual definen tanto valores de estado significativos como los lfmites de los intervalos de valores numericos de contexto (actuales) puede manejar con eficacia diferentes casos, en los cuales, por ejemplo, hay dos intervalos adyacentes de valores de estado no significativos (tambien denominados valores numericos de contexto no significativos) sin que haya un valor de estado significativo entre los mismos. Se consigue una eficacia computacional particularmente alta debido a que se mantiene bajo un numero de accesos de la tabla. Por ejemplo, una unica busqueda iterativa de tablas es suficiente, en la mayona de las realizaciones, para averiguar si el valor numerico de contexto actual es igual a cualquiera de los valores de estado significativos, o en cual de los intervalos de valores de estado no significativos radica el valor numerico de contexto actual. Por consiguiente, se puede mantener bajo el numero de accesos a la tabla que consume tanto tiempo como
5
10
15
20
25
30
35
40
45
50
55
60
ene^a. Por lo tanto, se puede considerar que el selector de reglas de mapeo 760, que utiliza la tabla de troceo 762, es un selector de mapeo particularmente eficaz en terminos de complejidad computacional, mientras aun permite obtener buena eficacia de codificacion (en terminos de tasa de bits).
A continuacion se describen detalles adicionales con respecto a la derivacion de la informacion de reglas de mapeo 742 a partir del valor numerico de contexto actual 754.
2. Decodificador de audio de acuerdo con la Figura 8
La Figura 8 muestra un diagrama esquematico de bloques de un decodificador de audio 800. El decodificador de audio 800 esta configurado para recibir una informacion de audio codificada 810 y para proporcionar, basandose en la misma, una informacion de audio decodificada 812. El decodificador de audio 800 comprende un decodificador aritmetico 820 que esta configurado para proporcionar una pluralidad de valores espectrales 822 basandose en una representacion codificada aritmeticamente 821 de los valores espectrales. El decodificador de audio 800 comprende ademas un convertidor del dominio de la frecuencia al dominio del tiempo 830 que esta configurado para recibir los valores espectrales decodificados 822 y para proporcionar la representacion de audio en el dominio del tiempo 812, que puede constituir la informacion de audio decodificada, utilizando los valores espectrales decodificados 822, para obtener una informacion de audio decodificada 812.
El decodificador aritmetico 820 comprende un determinador de valores espectrales 824, que esta configurado para mapear un valor de codigo de la representacion codificada aritmeticamente 821 de los valores espectrales sobre un codigo de sfmbolo que representa uno o mas de los valores espectrales decodificados o al menos una porcion (por ejemplo, un plano de bits mas significativo) de uno o mas de los valores espectrales decodificados. El determinador de valores espectrales 824 puede estar configurado para realizar un mapeo dependiendo de una regla de mapeo, que puede estar descrita por una informacion de reglas de mapeo 828a. La informacion de reglas de mapeo 828a puede tomar la forma, por ejemplo, de un valor de mdice de regla de mapeo, o de una tabla seleccionada de frecuencias acumulativas (seleccionada, por ejemplo, dependiendo de un valor de mdice de regla de mapeo).
El decodificador aritmetico 820 esta configurado para seleccionar una regla de mapeo (por ejemplo una tabla de frecuencias acumulativas) que describe el mapeo de valores codigo (descritos por la representacion codificada aritmeticamente 821 de los valores espectrales) sobre un codigo de sfmbolo (que describe uno o mas valores espectrales, o un plano de bits mas significativo del mismo) dependiendo de un estado del contexto (que puede describirse por la informacion de estado del contexto 826a). El decodificador aritmetico 820 esta configurado para determinar el estado actual del contexto (descrito por el valor numerico de contexto actual) dependiendo de una pluralidad de valores espectrales previamente decodificados. Para este fin, se puede utilizar un rastreador de estado 826, que recibe una informacion que describe los valores espectrales previamente decodificados y que proporciona, basandose en la misma, un valor numerico de contexto actual 826a que describe el estado actual del contexto.
El decodificador aritmetico tambien esta configurado para evaluar una tabla de troceo 829, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores numericos de contexto, para seleccionar la regla de mapeo, en el que un valor de mdice de regla de mapeo esta individualmente asociado a un valor numerico de contexto que es un valor de estado significativo, y en el que un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto que radican dentro de un intervalo delimitado por los lfmites de intervalo. La evaluacion de la tabla de troceo 829 se puede realizar, por ejemplo, utilizando un evaluador de tablas de troceo que puede ser parte del selector de reglas de mapeo 828. En consecuencia, se obtiene una informacion de reglas de mapeo 828a, por ejemplo, en forma de un valor de mdice de regla de mapeo basandose en el valor numerico de contexto actual 826a que describe el estado actual del contexto. El selector de reglas de mapeo 828 puede determinar, por ejemplo, el valor de mdice de regla de mapeo 828a dependiendo de un resultado de la evaluacion de la tabla de troceo 829. Como alternativa, la evaluacion de la tabla de troceo 829 puede proporcionar directamente el valor de mdice de regla de mapeo.
Con respecto a la funcionalidad del decodificador de senales de audio 800, se debe tener en cuenta que el decodificador aritmetico 820 esta configurado para seleccionar una regla de mapeo (por ejemplo una tabla de frecuencias acumulativas) que, por termino medio, esta bien adaptada a los valores espectrales a decodificar, ya que la regla de mapeo se selecciona dependiendo del estado actual del contexto (descrito, por ejemplo, por el valor numerico de contexto actual), que a su vez se determina dependiendo de una pluralidad de valores espectrales previamente decodificados. En consecuencia, se pueden aprovechar las dependencias estadfsticas entre valores espectrales adyacentes a decodificar. Ademas, el decodificador aritmetico 820 puede implementarse eficazmente con una buena compensacion entre complejidad computacional, tamano de tabla y eficacia de codificacion, utilizando el selector de reglas de mapeo 828. Mediante la evaluacion de una (unica) tabla de troceo 829, las entradas de la cual describen tanto valores de estado significativos como lfmites de intervalo de los intervalos de valores de estado no significativos, una unica busqueda iterativa de tabla puede ser suficiente para derivar la informacion de reglas de mapeo 828a a partir del valor numerico de contexto actual 826a. En consecuencia, es posible mapear un numero comparativamente grande de diferentes valores numericos de contexto (actuales)
5
10
15
20
25
30
35
40
45
50
55
60
posibles, sobre un numero comparativamente mas pequeno de valores de mdice de reglas de mapeo diferentes. Al usar la tabla de troceo 829, como se ha descrito anteriormente, es posible aprovechar el hallazgo de que, en muchos casos, hay un solo valor de estado significativo (valor de contexto significativo) aislado entre un intervalo de la izquierda de valores de estado no significativos (valores de contexto no significativos) y un intervalo de la derecha de valores de estado no significativos (valores de contexto no significativos), en el que un valor de mdice de regla de mapeo diferente esta asociado con el valor de estado significativo (valor de contexto significativo), en comparacion con los valores de estado (valores de contexto) del intervalo de la izquierda y los valores de estado (valores de contexto) del intervalo de la derecha. Sin embargo, el uso de la tabla de troceo 829 tambien es muy adecuado para situaciones en las cuales dos intervalos de valores numericos de estado estan inmediatamente adyacentes, sin un valor de estado significativo interpuesto entre los mismos.
En conclusion, el selector de reglas de mapeo 828, que evalua la tabla de troceo 829, proporciona una eficacia particularmente buena cuando se selecciona una regla de mapeo (o cuando se proporciona un valor de mdice de regla de mapeo) dependiendo del estado actual del contexto (o dependiendo del valor numerico de contexto actual que describe el estado actual del contexto), puesto que el mecanismo de troceo se adapta bien a los escenarios de contexto tfpicos de un decodificador de audio.
A continuacion se describen mas detalles.
3. Mecanismo de troceo de valores de contexto de acuerdo con la Figura 9
A continuacion se desvelara un mecanismo de troceo de contextos, que puede implementarse en el selector de reglas de mapeo 760 y/o en el selector de reglas de mapeo 828. Se puede utilizar la tabla de troceo 762 y/o la tabla de troceo 829 para implementar dicho mecanismo de troceo de valores de contexto.
Tomando ahora como referencia la Figura 9, que muestra un escenario de aplicacion de funcion de troceo a valor numerico de contexto actual, se describiran detalles adicionales. En la representacion grafica de la Figura 9, una abscisa 910 describe valores del valor numerico de contexto actual (es decir, los valores numericos de contexto). Una ordenada 912 describe valores de mdice de regla de mapeo. Las marcas 914 describen valores de mdice de reglas de mapeo para los valores numericos de contexto no significativos (que describen estados no significativos). Las marcas 916 describen valores de mdice de reglas de mapeo para los valores numericos de contexto “individuales” (verdaderos) significativos que describen estados significativos (verdaderos). Las marcas 916 describen valores de mdice de reglas de mapeo para valores numericos de contexto “inapropiados” que describen estados significativos “inapropiados”, en el que un estado significativo “inapropiado” es un estado significativo con el cual esta asociado el mismo valor de mdice de regla de mapeo que el de uno de los intervalos adyacentes de valores numericos de contexto no significativos.
Como se puede apreciar, una entrada de la tabla de troceo “ari_hash_m[i1]” describe un estado significativo individual (verdadero) que tiene un valor de contexto de c1. Como se puede apreciar, el valor de mdice de regla de mapeo mriv1 esta asociado al estado significativo individual (verdadero) que tiene el valor numerico de contexto c1. En consecuencia, tanto el valor numerico de contexto c1 como el valor de mdice de regla de mapeo mriv1 pueden describirse por la entrada de la tabla de troceo “ari_hash_m[i1]”. Un intervalo 932 de valores numericos de contexto esta delimitado por el valor numerico de contexto c1, en el que el valor numerico de contexto c1 no pertenece al intervalo 932, de manera que el valor numerico de contexto mas alto del intervalo 932 es igual a c1 - 1. Un valor de mdice de regla de mapeo de mriv4 (que es diferente de mriv1) esta asociado a los valores numericos de contexto del intervalo 932. El valor de mdice de regla de mapeo mriv4 puede describirse, por ejemplo, por la entrada de la tabla “ari_lookup_m[i1-1]” de una tabla adicional “ari_lookup_m”.
Ademas, un valor de mdice de regla de mapeo mriv2 puede estar asociado a valores numericos de contexto que radican dentro de un intervalo 934. Un lfmite inferior del intervalo 934 esta determinado por el valor numerico de contexto c1, que es un valor numerico de contexto significativo, en el que el valor numerico de contexto c1 no pertenece al intervalo 932. En consecuencia, el menor valor del intervalo 934 es igual a c1 + 1 (suponiendo valores numericos enteros de contexto). Otro lfmite del intervalo 934 esta determinado por el valor numerico de contexto c2, en el que el valor numerico de contexto c2 no pertenece al intervalo 934, de manera que el valor mas grande del intervalo 934 es igual a c2 - 1. El valor numerico de contexto c2 es un valor numerico de contexto denominado “inapropiado”, que esta descrito en la entrada de la tabla de troceo “ari_hash_m[i2]”. Por ejemplo, el valor de mdice de regla de mapeo mriv2 puede estar asociado con el valor numerico de contexto c2, de manera tal que el valor numerico de contexto asociado con el valor numerico de contexto significativo “inapropiado” c2 es igual al valor de mdice de regla de mapeo asociado con el intervalo 934 delimitado por el valor numerico de contexto c2. Ademas, un intervalo 936 de valores numericos de contexto tambien esta delimitado por el valor numerico de contexto c2, en el que el valor numerico de contexto c2 no pertenece al intervalo 936, de manera que el valor numerico de contexto mas bajo del intervalo 936 es igual a c2 + 1. Un valor de mdice de regla de mapeo mriv3, que tfpicamente es diferente del valor de mdice de regla de mapeo mriv2, esta asociado con los valores numericos de contexto del intervalo 936.
5
10
15
20
25
30
35
40
45
50
55
60
Como se puede apreciar, el valor de mdice de regla de mapeo mriv4, que esta asociado al intervalo 932 de valores numericos de contexto, puede describirse por una entrada “ariJookup_m[i1-1]” de una tabla “arijookup_m”, el mdice de la regla de mapeo mriv2, que esta asociado a los valores numericos de contexto del intervalo 934, puede describirse por una entrada de la tabla “arijookup_m[i1]” de la tabla “arijookup_m” y el valor de mdice de regla de mapeo mriv3 puede describirse por una entrada de la tabla “ari_lookup_m[i2]” de la tabla “ari_lookup_m”. En el ejemplo dado en este punto, el valor de mdice de la tabla de troceo i2 puede ser 1 mayor que el valor de mdice de la tabla de troceo i1.
Como se puede apreciar a partir de la Figura 9, el selector de reglas de mapeo 760 o el selector de reglas de mapeo 828 puede recibir un valor numerico de contexto actual 764, 826a y decidir, evaluando las entradas de la tabla “ari_hash_m”, si el valor numerico de contexto actual es un valor de estado significativo (independientemente de si es un valor de estado significativo “individual” o un valor de estado significativo “inapropiado”) o si el valor numerico de contexto actual radica dentro de uno de los intervalos 932, 934, 936, que estan delimitados por los valores de estado significativos (“individuales” o “inapropiados”) c1, c2. Tanto la verificacion de si el valor numerico de contexto actual es igual a un valor de estado significativo c1, c2 como la evaluacion de en cual de los intervalos 932, 934, 936 radica el valor numerico de contexto actual (en caso de que el valor numerico de contexto actual no sea igual a un valor de estado significativo) se pueden realizar utilizando una unica busqueda comun de la tabla de troceo.
Ademas, se puede utilizar la evaluacion de la tabla de troceo “ari_hash_m” para obtener un valor de mdice de la tabla de troceo (por ejemplo, i1-1, i1 o i2). Por consiguiente, el selector de reglas de mapeo 760, 828 puede estar configurado para obtener, evaluando una unica tabla de troceo 762, 829 (por ejemplo, la tabla de troceo “ari_hash_m”), un valor de mdice de la tabla de troceo (por ejemplo, i1-1, i1 o i2) que designa un valor de estado significativo (por ejemplo, cl o c2) y/o un intervalo (por ejemplo, 932, 934, 936) y una informacion con respecto a si el valor numerico de contexto actual es un valor de contexto significativo (tambien denominado valor de estado significativo) o no.
Ademas, si se encuentra, en la evaluacion de la tabla de troceo 762, 829, “ari_hash_m”, que el valor numerico de contexto actual no es un valor de contexto “significativo” (o valor de estado “significativo”), se puede utilizar el valor de mdice de la tabla de troceo (por ejemplo, i1-1, i1 o i2) obtenido de la evaluacion de la tabla de troceo (“ari_hash_m”) para obtener un valor de mdice de regla de mapeo asociado con un intervalo 932, 934, 936 de valores numericos de contexto. Por ejemplo, se puede utilizar el valor de mdice de la tabla de troceo (por ejemplo, i1-1, i1 o i2) para designar un elemento de una tabla de mapeo adicional (por ejemplo, “ari_lookup_m”), que describe los valores de mdice de regla de mapeo asociados con el intervalo 932, 934, 936 dentro del cual radica el valor numerico de contexto actual.
Para detalles adicionales, se hace referencia al analisis detallado a continuacion del algoritmo “arith_get_pk” (en el que hay diferentes opciones para este algoritmo “arith_get_pk()”, ejemplos del cual se muestran en las Figuras 5e y 5f).
Ademas, se debe tener en cuenta que el tamano de los intervalos puede diferir de un caso al otro. En algunos casos, un intervalo de valores numericos de contexto comprende un unico valor numerico de contexto. Sin embargo, en muchos casos, un intervalo puede comprender una pluralidad de valores numericos de contexto.
4. Codificador de audio de acuerdo con la Figura 10
La Figura 10 muestra un diagrama esquematico de bloques de un codificador de audio 1000 de acuerdo con una realizacion de la invencion. El codificador de audio 1000 de acuerdo con la Figura 10 es similar al codificador de audio 700 de acuerdo con la Figura 7, de manera que las senales y medios identicos se designan con numeros de referencia identicos en la Figuras 7 y 10.
El codificador de audio 1000 esta configurado para recibir una informacion de audio de entrada 710 y para proporcionar, basandose en la misma, una informacion de audio codificada 712. El codificador de audio 1000 comprende un convertidor compactador de energfa del dominio del tiempo al dominio de la frecuencia 720, que esta configurado para proporcionar una representacion en el dominio de la frecuencia 722 basandose en una representacion en el dominio del tiempo de la informacion de audio de entrada 710, de tal manera que la representacion de audio en el dominio de la frecuencia 722 comprenda un conjunto de valores espectrales. El codificador de audio 1000 comprende tambien un codificador aritmetico 1030 configurado para codificar un valor espectral (del conjunto de valores espectrales que forman la representacion de audio en el dominio de la frecuencia 722), o una version previamente procesada del mismo, utilizando una palabra codigo de longitud variable para obtener la informacion de audio codificada 712 (que puede comprender, por ejemplo, una pluralidad de palabras codigo de longitud variable).
El codificador aritmetico 1030 esta configurado para mapear un valor espectral, o una pluralidad de valores espectrales, o un valor de un plano de bits mas significativo de un valor espectral o de una pluralidad de valores
5
10
15
20
25
30
35
40
45
50
55
60
espectrales, sobre un valor de codigo (es decir, sobre una palabra codigo de longitud variable) dependiendo de un estado del contexto. El codificador aritmetico 1030 esta configurado para seleccionar una regla de mapeo que describe un mapeo de un valor espectral, o de una pluralidad de valores espectrales, o de un plano de bits mas significativo de un valor espectral o de una pluralidad de valores espectrales, sobre un valor de codigo dependiendo de un estado del contexto. El codificador aritmetico esta configurado para determinar el estado actual del contexto dependiendo de una pluralidad de valores espectrales previamente codificados (preferentemente, aunque no necesariamente adyacentes). Para este fin, el codificador aritmetico esta configurado para modificar una representacion numerica de un valor numerico de contexto anterior, que describe un estado del contexto asociado con uno o mas valores espectrales previamente codificados (por ejemplo, para seleccionar una regla de mapeo correspondiente), dependiendo de un valor de subregion de contexto, para obtener una representacion numerica de un valor numerico de contexto actual que describe un estado del contexto asociado con uno o mas valores espectrales a codificar (por ejemplo, para seleccionar una regla de mapeo correspondiente).
Como se puede apreciar, el mapeo de un valor espectral, o de una pluralidad de valores espectrales, o de un plano de bits mas significativo de un valor espectral o de una pluralidad de valores espectrales, sobre un valor de codigo puede realizarse mediante codificacion de un valor espectral 740 utilizando una regla de mapeo descrita por una informacion de reglas de mapeo 742. Un rastreador de estado 750 puede estar configurado para rastrear el estado del contexto. El rastreador de estado 750 puede estar configurado para modificar una representacion numerica de un valor numerico de contexto anterior, que describe un estado del contexto asociado con una codificacion de uno o mas valores espectrales previamente codificados, dependiendo de un valor de subregion de contexto, para obtener una representacion numerica de un valor numerico de contexto actual que describe un estado del contexto asociado con una codificacion de uno o mas valores espectrales a codificar. La modificacion de la representacion numerica del valor numerico de contexto anterior puede realizarse, por ejemplo, por un modificador de representaciones numericas 1052, que recibe el valor numerico de contexto anterior y uno o mas valores de subregion de contexto y proporciona el valor numerico de contexto actual. En consecuencia, el rastreador de estado 1050 proporciona una informacion 754 que describe el estado actual del contexto, por ejemplo, en forma de un valor numerico de contexto actual. Un selector de reglas de mapeo 1060 puede seleccionar una regla de mapeo, por ejemplo, una tabla de frecuencias acumulativas, que describe el mapeo de un valor espectral, o de una pluralidad de valores espectrales, o de un plano de bits mas significativo de un valor espectral o de una pluralidad de valores espectrales, sobre un valor de codigo. En consecuencia, el selector de reglas de mapeo 1060 proporciona la informacion de reglas de mapeo 742 a la codificacion espectral 740.
Se debe tener en cuenta que, en algunas realizaciones, el rastreador de estado 1050 puede ser identico al rastreador de estado 750 o al rastreador de estado 826. Tambien debe observarse que el selector de reglas de mapeo 1060 puede, en algunas realizaciones, ser identico al selector de reglas de mapeo 760, o al selector de reglas de mapeo 828.
Para resumir lo anterior, el codificador de audio 1000 realiza una codificacion aritmetica de una representacion de audio en el dominio de la frecuencia proporcionada por el convertidor del dominio del tiempo al dominio de la frecuencia. La codificacion aritmetica es dependiente del contexto, de manera que se selecciona una regla de mapeo (por ejemplo una tabla de frecuencias acumulativas) dependiendo de valores espectrales previamente codificados. En consecuencia, se consideran los valores espectrales adyacentes en el tiempo y/o la frecuencia (o al menos dentro de un entorno predeterminado) entre sf y/o con el valor espectral actualmente codificado (es decir, los valores espectrales dentro de un entorno predeterminado del valor espectral actualmente codificado) en la codificacion aritmetica para ajustar la distribucion de probabilidades evaluada por la codificacion aritmetica.
Cuando se determina el valor numerico de contexto actual, se modifica una representacion numerica de un valor numerico de contexto anterior, que describe un estado del contexto asociado con uno o mas valores espectrales previamente codificados, dependiendo de un valor de subregion de contexto, para obtener una representacion numerica de un valor numerico de contexto actual que describe un estado del contexto asociado con uno o mas valores espectrales a codificar. Este enfoque permite evitar un recalculo completo del valor numerico de contexto actual, recalculo completo que consume una cantidad significativa de recursos en enfoques convencionales. Existe una gran variedad de posibilidades para la modificacion de la representacion numerica del valor numerico de contexto anterior, incluyendo una combinacion de un cambio de escala de una representacion numerica del valor numerico de contexto anterior, una suma de un valor de subregion de contexto o un valor derivado del mismo a la representacion numerica del valor numerico de contexto anterior o a una representacion numerica procesada del valor numerico de contexto anterior, un reemplazo de una porcion de la representacion numerica (en lugar de la totalidad de la representacion numerica) del valor numerico de contexto anterior dependiendo del valor de la subregion de contexto, y asf sucesivamente. Por consiguiente, tfpicamente se obtiene la representacion numerica del valor numerico de contexto actual basandose en la representacion numerica del valor numerico de contexto anterior y tambien basandose en al menos un valor de subregion de contexto, en el que tfpicamente se realiza una combinacion de operaciones para combinar el valor numerico de contexto anterior con un valor de subregion de contexto, como por ejemplo, dos o mas operaciones seleccionadas de entre una operacion de suma, una operacion de resta, una operacion de multiplicacion, una operacion de division, una operacion booleana AND, una operacion
5
10
15
20
25
30
35
40
45
50
55
60
booleana OR, una operacion booleana NAND, una operacion booleana NOR, una operacion booleana de negacion, una operacion booleana de complemento o una operacion de desplazamiento. En consecuencia, al menos una porcion de la representacion numerica del valor numerico de contexto anterior se mantiene tfpicamente sin cambios (excepto por un desplazamiento opcional a una posicion diferente) cuando se deriva el valor numerico de contexto actual del valor numerico de contexto anterior. Por el contrario, se modifican otras porciones de la representacion numerica del valor numerico de contexto anterior dependiendo de uno o mas valores de subregion de contexto. Por consiguiente, se puede obtener el valor numerico de contexto actual con un esfuerzo computacional comparativamente pequeno, evitando al mismo tiempo un recalculo completo del valor numerico de contexto actual.
De esa manera se puede obtener un valor numerico actual significativo, que es muy adecuado para ser utilizado por el selector de reglas de mapeo 1060.
En consecuencia, se puede conseguir una codificacion eficaz manteniendo suficientemente sencillo el calculo de contexto.
5. Decodificador de audio de acuerdo con la Figura 11
La Figura 11 muestra un diagrama esquematico de bloques de un decodificador de audio 1100. El decodificador de audio 1100 es similar al decodificador de audio 800 de acuerdo con la Figura 8, de manera que los signos, medios y funcionalidades identicos estan indicados por numeros de referencia identicos.
El decodificador de audio 1100 esta configurado para recibir una informacion de audio codificada 810 y para proporcionar, basandose en la misma, una informacion de audio decodificada 812. El decodificador de audio 1100 comprende un decodificador aritmetico 1120 que esta configurado para proporcionar una pluralidad de valores espectrales decodificados 822 basandose en una representacion codificada aritmeticamente 821 de los valores espectrales. El decodificador de audio 1100 comprende tambien un convertidor del dominio de la frecuencia al dominio del tiempo 830 que esta configurado para recibir los valores espectrales decodificados 822 y para proporcionar la representacion de audio en el dominio del tiempo 812, que puede constituir la informacion de audio decodificada, usando los valores espectrales decodificados 822, para obtener una informacion de audio decodificada 812.
El decodificador aritmetico 1120 comprende un determinador de valores espectrales 824, que esta configurado para mapear un valor de codigo de la representacion codificada aritmeticamente 821 de valores espectrales sobre un codigo de sfmbolo que representa uno o mas de los valores espectrales decodificados o al menos una porcion (por ejemplo, un plano de bits mas significativo) de uno o mas de los valores espectrales decodificados. El determinador de valores espectrales 824 puede estar configurado para realizar el mapeo dependiendo de una regla de mapeo, que puede describirse por una informacion de reglas de mapeo 828a.
La informacion de reglas de mapeo 828a puede comprender, por ejemplo, un valor de mdice de regla de mapeo, o puede comprender un conjunto de entradas seleccionadas de una tabla de frecuencias acumulativas.
El decodificador aritmetico 1120 esta configurado para seleccionar una regla de mapeo (por ejemplo, una tabla de frecuencias acumulativas) que describe el mapeo de un valor de codigo (descrito por la representacion codificada aritmeticamente 821 de valores espectrales) sobre un codigo de sfmbolo (que describe uno o mas valores espectrales) dependiendo de un estado del contexto, estado de contexto que puede describirse por la informacion de estado del contexto 1126a. La informacion del estado del contexto 1126a puede tomar la forma de un valor numerico de contexto actual. El decodificador aritmetico 1120 esta configurado para determinar el estado actual del contexto dependiendo de una pluralidad de valores espectrales previamente decodificados 822. Para este fin, puede utilizarse un rastreador de estado 1126, que recibe una informacion que describe los valores espectrales previamente decodificados. El decodificador aritmetico esta configurado para modificar una representacion numerica del valor numerico de contexto anterior, que describe un estado del contexto asociado con uno o mas valores espectrales previamente decodificados, dependiendo de un valor de subregion de contexto, para obtener una representacion numerica de un valor numerico de contexto actual que describe un estado del contexto asociado con uno o mas valores espectrales a decodificar. Una modificacion de la representacion numerica del valor numerico de contexto anterior puede realizarse, por ejemplo, por un modificador de representaciones numericas 1127, que es parte del rastreador de estado 1126. En consecuencia, la informacion del estado actual del contexto 1126a se obtiene, por ejemplo, en forma de un valor numerico de contexto actual. La seleccion de la regla de mapeo puede realizarse por un selector de reglas de mapeo 1128, que deriva una informacion de reglas de mapeo 828a a partir de la informacion del estado actual del contexto 1126a, y que proporciona la informacion de reglas de mapeo 828a al determinador de valores espectrales 824.
Con respecto a la funcionalidad del decodificador de senales de audio 1100, se debe tener en cuenta que el decodificador aritmetico 1120 esta configurado para seleccionar una regla de mapeo (por ejemplo, una tabla de frecuencias acumulativas) que se adapta bien, por termino medio, al valor espectral a decodificar, ya que la regla de
5
10
15
20
25
30
35
40
45
50
55
60
mapeo se selecciona dependiendo del estado actual del contexto, que a su vez se determina dependiendo de una pluralidad de valores espectrales previamente decodificados. En consecuencia, se pueden aprovechar las dependencias estadfsticas entre valores espectrales adyacentes a decodificar.
Ademas, modificando una representacion numerica de un valor numerico de contexto anterior que describe un estado del contexto asociado con una decodificacion de uno o mas valores espectrales previamente decodificados, dependiendo de un valor de subregion de contexto, para obtener una representacion numerica de un valor numerico de contexto actual que describe un estado del contexto asociado con una decodificacion de uno o mas valores espectrales a decodificar, es posible obtener una informacion significativa acerca del estado actual del contexto, que es muy adecuada para un mapeo a un valor de mdice de regla de mapeo, con un esfuerzo computacional comparativamente bajo. Al mantener al menos una porcion de una representacion numerica del valor numerico de contexto anterior (posiblemente en una version con desplazamiento de bits o cambiada de escala) mientras se actualiza otra porcion de la representacion numerica del valor numerico de contexto anterior dependiendo de los valores de subregion de contexto que no se han considerado en el valor numerico de contexto anterior pero que debenan considerarse en el valor numerico de contexto actual, se puede mantener razonablemente bajo el numero de operaciones necesarias para derivar el valor numerico de contexto actual. Ademas, es posible aprovechar el hecho de que los contextos empleados para decodificar los valores espectrales adyacentes son tipicamente similares o correlacionados. Por ejemplo, un contexto para una decodificacion de un primer valor espectral (o de una primera pluralidad de valores espectrales) depende de un primer conjunto de valores espectrales previamente decodificados. Un contexto para la decodificacion de un segundo valor espectral (o un segundo conjunto de valores espectrales), que es adyacente al primer valor espectral (o al primer conjunto de valores espectrales) puede comprender un segundo conjunto de valores espectrales previamente decodificados. Como se supone que el primer valor espectral y el segundo valor espectral son adyacentes (por ejemplo, con respecto a las frecuencias asociadas), el primer conjunto de valores espectrales, que determina el contexto para la codificacion del primer valor espectral, puede comprender cierta superposicion con el segundo conjunto de valores espectrales, que determina el contexto para la decodificacion del segundo valor espectral. En consecuencia, se puede entender facilmente que el estado del contexto para la decodificacion del segundo valor espectral comprende alguna correlacion con el estado del contexto para la decodificacion del primer valor espectral. Una eficacia computacional de la derivacion del contexto, es decir de la derivacion del valor numerico de contexto actual, se puede conseguir aprovechando tales correlaciones. Se ha encontrado que la correlacion entre estados del contexto para una decodificacion de valores espectrales adyacentes (por ejemplo, entre el estado del contexto descrito por el valor numerico de contexto anterior y el estado del contexto descrito por el valor numerico de contexto actual) puede aprovecharse con eficacia modificando solo aquellas partes del valor numerico de contexto anterior que dependen de valores de subregion de contexto no considerados para la derivacion del estado numerico del contexto anterior y la derivacion del valor numerico de contexto actual del valor numerico de contexto anterior.
En conclusion, los conceptos descritos en el presente documento permiten una eficacia computacional particularmente buena al derivar el valor numerico de contexto actual.
A continuacion se describen otros detalles.
6. Codificador de audio de acuerdo con la Figura 12
La Figura 12 muestra un diagrama esquematico de bloques de un codificador de audio, de acuerdo con una realizacion de la invencion. El codificador de audio 1200 de acuerdo con la Figura 12 es similar al codificador de audio 700 de acuerdo con la Figura 7, de manera que identicos medios, signos y funcionalidades estan designados con identicos numeros de referencia.
El codificador de audio 1200 esta configurado para recibir una informacion de audio de entrada 710 y para proporcionar, basandose en la misma, una informacion de audio codificada 712. El codificador de audio 1200 comprende un convertidor compactador de energfa del dominio del tiempo al dominio de la frecuencia 720 que esta configurado para proporcionar una representacion de audio en el dominio de la frecuencia 722 basandose en una representacion de audio en el dominio del tiempo de la informacion de audio de entrada 710, de manera que la representacion de audio en el dominio de la frecuencia 722 comprende un conjunto de valores espectrales. El codificador de audio 1200 comprende tambien un codificador aritmetico 1230 configurado para codificar un valor espectral (del conjunto de valores espectrales que forman la representacion de audio en el dominio de la frecuencia 722), o una pluralidad de valores espectrales, o una version previamente procesada de los mismos, utilizando una palabra codigo de longitud variable para obtener la informacion de audio codificada 712 (que puede comprender, por ejemplo, una pluralidad de palabras codigo de longitud variable.
El codificador aritmetico 1230 esta configurado para mapear un valor espectral, o una pluralidad de valores espectrales, o un valor de un plano de bits mas significativo de un valor espectral o de una pluralidad de valores espectrales, sobre un valor de codigo (es decir, sobre una palabra codigo de longitud variable), dependiendo de un estado del contexto. El codificador aritmetico 1230 esta configurado para seleccionar una regla de mapeo que
5
10
15
20
25
30
35
40
45
50
55
60
describe un mapeo de un valor espectral, o de una pluralidad de valores espectrales, o de un plano de bits mas significativo de un valor espectral o de una pluralidad de valores espectrales, sobre un valor de codigo, dependiendo del estado del contexto. El codificador aritmetico esta configurado para determinar el estado actual del contexto dependiendo de una pluralidad de valores espectrales previamente codificados (preferentemente, aunque no necesariamente, adyacentes). Para este fin, el codificador aritmetico esta configurado para obtener una pluralidad de valores de subregion de contexto basandose en valores espectrales previamente codificados, para almacenar dichos valores de subregion de contexto, y para derivar un valor numerico de contexto actual asociado con uno o mas valores espectrales a codificar dependiendo de los valores de subregion de contexto almacenados. Ademas, el codificador aritmetico esta configurado para calcular la norma de un vector formado por una pluralidad de valores espectrales previamente codificados, para obtener un valor comun de subregion de contexto asociado con la pluralidad de valores espectrales previamente codificados.
Como se puede apreciar, el mapeo de un valor espectral, o de una pluralidad de valores espectrales, o de un plano de bits mas significativo de un valor espectral o de una pluralidad de valores espectrales, sobre un valor de codigo puede realizarse mediante una codificacion de valor espectral 740 utilizando una regla de mapeo descrita por una informacion de reglas de mapeo 742. Un rastreador de estado 1250 puede estar configurado para rastrear el estado del contexto y puede comprender una computadora de valores de subregion de contexto 1252, para calcular la norma de un vector formado por una pluralidad de valores espectrales previamente codificados, para obtener valores comunes de subregion de contexto asociados a la pluralidad de valores espectrales previamente codificados. El rastreador de estado 1250 tambien esta preferentemente configurado para determinar el estado actual del contexto dependiendo de un resultado de dicho calculo de un valor de subregion de contexto realizado por la computadora de valores de subregiones de contexto 1252. En consecuencia, el rastreador de estado 1250 proporciona una informacion 1254, que describe el estado actual del contexto. Un selector de reglas de mapeo 1260 puede seleccionar una regla de mapeo, por ejemplo, una tabla de frecuencias acumulativas, que describe un mapeo de un valor espectral, o de un plano de bits mas significativo de un valor espectral, sobre un valor de codigo. En consecuencia, el selector de reglas de mapeo 1260 proporciona la informacion de reglas de mapeo 742 para la codificacion espectral 740.
Para resumir lo anterior, el codificador de audio 1200 realiza una codificacion aritmetica de una representacion de audio en el dominio de la frecuencia proporcionada por el convertidor del dominio del tiempo al dominio de la frecuencia 720. La codificacion aritmetica depende del contexto, de manera que se selecciona una regla de mapeo (por ejemplo, una tabla de frecuencias acumulativas) dependiendo de valores espectrales previamente codificados. En consecuencia, los valores espectrales adyacentes en tiempo y/o frecuencia (o, al menos, dentro de un entorno predeterminado) entre sf y/o al valor espectral actualmente codificado (es decir, los valores espectrales dentro de un entorno predeterminado del valor espectral actualmente codificado) se consideran en la codificacion aritmetica para ajustar la distribucion de probabilidades evaluada por la codificacion aritmetica.
Para proporcionar un valor numerico de contexto actual, se obtiene un valor de subregion de contexto asociado con una pluralidad de valores espectrales previamente codificados basandose en calculo de una norma de un vector formado por una pluralidad de valores espectrales previamente codificados. El resultado de la determinacion del valor numerico de contexto actual se aplica en la seleccion del estado actual del contexto, es decir, en la seleccion de una regla de mapeo.
Mediante el calculo de la norma de un vector formado por una pluralidad de valores espectrales previamente codificados, se puede obtener una informacion significativa que describe una porcion del contexto del uno o mas valores espectrales a codificar, en el que la norma de un vector de valores espectrales previamente codificados puede estar tipicamente representada con un numero de bits comparativamente pequeno. Por consiguiente, la cantidad de informacion del contexto que necesita almacenarse para uso posterior en la derivacion de un valor numerico de contexto actual, se puede mantener suficientemente baja aplicando el enfoque analizado anterior para el calculo de los valores de subregion de contexto. Se ha encontrado que la norma de un vector de valores espectrales previamente codificados comprende tipicamente la informacion mas significativa con respecto al estado del contexto. Por el contrario, se ha encontrado que el signo de dichos valores espectrales previamente codificados comprende tipicamente un impacto subordinado sobre el estado del contexto, de manera que es razonable no tener en cuenta el signo de los valores espectrales previamente decodificados para reducir la cantidad de informacion que se ha de almacenar para su uso posterior. Ademas, se ha encontrado que el calculo de una norma de un vector de valores espectrales previamente codificados es un enfoque razonable para la derivacion de un valor de subregion de contexto, ya que el efecto de promediado, que tfpicamente se obtiene mediante el calculo de la norma, deja sustancialmente inalterada la informacion mas importante acerca del estado del contexto. Para resumir, el calculo del valor de subregion de contexto realizado por la computadora de valores de subregion de contexto 1252 permite proporcionar una informacion compacta de subregiones de contexto para su almacenamiento y reutilizacion posterior, en el que se conserva la informacion mas relevante acerca del estado del contexto a pesar de la reduccion de la cantidad de informacion.
En consecuencia, se puede obtener una codificacion eficaz de la informacion de audio de entrada 710, manteniendo
5
10
15
20
25
30
35
40
45
50
55
60
al mismo tiempo suficientemente bajos el esfuerzo computacional y la cantidad de datos que ha de almacenar el codificador aritmetico 1230.
7. Decodificador de audio de acuerdo con la Figura 13
La Figura 13 muestra un diagrama esquematico de bloques de un decodificador de audio 1300. Ya que el decodificador de audio 1300 es similar al decodificador de audio 800 de acuerdo con la Figura 8, y al decodificador de audio 1100 de acuerdo con la Figura 11, los medios, senales y funcionalidades identicos estan designados con numeros identicos.
El decodificador de audio 1300 esta configurado para recibir una informacion de audio codificada 810 y para proporcionar, basandose en la misma, una informacion de audio decodificada 812. El decodificador de audio 1300 comprende un decodificador aritmetico 1320 que esta configurado para proporcionar una pluralidad de valores espectrales decodificados 822 basandose en una representacion codificada aritmeticamente 821 de los valores espectrales. El decodificador de audio 1300 comprende tambien un convertidor del dominio de la frecuencia al dominio del tiempo 830 que esta configurado para recibir los valores espectrales decodificados 822 y para proporcionar la representacion de audio en el dominio del tiempo 812, que puede constituir la informacion de audio decodificada, utilizando los valores espectrales decodificados 822, para obtener una informacion de audio decodificada 812.
El decodificador aritmetico 1320 comprende un determinador de valores espectrales 824 que esta configurado para mapear un valor de codigo de la representacion codificada aritmeticamente 821 de valores espectrales sobre un codigo de sfmbolo que representa uno o mas de los valores espectrales decodificados o al menos una porcion (por ejemplo un plano de bits mas significativo) de uno o mas de los valores espectrales decodificados. El determinador de valores espectrales 824 puede estar configurado para ejecutar un mapeo dependiendo de una regla de mapeo, que esta descrita por una informacion de reglas de mapeo 828a. La informacion de reglas de mapeo 828a puede comprender, por ejemplo, un valor de mdice de regla de mapeo, o un conjunto seleccionado de entradas de una tabla de frecuencias acumulativas.
El decodificador aritmetico 1320 esta configurado para seleccionar una regla de mapeo (por ejemplo, una tabla de frecuencias acumulativas) que describe un mapeo de un valor de codigo (descrito por la representacion codificada aritmeticamente 821 de valores espectrales) sobre un codigo de sfmbolo (que describe uno o mas valores espectrales) dependiendo de un estado del contexto (que puede estar descrito por la informacion de estado del contexto 1326a). El decodificador aritmetico 1320 esta configurado para determinar el estado actual del contexto dependiendo de una pluralidad de valores espectrales previamente decodificados 822. Para este fin, se puede utilizar un rastreador de estado 1326, que recibe una informacion que describe los valores espectrales previamente decodificados. El decodificador aritmetico tambien esta configurado para obtener una pluralidad de valores de subregion de contexto basandose en valores espectrales previamente decodificados y para almacenar dichos valores de subregion de contexto. El decodificador aritmetico esta configurado para derivar un valor numerico de contexto actual asociado con uno o mas valores espectrales a decodificar dependiendo de los valores de subregion de contexto almacenados. El decodificador aritmetico 1320 esta configurado para calcular la norma de un vector formado por una pluralidad de valores espectrales previamente decodificados, para obtener un valor comun de subregiones de contexto asociado con la pluralidad de valores espectrales previamente decodificados.
El calculo de la norma de un vector formado por una pluralidad de valores espectrales previamente codificados, para obtener un valor comun de subregiones de contexto asociado con la pluralidad de valores espectrales previamente decodificados, puede realizarse, por ejemplo, por la computadora de valores de subregiones de contexto 1327, que forma parte del rastreador de estado 1326. En consecuencia, se obtiene una informacion sobre el estado actual del contexto 1326a basandose en los valores de subregion de contexto, en el que el rastreador de estado 1326 preferentemente proporciona un valor numerico de contexto actual asociado con uno o mas valores espectrales a decodificar dependiendo de los valores de subregion de contexto almacenados. La seleccion de las reglas de mapeo puede realizarse por un selector de reglas de mapeo 1328, que deriva una informacion de reglas de mapeo 828a a partir de la informacion del estado actual del contexto 1326a, y que proporciona la informacion de reglas de mapeo 828a al determinador de valores espectrales 824.
Con respecto a la funcionalidad del decodificador de senales de audio 1300, se debe tener en cuenta que el decodificador aritmetico 1320 esta configurado para seleccionar una regla de mapeo (por ejemplo, una tabla de frecuencias acumulativas) que, por termino medio, esta bien adaptada al valor espectral a decodificar, ya que la regla de mapeo se selecciona dependiendo del estado actual del contexto que, a su vez, se determina dependiendo de una pluralidad de valores espectrales previamente decodificados. En consecuencia, se pueden aprovechar las dependencias estadfsticas entre los valores espectrales adyacentes a decodificar.
Sin embargo, se ha encontrado que es eficaz, en terminos de uso de memoria, almacenar valores de subregion de contexto que se basan en el calculo de una norma de un vector formado sobre una pluralidad de valores espectrales
5
10
15
20
25
30
35
40
45
50
55
60
previamente decodificados, para su uso posterior en la determinacion del valor numerico del contexto. Tambien se ha encontrado que tales valores de subregion de contexto comprenden aun la informacion de contexto mas relevante. En consecuencia, el concepto utilizado por el rastreador de estado 1326 constituye un buen compromiso entre eficacia de codificacion, eficacia computacional y eficacia de almacenamiento.
Mas adelante se describen mas detalles.
8. Codificador de audio de acuerdo con la Figura 1
A continuacion se describira un codificador de audio de acuerdo con una realizacion de la presente invencion. La Figura 1 muestra un diagrama esquematico de bloques de un codificador de audio 100 de este tipo.
El codificador de audio 100 esta configurado para recibir una informacion de audio de entrada 110 y para proporcionar, basandose en la misma, un flujo de bits 112, que constituye una informacion de audio codificada. El codificador de audio 100 comprende opcionalmente un preprocesador 120, que esta configurado para recibir la informacion de audio de entrada 110 y para proporcionar, basandose en la misma, una informacion de audio de entrada previamente procesada 110a. El codificador de audio 100 comprende tambien un transformador compactador de energfa de senal del dominio del tiempo al dominio de la frecuencia 130, que tambien se denomina como convertidor de senal. El convertidor de senal 130 esta configurado para recibir la informacion de audio de entrada 110, 110a y para proporcionar, basandose en la misma, una informacion de audio en el dominio de la frecuencia 132, que preferentemente toma la forma de un conjunto de valores espectrales. Por ejemplo, el transformador de senal 130 puede estar configurado para recibir una trama de la informacion de audio de entrada 110, 110a (por ejemplo un bloque de muestras en el dominio del tiempo) y para proporcionar un conjunto de valores espectrales que representan el contenido de audio de la respectiva trama de audio. Ademas, el transformador de senal 130 puede estar configurado para recibir una pluralidad de tramas de audio superpuestas o no superpuestas posteriores de la informacion de audio de entrada 110, 110a y para proporcionar, basandose en las mismas, una representacion de audio en el dominio del tiempo-frecuencia, que comprende una secuencia de conjuntos posteriores de valores espectrales, un conjunto de valores espectrales asociado con cada trama.
El transformador compactador de energfa de senal del dominio del tiempo al dominio de la frecuencia 130 puede comprender un banco de filtros compactador de energfa, que proporciona valores espectrales asociados con rangos de frecuencia diferentes, superpuestas o no superpuestas. Por ejemplo, el transformador de senal 130 puede comprender un transformador MDCT de generacion de ventanas 130a, que esta configurado para poner en ventanas la informacion de audio de entrada 110, 110a (o una trama de la misma) utilizando una ventana de transformada y para realizar una transformada de coseno discreta modificada de la informacion de audio de entrada puesta en ventanas 110, 110a (o de la trama puesta en ventanas de la misma). En consecuencia, la representacion de audio en el dominio de la frecuencia 132 puede comprender, por ejemplo, un conjunto de 1024 valores espectrales en forma de coeficientes MDCT asociados con una trama de la informacion de audio de entrada.
El codificador de audio 100 puede comprender ademas, opcionalmente, un post-procesador espectral 140, que esta configurado para recibir la representacion de audio en el dominio de la frecuencia 132 y para proporcionar, basandose en la misma, una representacion de audio en el dominio de la frecuencia posteriormente procesada 142. El post-procesador espectral 140 puede estar configurado, por ejemplo, para realizar una conformacion de ruido temporal y/o una prediccion a largo plazo y/o cualquier otro procesamiento posterior espectral conocido en la tecnica. El codificador de audio comprende ademas, opcionalmente, un cambiador de escala/cuantificador 150, que esta configurado para recibir la representacion de audio en el dominio de la frecuencia 132 o la version posteriormente procesada de la misma 142 y para proporcionar una representacion de audio cambiada de escala y cuantificada en el dominio de la frecuencia 152.
El codificador de audio 100 comprende ademas, opcionalmente, un procesador de modelos psicoacusticos 160, que esta configurado para recibir la informacion de audio de entrada 110 (o la version posteriormente procesada 110a de la misma) y para proporcionar, basandose en la misma, una informacion de control opcional, que se puede utilizar para el control del transformador compactador de energfa de senal del dominio del tiempo al dominio de la frecuencia 130, para el control del post-procesador espectral opcional 140 y/o para el control del cambiador de escala/cuantificador opcional 150. Por ejemplo, el procesador de modelos psicoacusticos 160 puede estar configurado para analizar la informacion de audio de entrada, para determinar que componentes de la informacion de audio de entrada 110, 110a son particularmente importantes para la percepcion humana del contenido de audio y que componentes de la informacion de audio de entrada 110, 110a son perceptualmente menos importantes del contenido de audio. En consecuencia, el procesador de modelos psicoacusticos 160 puede proporcionar informacion de control, que se utiliza por el codificador de audio 100 para ajustar el cambio de escala de la representacion de audio en el dominio de la frecuencia 132, 142 realizada por el cambiador de escala/cuantificador 150 y/o la resolucion de cuantificacion aplicada por el cambiador de escala/cuantificador 150. En consecuencia, se cambian de escala bandas de factores de escala perceptualmente importantes (es decir, grupos de valores espectrales adyacentes que son de particular importancia para la percepcion humana del contenido de audio) con un gran factor
5
10
15
20
25
30
35
40
45
50
55
60
de cambio de escala y se cuantifican con una resolucion comparativamente alta, mientras las bandas de factores de escala perceptualmente menos importantes (es decir, grupos de valores espectrales adyacentes) se cambian de escala con un factor de cambio de escala comparativamente menor y se cuantifican con una resolucion de cuantificacion comparativamente menor. En consecuencia, los valores espectrales cambiados de escala de las frecuencias perceptualmente mas importantes son tfpicamente significativamente mayores que los valores espectrales de las frecuencias perceptualmente menos importantes.
El codificador de audio comprende tambien un codificador aritmetico 170, que esta configurado para recibir la version cambiada de escala y cuantificada 152 de la representacion de audio en el dominio de la frecuencia 132 (o, como alternativa, la version posteriormente procesada 142 de la representacion de audio en el dominio de la frecuencia 132, o incluso la misma representacion de audio en el dominio de la frecuencia 132) y para proporcionar informacion aritmetica de palabras de codigo 172a basandose en la misma, de manera tal que la informacion aritmetica de palabras de codigo representa la representacion de audio en el dominio de la frecuencia 152.
El codificador de audio 100 comprende tambien un formateador de carga util de flujo de bits 190, que esta configurado para recibir la informacion aritmetica de palabras codigo 172a. El formateador de carga util de flujo de bits 190 tambien esta configurado, tfpicamente, para recibir informacion adicional, como por ejemplo, informacion de factores de cambio de escala que describen que factores de cambio de escala se han aplicado por el cambiador de escala/cuantificador 150. Ademas, el formateador de carga util de flujo de bits 190 puede estar configurado para recibir otra informacion de control. El formateador de carga util de flujo de bits 190 esta configurado para proporcionar el flujo de bits 112 basandose en la informacion recibida ensamblando el flujo de bits de acuerdo con una sintaxis deseada de flujo de bits, que se analiza mas adelante.
A continuacion se describiran detalles con respecto al codificador aritmetico 170. El codificador aritmetico 170 esta configurado para recibir una pluralidad de valores espectrales posteriormente procesados y cambiados de escala y cuantificados de la representacion de audio en el dominio de la frecuencia 132. El codificador aritmetico comprende un extractor de planos de bits mas significativos 174, o incluso a partir de dos valores espectrales, que esta configurado para extraer un plano de bits mas significativo m a partir de un valor espectral. Cabe senalar en este punto que el plano de bits mas significativo puede comprender uno o incluso mas bits (por ejemplo dos o tres bits), que son los bits mas significativos del valor espectral. Por consiguiente, el extractor de planos de bits mas significativos 174 proporciona un valor de plano de bits mas significativo 176 de un valor espectral.
Como alternativa, sin embargo, el extractor de planos de bits mas significativo 174 puede proporcionar un valor combinado de planos de bits mas significativos m combinando los planos de bits mas significativos de una pluralidad de valores espectrales (por ejemplo, de los valores espectrales a y b). El plano de bits mas significativo del valor espectral a esta designado con m. Como alternativa, el valor combinado de planos de bits mas significativos de una pluralidad de valores espectrales a,b se designa con m.
El codificador aritmetico 170 comprende tambien un primer determinador de palabras codigos 180, que esta configurado para determinar una palabra codigo aritmetica acod_m [pki][m] que representa el valor de plano de bits mas significativo m. Opcionalmente, el determinador de palabras de codigo 180 puede proporcionar tambien una o mas palabras de codigo de escape (en el presente documento tambien denominadas “ARITH_ESCAPE”) que indiquen, por ejemplo, cuantos planos de bits menos significativos hay disponibles (y, en consecuencia, que indican la ponderacion numerica del plano de bits mas significativo). El primer determinador de palabras de codigo 180 puede estar configurado para proporcionar la palabra de codigo asociada con un valor de plano de bits mas significativo m utilizando una tabla de frecuencias acumulativas seleccionada que tiene (o a la que se hace referencia por) un mdice de tabla de frecuencias acumulativas pki.
Para determinar cual de las tablas de frecuencias acumulativas se debe seleccionar, el codificador aritmetico comprende preferentemente un rastreador de estado 182, que esta configurado para rastrear el estado del codificador aritmetico, por ejemplo, observando cuales valores espectrales se han codificado anteriormente. El rastreador de estado 182 proporciona, en consecuencia, una informacion de estado 184, por ejemplo, un valor de estado designado con “s” o “t” o “c”. El codificador aritmetico 170 comprende tambien un selector de tablas de frecuencias acumulativas 186, que esta configurado para recibir la informacion de estado 184 y para proporcionar una informacion 188 que describe la tabla de frecuencias acumulativas seleccionada al determinador de palabras de codigo 180. Por ejemplo, el selector de tablas de frecuencias acumulativas 186 puede proporcionar un mdice de tablas de frecuencias acumulativas “pki” que describe que tabla de frecuencias acumulativas, del conjunto de 96 tablas de frecuencias acumulativas, se selecciona para utilizarse por el determinador de palabras de codigo. Como alternativa, el selector de tablas de frecuencias acumulativas 186 puede proporcionar la totalidad de la tabla de frecuencias acumulativas seleccionada o una sub-tabla al determinador de palabras de codigo. Por consiguiente, el determinador de palabras de codigo 180 puede utilizar la tabla o sub-tabla de frecuencias acumulativas seleccionada para la provision de la palabra de codigo acod_m[pki][m] del valor de plano de bits mas significativo m, de tal manera que la palabra de codigo real acod_m[pki][m] que codifica el valor del plano de bits mas significativo m es dependiente del valor de m y el mdice de tablas de frecuencias acumulativas pki, y en consecuencia de la
5
10
15
20
25
30
35
40
45
50
55
60
informacion de estado actual 184. Se describiran a continuacion detalles adicionales con respecto al proceso de codificacion y el formato de las palabras de codigo obtenidas.
Debena observarse, sin embargo, que en algunas realizaciones, el rastreador de estado 182 puede ser identico, o tomar la funcionalidad del, rastreador de estado 750, el rastreador de estado 1050 o el rastreador de estado 1250. Tambien debe observarse que el selector de tablas de frecuencias acumulativas 186, en algunas realizaciones puede ser identico, o tomar la funcionalidad del, selector de reglas de mapeo 760, el selector de reglas de mapeo 1060, o el selector de reglas de mapeo 1260. Ademas, el primer determinador de palabras de codigo 180, en algunas realizaciones, puede ser identico o tomar la funcionalidad de la codificacion de valores espectrales 740.
El codificador aritmetico 170 comprende ademas un extractor de planos de bits menos significativos 189a, que esta configurado para extraer uno o mas planos de bits menos significativos de la representacion de audio cambiada de escala y cuantificada en el dominio de la frecuencia 152, si uno o mas de los valores espectrales a codificar superan el rango de valores codificables utilizando solo el plano de bits mas significativo.
Los planos de bits menos significativos pueden comprender uno o mas bits, segun se desee. En consecuencia, el extractor de planos de bits menos significativos 189a produce una informacion de planos de bits menos significativos 189b. El codificador aritmetico 170 comprende tambien un segundo determinador de palabras de codigo 189c, que esta configurado para recibir la informacion de planos de bits menos significativos 189d y para proporcionar, basandose en la misma, 0, 1 o mas palabras de codigo “acod_r” que representan el contenido de 0, 1 o mas planos de bits menos significativos. El segundo determinador de palabras de codigo 189c puede estar configurado para aplicar un algoritmo de codificacion aritmetica o cualquier otro algoritmo de codificacion para derivar las palabras de codigo del plano de bits menos significativos “acod_r” a partir de la informacion de planos de bits menos significativos 189b.
En este punto debena observarse que el numero de planos de bits menos significativos puede variar dependiendo del valor de los valores espectrales cambiados de escala y cuantificados 152, de manera que puede no haber ningun plano de bits menos significativos en absoluto, si el valor espectral cambiado de escala y cuantificado a codificar es comparativamente pequeno, de manera que puede haber un plano de bits menos significativos si el valor espectral actual cambiado de escala y cuantificado a codificar es de un rango intermedio y de manera que puede haber mas de un plano de bits menos significativos si el valor espectral cambiado de escala y cuantificado a codificar toma un valor comparativamente alto.
Para resumir lo anterior, el codificador aritmetico 170 esta configurado para codificar valores espectrales cambiados de escala y cuantificados, que se describen por la informacion 152, utilizando un proceso de codificacion jerarquica. El plano de bits mas significativo (que comprende, por ejemplo, uno, dos o tres bits por valor espectral) de uno o mas valores espectrales, se codifica para obtener una palabra de codigo aritmetica “acod_m[pki][m]” de un valor de plano de bits mas significativo m. Uno o mas planos de bits menos significativos (cada uno de los planos de bits menos significativos comprende, por ejemplo, uno, dos o tres bits) del uno o mas valores espectrales se codifican para obtener una o mas palabras de codigo “acod_r”. Cuando se codifica el plano de bits mas significativo, se mapea el valor del plano de bits mas significativo m a una palabra de codigo acod_m[pki][m]. Para este fin, hay 96 tablas de frecuencias acumulativas disponibles para la codificacion del valor m dependiendo de un estado del codificador aritmetico 170, es decir, dependiendo de valores espectrales previamente codificados. En consecuencia, se obtiene la palabra de codigo “acod_m[pki][m]”. Ademas, se proporciona e incluye una o mas palabras de codigo “acod_r” en el flujo de bits si hay uno o mas planos de bits menos significativos presentes.
Descripcion de reinicio
El codificador de audio 100 puede estar opcionalmente configurado para decidir si se puede obtener una mejora de la tasa de bits mediante reinicio del contexto, por ejemplo estableciendo el mdice de estado en un valor por defecto. En consecuencia, el codificador de audio 100 puede estar configurado para proporcionar una informacion de reinicio (por ejemplo denominada “arith_reset_flag”) que indica si se ha reiniciado el contexto para la codificacion aritmetica, y que indica ademas si se debe reiniciar el contexto para la decodificacion aritmetica en un decodificador correspondiente.
Mas adelante se analizaran detalles con respecto al formato del flujo de bits y las tablas de frecuencias acumulativas aplicadas.
9. Decodificador de audio de acuerdo con la Figura 2
A continuacion se describe un decodificador de audio de acuerdo con una realizacion de la invencion. La Figura 2 muestra un diagrama esquematico de bloques de un decodificador de audio 200 de este tipo.
El decodificador de audio 200 esta configurado para recibir un flujo de bits 210, que representa una informacion de
5
10
15
20
25
30
35
40
45
50
55
60
audio codificada y que puede ser identico al flujo de bits 112 proporcionado por el codificador de audio 100. El decodificador de audio 200 proporciona una informacion de audio decodificada 212 basandose en flujo de bits 210.
El decodificador de audio 200 comprende un de-formateador de carga util de flujo de bits opcional 220, que esta configurado para recibir el flujo de bits 210 y para extraer a partir del flujo de bits 210 una representacion de audio codificada en el dominio de la frecuencia 222. Por ejemplo, el de-formateador de carga util de flujo de bits 220 puede estar configurado para extraer a partir del flujo de bits 210 datos espectrales aritmeticamente codificados, como por ejemplo, una palabra de codigo aritmetica “acod_m [pki][m]” que representa el valor del plano de bits mas significativo m de un valor espectral a, o de una pluralidad de valores espectrales a, b, y una palabra de codigo “acod_r” que representa un contenido de planos de bits menos significativos del valor espectral a, o de una pluralidad de valores espectrales a, b, de la representacion de audio en el dominio de la frecuencia. Por consiguiente, la representacion de audio codificada en el dominio de la frecuencia 222 constituye (o comprende) una representacion aritmeticamente codificada de valores espectrales. El de-formateador de carga util de flujo de bits 220 esta configurado ademas para extraer a partir del flujo de bits informacion de control adicional, que no se muestra en la Figura 2. Ademas, el de-formateador de carga util de flujo de bits esta configurado opcionalmente para extraer a partir del flujo de bits 210, una informacion de reinicio de estado 224, que tambien se denomina bandera de reinicio aritmetico o “arith_reset_flag”.
El decodificador de audio 200 comprende un decodificador aritmetico 230, que tambien se denomina como “decodificador espectral sin ruido”. El decodificador aritmetico 230 esta configurado para recibir la representacion de audio codificada en el dominio de la frecuencia 220 y, opcionalmente, la informacion de reinicio de estado 224. El decodificador aritmetico 230 tambien esta configurado para proporcionar una representacion de audio decodificada en el dominio de la frecuencia 232, que puede comprender una representacion decodificada de valores espectrales. Por ejemplo, la representacion de audio decodificada en el dominio de la frecuencia 232 puede comprender una representacion decodificada de valores espectrales, que se describen por la representacion de audio codificada en el dominio de la frecuencia 220.
El decodificador de audio 200 comprende tambien un cuantificador inverso/cambiador de escala opcional 240, que esta configurado para recibir la representacion de audio decodificada en el dominio de la frecuencia 232 y para proporcionar, basandose en la misma, una representacion inversamente cuantificada y cambiada de escala de audio en el dominio de la frecuencia 242.
El decodificador de audio 200 comprende ademas un preprocesador espectral opcional 250, que esta configurado para recibir la representacion inversamente cuantificada y cambiada de escala de audio en el dominio de la frecuencia 242 y para proporcionar, basandose en la misma, una version previamente procesada 252 de la representacion inversamente cuantificada y cambiada de escala de audio en el dominio de la frecuencia 242. El decodificador de audio 200 comprende tambien un transformador de senal del dominio de la frecuencia al dominio del tiempo 260, que tambien se denomina “convertidor de senal”. El transformador de senal 260 esta configurado para recibir la version pre-procesada 252 de la representacion inversamente cuantificada y cambiada de escala de audio en el dominio de la frecuencia 242 (o, como alternativa, la representacion inversamente cuantificada y cambiada de escala de audio en el dominio de la frecuencia 242 o la representacion de audio decodificada en el dominio de la frecuencia 232) y para proporcionar, basandose en la misma, una representacion en el dominio del tiempo 262 de la informacion de audio. El transformador de senal del dominio de la frecuencia al dominio del tiempo 260 puede comprender, por ejemplo, un transformador para realizar una transformada inversa de coseno discreta modificada (IMDCT) y una generacion de ventanas apropiada (asf como tambien otras funcionalidades auxiliares, como, por ejemplo, una superposicion-y-suma).
El decodificador de audio 200 puede comprender ademas un post-procesador opcional en el dominio del tiempo 270, que esta configurado para recibir la representacion en el dominio del tiempo 262 de la informacion de audio y para obtener la informacion de audio decodificada 212 usando un procesamiento posterior en el dominio del tiempo. Sin embargo, si se omite el procesamiento posterior, la representacion en el dominio del tiempo 262 puede ser identica a la informacion de audio decodificada 212.
Cabe senalar en este punto que el cuantificador inverso/cambiador de escala 240, el pre-procesador espectral 250, el transformador de senal del dominio de la frecuencia al dominio del tiempo 260 y el post-procesador en el dominio del tiempo 270 pueden controlarse dependiendo de la informacion de control que se extrae a partir del flujo de bits 210 por el de-formateador de carga util de flujo de bits 220.
Para resumir la funcionalidad general del decodificador de audio 200, se puede obtener una representacion de audio decodificada en el dominio de la frecuencia 232, por ejemplo, un conjunto de valores espectrales asociados con una trama de audio de la informacion de audio codificada, basandose en la representacion codificada en el dominio de la frecuencia 222 utilizando el decodificador aritmetico 230. Posteriormente, se cuantifica inversamente, se cambia de escala y pre-procesa una serie, por ejemplo, de 1024 valores espectrales, que pueden ser coeficientes MDCT. En consecuencia, se obtiene una serie inversamente cuantificada, cambiada de escala y pre-procesada espectralmente
5
10
15
20
25
30
35
40
45
50
55
60
de valores espectrales (por ejemplo, 1024 coeficientes MDCT). Posteriormente, se deriva una representacion en el dominio del tiempo de una trama de audio a partir del conjunto inversamente cuantificado, cambiado de escala y pre- procesado espectralmente de valores en el dominio de la frecuencia (por ejemplo coeficientes MDCT). En consecuencia, se obtiene una representacion en el dominio del tiempo de una trama de audio. La representacion en el dominio del tiempo de una trama de audio dada se puede combinar con representaciones en el dominio del tiempo de tramas de audio anteriores y/o posteriores. Por ejemplo, se puede realizar una superposicion-y-suma entre las representaciones en el dominio del tiempo de las tramas de audio posteriores para suavizar las transiciones entre las representaciones en el dominio del tiempo de las tramas de audio adyacentes y para obtener una cancelacion del solapamiento. Para detalles con respecto a la reconstruccion de la informacion de audio decodificada 212 basandose en la representacion de audio decodificada en el dominio del tiempo-frecuencia 232, se hace referencia, por ejemplo, a la Norma Internacional ISO/IEC 14496-3, parte 3, subparte 4, donde se proporciona un analisis detallado. Sin embargo, se pueden utilizar otros esquemas mas elaborados de superposicion y cancelacion del solapamiento.
A continuacion se describiran algunos detalles con respecto al decodificador aritmetico 230. El decodificador aritmetico 230 comprende un determinador de planos de bits mas significativos 284, que esta configurado para recibir la palabra de codigo aritmetica acod_m [pki][m] que describe el valor de plano de bits mas significativo m. El determinador de planos de bits mas significativos 284 puede estar configurado para usar una tabla de frecuencias acumulativas de un conjunto que comprende una pluralidad de 96 tablas de frecuencias acumulativas para derivar el valor de plano de bits mas significativo m de la palabra de codigo aritmetica “acod_m [pki][m]”.
El determinador de planos de bits mas significativos 284 esta configurado para derivar valores 286 de un plano de bits mas significativo de uno o mas valores espectrales basandose en la palabra de codigo acod_m. El decodificador aritmetico 230 comprende ademas un determinador de planos de bits menos significativos 288, que esta configurado para recibir una o mas palabras de codigo “acod_r” que representa uno o mas planos de bits menos significativos de un valor espectral. En consecuencia, el determinador de planos de bits menos significativos 288 esta configurado para proporcionar valores decodificados 290 de uno o mas planos de bits menos significativos. El decodificador de audio 200 comprende tambien un combinador de planos de bits 292, que esta configurado para recibir los valores decodificados 286 del plano de bits mas significativo de uno o mas valores espectrales y los valores decodificados 290 de uno o mas planos de bits menos significativos de los valores espectrales si tales planos de bits menos significativos estan disponibles para los valores espectrales actuales. En consecuencia, el combinador de planos de bits 292 proporciona valores espectrales decodificados, que son parte de la representacion de audio decodificada en el dominio de la frecuencia 232. Naturalmente, el decodificador aritmetico 230 esta configurado tfpicamente para proporcionar una pluralidad de valores espectrales para obtener un conjunto completo de valores espectrales decodificados asociados con una trama actual del contenido de audio.
El decodificador aritmetico 230 comprende ademas un selector de tablas de frecuencias acumulativas 296, que esta configurado para seleccionar una de las 96 tablas de frecuencias acumulativas dependiendo de un mdice de estado 298 que describe un estado del decodificador aritmetico. El decodificador aritmetico 230 comprende ademas un rastreador de estado 299, que esta configurado para rastrear un estado del decodificador aritmetico dependiendo de los valores espectrales previamente decodificados. La informacion de estado se puede reiniciar opcionalmente a una informacion de estado por defecto en respuesta a la informacion de reinicio de estado 224. En consecuencia, el selector de tablas de frecuencias acumulativas 296 esta configurado para proporcionar un mdice (por ejemplo pki) de una tabla de frecuencias acumulativas seleccionada o una misma subtabla o tabla de frecuencias acumulativas seleccionada, para aplicacion en la decodificacion del valor del plano de bits mas significativo m dependiendo de la palabra de codigo “acod_m”.
Para resumir la funcionalidad del decodificador de audio 200, el decodificador de audio 200 esta configurado para recibir una representacion de audio codificada con eficacia de tasa de bits en el dominio de la frecuencia 222 y para obtener una representacion de audio decodificada en el dominio de la frecuencia basandose en la misma. En el decodificador aritmetico 230, que se utiliza para obtener la representacion de audio decodificada en el dominio de la frecuencia 232 basandose en la representacion de audio codificada en el dominio de la frecuencia 222, se aprovecha una probabilidad de diferentes combinaciones de valores del plano de bits mas significativo de valores espectrales adyacentes usando un decodificador aritmetico 280, que esta configurado para aplicar una tabla de frecuencias acumulativas. En otras palabras, se aprovechan las dependencias estadfsticas entre valores espectrales seleccionando diferentes tablas de frecuencias acumulativas de un conjunto que comprende 96 tablas de frecuencias acumulativas diferentes dependiendo de un mdice de estados 298, que se obtiene observando los valores espectrales decodificados anteriormente calculados.
Se debe tener en cuenta que el rastreador de estado 299 puede ser identico, o puede tomar la funcionalidad del rastreador de estado 826, el rastreador de estado 1126, o el rastreador de estado 1326. El selector de tablas de frecuencias acumulativas 296 puede ser identico, o puede tomar la funcionalidad del selector de reglas de mapeo 828, el selector de reglas de mapeo 1128, o el selector de reglas de mapeo 1328. El determinador de planos de bits mas significativos 284 puede ser identico o puede tomar la funcionalidad del determinador de valores espectrales
5
10
15
20
25
30
35
40
45
50
55
60
10. Vista general de la herramienta de codificacion espectral sin ruido
A continuacion se explicaran detalles con respecto al algoritmo de codificacion y decodificacion que se realiza, por ejemplo, por el codificador aritmetico 170 y el decodificador aritmetico 230.
Nos enfocamos ahora en la descripcion del algoritmo de decodificacion. Se debe tener en cuenta, sin embargo, que se puede realizar un algoritmo de codificacion correspondiente de acuerdo con las ensenanzas del algoritmo de decodificacion, en el que los mapeos entre los valores espectrales codificados y decodificados se invierten, y en el que el calculo del valor de mdice de regla de mapeo es sustancialmente identico. En un codificador, los valores espectrales codificados toman el lugar de los valores espectrales decodificados. Ademas, los valores espectrales a codificar toman el lugar de los valores espectrales a decodificar.
Se debe tener en cuenta que la decodificacion, que se analizara a continuacion, se utiliza para permitir la denominada “codificacion espectral sin ruido” de tipicamente valores espectrales cambiados de escala y cuantificados posteriormente procesados. La codificacion espectral sin ruido se utiliza en un concepto de codificacion/decodificacion de audio (o en cualquier otro concepto de codificacion/decodificacion) para reducir adicionalmente la redundancia del espectro cuantificado, que se obtiene, por ejemplo, por un transformador compactador de energfa del dominio del tiempo al dominio de la frecuencia. El esquema de codificacion espectral sin ruido, que se utiliza en las realizaciones de la invencion, se basa en una codificacion aritmetica junto con un contexto adaptado dinamicamente.
En algunas realizaciones de acuerdo con la invencion, el esquema de codificacion espectral sin ruido se basa en 2- tuplas, es decir, se combinan dos coeficientes espectrales cercanos. Cada 2-tuplas se divide en el signo, el plano a nivel de 2 bits mas significativo y el resto de los planos de bits menos significativos. La codificacion sin ruido correspondiente al plano al nivel de 2 bits mas significativo m utiliza tablas de frecuencias acumulativas dependientes del contexto derivadas a partir de cuatro 2-tuplas previamente decodificadas. La codificacion sin ruido se alimenta por los valores espectrales cuantificados y utiliza tablas de frecuencias acumulativas dependientes del contexto derivadas a partir de cuatro 2-tuplas cercanas previamente decodificados. En este punto, se tiene en cuenta la cercama, tanto en tiempo como en frecuencia, como se muestra en la Figura 4. A continuacion las tablas de frecuencias acumulativas (que se explicaran mas adelante) se utilizan por el codificador aritmetico para generar un codigo binario de longitud variable (y por el decodificador aritmetico para derivar valores decodificados a partir de un codigo binario de longitud variable).
Por ejemplo, el codificador aritmetico 170 produce un codigo binario para un conjunto dado de sfmbolos y sus respectivas probabilidades (es decir, dependiendo de las probabilidades respectivas). El codigo binario se genera mapeando un intervalo de probabilidades, donde radica el conjunto de sfmbolos, a una palabra de codigo.
La codificacion sin ruido del resto del plano de bits menos significativos r usa una sola tabla de frecuencias acumulativas. Las frecuencias acumulativas corresponden, por ejemplo, a una distribucion uniforme de los sfmbolos que aparecen en los planos de bits menos significativos, es decir, se espera que haya la misma probabilidad de que aparezca un 0 o un 1 en los planos de bits menos significativos.
A continuacion se proporciona otra breve vista general de la herramienta de codificacion espectral sin ruido. La codificacion espectral sin ruido se utiliza para reducir adicionalmente la redundancia del espectro cuantificado. El esquema de codificacion espectral sin ruido se basa en una codificacion aritmetica, conjuntamente con un contexto dinamicamente adaptado. La codificacion sin ruido se alimenta por los valores espectrales cuantificados y utiliza tablas de frecuencias acumulativas dependientes del contexto derivadas, por ejemplo, de cuatro 2-tuplas de valores espectrales cercanos previamente decodificados. En este punto, se tiene en cuenta la cercama, tanto en tiempo como en frecuencia, como se muestra en la Figura 4. Las tablas de frecuencias acumulativas se utilizan posteriormente por el codificador aritmetico para generar un codigo binario de longitud variable.
El codificador aritmetico produce un codigo binario para un conjunto dado de sfmbolos y sus respectivas probabilidades. El codigo binario se genera mapeando un intervalo de probabilidades donde radica el conjunto de sfmbolos, a una palabra de codigo.
11. Proceso de decodificacion
11.1 Vista general del proceso de decodificacion
A continuacion se proporciona una vista general del proceso de codificacion de un valor espectral tomando como referencia la Figura 3, que muestra una representacion de pseudo-codigo de programa del proceso de decodificacion de una pluralidad de valores espectrales.
5
10
15
20
25
30
35
40
45
50
55
60
El proceso de decodificacion de una pluralidad de valores espectrales comprende una inicializacion 310 de un contexto. La inicializacion 310 del contexto comprende una derivacion del contexto actual a partir de un contexto anterior, utilizando la funcion “arith_map_context(N, arith_reset_flag)”. La derivacion del contexto actual a partir de un contexto anterior puede comprender selectivamente un reinicio del contexto. A continuacion se analiza tanto el reinicio del contexto como la derivacion del contexto actual a partir de un contexto anterior.
La decodificacion de una pluralidad de valores espectrales comprende tambien una iteracion de una decodificacion de valores espectrales 312 y una actualizacion del contexto 313, actualizacion del contexto 313 que se realiza por una funcion “arith_update_context(i, a,b)” que se describe mas adelante. La decodificacion de valores espectrales 312 y la actualizacion del contexto 312 se repiten 1g/2 veces, donde 1g/2 indica el numero de 2-tuplas de valores espectrales a decodificar (por ejemplo, para una trama de audio), a menos que se detecte un denominado sfmbolo “ARITH_STOP”. Ademas, la decodificacion de una serie de 1g valores espectrales comprende tambien una decodificacion de signos 314 y una etapa de terminacion 315.
La decodificacion 312 de una tupla de valores espectrales comprende un calculo del valor del contexto 312a, una decodificacion de planos de bits mas significativos 312b, una deteccion de sfmbolo aritmetico de parada 312c, una adicion de planos de bits menos significativos 312d y una actualizacion de matriz 312e.
El calculo del valor de estado 312a comprende una llamada de la funcion “arith_get_context(c,i,N)” como se muestra, por ejemplo, en la Figura 5c o 5d. En consecuencia, se proporciona un valor numerico de contexto actual (estado) c como valor de retorno de la llamada de funcion de la funcion “arith_get_context(c,i,N)”. Como se puede apreciar, el valor numerico de contexto anterior (tambien indicado con “c”), que sirve como variable de entrada para la funcion “arith_get_context(c,i,N)”, se actualiza para obtener, como un valor de retorno, el valor numerico de contexto actual c.
La decodificacion del plano de bits mas significativo 312b comprende una ejecucion iterativa de un algoritmo de decodificacion 312ba, y una derivacion 312bb de valores a,b a partir del valor resultado m del algoritmo 312ba. En la preparacion del algoritmo 312ba, se inicializa la variable lev a cero. El algoritmo 312ba se repite hasta que se alcanza una instruccion (o condicion) de “interrupcion”. El algoritmo 312ba comprende el calculo de un mdice de estado “pki” (que tambien sirve como mdice de tablas de frecuencias acumulativas) dependiendo del valor numerico de contexto actual c, y tambien dependiendo del valor de nivel “esc_nb” usando una funcion “arith_get_pk()”, que se analiza mas adelante (y realizaciones de la cual se muestran, por ejemplo, en las Figuras 5e y 5f). El algoritmo 312ba comprende tambien la seleccion de una tabla de frecuencias acumulativas dependiendo del mdice de estado “pki”, que se devuelve por la llamada de la funcion “arith_get_pk”, en la que se puede establecer una variable “cum_freq” a una direccion de inicio de una de las 96 tablas de frecuencias acumulativas (o subtablas) dependiendo del mdice de estado “pki”. Tambien se puede inicializar una variable “cfl” a una longitud de la tabla de frecuencias acumulativas seleccionada (o de una subtabla) que es igual, por ejemplo, a un numero de sfmbolos del alfabeto, es decir, el numero de valores diferentes que puede decodificarse. La longitud de todas las tablas de frecuencias acumulativas (o subtablas) a partir de “ari_cf_m[pki=0][17]” a “ari_cf_m[pki=95][17]” disponible para la decodificacion del valor de plano de bits mas significativo m es 17, ya que se pueden decodificar 16 valores de planos de bits mas significativos y un sfmbolo de escape (“ARITH_ESCAPE”).
Posteriormente, se puede obtener un valor del plano de bits mas significativo m ejecutando una funcion “arith_decode()”, teniendo en cuenta la tabla de frecuencias acumulativas seleccionada (descrita por la variable “cum_freq” y la variable “cfl”). Cuando se deriva el valor de plano de bits mas significativo m, se pueden evaluar los bits denominados “acod_m” del flujo de bits 210 (vease, por ejemplo, la Figura 6g o la Figura 6h).
El algoritmo 312ba comprende tambien la verificacion de si el valor del plano de bits mas significativo m es igual a un sfmbolo de escape “ARITH_ESCAPE” o no. Si el valor del plano de bits mas significativo m no es igual al sfmbolo aritmetico de escape, el algoritmo 312ba se aborta (condicion de “interrupcion”) y a continuacion se salta el resto de las instrucciones del algoritmo 312ba. En consecuencia, la ejecucion del proceso continua con el establecimiento del valor b y del valor a en la etapa 312bb. Por el contrario, si el valor del plano de bits mas significativo m es identico al sfmbolo aritmetico de escape, o “ARITH_ESCAPE”, el valor de nivel “lev” se incrementa en uno. Se establece el valor de nivel “esc_nb” de manera que sea igual al valor de nivel “lev”, a menos que la variable “lev” sea superior a siete, en cuyo caso se establece la variable “esc_nb” para que sea igual a siete. Como se ha mencionado, a continuacion se repite el algoritmo 312ba hasta que el valor del plano de bits mas significativo decodificado m sea diferente del sfmbolo aritmetico de escape, en el que se utiliza un contexto modificado (puesto que el parametro de entrada de la funcion “arith_get_pk()” esta adaptado dependiendo el valor de la variable “esc_nb”).
Tan pronto como se decodifica el plano de bits mas significativo utilizando la ejecucion unica o la ejecucion iterativa del algoritmo 312ba, es decir, se ha decodificado un valor de plano de bits mas significativo m diferente del sfmbolo aritmetico de escape, se establece la variable de valor espectral “b” de modo que sea igual a una pluralidad de (por ejemplo 2) bits mas significativos del valor de plano de bits mas significativo m, y la variable de valor espectral “a” se
5
10
15
20
25
30
35
40
45
50
55
60
establece a los bits mas bajos (por ejemplo 2) del valor de plano de bits mas significativo m. Los detalles con respecto a esta funcionalidad pueden observarse, por ejemplo, en el numero de referencia 312bb.
Posteriormente, se verifica, en la etapa 312c, si hay presente un sfmbolo aritmetico de parada. Este es el caso si el valor del plano de bits mas significativo m es igual a cero y la variable “lev” es mayor que cero. En consecuencia, se senaliza una condicion de parada aritmetica por una condicion “inusual”, en la cual el valor del plano de bits mas significativo m es igual a cero, mientras la variable “lev” indica que hay una ponderacion numerica incrementada asociada al valor del plano de bits mas significativo m. En otras palabras, se detecta una condicion de parada aritmetica si el flujo de bits indica que una ponderacion numerica incrementada, superior a una ponderacion numerica minima, debena proporcionarse a un valor del plano de bits mas significativo que es igual a cero, que es una condicion que no tiene lugar en una situacion de codificacion normal. En otras palabras, se senaliza una condicion de parada aritmetica si un sfmbolo de escape aritmetico codificado va seguido por un valor de plano de bits mas significativo codificado de 0.
Despues de la evaluacion de si hay una condicion de parada aritmetica, que se realiza en la etapa 212c, se obtienen los planos de bits menos significativos, por ejemplo, como se muestra con el numero de referencia 212d en la Figura 3. Para cada plano de bits menos significativo, se decodifican dos valores binarios. Uno de los valores binarios esta asociado a la variable a (o el primer valor espectral de una tupla de valores espectrales) y uno de los valores binarios esta asociado a la variable b (o un segundo valor espectral de una tupla de valores espectrales). Un numero de planos de bits menos significativos se designa por la variable lev.
En la decodificacion de dichos uno o mas planos de bits menos significativos (si los hubiere) se realiza iterativamente un algoritmo 212da, en el que el numero de ejecuciones del algoritmo 212da se determina por la variable “lev”. Cabe senalar en este punto que la primera iteracion del algoritmo 212da se realiza basandose en los valores de las variables a, b fijadas en la etapa 212bb. Otras iteraciones del algoritmo 212da se han de realizar basandose en los valores variables actualizadas de la variable a, b.
Al comienzo de una iteracion, se selecciona una tabla de frecuencias acumulativas. A continuacion, se realiza una decodificacion aritmetica para obtener un valor de una variable r, en el que el valor de la variable r describe una pluralidad de bits menos significativos, por ejemplo un bit menos significativo asociado con la variable a y un bit menos significativo asociado con la variable b. La funcion “ARITH_DECODE” se utiliza para obtener el valor r, en el que la tabla de frecuencias acumulativas “arith_cf_r” se utiliza para la decodificacion aritmetica.
A continuacion, se actualizan los valores de las variables a y b. Para este fin, se desplaza la variable a hacia la izquierda un bit, y el bit menos significativo de la variable desplazada a se establece al valor definido por el bit menos significativo del el valor r. La variable b se desplaza un bit a la izquierda y se establece al bit menos significativo de la variable b desplazada al valor definido por el bit 1 de la variable r, en el que el bit 1 de la variable r tiene una ponderacion numerica de 2 en la representacion binaria de la variable r. Posteriormente se repite el algoritmo 412ba hasta que todos los bits menos significativos se hayan decodificado.
Despues de la decodificacion de los planos de bits menos significativos, se actualiza una matriz “x_ac_dec” por el hecho de que los valores de las variables a,b se almacenan en entradas de dicha matriz que tienen los indices de matriz 2*i y 2*i+1.
A continuacion, se actualiza el estado del contexto llamando la funcion “arith_update_context(i,a,b)”, los detalles de la cual se explicaran mas adelante tomando como referencia la Figura 5g.
Posteriormente a la actualizacion del estado del contexto, que se realiza en la etapa 313, se repiten los algoritmos 312 y 313, hasta que la variable de ejecucion i alcance el valor de 1 g/2 o hasta que se detecte una condicion de parada aritmetica.
A continuacion, se realiza un algoritmo de terminacion “arith_finish()”como se puede apreciar por el numero de referencia 315. Mas adelante se describiran los detalles del algoritmo de terminacion “arith_finish()” con referencia a la Figura 5m.
Posteriormente al algoritmo de terminacion 315, se decodifican los signos de los valores espectrales empleando el algoritmo 314. Como se puede apreciar, los signos de los valores espectrales que son diferentes de cero se codifican individualmente. En el algoritmo 314, se leen los signos correspondientes a todos los valores espectrales que tienen indices i de entre i=0 e i=1g-1 que no son cero. Para cada valor espectral distinto de cero que tiene un mdice de valor espectral i de entre i=0 e i=1g—1, se lee un valor (tfpicamente un solo bit) s a partir del flujo de bits. Si el valor de s que se lee a partir del flujo de bits es igual a 1, se invierte el signo de dicho valor espectral. Para este fin, se accede a la matriz “x_ac_dec”, tanto para determinar si el valor espectral que tiene el mdice i es igual a cero como para actualizar el signo de los valores espectrales decodificados. Sin embargo, se debe tener en cuenta que los signos de las variables a, b quedan inalterados en la decodificacion de signos 314.
5
10
15
20
25
30
35
40
45
50
55
60
Realizando el algoritmo de terminacion 315 antes de la decodificacion de signos 314, es posible reiniciar todos los binarios necesarios despues de un sfmbolo ARITH_STOP.
Cabe senalar en este punto que el concepto para obtener los valores de los planos de bits menos significativos no es de particular importancia en algunas realizaciones de acuerdo con la presente invencion. En algunas realizaciones, puede incluso omitirse la decodificacion de algunos planos de bits menos significativos. Como alternativa, se puede utilizar diferentes algoritmos de decodificacion para este fin.
11.2 Orden de decodificacion de acuerdo con la Figura 4
A continuacion se describira el orden de decodificacion de los valores espectrales.
Los coeficientes espectrales cuantificados “x_ac_dec[]” se codifican sin ruido y se transmiten (por ejemplo en el flujo de bits) empezando desde el coeficiente de frecuencia mas baja y progresando hasta el coeficiente de frecuencia mas alta.
En consecuencia, los coeficientes espectrales cuantificados “x_ac_dec[]”se decodifican sin ruido empezando desde coeficiente de frecuencia mas baja y progresando hasta el coeficiente de frecuencia mas alta. Los coeficientes espectrales cuantificados se decodifican por grupos de dos coeficientes sucesivos (por ejemplo adyacentes en frecuencia) a y b reunidos en una denominada 2-tupla (a,b) (tambien designada con {a,b}). Cabe senalar en este punto que los coeficientes espectrales cuantificados en ocasiones se denominan tambien “qdec”.
Los coeficientes decodificados “x_ac_dec[]” para un modo en el dominio de la frecuencia (por ejemplo, los coeficientes decodificados para una codificacion de audio avanzada, por ejemplo, obtenida mediante el uso de una transformada de coseno discreta modificada, como se analiza en ISO/IEC 14496, parte 3, subparte 4) y a continuacion almacenados en una matriz “x_ac_quant[g][win][sfb][bin]”. El orden de transmision de las palabras de codigo de la codificacion sin ruido es de manera que cuando se decodifican en el orden recibido y se almacenan en la matriz, el mdice “bin” es el que se incrementa mas rapidamente y “g” es el mdice que se incrementa mas lentamente. Dentro de una palabra de codigo, el orden de codificacion es a,b.
Los coeficientes decodificados “x_ac_dec[]” para la excitacion codificada por transformadas (TCX) se almacenan, por ejemplo, directamente en una matriz “x_tcx_invquant[win][bin]”, y el orden de la transmision de la palabra de codigo de codificacion sin ruido es de manera que cuando se decodifica en el orden recibido y se almacena en la matriz “bin” es el mdice que se incrementa con mas rapidez y “win” es el mdice que se incrementa mas lentamente. Dentro de una palabra de codigo, el orden de decodificacion es a, b. En otras palabras, si los valores espectrales describen una excitacion codificada por transformadas del filtro de prediccion lineal de un codificador del habla, los valores espectrales a, b estan asociados a frecuencias adyacentes y crecientes de la excitacion codificada por transformadas. Los coeficientes espectrales asociados a una frecuencia menor se codifican y decodifican tfpicamente antes que un coeficiente espectral asociado con una frecuencia mas alta.
En particular, el decodificador de audio 200 puede estar configurado para aplicar la representacion decodificada en el dominio de la frecuencia 232, proporcionada por el decodificador aritmetico 230, tanto para una generacion “directa” de una representacion de senal de audio en el dominio del tiempo utilizando una transformada de senal del dominio de la frecuencia al dominio del tiempo como para una provision “indirecta” de una representacion de senal de audio en el dominio del tiempo utilizando tanto un decodificador del dominio de la frecuencia al dominio del tiempo como un filtro de prediccion lineal excitado por la salida del transformador de senal del dominio de la frecuencia al dominio del tiempo.
En otras palabras, el decodificador aritmetico, la funcionalidad del cual se analiza en este punto en detalle, es muy adecuada para decodificar valores espectrales de una representacion en el dominio del tiempo-frecuencia de un contenido de audio codificado en el dominio de la frecuencia, para la provision de una representacion en el dominio del tiempo-frecuencia de una senal estfmulo para un filtro de prediccion lineal adaptado para decodificar (o sintetizar) una senal del habla codificada en el dominio de prediccion lineal. Por consiguiente, el decodificador aritmetico es muy adecuado para usar en un decodificador de audio que puede tratar tanto contenido de audio codificado en el dominio de la frecuencia como contenido de audio codificado en el dominio de frecuencia de prediccion lineal (modo de dominio de la prediccion lineal excitada codificada por transformadas).
11.3 Inicializacion del contexto de acuerdo con las Figuras 5a y 5b
A continuacion se describira la inicializacion del contexto (tambien denominada “mapeo del contexto”), que se realiza en una etapa 310.
La inicializacion del contexto comprende un mapeo entre un contexto anterior y un contexto actual de acuerdo con el
5
10
15
20
25
30
35
40
45
50
55
60
algoritmo “arith_map_context()”, un primer ejemplo del cual se muestra en la Figura 5a y un segundo ejemplo del cual se muestra en la Figura 5b.
Como se puede apreciar, el contexto actual se almacena en una variable global “q[2][n_context]” que toma la forma de una matriz que tiene una primera dimension de 2 y una segunda dimension de “n_context”. Un contexto anterior se puede almacenar de manera opcional (aunque no necesariamente) en una variable “qs[n_context]” que toma la forma de una tabla que tiene una dimension de “n_context” (en caso de utilizarla).
Tomando como referencia el algoritmo de ejemplo “arith_map_context” de la Figura 5a, la variable N de entrada describe una longitud de una ventana actual y la variable de entrada “arith_reset_flag” indica si se debe reiniciar el contexto. Ademas, la variable global “previous_N” describe una longitud de una ventana anterior. Cabe senalar en este caso que tipicamente un numero de valores espectrales asociados a una ventana es, al menos aproximadamente, igual a la mitad de la longitud de dicha ventana en terminos de muestras en el dominio del tiempo. Ademas, se debe tener en cuenta que, en consecuencia, un numero de 2-tuplas de valores espectrales es al menos aproximadamente igual a un cuarto de una longitud de dicha ventana en terminos de muestras en el dominio del tiempo.
Tomando como referencia el ejemplo de la Figura 5a, el mapeo del contexto se puede realizar de acuerdo con el algoritmo “arith_map_context()”. Cabe senalar en este punto que la funcion “arith_map_context()” establece las entradas “q[0][j]” de la matriz del contexto actual q a cero en el caso de j=0 a j=N/4-1, si la bandera “arith_reset_flag” esta activa y, en consecuencia, indica que se debe reiniciar el contexto. De lo contrario, es decir, si la bandera “arith_reset_flag” esta inactiva, las entradas “q[0][j]” de la matriz del contexto actual q se derivan de las entradas “q[1][k]” de la matriz del contexto actual q. Se debe tener en cuenta que la funcion “arith_map_context()” de acuerdo con la Figura 5a establece las entradas “q[0][j]” de la matriz del contexto actual q a los valores “q[1][k]” de la matriz del contexto actual q, si el numero de valores espectrales asociado a la trama de audio actual (por ejemplo, codificada en el dominio de la frecuencia) es identico al numero de valores espectrales asociado a la trama de audio anterior para j=k=0 a j=k=N/4-1.
Se realiza un mapeo mas complicado si el numero de valores espectrales asociado a la trama de audio actual es diferente del numero de valores espectrales asociado a la trama de audio precedente. Sin embargo, los detalles con respecto al mapeo en este caso no son particularmente relevantes para la idea clave de la presente invencion, de manera que se hace referencia al pseudo codigo de programa de la Figura 5a para detalles.
Ademas, un valor de inicializacion para el valor numerico de contexto actual c se devuelve por la funcion “arith_map_context()”. Este valor de inicializacion es, por ejemplo, igual al valor de la entrada “q[0][0]” desplazado 12 bits a la izquierda. En consecuencia, el valor numerico de contexto (actual) c se inicializa apropiadamente para una actualizacion iterativa.
Ademas, la Figura 5b muestra otro ejemplo de un algoritmo “arith_map_context()” que se puede utilizar como alternativa. Por detalles se hace referencia al pseudo codigo de programa de la Figura 5b.
Para resumir lo anterior, la bandera “arith_reset_flag” determina si se debe reiniciar el contexto. Si la bandera es verdadera, se llama un subalgoritmo de reinicio 500a del algoritmo “arith_map_context()”. Como alternativa, sin embargo, si la bandera “arith_reset_flag” esta inactiva (que indica que no se debe realizar el reinicio del contexto), el proceso de decodificacion comienza con una fase de inicializacion en la que se actualiza el vector de elementos de contexto (o matriz) q copiando y mapeando los elementos del contexto de la trama anterior almacenados en q[1][] a q[0][]. Los elementos del contexto dentro de q se almacenan en 4-bits por 2-tuplas. La copia y/o mapeo del elemento del contexto se realizan en un subalgoritmo 500b.
En el ejemplo de la Figura 5b, el proceso de decodificacion se inicia con una fase de inicializacion donde se realiza un mapeo entre el contexto anterior almacenado en qs y el contexto de la trama actual q. El contexto anterior qs se almacena en 2-bits por lmea de frecuencia.
11.4 Calculo de valores de estado de acuerdo con las Figuras 5c y 5d A continuacion se describira el calculo de los valores de estado 312a en mas detalle.
Se describira un primer algoritmo de ejemplo con referencia a la Figura 5c y un segundo algoritmo de ejemplo con referencia a la Figura 5d.
Se debe tener en cuenta que se puede obtener el valor numerico de contexto actual c (como se muestra en la Figura 3) como un valor de retorno de la funcion “arith_get_context(c,i,N)”, una representacion de pseudo codigo de programa del cual se muestra en la Figura 5c. Como alternativa, sin embargo, se puede obtener el valor numerico de contexto actual c como un valor de retorno de la funcion “arith_get_context(c,i)”, una representacion de pseudo codigo de programa del cual se muestra en la Figura 5d.
5
10
15
20
25
30
35
40
45
50
55
60
Con respecto al calculo del valor de estado, tambien se hace referencia a la Figura 4, que muestra el contexto utilizado para la evaluacion de estado, es decir, para el calculo de un valor numerico de contexto actual c. La Figura 4 muestra una representacion bidimensional de los valores espectrales, tanto en el tiempo como en la frecuencia. Una abscisa 410 describe el tiempo y una ordenada 412 describe la frecuencia. Como se puede apreciar en la Figura 4, una tupla 420 de valores espectrales a decodificar (preferentemente usando el valor numerico de contexto actual), esta asociada con un mdice de tiempo t0 y un mdice de frecuencia i. Como se puede apreciar, para el mdice de tiempo t0, las tuplas con indices de frecuencia i-, i-2, e i-3 ya se decodifican en el momento en que se deben decodificar los valores espectrales de la tupla 120, que tiene el mdice de frecuencia i. Como se puede apreciar a partir de la Figura 4, un valor espectral 430 que tiene un mdice de tiempo t0 y un mdice de frecuencia i-1 ya se ha decodificado antes de la decodificacion de la tupla 420 de valores espectrales, y se considera la tupla 430 de valores espectrales para el contexto que se utiliza para la decodificacion de la tupla 420 de valores espectrales. Del mismo modo, una tupla 440 de valores espectrales que tiene un mdice de tiempo t0-1 y un mdice de frecuencia de i-1, una tupla 450 de valores espectrales que tiene un mdice de tiempo t0-1 y un mdice de frecuencia de i, y una tupla 460 de valores espectrales que tiene un mdice de tiempo t0-1 y un mdice de frecuencia de i+1, ya se han decodificado antes de la decodificacion de la tupla 420 de valores espectrales, y se consideran para la determinacion del contexto, que se utiliza para decodificar la tupla 420 de valores espectrales. Los valores espectrales (coeficientes) ya decodificados en el momento cuando se decodifican los valores espectrales de la tupla 420 y se consideran para el contexto se muestran mediante un cuadrado sombreado. Por el contrario, otros valores espectrales ya decodificados (en el momento cuando se decodifican los valores espectrales de la tupla 420) aunque no tenidos en cuenta para el contexto (para la decodificacion de los valores espectrales de la tupla 420) estan representados por cuadrados que tienen lmeas discontinuas y otros valores espectrales (que aun no se han decodificado en el momento cuando se decodifican los valores espectrales de la tupla 420) se muestran por cmculos que tienen lmeas discontinuas. Las tuplas representadas por cuadrados que tienen lmeas discontinuas y las tuplas representados por cmculos que tienen lmeas discontinuas no se utilizan para determinar el contexto para la decodificacion de los valores espectrales de la tupla 420.
Sin embargo, se debe tener en cuenta que algunos de estos valores espectrales, que no se utilizan para el calculo “regular” o “normal” del contexto para decodificar los valores espectrales de la tupla 420 pueden evaluarse, sin embargo, para la deteccion de una pluralidad de valores espectrales adyacentes previamente decodificados que cumplan, individualmente o en su conjunto, con una condicion predeterminada con respecto a sus magnitudes. Los detalles con respecto a este tema se analizaran mas adelante.
Tomando ahora como referencia la Figura 5c, se describen detalles del algoritmo “arith_get_context(c,i,N)”. La Figura 5c muestra la funcionalidad de dicha funcion “arith_get_context(c,i,N)” en forma de pseudo codigo de programa que utiliza las convenciones del bien conocido lenguaje C y/o lenguaje C++. Por consiguiente, se describiran algunos detalles mas con respecto al calculo del valor numerico de contexto actual “c” que se realiza por la funcion “arith_get_context(c,i,N)”.
Se debe tener en cuenta que la funcion “arith_get_context(c,i,N)” recibe, como variables de entrada, un “contexto de estado anterior” que puede describirse por un valor numerico de contexto anterior c. La funcion “arith_get_context(c,i,N)” tambien recibe, como variable de entrada, un mdice i de una 2-tupla de valores espectrales a decodificar. El mdice i es tfpicamente un mdice de frecuencia. Una variable de entrada N describe una longitud de ventana de una ventana, para la cual se decodifican los valores espectrales.
La funcion “arith_get_context(c,i,N)” proporciona, como un valor de salida, una version actualizada de la variable de entrada c, que describe un contexto de estado actualizado y que puede considerarse como un valor numerico de contexto actual. Para resumir, la funcion “arith_get_context(c,i,N)” recibe un valor numerico de contexto anterior c como variable de entrada y proporciona una version actualizada del mismo, que se considera como un valor numerico de contexto actual. Ademas, la funcion “arith_get_context” considera las variables i, N, y tambien accede a la matriz “global” q[][].
Con respecto a los detalles de la funcion “arith_get_context(c,i,N)”, se debe tener en cuenta que la variable c, que en un principio representa el valor numerico de contexto anterior en forma binaria, se desplaza 4 bits a la derecha en una etapa 504a. En consecuencia, se descartan los cuatro bits menos significativos del valor numerico de contexto anterior (representado por la variable de entrada c). Ademas, se reducen las ponderaciones numericas de los otros bits de los valores numericos de contexto anterior, por ejemplo, un factor de 16.
Ademas, si el mdice i de la 2-tupla es menor a N/4-1, es decir, si no toma un valor maximo, se modifica el valor numerico de contexto actual por el hecho de que se agrega el valor de la entrada q[0][i+1] a los bits 12 a 15 (es decir, a los bits que tienen una ponderacion numerica de 2, 213, 214 y 215) del valor de contexto desplazado que se obtiene en la etapa 504a. Para este fin, la entrada q[0][i+1] de la matriz q[][] (o, mas precisamente, una representacion binaria del valor representado por dicha entrada) se desplaza 12 bits a la izquierda. A continuacion se anade la version desplazada del valor representado por la entrada q[0][i+1] al valor de contexto c, que se deriva
5
10
15
20
25
30
35
40
45
50
55
60
en la etapa 504a, es dedr, a una representacion numerica desplazada en bits (desplazada 4 bits a la derecha) del valor numerico de contexto anterior. Cabe senalar en este punto que la entrada q [0][i+1] de la matriz q[][] representa un valor de subregion asociado con una porcion anterior del contenido de audio (por ejemplo, una porcion del contenido de audio que tiene el mdice de tiempo t0-1, como se define con referencia a la Figura 4), y con una frecuencia mayor (por ejemplo una frecuencia con un mdice de frecuencia i+1, como se define con referencia a la Figura 4) que la tupla de valores espectrales a codificar actualmente (usando el valor numerico de contexto actual c emitido por la funcion “arith_get_context(c,i,N)”). En otras palabras, si la tupla 420 de valores espectrales se ha de decodificar usando el valor numerico de contexto actual, la entrada q[0][i+1] se puede basar en la tupla 460 de valores espectrales previamente decodificados.
Se muestra una adicion selectiva de la entrada q[0][i+1] de la matriz q[][] (desplazada 12 bits a la izquierda) en el numero de referencia 504b. Como se puede apreciar, la suma del valor representado por la entrada q[0][i+1] solo se realiza, naturalmente, si el mdice de frecuencia i no designa una tupla de valores espectrales que tienen el mdice de frecuencia mas alto i=N/4-1.
A continuacion, en una etapa 504c, se realiza una operacion Y booleana, en la cual se combina en AND el valor de la variable c con un valor hexadecimal de 0xFFF0 para obtener un valor actualizado de la variable c. Realizando tal operacion AND, se establecen a cero los cuatro bits menos significativos de la variable c de manera eficaz.
En la etapa 504d, se suma el valor de la entrada q[1][i-1] al valor de la variable c, que se obtiene por la etapa 504c, para actualizar de esta manera el valor de la variable c. Sin embargo, dicha actualizacion de la variable c en la etapa 504d solo se realiza si el mdice de frecuencia i de la 2-tupla a decodificar es mayor que cero. Se debe tener en cuenta que la entrada q[1][i-1] es un valor de subregion de contexto basado en una tupla de valores espectrales previamente decodificados de la porcion actual del contenido de audio en el caso de frecuencias inferiores a las frecuencias de los valores espectrales a decodificar usando el valor numerico de contexto actual. Por ejemplo, la entrada q[1][i-1] de la matriz q[][] puede estar asociada a la tupla 430 que tiene el mdice de tiempo t0 y el mdice de frecuencia i-1, si se supone que la tupla 420 de valores espectrales se debe decodificar usando el valor numerico de contexto actual devuelto por la presente ejecucion de la funcion “arith_get_context(c,i,N)”.
Para resumir, los bits 0, 1, 2, y 3 (es decir, una porcion de cuatro bits menos significativos) del valor numerico de contexto anterior se descartan en la etapa 504a desplazandolos de la representacion en numeros binarios del valor numerico de contexto anterior. Ademas, se determinan los bits 12, 13, 14, y 15 de la variable desplazada c (es decir, del valor numerico del contexto anterior desplazado) de manera que tengan valores definidos por el valor de subregion de contexto q[0][i+1] en la etapa 504b. A los bits 0, 1, 2, y 3 del valor numerico desplazado del contexto anterior (es decir, los bits 4, 5, 6, y 7 del valor numerico de contexto anterior original) se sobrescribe el valor de subregion de contexto q[1][i-1] en las etapas 504c y 504d.
En consecuencia, se puede decir que los bits 0 a 3 del valor numerico de contexto anterior representan el valor de subregion de contexto asociado con la tupla 432 de valores espectrales, los bits 4 a 7 del valor numerico de contexto anterior representan el valor de subregion de contexto asociado con una tupla 434 de valores espectrales previamente decodificados, los bits 8 a 11 del valor numerico de contexto anterior representan el valor de subregion de contexto asociado con la tupla 440 de valores espectrales previamente decodificados y los bits 12 a 15 del valor numerico de contexto anterior representan un valor de subregion de contexto asociado con la tupla 450 de valores espectrales previamente decodificados. El valor numerico de contexto anterior, que se introduce en la funcion “arith_get_context(c,i,N)”, esta asociado con una decodificacion de la tupla 430 de valores espectrales.
El valor numerico de contexto actual, que se obtiene como una variable de salida de la funcion “arith_get_context(c,i,N)”, esta asociado con una decodificacion de la tupla 420 de valores espectrales. En consecuencia, los bits 0 a 3 de los valores numericos de contexto actual describen el valor de subregion de contexto asociado con la tupla 430 de los valores espectrales, los bits 4 a 7 del valor numerico de contexto actual describen el valor de subregion de contexto asociado con la tupla 440 de valores espectrales, los bits 8 a 11 del valor numerico de contexto actual describen el valor numerico de subregion asociado con la tupla 450 del valor espectral y los bits 12 a 15 del valor numerico de contexto actual describen el valor de subregion de contexto asociado con la tupla 460 de valores espectrales. Por consiguiente, se puede apreciar que una porcion del valor numerico de contexto anterior, es decir los bits 8 a 15 del valor numerico de contexto anterior, tambien esta incluida en el valor numerico de contexto actual, como los bits 4 a 11 del valor numerico de contexto actual. Por el contrario, los bits 0 a 7 del valor numerico del contexto actual anterior se descartan cuando se deriva la representacion numerica del valor numerico de contexto actual de la representacion numerica del valor numerico de contexto anterior.
En la etapa 504e, la variable c, que representa el valor numerico de contexto actual se actualiza selectivamente si el mdice de frecuencia i de la 2-tupla a decodificar es mayor que un numero predeterminado, por ejemplo, 3. En este caso, es decir, si i es mayor que 3, se determina si la suma de los valores de subregion de contexto q[1 ][i-3], q[1 ][i- 2], y q[1][i-1] es menor (o igual) a un valor predeterminado, por ejemplo, 5. Si se encuentra que la suma de dichos valores de subregion de contexto es menor que dicho valor predeterminado, se suma un valor hexadecimal de, por
5
10
15
20
25
30
35
40
45
50
55
60
ejemplo, 0x10000, a la variable c. En consecuencia, se determina la variable c de tal manera que la variable c indique si hay una condicion en la cual los valores de subregion de contexto q[1][i-3], q[1][i-2], y q[1][i-1] comprenden un valor de suma particularmente pequeno. Por ejemplo, el bit 16 del valor numerico de contexto actual puede actuar como una bandera para indicar una condicion de ese tipo.
En conclusion, el valor de retorno de la funcion “arith_get_context(c,i,N)” se determina en las etapas 504a, 504b, 504c, 504d, y 504e, donde se deriva el valor numerico de contexto actual a partir del valor numerico de contexto anterior en las etapas 504a, 504b, 504c, y 504d, y en el que en la etapa 504e se deriva una bandera que indica un entorno de valores espectrales previamente decodificados que tienen, por termino medio, valores absolutos particularmente pequenos y se suman a la variable c. En consecuencia, el valor de la variable c obtenida en las etapas 504a, 504b, 504c, 504d se devuelve, en la etapa 504f, como un valor de retorno de la funcion “arith_get_context(c,i,N)”, si no se cumple la condicion evaluada en la etapa 504e. Por el contrario, el valor de la variable c, que se deriva en las etapas 504a, 504b, 504c, y 504d, se incrementa mediante el valor hexadecimal de 0x10000 y el resultado de esta operacion de incremento se devuelve en la etapa 504e, si se cumple la condicion evaluada en la etapa 540e.
Para resumir lo anterior, se debe tener en cuenta que el decodificador sin ruido emite 2-tuplas de coeficientes espectrales cuantificados sin signo (como se describira mas adelante en mas detalle). En primer lugar se calcula el estado c del contexto basandose en los coeficientes espectrales previamente decodificados que “rodean” a la 2-tupla a decodificar. En una realizacion preferida, se actualiza incrementalmente el estado (que esta representado, por ejemplo, por un valor numerico de contexto) utilizando el estado del contexto de la ultima 2-tupla decodificada (que se designa como un valor numerico de contexto anterior), considerando solo dos nuevas 2-tuplas (por ejemplo, 2- tuplas 430 y 460). El estado es codificado en 17-bits (por ejemplo, usando una representacion numerica de un valor numerico de contexto actual) y se devuelve por la funcion “arith_get_context()”. Para detalles, se hace referencia a la representacion de codigo de programa de la Figura 5c.
Ademas, se debe tener en cuenta que en la Figura 5d se muestra un pseudo codigo de programa de una realizacion alternativa de una funcion “arith_get_context()”. La funcion “arith_get_context(c,i)” de acuerdo con la Figura 5d es similar a la funcion “arith_get_context(c,i,N)” de acuerdo con la Figura 5c. Sin embargo, la funcion “arith_get_context(c,i)” de acuerdo con la Figura 5d no comprende un manejo o decodificacion especial de tuplas de valores espectrales que comprenden un mdice de frecuencia mmimo de i=0 o un mdice de frecuencia maximo de i=N/4-1.
11.5 Seleccion de reglas de mapeo
A continuacion se describira la seleccion de una regla de mapeo, por ejemplo, una tabla de frecuencias acumulativas que describe el mapeo de un valor de palabra de codigo sobre un codigo de sfmbolo. La seleccion de la regla de mapeo se realiza dependiendo de un estado del contexto, que se describe por el valor numerico de contexto actual c.
11.5.1 Seleccion de reglas de mapeo utilizando el algoritmo de acuerdo con la Figura 5e
A continuacion se describira la seleccion de una regla de mapeo usando la funcion “arith_get_pk(c)”. Se debe tener en cuenta que la funcion “arith_get_pk()” se llama al comienzo del subalgoritmo 312ba al decodificar un valor de codigo “acod_m” para proporcionar una tupla de valores espectrales. Se debe tener en cuenta que la funcion “arith_get_pk(c)” se llama con diferentes argumentos en diferentes iteraciones del algoritmo 312b. Por ejemplo, en una primera iteracion del algoritmo 312b, la funcion “arith_get_pk(c)” se llama con un argumento que es igual al valor numerico de contexto actual c, proporcionado por la ejecucion previa de la funcion “arith_get_context(c,i,N)” en la etapa 312a. Por el contrario, en otras iteraciones del subalgoritmo 312ba, la funcion “arith_get_pk(c)” se llama con un argumento que es la suma del valor numerico de contexto actual c proporcionado por la funcion “arith_get_context(c,i,N)” en la etapa 312a, y una version desplazada en bits del valor de la variable “esc_nb”, en el que el valor de la variable “esc_nb” esta desplazada 17 bits a la izquierda. Por consiguiente, el valor numerico de contexto actual c proporcionado por la funcion “arith_get_context(c,i,N)” se utiliza como valor de entrada de la funcion “arith_get_pk()” en la primera iteracion del algoritmo 312ba, es decir, en la decodificacion de valores espectrales comparativamente bajos. Por el contrario, cuando se decodifican valores espectrales comparativamente altos, se modifica la variable de entrada de la funcion “arith_get_pk()” para tener en cuenta el valor de la variable “esc_nb”, como se muestra en la Figura 3.
Tomando ahora como referencia la Figura 5e, que muestra una representacion de pseudo codigo de programa de una primera realizacion de la funcion “arith_get_pk(c)”, se debe tener en cuenta que la funcion “arith_get_pk()” recibe la variable c como un valor de entrada, en el que la variable c describe el estado del contexto, y en el que la variable de entrada c de la funcion “arith_get_pk()” es igual al valor numerico de contexto actual proporcionado como una variable de retorno por la funcion “arith_get_context()” al menos en algunos casos. Ademas, se debe tener en cuenta que la funcion “arith_get_pk()” proporciona, como una variable de salida, la variable “pki”, que describe un mdice de
5
10
15
20
25
30
35
40
45
50
55
60
un modelo de probabilidades y que puede considerarse como un valor de mdice de regla de mapeo.
Haciendo referencia a la Figura 5e, se puede apreciar que la funcion “arith_get_pk()” comprende la inicializacion de una variable 506a, en la que la variable “i_min” se inicializa para tomar el valor de -1. De modo similar, se establece la variable i para que sea igual a la variable “i_min”, de manera que la variable i tambien se inicializa a un valor de -1. La variable “i_max” se inicializa para tomar un valor que es 1 menor que el numero de entradas de la tabla “ari_lookup_m[]” (detalles de lo cual se describen con referencia a la Figuras 21(1) y 21(2)). En consecuencia, las variables “i_min” y “i_max” definen un intervalo.
A continuacion se realiza una busqueda 506b para identificar un valor de mdice que designa una entrada de la tabla “ari_hash_m”, de manera que el valor de la variable de entrada c de la funcion “arith_get_pk()” radica dentro de un intervalo definido por dicho elemento y una entrada adyacente.
En la busqueda 506b, se repite un subalgoritmo 506ba, mientras una diferencia entre las variables “i_max” y “i_min” es mayor que 1. En el subalgoritmo 506ba, se establece la variable i de manera que sea igual a una media aritmetica de los valores de las variables “i_min” e “i_max”. En consecuencia, la variable i designa una entrada de la tabla “ari_hash_m[]” en el centro de un intervalo de la tabla definido por los valores de las variables “i_min” e “i_max”. A continuacion, se determina que la variable j ha de ser igual al valor de la entrada “ari_hash_m[i]” de la tabla “ari_hash_m[]”. Por consiguiente, la variable j toma un valor definido por una entrada de la tabla “ari_hash_m[]”, entrada que radica en el centro de un intervalo de la tabla definido por las variables “i_min” e “i_max”. A continuacion, se actualiza el intervalo definido por las variables “i_min” e “i_max” si el valor de la variable de entrada c de la funcion “arith_get_pk()” es diferente de un valor de estado definido por los bits mas altos de la entrada de la tabla “j=ari_hash_m[i]” de la tabla “ari_hash_m[]”. Por ejemplo, los bits “mas altos” (los bits 8 y superiores) de las entradas de la tabla “ari_hash_m[]”describen valores de estado significativos. En consecuencia, el valor “j>>8” describe un valor de estado significativo representado por la entrada “j=ari_hash_m[i]” de la tabla “ari_hash_m[]” designado por el valor de mdice de tabla de troceo i. En consecuencia, si el valor de la variable c es menor que el valor “j>>8”, esto significa que el valor de estado descrito por la variable c es menor que un valor de estado significativo descrito por la entrada “ari_hash_m[i]” de la tabla “ari_hash_m[]”. En este caso, el valor de la variable “i_max” se establece para que sea igual al valor de la variable i, lo que a su vez tiene el efecto de reducir el tamano del intervalo definido por “i_min” y “i_max”, en el que el nuevo intervalo es aproximadamente igual a la mitad inferior del intervalo anterior. Si se encuentra que la variable de entrada c de la funcion “arith_get_pk()” es mayor que el valor “j>>8”, lo que significa que el valor de contexto descrito por la variable c es mayor que un valor de estado significativo descrito por la entrada “ari_hash_m[i]” de la matriz “ari_hash_m[]”, el valor de la variable “i_min” se establece para que sea igual al valor de la variable i. En consecuencia, se reduce el tamano del intervalo definido por los valores de las variables “i_min” e “i_max” a aproximadamente la mitad del tamano del intervalo anterior definido por los valores anteriores de las variables “i_min” e “i_max”. Para ser mas precisos, el intervalo definido por el valor actualizado de la variable “i_min” y por el valor anterior (inalterado) de la variable “i_max” es aproximadamente igual a la mitad superior del intervalo anterior en caso de que el valor de la variable c sea mayor que el valor de estado significativo definido por la entrada “ari_hash_m[i]”.
Sin embargo, si se encuentra que el valor de contexto descrito por la variable de entrada c del algoritmo “arith_get_pk()” es igual al valor de estado significativo definido por la entrada “ari_hash_m[i]” (es decir, c==(j>>8)), un valor de mdice de regla de mapeo definido por los 8 bits mas bajos de la entrada “ari_hash_m[i]” se devuelve como valor de retorno de la funcion “arith_get_pk()” (instruccion “return (j&0xFF)”).
Para resumir lo anterior, se evalua una entrada “ari_hash_m[i]”, los bits mas altos de la cual (los bits 8 y superiores) describen un valor de estado significativo, en cada iteracion 506ba, y se compara el valor de contexto (o valor numerico de contexto actual) descrito por la variable de entrada c de la funcion “arith_get_pk()” con el valor de estado significativo descrito por dicha entrada de la tabla “ari_hash_m[i]”. Si el valor de contexto representado por la variable de entrada c es menor que el valor de estado significativo representado por la entrada de la tabla “ari_hash_m[i]”, el lfmite superior (descrito por el valor “i_max”) del intervalo de la tabla se reduce, y si el valor de contexto descrito por la variable de entrada c es mayor que el valor de estado significativo descrito por la entrada de la tabla “ari_hash_m[i]”, se incrementa el lfmite inferior (descrito por el valor de la variable “i_min”) del intervalo de la tabla. En ambos casos mencionados, se repite el subalgoritmo 506ba, a menos que el tamano del intervalo (definido por la diferencia entre “i_max” y “i_min”) sea menor o igual a 1. Si, por el contrario, el valor de contexto descrito por la variable c es igual al valor de estado significativo descrito por la entrada de la tabla “ari_hash_m[i]”, se aborta la funcion “arith_get_pk()”, en la que el valor de retorno esta definido por los 8 bits mas bajos de la entrada de la tabla “ari_hash_m[i]”.
Sin embargo, si se da por terminada la busqueda 506b porque el tamano del intervalo alcanza su valor mmimo (“i_max - “i_min” es menor o igual a 1), el valor de retorno de la funcion “arith_get_pk()” esta determinado por una entrada “ari_lookup_m[i_max]” de una tabla “ari_lookup_m[]”, que se puede ver en el numero de referencia 506c. En consecuencia, las entradas de la tabla “ari_hash_m[]” definen tanto valores de estado significativos como los lfmites de los intervalos. En el subalgoritmo 506ba, los lfmiies de los intervalos de busqueda “i_min” e “i_max” se adaptan
5
10
15
20
25
30
35
40
45
50
55
60
iterativamente de manera que la entrada “ari_hash_m[i]” de la tabla “ari_hash_m[]”, un mdice de tabla de troceo que radica, al menos aproximadamente, en el centro del intervalo de busqueda definido por los valores lfmite de intervalo “i_min” e “i_max”, al menos se aproxima a un valor de contexto descrito por la variable de entrada c. Por lo tanto se obtiene que el valor de contexto descrito por la variable de entrada c radica dentro de un intervalo definido por “ari_hash_m[i_min]” y “ari_hash_m[i_max]” una vez completadas las iteraciones del subalgoritmo 506ba, a menos que el valor de contexto descrito por la variable de entrada c sea igual a un valor de estado significativo descrito por una entrada de la tabla “ari_hash_m[]”.
Sin embargo, si la repeticion iterativa del subalgoritmo 506ba se termina porque el tamano del intervalo (definido por “i_max - i_min”) alcanza o excede su valor mmimo, se supone que el valor de contexto descrito por la variable de entrada c no es un valor de estado significativo. En ese caso, sin embargo se utiliza el mdice “i_max”, que designa un lfmite superior del intervalo. El valor superior “i_max” del intervalo, que se alcanza en la ultima iteracion del subalgoritmo 506ba, se vuelve a utilizar como valor de mdice de la tabla para el acceso a la tabla “ari_lookup_m”. La tabla “ari_lookup_m[]” describe valores de mdice de regla de mapeo asociados con intervalos de una pluralidad de valores numericos de contexto adyacentes. Los intervalos a los cuales estan asociados los valores de mdice de regla de mapeo descritos por las entradas de la tabla “ari_lookup_m[]”, estan definidos por los valores de estado significativos descritos por las entradas de la tabla “ari_hash_m[]”. Las entradas de la tabla “ari_hash_m” definen tanto valores de estado significativos como lfmites de los intervalos de los intervalos de valores numericos de contexto adyacentes. En la ejecucion del algoritmo 506b, se determina si el valor numerico de contexto actual descrito por la variable de entrada c es igual a un valor de estado significativo, y si este no es el caso, en que intervalo de valores numericos de contexto (de una pluralidad de intervalos, los lfmites de los cuales estan definidos por los valores de estado significativos) radica el valor de contexto descrito por la variable de entrada c. De esa manera, el algoritmo 506b cumple una doble funcionalidad para determinar si la variable de entrada c describe un valor de estado significativo y, si ese no es el caso, para identificar un intervalo, delimitado por valores de estado significativos, en el cual radica el valor de contexto representado por la variable de entrada c. En consecuencia, el algoritmo 506e es particularmente eficaz y requiere solo un numero comparativamente pequeno de accesos de la tabla.
Para resumir lo anterior, el estado del contexto c determina la tabla de frecuencias acumulativas utilizada para decodificar el plano de 2 bits mas significativos m. El mapeo de c al correspondiente mdice de tabla de frecuencias acumulativas “pki” se realiza por la funcion “arith_get_pk()”. Una representacion de pseudo codigo de programa de dicha funcion “arith_get_pk()” se ha explicado con referencia a la Figura 5e.
Para resumir adicionalmente lo anterior, se decodifica el valor m usando la funcion “arith_decode()” (que se describe mas adelante con mas detalle) llamada con la tabla de frecuencias acumulativas “arith_cf_m[pki][]”, donde “pki” corresponde al mdice (tambien denominado valor de mdice de regla de mapeo) devuelto por la funcion “arith_get_pk()”, que se describe con referencia a la Figura 5e.
11.5.2 Seleccion de reglas de mapeo utilizando el algoritmo de acuerdo con la Figura 5f
A continuacion se describira otra realizacion de un algoritmo de seleccion de reglas de mapeo “arith_get_pk()” con referencia a la Figura 5f que muestra una representacion de pseudo codigo de programa de un algoritmo que se puede utilizar en la decodificacion de una tupla de valores espectrales. El algoritmo de acuerdo con la Figura 5f se puede considerar una version optimizada (por ejemplo, version optimizada en velocidad) del algoritmo, “get_pk()” o del algoritmo “arith_get_pk()”.
El algoritmo “arith_get_pk()” de acuerdo con la Figura 5f recibe, como una variable de entrada, una variable c que describe el estado del contexto. La variable de entrada c puede representar, por ejemplo, un valor numerico de contexto actual.
El algoritmo “arith_get_pk()” proporciona, como una variable de salida, una variable “pki”, que describe y un mdice de distribucion de probabilidades (o modelo de probabilidades) asociado a un estado del contexto descrito por la variable de entrada c. La variable “pki” puede ser, por ejemplo, un valor de mdice de regla de mapeo.
El algoritmo de acuerdo con la Figura 5f comprende una definicion del contenido de la matriz “i_diff[]”. Como se puede apreciar, una primera entrada de la matriz “i_diff[]” (que tiene un mdice de matriz 0) es igual a 299 y las demas entradas de la matriz (que tienen indices de matriz de 1 a 8) toman los valores de 149, 74, 37, 18, 9, 4, 2 y 1. En consecuencia, el tamano de paso para la seleccion de un valor de mdice de la tabla de troceo “i_min” se reduce con cada iteracion, ya que las entradas de las matrices “i_diff[]” definen dichos tamanos de pasos. Para mas detalles, se hace referencia al siguiente analisis.
Sin embargo, realmente se puede optar por diferentes tamanos de paso, por ejemplo diferentes contenidos de la matriz “i_diff[]”, en el que el contenido de la matriz “i_diff[]” puede adaptarse evidentemente a un tamano de la tabla de troceo “ari_hash_m[i]”.
5
10
15
20
25
30
35
40
45
50
55
60
Se debe tener en cuenta que la variable “i_min” se inicializa tomando un valor de 0 justo al comienzo del algoritmo “arith_get_pk()”.
En una etapa de inicializacion 508a, se inicializa una variable s dependiendo de la variable de entrada c, en la que una representacion numerica de la variable c se desplaza 8 bits a la izquierda para obtener la representacion numerica de la variable s.
A continuacion, se realiza una busqueda de tablas 508b para identificar un valor de mdice de tabla de troceo “i_min” de una entrada de la tabla de troceo “ari_hash_m[]”, de tal manera que el valor de contexto descrito por el valor de contexto c radica dentro de un intervalo que esta delimitado por el valor de contexto descrito por la entrada de la tabla de troceo “ari_hash_m[i_min]” y un valor de contexto descrito por otra entrada de la tabla de troceo “ari_hash_m”, otra entrada “ari_hash_m” que es adyacente (en terminos de su valor de mdice de tabla de troceo) a ls entrada de la tabla de troceo “ari_hash_m[i_min]”. Por consiguiente, el algoritmo 508b permite la determinacion de un valor de mdice de la tabla de troceo “i_min” que designa una entrada “j=ari_hash_m[i_min]” de la tabla de troceo “ari_hash_m[]”, de manera que la entrada de la tabla de troceo “ari_hash_m[i_min]” al menos aproxima el valor de contexto descrito por la variable de entrada c.
La busqueda de tablas 508b comprende una ejecucion iterativa de un subalgoritmo 508ba, en el que el subalgoritmo 508ba se ejecuta un numero predeterminado de iteraciones, por ejemplo nueve. En la primera etapa del subalgoritmo 508ba, se establece la variable i a un valor igual a la suma del valor de una variable “i_min” y un valor de una entrada de la taba “i_diff[k]”. Cabe senalar en este punto que k es una variable de ejecucion que se incrementa, empezando desde un valor inicial de k=0, con cada iteracion del subalgoritmo 508ba. La matriz “i_diff[]” define valores en incrementos predeterminados, en el que los valores de incremento se reducen con el aumento del mdice de la tabla k, es decir, con los numeros crecientes de iteraciones.
En una segunda etapa del subalgoritmo 508ba, se copia un valor de una entrada de la tabla “ari_hash_m[]” en una variable j. Preferentemente, los bits mas altos de las entradas de tabla de la tabla “ari_hash_m[]”describen un valor de estado significativo de un valor numerico de contexto y los bits mas bajos (bits 0 a 7) de las entradas de la tabla “ari_hash_m[]”describen valores de mdice de regla de mapeo asociados a los respectivos valores de estado significativos.
En una tercera etapa del subalgoritmo 508ba, se compara el valor de la variable S con el valor de la variable j, y se establece selectivamente la variable “i_min” al valor “i+1” si el valor de la variable s es mayor que el valor de la variable j. A continuacion se repite la primera etapa, la segunda etapa y la tercera etapa del subalgoritmo 508ba un numero predeterminado de veces, por ejemplo nueve veces. Por consiguiente, en cada ejecucion del subalgoritmo 508ba, el valor de la variable “i_min” se incrementa en i_diff[]+1, si, y solamente si, el valor de contexto descrito por el mdice de tabla de troceo valido actualmente i_min + i_diff[] es menor que el valor de contexto descrito por la variable de entrada c. En consecuencia, el valor de mdice de tabla de troceo “i_min” se incrementa (iterativamente) en cada ejecucion del subalgoritmo 508ba si (y solamente si) el valor de contexto descrito por la variable de entrada c y, en consecuencia, por la variable s, es mayor que el valor de contexto descrito por la entrada “ari_hash_m[i=i_min + diff[k]]”.
Ademas, se debe tener en cuenta que solo se ejecuta una sola comparacion, es concreto la comparacion de si el valor de la variable s es mayor que el valor de la variable j en cada ejecucion del subalgoritmo 508ba. En consecuencia, el algoritmo 508ba es de manera particular computacionalmente eficaz. Ademas, se debe tener en cuenta que hay diferentes resultados posibles con respecto al valor final de la variable “i_min”. Por ejemplo, es posible que el valor de la variable “i_min”, despues de la ultima ejecucion del subalgoritmo 512ba, sea de manera que el valor de contexto descrito por la entrada de la tabla “ari_hash_m[i_min]” sea menor que el valor de contexto descrito por la variable de entrada c, y que el valor de contexto descrito por la entrada de la tabla “ari_hash_m[i_min + 1]” sea mayor que el valor de contexto descrito por la variable de entrada c. Como alternativa, puede ocurrir que despues de la ultima ejecucion del subalgoritmo 508ba, el valor de contexto descrito por la entrada de la tabla de troceo “ari_hash_m[i_min -1]” sea menor que el valor de contexto descrito por la variable de entrada c, y que el valor de contexto descrito por la entrada “ari_hash_m[i_min]” sea mayor que el valor de contexto descrito por la variable de entrada c. Como alternativa, sin embargo, puede ocurrir que el valor de contexto descrito por la entrada de la tabla de troceo “ari_hash_m[i_min]” sea identico al valor de contexto descrito por la variable de entrada c.
Por esta razon, se realiza la provision de un valor de retorno basado en decisiones 508c. Se establece la variable j para que tome el valor de la entrada de la tabla de troceo “ari_hash_m[i_min]”. A continuacion, se determina si el valor de contexto descrito por la variable de entrada c (y tambien por la variable s) es mayor que el valor de contexto descrito por la entrada “ari_hash_m[i_min]” (primer caso definido por la condicion “s>j”), o si el valor de contexto descrito por la variable de entrada c es menor que el valor de contexto descrito por la entrada de la tabla de troceo “ari_hash_m[i_min]” (segundo caso definido por la condicion “c<j>>8”), o si el valor de contexto descrito por la variable de entrada c es igual al valor de contexto descrito por la entrada “ari_hash_m[i_min]” (tercer caso).
5
10
15
20
25
30
35
40
45
50
55
60
En el primer caso, (s>j), se devuelve una entrada “arijookup_m[i_min +1]” de la tabla “arijookup_m[]” designada por el valor de mdice de tabla “i_min+1” como el valor de salida de la funcion “arith_get_pk()”. En el segundo caso (c<(j>>8)), se devuelve una entrada “arijookup_m[i_min]” de la tabla “arijookup_m[]” designada por el valor de mdice de tabla “ijriin” como valor de retorno de la funcion “arith_get_pk()”. En el tercer caso (es decir, si el valor de contexto descrito por la variable de entrada c es igual al valor de estado significativo descrito por la entrada de la tabla “ari_hash_m[i_min]”), se devuelve un valor de mdice de regla de mapeo descrito por los 8 bits mas bajos de la entrada de la tabla de troceo “ari_hash_m[i_min]” como el valor de retorno de la funcion “arith_get_pk()”.
Para resumir lo anterior, se realiza una busqueda de tablas particularmente sencilla en la etapa 508b, en el que la busqueda de tablas proporciona un valor de variable de una variable “i_min” sin distinguir si el valor de contexto descrito por la variable de entrada c es igual a un valor de estado significativo definido por una de las entradas de estado de la tabla “ari_hash_m[]” o no. En la etapa 508c, que se realiza posteriormente a la busqueda de tablas 508b, se evalua la relacion de magnitud entre el valor de contexto descrito por la variable de entrada c y un valor de estado significativo descrito por la entrada de tabla de troceo “ari_hash_m[i_min]” y se selecciona el valor de retorno de la funcion “arith_get_pk()” dependiendo de un resultado de dicha evaluacion, en el que el valor de la variable “i_min”, que se determina en la evaluacion de la tabla 508b, se considera para seleccionar un valor de mdice de regla de mapeo incluso si el valor de contexto descrito por la variable de entrada c es diferente del valor de estado significativo descrito por el elemento de tabla de troceo “ari_hash_m[i_min]” .
Debena observarse tambien que la comparacion en el algoritmo se debe hacer preferentemente (o como alternativa) entre el mdice de contexto (valor numerico de contexto) c y j=ari_hash_m[i]>>8. De hecho, cada entrada de la tabla “ari_hash_m[]” representa un mdice de contexto, codificado mas alla del 8° bit, y su correspondiente modelo de probabilidades codificado en los 8 primeros bits (bits menos significativos). En la presente implementacion, estamos interesados principalmente en saber si el presente contexto c es mayor que ari_hash_m[i]>>8, que es equivalente a detectar si s=c<<8 tambien es mayor que ari_hash_m[i].
Para resumir lo anterior, una vez calculado el estado del contexto (que se puede lograr, por ejemplo, empleando el algoritmo “arith_get_context(c,i,N)” de acuerdo con la Figura 5c o el algoritmo “arith_get_context(c,i)” de acuerdo con la Figura 5d, se decodifica plano de 2 bits mas significativos usando el algoritmo “arith_decode” (que se describira mas adelante) llamado con la tabla de frecuencias acumulativas apropiada correspondiente al modelo de probabilidades correspondiente al estado del contexto. La correspondencia se realiza por la funcion “arith_get_pk()”, por ejemplo, la funcion “arith_get_pk()” que se ha analizado con referencia a la Figura 5f.
11.6 Decodificacion aritmetica
11.6.1 Decodificacion aritmetica usando el algoritmo de acuerdo con la Figura 5g
A continuacion se analizara en detalle la funcionalidad de la funcion “arith_decode()” con referencia a la Figura 5g.
Se debe tener en cuenta que la funcion “arith_decode()” utiliza la funcion auxiliar “arith_first_symbol (void)”, que devuelve TRUE, si es el primer sfmbolo de la secuencia y FALSE de lo contrario. La funcion “arith_decode()” tambien utiliza la funcion auxiliar “arith_get_next_bit(void)”, que obtiene y proporciona el siguiente bit del flujo de bits.
Ademas, la funcion “arith_decode()” utiliza las variables globales “bajo”, “alto” y “valor”. Tambien, la funcion “arith_decode()” recibe, como una variable de entrada, la variable “cum_freq[]”, que apunta a una primera entrada o elemento (que tiene el mdice de elemento o mdice de entrada 0) de la tabla de frecuencias acumulativas o subtabla de frecuencias acumulativas seleccionada. Ademas, la funcion “arith_decode()” utiliza la variable de entrada “cfl”, que indica la longitud de la tabla de frecuencias acumulativas o subtabla de frecuencias acumulativas seleccionada designada por la variable “cum_freq[]”.
La funcion “arith_decode()” comprende, como una primera etapa, una inicializacion de variables 570a, que se ejecuta si la funcion auxiliar “arith_first_symbol()” indica que se esta decodificando el primer sfmbolo de una secuencia de sfmbolos. La inicializacion de valor 550a inicializa la variable “valor” dependiendo de una pluralidad de, por ejemplo, 16 bits, que se obtienen a partir del flujo de bits usando la funcion auxiliar “arith_get_next_bit”, de manera que la variable “valor” toma el valor representado por dichos bits. Ademas, la variable “bajo” se inicializa para tomar el valor de 0, y la variable “alto” se inicializa tomando el valor de 65535.
En una segunda etapa 570b, se establece a un valor la variable “rango”, valor que es superior en 1 a la diferencia entre los valores de las variables “alto” y “bajo”. La variable “cum” se establece a un valor que representa una posicion relativa del valor de la variable “valor” entre el valor de la variable “bajo” y el valor de la variable “alto”. En consecuencia, la variable “cum” toma, por ejemplo, un valor de entre 0 y 216 dependiendo del valor de la variable “valor”.
El puntero p se inicializa en un valor menor en 1 que la direccion de inicio de la tabla de frecuencias acumulativas
5
10
15
20
25
30
35
40
45
50
55
60
seleccionada.
El algoritmo “arith_decode()” comprende tambien una busqueda iterativa de tablas de frecuencias acumulativas 570c. La busqueda iterativa de tablas de frecuencias acumulativas se repite hasta que la variable cfl sea menor o igual a 1. En la busqueda iterativa de tablas de frecuencias acumulativas 570c, la variable puntero q se establece a un valor que es igual a la suma del valor actual de la variable puntero p y la mitad del valor de la variable “cfl”. Si el valor de la entrada *q de la tabla de frecuencias acumulativas seleccionada, entrada que se direcciona por la variable puntero q, es mayor que el valor de la variable “cum”, la variable puntero p se establece al valor de la variable puntero q, y la variable “cfl” se incrementa. Por ultimo, la variable “cfl” se desplaza un bit a la derecha, dividiendo asf, efectivamente, el valor de la variable “cfl” por 2 y omitiendo la porcion del modulo.
En consecuencia, la busqueda iterativa de tablas de frecuencias acumulativas 570c compara efectivamente el valor de la variable “cum” con una pluralidad de entradas de la tabla de frecuencias acumulativas seleccionada para identificar un intervalo dentro de la tabla de frecuencias acumulativas seleccionada, que esta delimitado por las entradas de la tabla de frecuencias acumulativas, de manera que el valor cum radica dentro del intervalo identificado. En consecuencia, las entradas de la tabla de frecuencias acumulativas seleccionadas definen intervalos, en el que un valor sfmbolo respectivo esta asociado a cada uno de los intervalos de la tabla de frecuencias acumulativas seleccionada. Ademas, los anchos de los intervalos entre dos valores adyacentes de la tabla de frecuencias acumulativas definen las probabilidades de los sfmbolos asociados con dichos intervalos, de manera que la tabla de frecuencias acumulativas seleccionada en su totalidad define una distribucion de probabilidades de los sfmbolos diferentes (o valores de sfmbolo). Mas adelante se analizaran los detalles con respecto a las tablas de frecuencias acumulativas con referencia a la Figura 23.
Haciendo referencia, una vez mas, a la Figura 5g, se deriva el valor de sfmbolo del valor de la variable puntero p, en el que el valor del sfmbolo se deriva como se muestra en el numero de referencia 570d. Por consiguiente, se evalua la diferencia entre el valor de la variable puntero p y la direccion de inicio “cum_freq” para obtener el valor del sfmbolo, que esta representado por la variable “sfmbolo”.
El algoritmo “arith_decode” comprende tambien una adaptacion 570e de las variables “alto” y “bajo”. Si el valor del sfmbolo representado por la variable “sfmbolo” es diferente de 0, la variable “alto” se actualiza, como se muestra en el numero de referencia 570e. Tambien, el valor de la variable “bajo” se actualiza, como se muestra en el numero de referencia 570e. La variable “alto” se establece a un valor que esta determinado por el valor de la variable “bajo”, la variable “rango” y la entrada que tiene el mdice “symbol -1” de la tabla de frecuencias acumulativas seleccionada. La variable “bajo” se incrementa, en el que la magnitud del aumento esta determinada por la variable “rango” y la entrada de la tabla de frecuencias acumulativas seleccionada que tiene el mdice “sfmbolo”. En consecuencia, la diferencia entre los valores de las variables “bajo” y “alto” se ajusta dependiendo de la diferencia numerica entre dos entradas adyacentes de la tabla de frecuencias acumulativas seleccionada.
En consecuencia, si se detecta un valor de sfmbolo con baja probabilidad, se reduce el intervalo entre los valores de las variables “bajo” y “alto” a un ancho estrecho. Por el contrario, si el valor de sfmbolo detectado comprende una probabilidad relativamente grande, el ancho del intervalo entre los valores de las variables “bajo” y “alto” se establece a un valor comparativamente grande. Una vez mas, el ancho del intervalo entre los valores de la variable “bajo” y “alto” depende del sfmbolo detectado y de las correspondientes entradas de la tabla de frecuencias acumulativas.
El algoritmo “arith_decode()” comprende tambien una renormalizacion de intervalos 570f, en la cual el intervalo determinado en la etapa 570e se desplaza y cambia de escala de manera iterativa hasta alcanzar la condicion de “interrupcion”. En la renormalizacion del intervalo 570f, se realiza una operacion selectiva de desplazamiento descendente 570fa. Si la variable “alto” es menor que 32768, no se hace nada y la renormalizacion de intervalos continua con una operacion aumento de tamano del intervalo 570fb. Sin embargo, si la variable “alto” no es menor que 32768 y la variable “bajo” es superior o igual a 32768, las variables “valores”, “bajo” y “alto” se reducen en 32768, de manera que un intervalo definido por las variables “bajo” y “alto” se desplaza en direccion descendente y de manera que el valor de la variable “valor” tambien se desplaza hacia abajo. Sin embargo, si se halla que el valor de la variable “alto” no es menor que 32768, y que la variable “bajo” no es superior o igual a 32768, y que la variable “bajo” es mayor o igual a 16384 y que la variable “alto” es menor que 49152, las variables “valor”, “bajo” y “alto” se reducen en 16384, de esa manera desplazando hacia abajo el intervalo entre los valores de las variables “alto” y “bajo” y tambien el valor de la variable “valor”. Sin embargo, si no se cumple ninguna de las condiciones anteriores, se aborta la renormalizacion del intervalo.
Sin embargo, si se cumple alguna de las condiciones anteriormente mencionadas, que se evaluan en la etapa 570fa, se ejecuta la operacion de aumento de intervalo 570fb. En la operacion de aumento de intervalo 570fb, se duplica el valor de la variable “bajo”. Ademas, el valor de la variable “alto” se duplica y el resultado de la duplicacion se incrementa en 1. Tambien, se duplica el valor de la variable “valor” (desplazada un bit a la izquierda) y se utiliza un bit del flujo de bits, que se obtiene por la funcion auxiliar “arith_get_next_bit” como el bit menos significativo. En
5
10
15
20
25
30
35
40
45
50
55
60
consecuencia, el tamano del intervalo entre los valores de las variables “bajo” y “alto” es aproximadamente el doble y la precision de la variable “valor” se incrementa utilizando un nuevo bit del flujo de bits. Como se ha mencionado anteriormente, las etapas 570fa y 570fb se repiten hasta alcanzar la condicion de “interrupcion”, es decir, hasta que el intervalo entre los valores de las variables “bajo” y “alto” sea suficientemente grande.
Con respecto a la funcionalidad del algoritmo “arith_decode()”, se debe tener en cuenta que el intervalo entre los valores de las variables “bajo” y “alto” se reduce en la etapa 570e dependiendo de dos entradas adyacentes de la tabla de frecuencias acumulativas a las que hace referencia la variable “cum_freq”. Si un intervalo entre dos valores adyacentes de la tabla de frecuencias acumulativas seleccionada es pequeno, es decir, si los valores adyacentes estan comparativamente cerca, el intervalo entre los valores de las variables “bajo” y “alto”, que se obtiene en la etapa 570e, ha de ser comparativamente pequeno. Por el contrario, si dos entradas adyacentes de la tabla de frecuencias acumulativas estan mas separadas, el intervalo entre los valores de las variables “bajo” y “alto”, que se obtiene en la etapa 570e, es comparativamente mayor.
En consecuencia, si el intervalo entre los valores de las variables “bajo” y “alto”, que se obtiene en la etapa 570e, es comparativamente pequeno, un gran numero de etapas de renormalizacion de intervalo se ejecutara para cambiar de escala el intervalo a un tamano “suficiente” (de manera que no se cumple ninguna de las condiciones de la evaluacion de condiciones 570fa). En consecuencia, se utilizara un numero comparativamente grande de bits del flujo de bits para incrementar la precision de la variable “valor”. Si, por el contrario, el tamano del intervalo obtenido en la etapa 570e es comparativamente grande, solo se requiere un numero mas pequeno de repeticiones de los pasos de normalizacion de intervalos 570fa y 570fb para renormalizar el intervalo entre los valores de las variables “bajo” y “alto” a un tamano “suficiente”. En consecuencia, solo se utiliza un numero comparativamente pequeno de bits a partir del flujo de bits para aumentar la precision de la variable “valor” y para preparar la decodificacion de un sfmbolo siguiente.
Para resumir lo anterior, si se decodifica un sfmbolo que comprende una probabilidad comparativamente alta, y al cual esta asociado un gran intervalo de gran tamano por las entradas de la tabla de frecuencias acumulativas seleccionada, solo se lee un numero comparativamente pequeno de bits a partir del flujo de bits para permitir la decodificacion de un sfmbolo posterior. Por el contrario, si se decodifica un sfmbolo que comprende una probabilidad comparativamente pequena y al cual esta asociado un pequeno intervalo por las entradas de la tabla de frecuencias acumulativas seleccionada, se tomara un numero comparativamente grande de bits a partir del flujo de bits para preparar una decodificacion del siguiente sfmbolo.
En consecuencia, las entradas de las tablas de frecuencias acumulativas reflejan las probabilidades de los diferentes sfmbolos y tambien reflejan el numero de bits necesarios para decodificar una secuencia de sfmbolos. La variacion de la tabla de frecuencias acumulativas dependiendo de un contexto, es decir, dependiendo de sfmbolos previamente decodificados (o valores espectrales), por ejemplo, seleccionando diferentes tablas de frecuencias acumulativas dependiendo del contexto, se pueden aprovechar las dependencias estocasticas entre los diferentes sfmbolos, que permite una codificacion particular eficaz en tasa de bits de los sfmbolos siguientes (o adyacentes).
Para resumir lo anterior, la funcion “arith_decode()”, que se ha descrito con referencia a la Figura 5g, se llama con la tabla de frecuencias acumulativas “arith_cf_m[pki][]”, correspondiente al mdice “pki” devuelto por la funcion “arith_get_pk()” para determinar el valor de plano de bits mas significativo m (que se puede establecer en el valor del sfmbolo representado por la variable de retorno “sfmbolo”).
Para resumir lo anterior, el decodificador aritmetico es una implementacion de numeros enteros que utiliza el metodo de generacion de etiquetas con cambio de escala. Para mas detalles, se hace referencia al texto “Introduction to Data Compression” de K. Sayood, Tercera Edicion, 2006, Elsevier Inc.
El codigo de programa informatico de acuerdo con la Figura 5g describe el algoritmo utilizado de acuerdo con una realizacion de la invencion.
11.6.2 Decodificacion aritmetica que utiliza el algoritmo de acuerdo con la Figuras 5h y 5i
Las Figura 5h y 5i muestran una representacion de pseudo codigo de programa de otra realizacion del algoritmo “arith_decode()”, que se puede utilizar como alternativa del algoritmo “arith_decode” descrito con referencia a la Figura 5g.
Se debe tener en cuenta que ambos algoritmos de acuerdo con la Figura 5g y las Figuras 5h y 5i se pueden utilizar en el algoritmo “values_decode()” de acuerdo con la Figura 3.
Para resumir, se decodifica el valor m empleando la funcion “arith_decode()” llamada con la tabla de frecuencias acumulativas “arith_cf_m[pki][]” en la que “pki” corresponde al mdice devuelto por la funcion “arith_get_pk()”. El codificador aritmetico (o decodificador) es una implementacion de numeros enteros que utiliza el metodo de generacion de etiquetas con cambio de escala. Para mas detalles, se hace referencia al texto “Introduction to Data
5
10
15
20
25
30
35
40
45
50
55
60
Compression” de K. Sayood, Tercera Edicion, 2006, Elsevier Inc.. El codigo de programa informatico de acuerdo con la Figura 5h y 5i describe el algoritmo utilizado.
11.7 Mecanismo de escape
A continuacion se describe brevemente el mecanismo de escape que se utiliza en el algoritmo de decodificacion “values_decode()” de acuerdo con la Figura 3.
Cuando el valor decodificado m (que se presenta como valor de retorno de la funcion “arith_decode()”) es el s^bolo de escape “ARITH_ESCAPE”, las variables “lev” y “esc_nb” se incrementan en 1, y se decodifica otro valor m. En este caso, se llama una vez mas la funcion “arith_get_pk()” con el valor “c+ esc_nb<<17 como argumento de entrada, donde la variable “esc_nb” describe el numero de sfmbolos de escape previamente decodificados por la misma 2-tupla y delimitado a 7.
Para resumir, en caso de identificarse un sfmbolo de escape, se supone que el valor del plano de bits mas significativo m comprende una ponderacion numerica incrementada. Ademas, se repite la decodificacion numerica actual, en la que se utiliza un valor numerico de contexto actual modificado “c+ esc_nb<<17” como una variable de entrada a la funcion “arith_get_pk()”. En consecuencia, tfpicamente se obtiene un valor de mdice de regla de mapeo “pki” diferente en diferentes iteraciones del subalgoritmo 312ba.
11.8 Mecanismo de parada aritmetica
A continuacion se describira el mecanismo de parada aritmetica. El mecanismo de parada aritmetica permite la reduccion del numero de bits necesarios en caso de que la porcion de frecuencia mas elevada se cuantifique por completo a 0 en un codificador de audio.
En una realizacion, se puede implementar un mecanismo de parada aritmetica de la siguiente manera: una vez que el valor m no es el sfmbolo de escape, “ARITH_ESCAPE”, el decodificador verifica si el m sucesivo forma un sfmbolo “ARITH_ESCAPE”. Si la condicion “esc_nb >0&&m==0” es verdadera, se detecta el sfmbolo “ARITH_STOP” y el proceso de decodificacion finaliza. En ese caso, el decodificador salta directamente a la funcion “arith_finish()” que se describira a continuacion. La condicion significa que el resto de la trama esta compuesto por 0 valores.
11.9 Decodificacion de planos de bits menos significativos
A continuacion se describira la decodificacion de uno o mas planos de bits menos significativos. La decodificacion del plano de bits menos significativos, se realiza, por ejemplo, en la etapa 312d mostrada en la Figura 3. Como alternativa, sin embargo, se pueden utilizar los algoritmos como se muestran en las Figuras 5j y 5n.
11.9.1 Decodificacion de planos de bits menos significativos de acuerdo con la Figura 5j
Tomando ahora como referencia la Figura 5j, se puede apreciar que los valores de las variables a y b se derivan a partir del valor m. Por ejemplo, la representacion numerica del valor m se desplaza 2 bits a la derecha para obtener la representacion numerica de la variable b. Ademas, se obtiene el valor de la variable a restando una version desplazada en bits del valor de la variable b, desplazada en bits 2 bits a la izquierda, a partir del valor de la variable m.
A continuacion se repite una decodificacion aritmetica de los valores de planos de bit menos significativos, en la que el numero de repeticiones esta determinado por el valor de la variable “lev”. Se obtiene un valor de plano de bits menos significativos r empleando la funcion “arith_decode”, en la que se utiliza una tabla de frecuencias acumulativas adaptada a la decodificacion de planos de bit menos significativos (tabla de frecuencias acumulativas “arith_cf_r”). Un bit menos significativo (que tiene una ponderacion numerica de 1) de la variable r describe un plano de bits menos significativos del valor espectral representado por la variable a, y un bit que tiene una ponderacion numerica de 2 de la variable r describe un bit menos significativo del valor espectral representado por la variable b. En consecuencia, la variable a se actualiza desplazando la variable a 1 bit a la izquierda y sumando el bit que tiene la ponderacion numerica de 1 de la variable r como el bit menos significativo. De modo similar, la variable b se actualiza desplazando la variable b un bit a la izquierda y sumando el bit que tiene la ponderacion numerica de 2 de la variable r.
En consecuencia, los dos bits transportadores de informacion mas significativos de las variables a,b estan determinados por el valor de plano de bits mas significativos m, y el uno o mas bits menos significativos (si los hubiera) de los valores a y b se determinan por los valores r de uno o mas planos de bits menos significativos.
Para resumir lo anterior, si no se alcanza el sfmbolo “ARITH_STOP”, se decodifica el resto de los planos de bits, si existiera alguno, para la 2-tupla presente. El resto de los planos de bits se decodifican desde el nivel mas
5
10
15
20
25
30
35
40
45
50
55
60
significativo al menos significativo mediante la llamada de la funcion “arith_decode()” lev numero de veces con la tabla de frecuencias acumulativas “arith_cf_r[]”. Los planos de bits decodificados 4 permiten el perfeccionamiento del valor m anteriormente decodificado de acuerdo con el algoritmo, un pseudo codigo de programa del cual se muestra en la Figura 5j.
11.9.2 Decodificacion de la banda de bits menos significativos de acuerdo con la Figura 5n
Como alternativa, sin embargo, tambien se puede utilizar el algoritmo cuya representacion de pseudo codigo de programa se muestra en la Figura 5n para la decodificacion de planos de bits menos significativos. En ese caso, si no se alcanza el sfmbolo “ARITH_STOP”, se decodifica el resto de los planos de bits, si los hubiera, para la 2-tupla presente. El resto de los planos de bits se decodifican desde el nivel mas significativo al menos significativo mediante la llamada de “lev” veces “arith_decode()” con la tabla de frecuencias acumulativas “arith_cf_r()”. Los planos de bits decodificados r permiten el perfeccionamiento del valor previamente decodificado m de acuerdo con el algoritmo mostrado en la Figura 5n.
11.10 Actualizacion del contexto
11.10.1 Actualizacion del contexto de acuerdo con las Figuras 5k, 51 y 5m
A continuacion se describiran las operaciones utilizadas para completar la decodificacion de la tupla de valores espectrales, haciendo referencia a la Figuras 5k y 5i. Ademas, se describira una operacion que se utiliza para completar una decodificacion de un conjunto de tuplas de valores espectrales asociados con una porcion actual (por ejemplo, una trama actual) de un contenido de audio.
Tomando ahora como referencia la Figura 5k, se puede apreciar que la entrada que tiene el mdice de entrada 2*i de la matriz “x_ac_dec[]” se establece para que sea igual a a, y que la entrada que tiene el mdice de entrada “2*i+1” de la matriz “x_ac_dec[]” se establece para que sea igual a b despues de la decodificacion de los bits menos significativos 312d. En otras palabras, en el punto posterior a la decodificacion de bits menos significativos 312d, se decodifica por completo el valor sin signos de la 2-tupla (a,b). Se guarda en el elemento (por ejemplo la matriz “x_ac_dec[]”) que contiene los coeficientes espectrales de acuerdo con el algoritmo mostrado en la Figura 5k.
A continuacion, el contexto “q” tambien se actualiza con respecto a la siguiente 2-tupla. Se debe tener en cuenta que esta actualizacion del contexto tambien debe realizarse para la ultima 2-tupla. Esta actualizacion del contexto se realiza por la funcion “arith_update_context()”, una representacion de pseudo codigo de programa de la cual se muestra en la Figura 5i.
Tomando ahora como referencia la Figura 5i, se puede apreciar que la funcion “arith_update_context(i,a,b)” recibe, como variables de entrada, coeficientes espectrales cuantificados sin signos decodificados (o valores espectrales) a, b de la 2-tupla. Ademas, la funcion “arith_update_context” tambien recibe, como una variable de entrada, un mdice i (por ejemplo, un mdice de frecuencia) del coeficiente espectral cuantificado a decodificar. En otras palabras, la variable de entrada i puede ser, por ejemplo, un mdice de la tupla de valores espectrales, los valores absolutos de la cual estan definidos por las variables de entrada a, b. Como se puede apreciar, la entrada “q[1][i]” de la matriz “q[][]” se puede establecer a un valor que es igual a a+b+1. Ademas, el valor de la entrada “q[1][i]” de la matriz “q[][]” se puede limitar a un valor hexadecimal de “0xF”. Por consiguiente, se obtiene la entrada “q[1][i]” de la matriz “q[][]” calculando una suma de valores absolutos de la tupla actualmente decodificada {a,b} de valores espectrales que tienen el mdice de frecuencia i y sumando 1 al resultado de dicha suma.
Cabe senalar en este punto que la entrada “q[1][i]” de la matriz “q[][]” puede considerarse como un valor de subregion de contexto, puesto que describe una subregion del contexto que se utiliza para una decodificacion posterior de valores espectrales adicionales (o tuplas de valores espectrales).
Cabe senalar en este punto que la suma de los valores absolutos a y b de los dos valores espectrales actualmente decodificados (versiones con signo de los cuales estan almacenados en las entradas “x_ac_dec[2*i]” y “x_ac_dec[2*i+1]” de la matriz “x_ac_dec[]”), se pueden considerar como el calculo de una norma (por ejemplo una norma L1) de los valores espectrales decodificados.
Se ha encontrado que valores de subregion de contexto (es decir, entradas de la matriz “q[][]”), que describen una norma de un vector formado por una pluralidad de valores espectrales previamente decodificados son particularmente importantes y eficientes en memoria. Se ha encontrado que ese tipo de norma, que se calcula basandose en una pluralidad de valores espectrales previamente decodificados, comprende informacion significativa de contexto en una forma compacta. Se ha encontrado que el signo de los valores espectrales tfpicamente no es particularmente relevante para la eleccion del contexto. Tambien se ha encontrado que la formacion de una norma a traves de una pluralidad de valores espectrales previamente decodificados tfpicamente mantiene la informacion mas importante, incluso aunque se descarten algunos detalles. Ademas, se ha encontrado que una limitacion del valor
5
10
15
20
25
30
35
40
45
50
55
60
numerico de contexto actual a un valor maximo tipicamente no da como resultado una perdida grave de informacion. Por el contrario, se ha encontrado que es mas eficaz utilizar el mismo estado del contexto para valores espectrales significativos que son mayores que un valor umbral predeterminado. Por consiguiente, la limitacion de los valores de subregion de contexto trae consigo una mejora de la eficacia de memoria. Ademas, se ha encontrado que la limitacion de los valores de subregion de contexto a un cierto valor maximo permite una actualizacion particularmente simple y computacionalmente eficaz del valor numerico de contexto actual, que se ha descrito, por ejemplo, con referencia a las Figuras 5c y 5d. Al limitar los valores de subregion de contexto a un valor comparativamente menor (por ejemplo a un valor de 15), se puede representar de manera eficaz un estado del contexto que se basa en una pluralidad de valores de subregion de contexto, que se ha analizado tomando como referencia las Figuras 5c y 5d.
Ademas, se ha encontrado que una limitacion de los valores de subregion de contexto a valores de entre 1 y 15, trae consigo un compromiso particularmente bueno precision y eficacia de memoria, puesto que 4 bits son suficientes para almacenar un valor de subregion de contexto de este tipo.
Sin embargo, se debe tener en cuenta que, en algunas realizaciones adicionales, un valor de subregion de contexto se puede basar solo en un unico valor espectral decodificado. En ese caso, se puede omitir opcionalmente la formacion de una norma.
La siguiente 2-tupla de la trama se decodifica una vez completada la funcion “arith_update_context” mediante el incremento de i en 1 y repitiendo el mismo proceso anteriormente descrito, a partir de la funcion “ a rith_g et_co ntext()”.
Cuando se decodifican lg/2 2-tuplas dentro de la trama, o cuando tiene lugar el sfmbolo de parada de acuerdo con “ARITH_ESCAPE”, el proceso de decodificacion de la amplitud espectral finaliza y comienza la decodificacion de los signos.
Los detalles con respecto a la decodificacion de los signos se han analizado con referencia a la Figura 3, en el que la decodificacion de los signos esta indicada por el numero de referencia 314.
Una vez decodificados todos los coeficientes espectrales cuantificados sin signo, se agrega el signo correspondiente. Para cada valor cuantificado no nulo de “x_ac_dec” se lee un bit. Si el valor del bit lefdo es igual a 0, el valor cuantificado es positivo, no se hace nada y el valor con signo es igual al valor sin signo previamente decodificado. De lo contrario (es decir, si el valor del bit lefdo es igual a 1), el coeficiente decodificado (o valor espectral) es negativo y se toma el complemento de dos del valor sin signo. Los bits de signo se leen desde las frecuencias mas bajas a las mas altas. Para detalles adicionales, se hace referencia a las Figuras 3 y a las explicaciones con respecto a la decodificacion de signos 314.
La decodificacion se finaliza mediante la llamada de la funcion “arith_finish()”. Se establece el resto de los coeficientes espectrales a 0. Se actualizan de modo correspondiente los respectivos estados del contexto.
Para detalles adicionales, se hace referencia a Figura 5m, que muestra una representacion de pseudo codigo de programa de la funcion “arith_finish()”. Como se puede apreciar, la funcion “arith_finish()” recibe una variable de entrada lg que describe los coeficientes espectrales cuantificados decodificados. Preferentemente, la variable de entrada lg de la funcion “arith_finish” describe un numero de coeficientes espectrales decodificados realmente, dejando coeficientes espectrales sin considerar, a los cuales se ha asignado un valor de 0 en respuesta a la deteccion de un sfmbolo “ARITH_STOP”. Una variable de entrada N de la funcion “arith_finish” describe una longitud de ventana de una ventana actual (es decir, una ventana asociada con la porcion actual del contenido de audio). Tfpicamente, un numero de valores espectrales asociado con una ventana de longitud N es igual a N/2 y un numero de 2-tuplas de valores espectrales asociados con una ventana de longitud de ventana N es igual a N/4.
La funcion “arith_finish” tambien recibe, como un valor de entrada, un vector “x_ac_dec” de valores espectrales decodificados o al menos una referencia a un vector de este tipo de coeficientes espectrales decodificados.
La funcion “arith_finish” esta configurada para establecer las entradas de la matriz (o vector) “x_ac_dec”, para las cuales no se han decodificado valores espectrales debido a la presencia de una condicion de parada aritmetica, en 0. Ademas, la funcion “arith_finish” establece valores de subregion de contexto “q[1][i]”, que estan asociados a valores espectrales para los que no se ha decodificado ningun valor debido a la presencia de una condicion de parada aritmetica, a un valor predeterminado de 1. El valor predeterminado de 1 corresponde a una tupla de los valores espectrales donde en la que ambos valores espectrales son iguales a 0.
En consecuencia, la funcion “arith_finish()” permite actualizar toda la matriz (o vector) “x_ac_dec[]” de valores espectrales y tambien toda la matriz de valores de subregion de contexto “q[1][i]”, incluso en presencia de una condicion de parada aritmetica.
5
10
15
20
25
30
35
40
45
50
55
60
11.10.2 Actualizacion del contexto de acuerdo con las Figuras 5o y 5p
A continuacion se describira otra realizacion de la actualizacion del contexto con referencia a las Figuras 5o y 5p. En el punto en que el valor sin signo de la 2-tupla (a,b) ya esta completamente decodificado, el contexto q se actualiza a continuacion para la siguiente 2-tupla. La actualizacion tambien se realiza si la 2-tupla presente es la ultima 2-tupla. Ambas actualizaciones se realizan por la funcion “arith_update_context()”, una representacion de pseudo codigo de programa de la cual se muestra en la Figura 5o.
A continuacion se decodifica la siguiente 2-tupla de la trama mediante el incremento de i en 1 y la llamada de la funcion arith_decode(). Si las lg/2 2-tuplas ya se han decodificado con la trama, o si aparece el sfmbolo de parada “ARITH_STOP”, se llama la funcion “arith_finish()”. El contexto se guarda y almacena en la matriz (o vector) “qs” para la trama siguiente. Se muestra un pseudo codigo de programa de la funcion “arith_save_context()” en la Figura 5p.
Una vez decodificada la totalidad de los coeficientes espectrales cuantificados sin signo, se agrega el signo. Para cada valor no cuantificado de “qdec”, se lee un bit. Si el valor del bit lefdo es igual a 0, el valor cuantificado es positivo, no se hace nada y el valor con signo es igual al valor sin signo previamente decodificado. De lo contrario, el coeficiente decodificado es negativo y se toma el complemento de dos del valor sin signo. Los bits con signo se leen desde las frecuencias bajas a las altas.
11.11 Resumen del proceso de decodificacion
A continuacion se resume brevemente el proceso de decodificacion. Para detalles adicionales, se hace referencia al analisis anterior y tambien a las Figuras 3, 4, 5a, 5c, 5e, 5g, 5j, 5k, 5l, y 5m. Los coeficientes espectrales cuantificados “x_ac_dec[]” se decodifican sin ruido empezando a partir del coeficiente de la menor frecuencia y progresando hasta el coeficiente de la frecuencia mas alta. Se decodifican por grupos de dos coeficientes sucesivos a,b reunidos en lo que se denomina una 2-tupla (a,b).
Los coeficientes decodificados “x_ac_dec[]” para el dominio de la frecuencia (es decir, para un modo en el dominio de la frecuencia) se almacenan a continuacion en la matriz “x_ac_quant[g][win][sfb][bin]”. El orden de transmision de las palabras de codigo de codificacion sin ruido es de manera que cuando se decodifican en el orden recibido y se almacenan en la matriz, “bin” es el mdice que se incrementa mas rapidamente y “g” es el mdice que se incrementa con mayor lentitud. Dentro de una palabra de codigo, el orden de decodificacion es a, a continuacion b. Los coeficientes decodificados “x_ac_dec[]” para la “TCX” (es decir, para una decodificacion de audio utilizando excitacion codificada por transformadas) se almacenan (por ejemplo, directamente) en la matriz “x_tcx_invquant[win][bin]” y el orden de la transmision de palabras de codigo de codificacion sin ruido es de manera que cuando se decodifican en el orden recibido y se almacenan en la matriz, “bin” es el mdice que se incrementa mas rapidamente y “win” es el mdice que se incrementa con mayor lentitud. Dentro de una palabra de codigo, el orden de decodificacion es a, a continuacion b.
En primer lugar, la bandera “arith_reset_flag” determina si el contexto debe reiniciarse. Si la bandera es verdadera, esto se considera en la funcion “arith_map_context”.
El proceso de decodificacion comienza con una fase de inicializacion en la cual el vector de elementos de contexto “q” se actualiza copiando y mapeando los elementos de contexto de la trama anterior almacenada en “q[1][]” en “q[0][]”. Los elementos de contexto dentro de “q” se almacenan en 4 bits por 2-tupla. Para detalles adicionales, se hace referencia al pseudo codigo de programa de la Figura 5a.
El decodificador sin ruido emite 2-tuplas de coeficientes espectrales cuantificados sin signo. En primer lugar, se calcula el estado c del contexto basandose en los coeficientes espectrales previamente decodificados que rodean la 2-tupla a decodificar. Por lo tanto, el estado se actualiza en incrementos utilizando el estado del contexto de la ultima 2-tupla decodificada teniendo en cuenta solo dos nuevas 2-tuplas. El estado se decodifica en 17 bits y se devuelve por la funcion “arith_get_context”. Una representacion de pseudo codigo de programa de la funcion establecida “arith_get_context” se muestra en la Figura 5c.
El estado del contexto c determina la tabla de frecuencias acumulativas usada para decodificar el plano de 2 bits mas significativos m. Se realiza el mapeo de c al correspondiente mdice de tabla de frecuencias acumulativas “pki” mediante la funcion “arith_get_pk()”. Una representacion de pseudo codigo de programa de la funcion “arith_get_pk()” se muestra en la Figura 5e.
El valor m se decodifica utilizando la funcion “arith_decode()” llamada con la tabla de frecuencias acumulativas, “arith_cf_m[pki][]”, donde “pki” corresponde al mdice devuelto por “arith_get_pk()”. El codificador aritmetico (y decodificador) es una implementacion de numeros enteros que utiliza un metodo de generacion de etiquetas con cambio de escala. El pseudo codigo de programa de acuerdo con la Figura 5g describe el algoritmo utilizado.
5
10
15
20
25
30
35
40
45
50
55
60
Cuando el valor decodificado m es el s^bolo de escape “ARITH_ESCAPE”, las variables “lev” y “esc_nb” se incrementan en 1 y se decodifica otro valor m. En este caso, la funcion “get_pk()” se llama una vez mas con el valor “c+ esc_nb<<17” como argumento de entrada, donde “esc_nb” es el numero de s^bolos de escape previamente decodificados para la misma 2-tupla y delimitado a 7.
Una vez que el valor m ya no es el sfmbolo de escape “ARITH_ESCAPE”, el decodificador verifica si el m sucesivo forma un sfmbolo “ARITH_STOP”. Si la condicion “(esc_nb>0&&m==0)” es verdadera, se detecta el sfmbolo “ARITH_STOP” y el proceso de decodificacion finaliza. El decodificador salta directamente a la decodificacion de signos que se describe mas adelante. La condicion significa que el resto de la trama esta compuesta por valores 0.
Si no aparece el sfmbolo “ARITH_STOP”, a continuacion se decodifica el resto de los planos de bits, si hubiera alguno, a la 2-tupla presente. El resto de los planos de bits se decodifican desde el nivel mas significativo al menos significativo, llamando “arith_decode()” lev numero de veces con la tabla de frecuencias acumulativas “arith_cf_r[]”. Los planos de bits decodificados r permiten el perfeccionamiento del valor m anteriormente decodificado de acuerdo con el algoritmo cuyo pseudo codigo de programa se muestra en la Figura 5j. En este punto, el valor sin signo de la 2-tupla (a,b) esta completamente decodificado. Se guarda en el elemento que contiene los coeficientes espectrales de acuerdo con el algoritmo, una representacion de pseudo codigo de programa de la cual se muestra en la Figura 5k.
El contexto “q” tambien se actualiza para la siguiente 2-tupla. Se debe tener en cuenta que esta actualizacion del contexto tambien tiene que realizarse para la ultima 2-tupla. Esta actualizacion del contexto se realiza mediante la funcion “arith_update_context()”, una representacion de pseudo codigo de programa de la cual se muestra en la Figura 5i.
A continuacion se decodifica la siguiente 2-tupla de la trama incrementando i en 1 y repitiendo el mismo proceso como se ha descrito anteriormente a partir de la funcion “arith_get_context()”. Cuando se decodifican lg/2 2-tuplas dentro de la trama, o cuando aparece el sfmbolo de parada “ARITH_STOP”, el proceso de decodificacion de la amplitud espectral finaliza y comienza la decodificacion de los signos.
La decodificacion termina mediante la llamada de la funcion “arith_finish()”. El resto de los coeficientes espectrales se establecen a 0. Se actualizan correspondientemente los respectivos estados del contexto. Se muestra una representacion de pseudo codigo de programa de la funcion “arith_finish” en la Figura 5m.
Una vez decodificados todos los coeficientes espectrales cuantificados sin signo, se agrega el signo correspondiente. Para cada valor cuantificado no nulo de “x_ac_dec”, se lee un bit. Si el valor del bit lefdo es igual a 0, el valor cuantificado es positivo, no se hace nada y el valor con signo es igual al valor sin signo previamente decodificado. De lo contrario, el coeficiente decodificado es negativo y se toma el complemento de dos a partir del valor sin signo. Los bits con signo se leen desde las frecuencias bajas a las altas.
11.12 Leyendas
La Figura 5q muestra una leyenda de las definiciones que estan relacionadas con los algoritmos de acuerdo con las Figuras 5a, 5c, 5e, 5f, 5g, 5j, 5k, 5i y 5m.
La Figura 5r muestra una leyenda de las definiciones que estan relacionadas con los algoritmos de acuerdo con las Figuras 5b, 5d, 5f, 5h, 5i, 5n, 5o y 5p.
12. Tablas de mapeo
En una realizacion de acuerdo con la invencion, se utilizan tablas “ari_lookup_m”, “ari_hash_m”, y “ari_cf_m” particularmente ventajosas para la ejecucion de la funcion “arith_get_pk()” de acuerdo con la Figura 5e o la Figura 5f, y para la ejecucion de la funcion “arith_decode()” que se analizo con referencia a la Figuras 5g, 5h y 5i. Sin embargo, se debe tener en cuenta que se pueden utilizar tablas diferentes en algunas realizaciones de acuerdo con la invencion.
12.1 Tabla “ari_hash_m[600]” de acuerdo con la Figura 22
En la tabla de la Figura 22 se muestra un contenido de una implementacion particularmente ventajosa de la tabla “ari_hash_m”, que se utiliza por la funcion “arith_get_pk”, una primera realizacion de la cual se describio con referencia a la Figura 5e, y una segunda realizacion de la cual se describio con referencia a la Figura 5f. Se debe tener en cuenta que la tabla de la Figura 22 enumera las 600 entradas de la tabla (o matriz) “ari_hash_m[600]”. Tambien debe observarse que la representacion de tabla de la Figura 22 muestra los elementos en el orden de los indices de elementos, de manera que el primer valor “0x000000100UL” corresponde a una entrada de la tabla
5
10
15
20
25
30
35
40
45
50
55
60
“ari_hash_m[0]” que tiene un mdice de elemento (o mdice de tabla) 0, y de manera que el ultimo valor “0x7fffflTff4fUL” corresponde a una entrada de la tabla “ari_hash_m[599]” que tiene el mdice de elemento o mdice de tabla 599. Debena observarse tambien que “0x” indica que las entradas de tabla de la tabla “ari_hash_m[]” estan representadas en formato hexadecimal. Ademas, cabe senalar en este punto que el sufijo “UL” indica que las entradas de tabla de la tabla “ari_hash_m[]”estan representadas en forma de valores enteros “largos” sin signo (que tienen una precision de 32 bits).
Adicionalmente, se debe tener en cuenta que las entradas de tabla de la tabla “ari_hash_m[]” de acuerdo con la Figura 22 estan dispuestas en un orden numerico para permitir la ejecucion de la busqueda de tablas 506b, 508b, 510b de la funcion “arith_get_pk()”.
Tambien se debe apreciar que los 24 bits mas significativos de las entradas de tabla de la tabla “ari_hash_m” representan ciertos valores de estado significativos, mientras que los 8 bits menos significativos representan valores de mdice de regla de mapeo “pki”. Por consiguiente, las entradas de la tabla “ari_hash_m[]” describen un mapeo de “coincidencia directa” de un valor de contexto con un valor de mdice de regla de mapeo “pki”.
Sin embargo, los 24 bits mas altos de las entradas de la tabla “ari_hash_m[]” representan, al mismo tiempo, los lfmites de intervalo de los intervalos de valores numericos de contexto a los cuales esta asociado el mismo valor de mdice de regla de mapeo. Ya se han analizado anteriormente los detalles con respecto a este concepto.
12.2 Tabla “ari_lookup_m” de acuerdo con la Figura 21
En la tabla de la Figura 21 se muestra un contenido de una realizacion particularmente ventajosa de la tabla
“ari_lookup_m”. Cabe senalar en este punto que la tabla de la Figura 21 enumera las entradas de la tabla
“ari_lookup_m”. Las entradas se hacen referencia por un mdice de entrada de tipo numero entero unidimensional (tambien denominado “mdice de elemento” o “mdice de matriz” o “mdice de tabla”) al que se designa, por ejemplo, “i_max” o “i_min”. Se debe tener en cuenta que la tabla “ari_lookup_m”, que comprende un total de 600 entradas, es muy adecuada para usar por la funcion “arith_get_pk” de acuerdo con la Figura 5e o la Figura 5f. Tambien debe
observarse que la tabla “ari_lookup_m” de acuerdo con la Figura 21 esta adaptada para cooperar con la tabla
“ari_hash_m” de acuerdo con la Figura 22.
Se debe tener en cuenta que las entradas de la tabla “ari_lookup_m[600]” estan enumeradas en orden ascendente del mdice de tabla “i” (por ejemplo “i_min” o “i_max”) entre 0 y 599. El termino “0x” indica que las entradas de tabla estan descritas en formato hexadecimal. En consecuencia, la primera entrada de la tabla “0x02” corresponde a la entrada de la tabla “ari_lookup_m[0]” que tiene el mdice de tabla 0 y la ultima entrada de la tabla “0x5E” corresponde a la entrada de la tabla “ari_lookup_m[599]” que tiene el mdice de tabla 599.
Tambien debe observarse que las entradas de la tabla “ari_lookup_m[]” estan asociadas con intervalos definidos por entradas adyacentes de la tabla “arith_hash_m[]”. Por consiguiente, las entradas de la tabla “ari_lookup_m” describen valores de mdice de regla de mapeo asociados con intervalos de valores numericos de contexto, en el que los intervalos estan definidos por las entradas de la tabla “arith_hash_m”.
12.3. Tabla “ari_cf_m[96][17]” de acuerdo con la Figura 23
La Figura 23 muestra un conjunto de 96 tablas de frecuencias acumulativas (o subtablas) “ari_cf_m[pki][17]”, una de las cuales se selecciona por un codificador de audio 100, 700 o un decodificador de audio 200, 800, por ejemplo, para la ejecucion de la funcion “arith_decode()”, es decir, para la decodificacion del valor de plano de bits mas significativos. La tabla seleccionada de las 96 tablas de frecuencias acumulativas (o subtablas) mostradas en la Figura 23 toma la funcion de la tabla “cum_freq[]” en la ejecucion de la funcion “arith_decode()”.
Como se puede apreciar en la Figura 23, cada subbloque representa una tabla de frecuencias acumulativas con 17 entradas. Por ejemplo, un primer subbloque 2310 representa las 17 entradas de una tabla de frecuencias acumulativas correspondiente a “pki=0”. Un segundo subbloque 2312 representa las 17 entradas de una tabla de frecuencias acumulativas correspondiente a “pki=1”. Por ultimo, un 96° subbloque 2396 representa las 17 entradas de una tabla de frecuencias acumulativas correspondiente a “pki=95”. Por consiguiente, la Figura 23 representa, por lo tanto, 96 tablas de frecuencias acumulativas (o subtablas) diferentes correspondientes a “pki=0” a “pki=95”, en el que cada una de las 96 tablas de frecuencias acumulativas esta representada por un subbloque (indicado entre llaves) y en el que cada una de dichas tablas de frecuencias acumulativas comprende 17 entradas.
Dentro de un subbloque (por ejemplo un subbloque 2310 o 2312, o un subbloque 2396), un primer valor describe una primera entrada de una tabla de frecuencias acumulativas (que tiene un mdice de matriz o mdice de tabla de 0), y un ultimo valor describe una ultima entrada de una tabla de frecuencias acumulativas (que tiene un mdice de matriz o mdice de tabla de 16).
5
10
15
20
25
30
35
40
45
50
55
60
En consecuencia, cada subbloque 2310, 2312, 2396 de la representacion de la tabla de la Figura 23 representa las entradas de una tabla de frecuencias acumulativas para utilizarse por la funcion “arith_decode” de acuerdo con la Figura 5g, o de acuerdo con las Figuras 5h y 5i. La variable de entrada “cum_freq[]” de la funcion “arith_decode” describe cual de las 96 tablas de frecuencias acumulativas (representada por subbloques individuales de 17 entradas de la tabla “arith_cf_m”) se debe utilizar para la decodificacion de los coeficientes espectrales actuales.
12.4 Tabla “ari_cf_r[]” de acuerdo con la Figura 24
La Figura 24 muestra el contenido de la tabla “ari_cf_r[]”.
Las cuatro entradas de dicha tabla se muestran en la Figura 24. Sin embargo, se debe tener en cuenta que la tabla “ari_cf_r” eventualmente puede ser diferente en otras realizaciones.
13. Evaluacion del rendimiento y ventajas
Las realizaciones de acuerdo con la invencion usan funciones actualizadas (o algoritmos) y un conjunto de tablas actualizadas, como se ha analizado anteriormente, para obtener una compensacion mejorada entre complejidad computacional, requisitos de memoria y eficacia de codificacion.
Hablando en general, las realizaciones de acuerdo con la invencion crean una codificacion espectral sin ruido espectral mejorada. Las realizaciones de acuerdo con la presente invencion describen una mejora de la codificacion espectral sin ruido en USAC (codificacion unificada del habla y audio).
Las realizaciones de acuerdo con la invencion crean una propuesta actualizada para la CE sobre codificacion espectral sin ruido mejorada de coeficientes espectrales, basandose en los esquemas presentados en los documentos introducidos en MPEG m16912 y m17002. Ambas propuestas se evaluaron, se eliminaron los inconvenientes potenciales y se combinaron los puntos fuertes.
Como en m16912 y m17002, la propuesta resultante se basa en el esquema de codificacion aritmetica basado en el contexto original como en el borrador de trabajo 5 de USAC (el proyecto de norma sobre codificacion unificada del habla y audio), aunque puede reducir significativamente los requisitos de memoria (memoria de acceso aleatorio (RAM) y memoria de solo lectura (ROM) sin aumentar la complejidad computacional, manteniendo al mismo tiempo la eficacia de codificacion. Ademas, se ha comprobado que es posible la transcodificacion sin perdidas de flujos de bits de acuerdo con el borrador de trabajo 3 del proyecto de Norma USAC y de acuerdo con el borrador de trabajo 5 del proyecto de Norma USAC. Las realizaciones de acuerdo con la invencion tienen por objeto reemplazar el esquema de codificacion espectral sin ruido empleado en el borrador de trabajo 5 del proyecto de Norma USAC.
El esquema de codificacion aritmetica descrito en este punto se basa en el esquema del modelo de referencia 0 (RM0) o del borrador de trabajo 5 (WD) del Proyecto de Norma USAC. Los coeficientes espectrales en la frecuencia o el tiempo modelan un contexto. Este contexto se utiliza para la seleccion de tablas de frecuencias acumulativas para el codificador aritmetico. En comparacion con el borrador de trabajo 5 (WD), el modelado del contexto se mejora adicionalmente y las tablas que contienen probabilidades de sfmbolos se vuelven a entrenar. El numero de diferentes modelos de probabilidades se incremento de 32 a 96.
Las realizaciones de acuerdo con la invencion reducen los tamanos de las tablas (demanda de ROM de datos) a 1518 palabras de 32 bits o 6072 bytes de longitud (WD 5: 16, 894,5 palabras o 67.578 bytes). La demanda de rAm estatica se reduce de 666 palabras (2.664 bytes) a 72 palabras (288 bytes) por canal de codificador de nucleo. Al mismo tiempo, se conserva por completo la eficacia de codificacion e incluso puede alcanzar una ganancia de aproximadamente 1,29 a 1,95% en comparacion con la tasa de datos total en los 9 puntos operativos. Todos los flujos de bits del borrador de trabajo 3 y del borrador de trabajo 5 se pueden transcodificar sin perdidas y sin afectar las limitaciones de reserva de bits.
A continuacion se proporcionara un breve analisis de los conceptos de codificacion de acuerdo con el borrador de trabajo 5 del Proyecto de Norma USAC para facilitar la comprension de las ventajas del concepto descrito en el presente documento. A continuacion se describiran algunas realizaciones preferidas de acuerdo con la invencion.
En el Borrador de trabajo de USAC 5, se utiliza un esquema de codificacion aritmetica basada en el contexto para la codificacion sin ruido de coeficientes espectrales cuantificados. Como contexto se utilizan los coeficientes espectrales decodificados, que son anteriores en frecuencia y en tiempo. En el borrador de trabajo 5, se utiliza un numero maximo de 16 coeficientes espectrales como contexto, 12 de los cuales son anteriores en el tiempo. Ademas, los coeficientes espectrales utilizados para el contexto y para decodificar, estan agrupados como 4-tuplas (es decir, 4 coeficientes espectrales cercanos en frecuencia; vease la Figura 14a). El contexto se reduce y mapea sobre una tabla de frecuencias acumulativas, que a continuacion se utiliza para decodificar la siguiente 4-tupla de coeficientes espectrales.
5
10
15
20
25
30
35
40
45
50
55
60
Para el esquema de codificacion sin ruido del borrador de trabajo 5 completo, se requiere una demanda de memoria (memoria de solo lectura (ROM) de 16894,5 palabras (67578 bytes). Ademas, se requieren 666 palabras (2664 bytes) de RAM estatica por canal de codificador de nucleo para almacenar los estados para la siguiente trama. La representacion de tablas de la Figura 14b describe las tablas utilizadas en el esquema de codificacion aritmetica USAC WD4.
Cabe senalar en este punto que, en lo que respecta a la codificacion sin ruido, los borradores de trabajo 4 y 5 del proyecto de norma USAC son iguales. Ambos utilizan el mismo codificador sin ruido.
Se estima que una demanda total de memoria del decodificador USAC WD5 completo es de 37000 palabras (148000 bytes) para la ROM de datos sin codigo de programa y de 10000 a 17000 palabras para la RAM estatica. Se puede apreciar claramente que las tablas del codificador sin ruido consumen aproximadamente el 45 % de la demanda total de ROM de datos. La tabla individual mas grande ya consume 4096 palabras (16384 bytes).
Se ha encontrado que tanto el tamano de la combinacion de todas las tablas como las tablas individuales grandes superan los tamanos de cache tfpicos como se proporciona por un procesador de punto fijo utilizado en los dispositivos portatiles del consumidor, que se encuentran en un rango tfpico de 8 a 32 Kbyte (por ejemplo ARM9e, TI C64XX, etc.). Esto significa que es probable que no se pueda almacenar el conjunto de tablas en la RAM de datos rapida, que permite un rapido acceso aleatorio a los datos. Esto hace que todo el proceso de decodificacion se ralentice.
Ademas, se ha encontrado que la tecnologfa de codificacion de audio actual satisfactoria tal como HE-AAC ha demostrado que puede implementarse en la mayona de los dispositivos moviles. HE-AAC utiliza un esquema de codificacion por entropfa de Huffman con un tamano de tabla de 995 palabras. Para detalles adicionales, se hace referencia a ISO/IEC JTC1/SC29/WG11 N2005, MPEG98, febrero de 1998, San Jose, “Revised Report on Complexity of MPEG-2 AAC2".
En la 90a Reunion de MPEG, en los documentos introducidos en MPEG m16912 y m17002, se presentaron dos propuestas que teman por objeto reducir la demanda de memoria y mejorar la eficacia de codificacion del esquema de codificacion sin ruido. Analizando ambas propuestas, se pudo llegar a las siguientes conclusiones.
• Es posible una significativa reduccion de la demanda de memoria mediante la reduccion de la dimension de las palabras codigo. Como se muestra en el documento introducido en MPEG m17002, al reducir la dimension de 4- tuplas a 1-tupla, se podna reducir la demanda de memoria de 16984,5 a 900 palabras sin comprometer la eficacia de codificacion; y
• Se podna eliminar la redundancia adicional aplicando un libro de codigos de distribucion de probabilidades no uniforme para la codificacion LSB, en lugar de utilizar la distribucion uniforme de probabilidades.
En el curso de estas evaluaciones, se identifico que pasando de un esquema de codificacion de 4-tuplas a 1-tupla se obtuvo un impacto significativo sobre la complejidad computacional: una reduccion de la dimension de codificacion aumenta en el mismo factor el numero de sfmbolos a codificar. Esto significa que la reduccion de 4-tuplas a 1-tupla que las operaciones necesitan para determinar el contexto, acceder a las tablas de troceo y decodificar el sfmbolo tiene que realizarse cuatro veces mas que antes. Junto con un algoritmo mas sofisticado para la determinacion del contexto, esto condujo a un incremento de la complejidad computacional en un factor de 2,5 o x.xxPCU.
A continuacion se describira brevemente el nuevo esquema propuesto de acuerdo con las realizaciones de la presente invencion.
Para superar el problema del impacto de la memoria y la complejidad computacional, se propuso un esquema de codificacion sin ruido mejorado para reemplazar el esquema como en el borrador de trabajo 5 (WD5). El foco principal del desarrollo se puso en la reduccion de la demanda de memoria, manteniendo a la vez la eficacia de compresion y sin aumentar la complejidad computacional. Mas espedficamente, el objetivo consistio en alcanzar un buen (o incluso el mejor) compromiso en el espacio de complejidad multidimensional del rendimiento de compresion, complejidad y demanda de memoria.
La nueva propuesta de esquema de codificacion toma la principal caractenstica del codificador sin ruido WD5, en concreto la adaptacion del contexto. El contexto se deriva utilizando coeficientes espectrales previamente decodificados, que provienen en WD5 tanto de la trama anterior como la actual (en el que se puede considerar que una trama es una porcion del contenido de audio). Sin embargo, ahora se codifican los coeficientes espectrales combinando dos coeficientes entre sf para formar una 2-tupla. Otra diferencia radica en el hecho de que los coeficientes espectrales ahora se dividen en tres partes: el signo, los bits muy significativos o los bits mas significativos (MSB) y los bits poco significativos o los bits menos significativos (LSB). El signo se codifica de manera independiente de la magnitud que tambien se divide en dos partes, los bits mas significativos (o bits mas significativos) y el resto de los bits (o bits menos significativos), si existieran. Las 2-tuplas para las cuales la
5
10
15
20
25
30
35
40
45
50
55
60
magnitud de los dos elementos es menor o igual a 3 se codifican directamente por la codificacion de MSB. De lo contrario, se transmite primero una palabra de codigo de escape para senalar cualquier plano de bits adicional. En la version basica, la informacion faltante, los LSB y el signo, se codifican en ambos casos utilizando una distribucion uniforme de probabilidades. Por otro lado, se puede utilizar una distribucion de probabilidades diferente.
La reduccion del tamano de las tablas es posible aun, ya que:
• solo se necesita almacenar las probabilidades para 17 sfmbolos: {[0;+3], [0;+3]}+sfmbolo ESC;
• no hay necesidad de almacenar una tabla de agrupamientos (egroups, dgroups, dgvectors);
• se podna reducir el tamano de la tabla de troceo con un entrenamiento apropiado.
A continuacion se describiran algunos detalles con respecto a la codificacion por MSB. Como ya se ha mencionado, una de las principales diferencias entre WD5 del Proyecto de Norma USAC, una propuesta presentada en la 90a Reunion de MPEG y la presente propuesta es la dimension de los sfmbolos. En WD5 del Proyecto de Norma USAC, se consideraron 4-tuplas para la generacion del contexto y la codificacion sin ruido. En una propuesta presentada en la 90a Reunion de MPEG se utilizaron en su lugar 1-tupla para reducir los requisitos de ROM. En el curso del desarrollo, se encontro que 2-tuplas constitrnan el mejor compromiso para reducir los requisitos de ROM, sin aumentar la complejidad computacional. En lugar de considerar cuatro 4-tuplas para la innovacion del contexto, ahora se consideran cuatro 2-tuplas. Como se muestra en la Figura 15a, tres 2-tuplas provienen de la trama anterior (tambien denominado porcion anterior del contenido de audio) y uno proviene de la trama actual (tambien denominado porcion actual del contenido de audio).
La reduccion del tamano de las tablas se debe a tres factores principales. En primer lugar, solo se necesita almacenar las probabilidades correspondiente a 17 sfmbolos (es decir, {[0;+3], [0;+3]} + sfmbolo de ESC). Las tablas de agrupamientos (es decir, egroups, dgroups, y dgvectors) ya no son necesarias. Por ultimo, se redujo el tamano de la tabla de troceo realizando un entrenamiento apropiado.
Si bien se redujo la dimension de cuatro a dos, la complejidad se mantuvo en el mismo rango que el WD5 del Proyecto de Norma USAC. Se logro simplificando tanto la generacion del contexto como el acceso a las tablas de troceo.
Las diferentes simplificaciones y optimizaciones se realizaron de manera tal que no se afecto el rendimiento de codificacion, e incluso se mejoro levemente. Eso se obtuvo principalmente aumentando el numero de modelos de probabilidades de 32 a 96.
A continuacion se describiran algunos detalles con respecto a la codificacion por LSB. Los LSB se codifican con una distribucion de probabilidades uniforme en algunas realizaciones. En comparacion con WD5 del Proyecto de Norma USAC, ahora se consideran los LSB dentro de 2-tuplas en lugar de 4-tuplas.
En lo sucesivo se explican algunos detalles con respecto a la codificacion de signos. El signo se codifica sin utilizar el codificador de nucleo aritmetico por razones de reduccion de la complejidad. El signo se transmite en 1 bit solamente cuando la magnitud correspondiente no es nula. 0 significa un valor positivo y 1 significa un valor negativo.
A continuacion se explicaran algunos detalles con respecto a la demanda de memoria. El nuevo esquema propuesto muestra una demanda total de ROM de como mucho 1522,5 palabras nuevas (6090 bytes). Para detalles adicionales, se hace referencia a la tabla de la Figura 15b, que describe las tablas utilizadas en el esquema de codificacion propuesto. En comparacion con la demanda de ROM del esquema de codificacion sin ruido de WD 5 del Proyecto de Norma USAC, la demanda de ROM se reduce al menos 15462 palabras (61848 bytes). Ahora termina en el mismo orden de magnitud que el requisito de memoria necesario para el decodificador AAC Huffman de HE- AAC (995 palabras o 3980 bytes). Para detalles adicionales, se hace referencia a ISO/IEC JTC1/SC29/WG11 N2005, MPEG98, febrero de 1998, San Jose, “Revised Report on Complexity of MPEG-2 AAC2", y tambien a la Figura 16a. Esto reduce la demanda de ROM total del codificador sin ruido mas del 92 % y un decodificador USAC completo de aproximadamente 37000 palabras a aproximadamente 21500 palabras, o mas del 41 %. Para detalles adicionales, se hace referencia una vez mas a las Figuras 16a y 16b, en las que la Figura 16a muestra la demanda de ROM de un esquema de codificacion sin ruido propuesto y el de un esquema de codificacion sin ruido de acuerdo con WD4 del Proyecto de Norma USAC, y en las que la Figura 16b muestra una demanda total de ROM del decodificador USAC de acuerdo con el esquema propuesto y de acuerdo con WD4 del Proyecto de Norma USAC.
Mas adelante, tambien se reduce la cantidad de informacion necesaria para la derivacion del contexto en la trama siguiente (ROM estatica). En WD5 del Proyecto de Norma USAC, es necesario que se almacene el conjunto completo de coeficientes (un maximo de 1152 coeficientes) con una resolucion tipicamente de 16 bits adicionales a
5
10
15
20
25
30
35
40
45
50
55
60
un mdice de grupo por 4-tupla de 10 bits de resolucion, lo que suma hasta 666 palabras (2664 bytes) por canal de codificador de nucleo (decodificador USAC WD4 completo: aproximadamente de 10000 a 17000 palabras). El nuevo esquema reduce la informacion persistente a solo 2 bits por coeficiente espectral, lo que suma hasta 72 palabras (288 bytes) en total por canal de codificador de nucleo. La demanda de memoria estatica se puede reducir en 594 palabras (2376 bytes).
A continuacion se describiran algunos detalles con respecto al posible aumento de la eficacia de codificacion. Se comparo la eficacia de codificacion de las realizaciones de acuerdo con la nueva propuesta frente a los flujos de bits de calidad de referencia de acuerdo con el borrador de trabajo 3 (WD3) y WD5 del Proyecto de Norma USAC. La comparacion se realizo por medio de un transcodificador, basandose en un decodificador de software de referencia. Para detalles con respecto a dicha comparacion de la codificacion sin ruido de acuerdo con WD3 o WD5 del Proyecto de Norma USAC y el esquema de codificacion propuesto, se hace referencia a la Figura 17, que muestra una representacion esquematica de una disposicion de prueba para una comparacion de la codificacion sin ruido de WD3/5 con el esquema de codificacion propuesto.
Tambien, se comparo la demanda de memoria de las realizaciones de acuerdo con la invencion con realizaciones de acuerdo con el WD3 (o WD5) del Proyecto de Norma USAC.
La eficacia de codificacion no solo se mantiene, sino que se incrementa ligeramente. Para mas detalles, se hace referencia a la tabla de la Figura 18, que muestra una representacion de tabla de las tasas de bits promedio producidas por el codificador aritmetico WD3 (o un codificador de audio USAC utilizando un codificador aritmetico WD3) y un codificador de audio (por ejemplo el codificador de audio USAC) de acuerdo con una realizacion de la invencion.
Se pueden encontrar detalles sobre las tasas de bits promedio por modo de operacion en la tabla de la Figura 18.
Ademas, la Figura 19 muestra una representacion de tabla de los niveles de reserva de bits mmimo y maximo para el codificador aritmetico WD3 (o un codificador de audio que utiliza el codificador aritmetico WD3) y un codificador de audio de acuerdo con una realizacion de la presente invencion.
A continuacion se describiran algunos detalles con respecto a la complejidad computacional. La reduccion de la dimensionalidad de la codificacion aritmetica habitualmente lleva a un aumento de la complejidad computacional. De hecho, la reduccion de la dimension en un factor de dos hace que el codificador aritmetico llame dos veces las rutinas.
Sin embargo, se ha encontrado que este aumento de la complejidad puede limitarse por varias optimizaciones introducidas en el nuevo esquema de codificacion propuesto de acuerdo con las realizaciones de la presente invencion. La generacion de contexto se simplifico considerablemente en algunas realizaciones de acuerdo con la invencion. Para cada 2-tupla, el contexto se puede actualizar en incrementos desde el ultimo contexto generado. Las probabilidades se almacenan ahora en 14 bits en lugar de 16 bits, lo que evita las operaciones de 64 bits durante el proceso de decodificacion. Ademas, se optimizo considerablemente el mapeo de modelos de probabilidades en algunas realizaciones de acuerdo con la invencion. El peor de los casos se redujo drasticamente y se limita a 10 iteraciones en lugar de 95.
Como resultado, la complejidad computacional del esquema de codificacion sin ruido propuesto se mantuvo en el mismo rango que en WD 5. Se realizo un calculo de estimacion con “lapiz y papel” por diferentes versiones de la codificacion sin ruido y esto esta registrado en la tabla de la Figura 20. Esto muestra que el nuevo esquema de codificacion es solo aproximadamente el 13 % menos complejo que el codificador aritmetico WD5.
Para resumir lo anterior, se puede apreciar que las realizaciones de acuerdo con la presente invencion proporcionan un compromiso particularmente bueno entre complejidad computacional, demanda de memoria y eficacia de codificacion.
14. Sintaxis del flujo de bits
14.1 Cargas utiles del codificador espectral sin ruido
A continuacion se describiran algunos detalles con respecto a las cargas utiles del codificador espectral sin ruido. En algunas realizaciones, hay una pluralidad de modos de codificacion diferentes tales como, por ejemplo, un modo de codificacion denominado “en el dominio de prediccion lineal” y un modo de codificacion “en el dominio de la frecuencia”. En el modo de codificacion en el dominio de prediccion lineal se realiza una conformacion de ruido basandose en un analisis de prediccion lineal de la senal de audio y se codifica una senal de ruido conformada en el dominio de la frecuencia. En el modo de codificacion en el dominio de la frecuencia se realiza la conformacion de ruido basandose en un analisis psicoacustico y se codifica una version con ruido conformado del contenido de audio
5
10
15
20
25
30
35
40
45
50
55
60
en el dominio de la frecuencia.
Los coeficientes espectrales tanto de la senal codificada en el “dominio de prediccion lineal” como de la senal codificada en “el dominio de la frecuencia” se cuantifican y cambian de escala y a continuacion se codifican sin ruido por una codificacion aritmetica dependiente adaptativamente del contexto. Los coeficientes cuantificados se agrupan entre sf en 2-tuplas antes de transmitirse desde la frecuencia mas baja a la frecuencia mas alta. Cada 2-tupla se divide en un signo s, el plano de 2 bits mas significativos m y uno o mas planos de bits menos significativos restantes r (si los hubiera). El valor m se codifica de acuerdo con un contexto definido por los coeficientes espectrales cercanos. En otras palabras, m se codifica de acuerdo con la cercama de los coeficientes. El resto de los planos de bits menos significativos r se codifican por entropfa sin considerar el contexto. Por medio de m y r, se puede reconstruir la amplitud de estos coeficientes espectrales del lado del decodificador. En el caso de todos los sfmbolos no nulos, los signos s se codifican fuera del codificador aritmetico usando 1 bit. En otras palabras, los valores m y r forman los sfmbolos del codificador aritmetico. Por ultimo, los signos s, se codifican fuera del codificador aritmetico usando 1 bit por coeficiente cuantificado no nulo.
Se describe en este punto un procedimiento de codificacion aritmetica detallado.
14.2 Elementos de sintaxis
A continuacion se describira la sintaxis del flujo de bits de un flujo de bits que lleva la informacion espectral aritmeticamente codificada haciendo referencia a las Figuras 6a a 6j.
La Figura 6a muestra una representacion de la sintaxis del bloque de datos sin procesar denominado USAC (“usac_raw_data_block()”).
El bloque de datos sin procesar USAC comprende uno o mas elementos de canal unico (“single_channel_element()”) y/o uno o mas elementos de pares de canales (“channel_pair_element()”).
Tomando ahora como referencia la Figura 6b, se describe la sintaxis de un elemento de canal unico. El elemento de canal unico comprende un flujo de canales en el dominio de la prediccion lineal (“lpd_channel_stream ()”) o un flujo de canales en el dominio de la frecuencia (“fd_channel_stream ()”) dependiendo del modo de nucleo.
La Figura 6c muestra una representacion de la sintaxis de un elemento de par de canales. Un elemento de par de canales comprende informacion del modo del nucleo (“core_mode0”, “core_mode1”). Ademas, el elemento de par de canales puede comprender una informacion de configuracion “ics_info()”. Ademas, dependiendo de la informacion del modo del nucleo, el elemento de par de canales comprende un flujo de canales en el dominio de la prediccion lineal o un flujo de canales en el dominio de la frecuencia asociado con uno primero de los canales, y el elemento de par de canales comprende tambien un flujo de canales en el dominio de la prediccion lineal o un flujo de canales en el dominio de la frecuencia asociado con uno segundo de los canales.
La informacion de configuracion “ics_info()”, una representacion de la sintaxis de la cual se muestra en la Figura 6d, comprende una pluralidad de elementos diferentes de informacion de configuracion, que no son de particular relevancia para la presente invencion.
Un flujo de canales en el dominio de la frecuencia (“fd_channel_stream ()”), una representacion de la sintaxis del cual se muestra en la Figura 6e, comprende una informacion de ganancia (“global_gain”) y una informacion de configuracion (“ics_info ()”). Ademas, el flujo de canales en el dominio de la frecuencia comprende datos del factor de escala (“scale_factor_data ()”), que describe factores de escala utilizados para el cambio de escala de valores espectrales de diferentes bandas de factores de escala y que se aplican, por ejemplo, por el cambiador de escala 150 y el cambiador de escala 240. El flujo de canales en el dominio de la frecuencia comprende tambien datos espectrales aritmeticamente codificados (“ac_spectral_data ()”), que representan valores espectrales aritmeticamente codificados.
Los datos espectrales aritmeticamente codificados (“ac_spectral_data()”), una representacion de la sintaxis de los cuales se muestra en la Figura 6f, comprenden una bandera de reinicio aritmetico opcional (“arith_reset_flag”), que se utiliza para reiniciar selectivamente el contexto, como se ha descrito anteriormente. Ademas, los datos espectrales aritmeticamente codificados comprenden una pluralidad de bloques de datos aritmeticos (“arith_data”), que llevan los valores espectrales aritmeticamente codificados. La estructura de los bloques de datos espectrales aritmeticamente codificados depende del numero de bandas de frecuencia (representado por la variable “num_bands”) y tambien del estado de la bandera de reinicio aritmetico, como analizara a continuacion.
A continuacion se describira la estructura de los bloques de datos codificados aritmeticamente tomando como referencia la Figura 6g, que muestra una representacion de la sintaxis de dichos bloques de datos espectrales aritmeticamente codificados. La representacion de datos dentro del bloque de datos espectrales aritmeticamente
5
10
15
20
25
30
35
40
45
50
55
60
codificados depende del numero Ig de valores espectrales a codificar, del estado de la bandera de reinicio aritmetico y tambien del contexto, es decir, los valores espectrales previamente codificados.
El contexto para la codificacion del conjunto actual (por ejemplo, 2-tupla) de valores espectrales se determina de acuerdo con el algoritmo de determinacion del contexto mostrado con el numero de referencia 660. Los detalles con respecto al algoritmo de determinacion del contexto se han explicado anteriormente, tomando como referencia las Figuras 5a y 5b. El bloque de datos aritmeticamente codificados comprende lg/2 conjuntos de palabras de codigo, cada conjunto de palabras de codigo representa una pluralidad (por ejemplo, una 2-tupla) de valores espectrales. Un conjunto de palabras de codigo comprende una palabra de codigo aritmetica “acod_m[pki][m]” que representa un valor de plano de bits mas significativo m de la tupla de valores espectrales que usa entre 1 y 20 bits. Ademas, la serie de palabras de codigo comprende una o mas palabras de codigo “acod_r[r]” si la tupla de valores espectrales requiere mas planos de bits que el plano de bits mas significativos para una representacion correcta. La palabra de codigo “acod_r[r]” representa un plano de bits menos significativos que utiliza entre 1 y 14 bits.
Sin embargo, si es necesario uno o mas planos de bits menos significativos (ademas del plano de bits mas significativos) para una representacion apropiada de los valores espectrales, esto se senaliza utilizando una o mas palabras de codigo de escape aritmetico (“ARITH_ESCAPE”). Por consiguiente, se puede decir, en general, que para un valor espectral, se determina cuantos planos de bits se necesitan (el plano de bits mas significativos y, posiblemente, uno o mas planos de bits menos significativos adicionales). Si se necesita uno o mas plano de bits menos significativos, esto se senaliza por una o mas palabras de codigo de escape aritmetico “acod_m[pki][ARITH_ESCAPE]”, que se codifican de acuerdo con una tabla de frecuencias acumulativas seleccionada actualmente, un mdice de tablas de frecuencias acumulativas del cual se proporciona por la variable “pki”. Ademas, el contexto esta adaptado, como se puede apreciar en los numeros de referencia 664, 662, si una o mas palabras de codigo de escape aritmetico estan incluidas en el flujo de bits. Despues de la una o mas palabras de codigo de escape aritmetico, se incluye una palabra de codigo aritmetica “acod_m[pki][m]” en el flujo de bits, como se muestra en el numero de referencia 663, en el que “pki” designa el mdice modelo de probabilidades valido actualmente (teniendo en cuenta la adaptacion del contexto provocada por la inclusion de las palabras de codigo de escape aritmetico) y en el que m designa el valor del plano de bits mas significativos del valor espectral a codificar o decodificar (en el que m es diferente de la palabra de codigo “ARITH_ESCAPE”).
Como se ha analizado anteriormente, la presencia de cualquier plano de bits menos significativos da como resultado la presencia de una o mas palabras de codigo “acod_r[r]”, cada una de las cuales representa 1 bit de un plano de bits menos significativos de un primer valor espectral y cada una de las cuales tambien representa 1 bit de un plano de bits menos significativos de un segundo valor espectral. La una o mas palabras de codigo “acod_r[r]” se codifican de acuerdo con una correspondiente tabla de frecuencias acumulativas, que por ejemplo puede ser constante e independiente del contexto. Sin embargo, son posibles diferentes mecanismos para la seleccion de la tabla de frecuencias acumulativas para la decodificacion de una o mas palabras de codigo “acod_r[r]”.
Ademas, se debe tener en cuenta que el contexto se actualiza despues de la codificacion de cada tupla de valores espectrales, como se muestra con el numero de referencia 668, de manera que el contexto es tfpicamente diferente en el caso de la codificacion y decodificacion de dos tuplas de valores espectrales posteriores.
La Figura 6i muestra una leyenda de definiciones y elementos de ayuda que definen la sintaxis del bloque de datos aritmeticamente codificados.
Ademas, en la Figura 6h se muestra una sintaxis alternativa de los datos aritmeticos “arith_data()”, con una correspondiente leyenda de definiciones y elementos de ayuda mostrada en la Figura 6j.
Para resumir lo anterior, se ha descrito el formato de flujo de bits, que puede proporcionarse mediante el codificador de audio 100 y que puede evaluarse por el decodificador de audio 200. El flujo de bits de los valores espectrales aritmeticamente codificados se codifica de tal manera que se ajusta al algoritmo de decodificacion anteriormente analizado.
Ademas, debena observarse en general que la codificacion es la operacion inversa a la decodificacion, de manera que en general se puede suponer que el codificador realiza una busqueda de tablas utilizando las tablas anteriormente descritas, que es aproximadamente inverso a la busqueda de tablas realizada por el decodificador. En general, se puede afirmar que un experto en la materia que conoce el algoritmo de decodificacion y/o la sintaxis del flujo de bits deseada podra disenar facilmente un codificador aritmetico, que proporciona los datos definidos en la sintaxis del flujo de bits y necesarios para un decodificador aritmetico.
Ademas, se debe tener en cuenta que los mecanismos para determinar el valor numerico del contexto actual y para derivar un valor de mdice de regla de mapeo pueden ser identicos en un codificador de audio y un decodificador de audio, puesto que, tfpicamente, se desea que el decodificador de audio utilice el mismo contexto que el codificador de audio, de tal manera que la decodificacion se adapte a la codificacion.
5
10
15
20
25
30
35
40
45
50
55
60
15. Alternativas de implementacion
Aunque se han descrito algunos aspectos en el contexto de un aparato, es evidente que estos aspectos tambien representan una descripcion del metodo correspondiente, donde un bloque o dispositivo corresponde a una etapa del metodo o una caractenstica de una etapa del metodo. De manera analoga, los aspectos descritos en el contexto de una etapa de un metodo tambien representan una descripcion de un correspondiente bloque o elemento o caractenstica de un correspondiente aparato. Algunas o todas las etapas del metodo pueden ejecutarse (o utilizarse) un aparato de hardware, como por ejemplo un microprocesador, una computadora programable o un circuito electronico. En algunas realizaciones, uno o mas de las etapas mas importantes del metodo pueden ejecutarse por un aparato de este tipo.
La senal de audio codificada inventiva puede almacenarse en un medio de almacenamiento digital o puede transmitirse en un medio de transmision tal como un medio de transmision inalambrico o un medio de transmision cableado tal como la Internet.
Dependiendo de ciertos requisitos de implementacion, las realizaciones de la invencion se pueden implementar en hardware o en software. La implementacion se puede realizar empleando un medio de almacenamiento digital, por ejemplo un disco flexible, un DVD, un Blue-Ray, un CD, una ROM, una PROM, una EPROM, una EEPROM o una memoria FLASH, que tiene almacenadas en la misma senales control legibles electronicamente, que cooperan (o tienen capacidad para cooperar) con un sistema de computacion programable de tal manera que se realiza el metodo respectivo. Por lo tanto, el medio de almacenamiento digital puede ser legible por computadora.
Algunas realizaciones de acuerdo con la invencion comprenden un soporte de datos que comprende senales de control legibles electronicamente, con capacidad para cooperar con un sistema de computacion programable de tal manera que se realice uno de los metodos descritos en el presente documento.
En general, las realizaciones de la presente invencion pueden implementarse como un producto programa informatico con un codigo de programa, siendo el codigo de programa operativo para realizar uno de los metodos cuando el programa informatico se ejecuta en una computadora. El codigo de programa puede almacenarse, por ejemplo, en un soporte legible por una maquina.
Otras realizaciones comprenden el programa informatico para realizar uno de los metodos descritos en el presente documento, almacenado en un soporte legible por maquina.
En otras palabras, una realizacion del metodo inventivo es, por lo tanto, en un programa informatico que consta de un codigo de programa para realizar uno de los metodos descritos en el presente documento, cuando el programa informatico se ejecuta en una computadora.
Otra de las realizaciones del metodo inventivo es, por lo tanto, un soporte de datos (o medio de almacenamiento digital, o un medio legible por computadora) que comprende, grabado en el mismo, el programa informatico para realizar uno de los metodos descritos en el presente documento. El soporte de datos, medio de almacenamiento digital, o medio grabado son tfpicamente tangibles y no transitorios.
Otra de las realizaciones del metodo inventivo es, por lo tanto, un flujo de bits de datos o una secuencia de senales que representa el programa informatico para realizar uno de los metodos descritos en el presente documento. El flujo de datos o la secuencia de senales pueden estar configurados, por ejemplo, para transferirse a traves de una conexion de comunicacion de datos, por ejemplo mediante Internet.
Otra de las realizaciones comprende un medio de procesamiento, por ejemplo una computadora, un dispositivo logico programable, configurado o adaptado para realizar uno de los metodos descritos en el presente documento.
Otra de las realizaciones comprende una computadora en la que se ha instalado el programa informatico para realizar uno de los metodos descritos en el presente documento.
Otra de las realizaciones de acuerdo con la invencion comprende un aparato o un sistema configurado para transferir (por ejemplo, electronica u opticamente) un programa informatico para realizar uno de los metodos descritos en el presente documento a un receptor. El receptor puede ser, por ejemplo, una computadora, un dispositivo movil, un dispositivo de memoria o similar. El aparato o sistema puede comprender, por ejemplo, un servidor de archivos para transferir el programa informatico al receptor.
En algunas realizaciones, se puede utilizar un dispositivo logico programable (por ejemplo un campo de matrices de puertas programables) para realizar algunas o todas las funcionalidades de los metodos descritos en el presente documento. En algunas realizaciones, un campo de matrices de puertas programables puede cooperar con un
5
10
15
20
25
30
35
40
45
50
55
60
microprocesador para realizar uno de los metodos descritos en el presente documento. En general, los metodos se realizan preferentemente por cualquier aparato de hardware.
Las realizaciones anteriormente descritas son meramente ilustrativas de los principios de la presente invencion. Se entiende que las modificaciones y variaciones de las disposiciones y detalles descritos en el presente documento seran evidentes para los expertos en la materia. Por lo tanto, solo es intencion limitarse al alcance de las siguientes reivindicaciones de patente y no a los detalles espedficos presentados a modo de descripcion y explicacion de las realizaciones del presente documento.
16. Conclusiones
En conclusion, las realizaciones de acuerdo con la invencion comprenden uno o mas de los siguientes aspectos, en los que los aspectos pueden utilizarse individualmente o en combinacion.
a) mecanismo de troceo del estado del contexto
De acuerdo con un aspecto de la invencion, los estados en la tabla de troceo se consideran estados significativos y lfmites de grupos. Esto permite reducir significativamente el tamano de las tablas necesarias.
b) . Actualizacion del contexto en incrementos
De acuerdo con un aspecto, algunas realizaciones de acuerdo con la invencion comprenden una manera computacionalmente eficaz para actualizar el contexto. Algunas realizaciones usan una actualizacion del contexto en incrementos en la cual se deriva un valor numerico de contexto actual a partir de un valor numerico de contexto anterior.
c) . Derivacion del contexto
De acuerdo con un aspecto de la invencion, el uso de la suma de dos valores espectrales absolutos es la asociacion de un truncamiento. Es un tipo de cuantificacion por vectores de ganancia de los coeficientes espectrales (a diferencia de la cuantificacion por vectores de ganancia de forma convencional). Tiene por objeto a limitar el orden del contexto y a la vez transmitir la informacion mas significativa de las inmediaciones.
Algunas otras tecnologfas, que se aplican en las realizaciones de acuerdo con la invencion, se han descrito en las solicitudes de patente previamente publicadas PCT EP2101/065725, PCT EP2010/065726, y PCT EP 2010/065727. Ademas, en algunas realizaciones de acuerdo con la invencion, se utiliza un sfmbolo de parada. Adicionalmente, en algunas realizaciones, solo se tienen en cuenta los valores sin signo para el contexto.
Sin embargo, las solicitudes de patente internacional anteriormente mencionadas no publicadas previamente desvelan aspectos que aun estan en uso en algunas realizaciones de acuerdo con la invencion.
Por ejemplo, en algunas realizaciones de la invencion se utiliza una identificacion de una region cero. En consecuencia se establece una denominada “bandera de pequeno valor” (por ejemplo, el bit 16 del valor numerico de contexto actual c).
En algunas realizaciones, se puede utilizar el calculo de contexto dependiente de la region. Sin embargo, en otras realizaciones, se puede omitir el calculo de contexto dependiente de la region para mantener razonablemente bajos la complejidad y el tamano de las tablas.
Ademas, el troceo del contexto utilizando una funcion de troceo es un aspecto importante de la invencion. El troceo del contexto se puede basar en el concepto de dos tablas que se describe en las solicitudes de patente internacional no publicadas previamente, anteriormente mencionadas. Sin embargo, en algunas realizaciones se pueden utilizar adaptaciones espedficas del troceo del contexto para aumentar la eficacia computacional. De todas maneras, en algunas realizaciones adicionales de acuerdo con la invencion, se puede utilizar el troceo del contexto que se describe en las solicitudes de patente internacional no publicadas previamente, anteriormente mencionadas.
Ademas, se debe tener en cuenta que el troceo del contexto en incrementos es bastante sencillo y computacionalmente eficaz. Ademas, la independencia del contexto del signo de los valores que se utiliza en algunas realizaciones de la invencion, contribuye a simplificar el contexto, manteniendo de esta manera la demanda de memoria razonablemente baja.
En algunas realizaciones de la invencion, se utiliza una derivacion del contexto que utiliza la suma de dos valores espectrales y una limitacion del contexto. Estos dos aspectos se pueden combinar. Ambos tienen por objeto limitar el orden del contexto transportando la informacion mas significativa de las inmediaciones.
En algunas realizaciones se utiliza una bandera de pequeno valor que puede ser similar a la identificacion de un grupo de una pluralidad de valores cero.
En algunas realizaciones de acuerdo con la invencion, se utiliza un mecanismo de parada aritmetica. El concepto es similar al uso de un sfmbolo “final de bloque” en JPEG, que tiene una funcion comparable. Sin embargo, en algunas
5
10
15
20
25
30
35
40
45
50
55
60
realizaciones de la invencion, el s^bolo (“ARITH_STOP”) no esta expKcitamente incluido en el codificador por entrc^a. En su lugar, se utiliza una combinacion de sfmbolos ya existentes, lo que no podfa ocurrir anteriormente, es decir, “ESC+0”. En otras palabras, el decodificador de audio esta configurado para detectar una combinacion de sfmbolos existentes que normalmente no se utilizan para representar un valor numerico y para interpretar la aparicion de una combinacion de sfmbolos de este tipo ya existentes como condicion de parada aritmetica.
Una realizacion de acuerdo con la invencion utiliza un mecanismo de troceo de contexto por dos tablas.
Para resumir adicionalmente, algunas realizaciones de acuerdo con la invencion pueden comprender uno o mas de los siguientes cuatro aspectos fundamentales.
• contexto extendido para detectar regiones cero o regiones de pequena amplitud en las inmediaciones;
• troceo del contexto;
• generacion de estado del contexto: actualizacion en incrementos del estado del contexto; y
• derivacion del contexto: cuantificacion espedfica de los valores del contexto que incluye la suma de las amplitudes y limitacion.
Para concluir ademas, un aspecto de las realizaciones de acuerdo con la presente invencion radica en la actualizacion del contexto en incrementos. Las realizaciones de acuerdo con la invencion comprenden un concepto eficaz para la actualizacion del contexto, que evita los calculos extensos del borrador de trabajo (por ejemplo, del borrador de trabajo 5). Por el contrario, se utilizan sencillas operaciones de desplazamiento y operaciones de logica en algunas realizaciones. La simple actualizacion del contexto facilita de manera significativa el calculo del contexto.
En algunas realizaciones, el contexto es independiente del signo de los valores (por ejemplo, los valores espectrales decodificados). Esta independencia del contexto del signo de los valores trae consigo una complejidad reducida de la variable de contexto. Este concepto se basa en el hallazgo de que la omision del signo del contexto no causa una degradacion severa de la eficacia de codificacion.
De acuerdo con un aspecto de la invencion, el contexto se deriva utilizando la suma de dos valores espectrales. En consecuencia, la demanda de memoria para el almacenamiento del contexto se reduce significativamente. En consecuencia, en algunos casos se puede considerar ventajoso el uso de un valor de contexto, que representa la suma de dos valores espectrales.
Ademas, la limitacion del contexto trae consigo una mejora significativa en algunos casos. Ademas de la derivacion del contexto usando la suma de dos valores espectrales, las entradas de la matriz del contexto “q” se limitan a un valor maximo de “0xF” en algunas realizaciones, lo que a su vez da como resultado una limitacion de la demanda de memoria. Esta limitacion de los valores de la matriz del contexto “q” trae consigo algunas ventajas.
En algunas realizaciones se utiliza una denominada “bandera de pequeno valor”. Para obtener la variable de contexto c (que tambien se denomina como un valor numerico de contexto actual), se establece una bandera si los valores de algunas entradas “q[1][i-3]” a “q[1][i-1]” son muy pequenos. En consecuencia, el calculo del contexto se puede realizar con gran eficacia. Se puede obtener un valor de contexto especialmente significativo (por ejemplo el valor numerico del contexto actual).
En algunas realizaciones, se utiliza un mecanismo de parada aritmetica. El mecanismo “ARITH_STOP” permite una parada eficaz de la codificacion o decodificacion aritmetica si quedan solo valores cero. En consecuencia, la eficacia de codificacion se puede mejorar a costos moderados en terminos de complejidad.
De acuerdo con un aspecto de la invencion, se utiliza un mecanismo de troceo de dos tablas. El mapeo del contexto se realiza empleando un algoritmo de division de intervalos que evalua la tabla “ari_hash_m” en combinacion con una evaluacion posterior de busqueda de tablas de la tabla “ari_lookup_m”. Este algoritmo es mas eficaz que el algoritmo WD3.
A continuacion se analizaran algunos detalles adicionales.
Cabe senalar en este punto que la tablas “arith_hash_m[600]” y “arith_lookup_m[600]” son dos tablas distintas. La primera se utiliza para mapear un solo mdice de contexto (por ejemplo el valor numerico de contexto) a un mdice de modelo de probabilidades (por ejemplo, el valor de mdice de regla de mapeo) y la segunda se utiliza para mapear un grupo de contextos consecutivos, delimitados por los indices de contexto de “arith_hash_m[]”, en un solo modelo de probabilidades.
Tambien se debe apreciar que la tabla “arith_cf_msb[96][16]” se puede utilizar como alternativa a la tabla “ari_cf_m[96][17]”, incluso aunque las dimensiones sean ligeramente diferentes. “ari_cf_m[][]” y “ari_cf_msb[][]” se pueden referir a la misma tabla, ya que los 17os coeficientes de los modelos de probabilidades son siempre cero. En
ocasiones no se tiene en cuenta esto al contar el espacio requerido para almacenar las tablas.
Para resumir lo anterior, algunas realizaciones de acuerdo con la invencion proporcionan una nueva codificacion sin ruido propuesta (codificacion o decodificacion) que genera modificaciones en el borrador de trabajo de USAC MPEG 5 (por ejemplo, en el borrador de trabajo 5 de USAC MPEG). Dichas modificaciones se pueden ver en las figuras adjuntas y tambien en la descripcion relacionada.
Como comentario de cierre, se debe tener en cuenta que el prefijo “ari” y el prefijo “arith” en los nombres de las variables, matrices, funciones y asf sucesivamente se utilizan de manera intercambiable.
10

Claims (17)

  1. 5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    REIVINDICACIONES
    1. Un decodificador de audio (200; 800) para proporcionar una informacion de audio decodificada (212; 812) basandose en una informacion de audio codificada (210; 810), comprendiendo el decodificador de audio:
    un decodificador aritmetico (230; 820) para proporcionar una pluralidad de valores espectrales decodificados (232; 822) basandose en una representacion codificada aritmeticamente (222; 821) de los valores espectrales comprendida en la informacion de audio codificada (210; 810); y
    un convertidor del dominio de la frecuencia al dominio del tiempo (260; 830) para proporcionar una representacion de audio en el dominio del tiempo (262; 812) usando los valores espectrales decodificados (232; 822), para obtener la informacion de audio decodificada (212; 812);
    en el que el decodificador aritmetico (232; 820) esta configurado para seleccionar una regla de mapeo (297; cum_freq[]) que describe un mapeo de un valor de codigo (acod_m; valor) de la representacion codificada aritmeticamente (821) de valores espectrales sobre un codigo de sfmbolo (sfmbolo) que representa uno o mas de los valores espectrales decodificados, o al menos una porcion de uno o mas de los valores espectrales decodificados dependiendo de un estado del contexto (s) descrito por un valor numerico de contexto actual (c); en el que el decodificador aritmetico (230; 820) esta configurado para determinar el valor numerico de contexto actual (c) dependiendo de una pluralidad de valores espectrales previamente decodificados;
    en el que el decodificador aritmetico esta configurado para evaluar una tabla de troceo (ari_hash_m[]), las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores de estado no significativos entre los valores numericos de contexto, para seleccionar la regla de mapeo,
    en el que un valor de mdice de regla de mapeo esta individualmente asociado a un valor numerico de contexto que es un valor de estado significativo, y
    en el que un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto que radican dentro de uno de dichos intervalos delimitados por dichos lfmites de intervalo.
  2. 2. El decodificador de senales de audio de acuerdo con la reivindicacion 1, en el que el decodificador aritmetico esta configurado para comparar el valor numerico de contexto actual (c), o una version cambiada de escala (s) del valor numerico de contexto actual, con una pluralidad de entradas numericamente ordenadas (j) de la tabla de troceo (ari_hash_m[]), para obtener un valor de mdice de tabla de troceo (i_min) de una entrada de la tabla de troceo (ari_hash_m[i_min]), de manera que el valor numerico de contexto actual radique dentro de un intervalo definido por la entrada de la tabla de troceo (ari_hash_m[i_min]) designado por el valor de mdice de tabla de troceo obtenido (i_min) y una entrada adyacente de la tabla de troceo (ari_hash_m[i_min - 1], ari_hash_m[i_min + 1]) y
    en el que el decodificador aritmetico esta configurado para determinar si el valor numerico de contexto actual es igual a un valor definido por una entrada de la tabla de troceo designado por el valor de mdice de tabla de troceo obtenido (i_min), y para proporcionar selectivamente, dependiendo de un resultado de la determinacion, un valor de mdice de regla de mapeo individualmente asociado a un valor numerico de contexto actual definido por la entrada de la tabla de troceo designado por el valor de mdice de tabla de troceo obtenido, o un valor de mdice de regla de mapeo designado por el valor de mdice de tabla de troceo obtenido y asociado a diferentes valores numericos de contexto actual dentro de un intervalo delimitado, en un lado, por un valor de estado definido por la entrada de la tabla de troceo designado por el valor de mdice de tabla de troceo obtenido.
  3. 3. El decodificador de audio de acuerdo con la reivindicacion 1 o la reivindicacion 2, en el que el decodificador aritmetico esta configurado para determinar, usando la tabla de troceo, si el valor numerico de contexto actual es igual a un valor de estado lfmite del intervalo definido por una entrada de la tabla de troceo, o radica dentro de un intervalo definido por dos entradas de la tabla de troceo;
    en el que el decodificador aritmetico esta configurado para proporcionar un valor de mdice de regla de mapeo asociado con una entrada de la tabla de troceo, si se encuentra que el valor numerico de contexto actual es igual a un valor de estado lfmite del intervalo, y para proporcionar un valor de mdice de regla de mapeo asociado con un intervalo entre valores de estado definidos por dos entradas adyacentes de la tabla de troceo, si se encuentra que el valor numerico de contexto actual radica dentro de un intervalo entre valores de estado definidos por dos entradas adyacentes de la tabla de troceo; y
    en el que el decodificador aritmetico esta configurado para seleccionar una tabla de frecuencias acumulativas para el decodificador aritmetico dependiendo del valor de mdice de regla de mapeo.
  4. 4. El decodificador de audio de acuerdo con una de las reivindicaciones 1 a 3, en el que un valor de mdice de regla de mapeo asociado con una primera entrada dada de la tabla de troceo es diferente de un valor de mdice de regla de mapeo asociado con un primer intervalo de valores de contexto, un lfmite superior del cual esta definido por la primera entrada dada de la tabla de troceo, y tambien es diferente de un valor de mdice de regla de mapeo asociado con un segundo intervalo de valores de contexto, un lfmite inferior del cual esta definido por la primera entrada dada de la tabla de troceo, de manera que la primera entrada dada de las tablas de troceo define, mediante un solo valor, los lfmites de dos intervalos del valor numerico de contexto actual y un valor de estado significativo del valor
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    numerico de contexto actual.
  5. 5. El decodificador de audio de acuerdo con la reivindicacion 4, en el que el valor de mdice de regla de mapeo asociado con el primer intervalo de valores de contexto es igual al valor de mdice de regla de mapeo asociado con el segundo intervalo de valores de contexto, de manera que la primera entrada dada de la tabla de troceo define un estado significativo aislado dentro de un entorno bipartito de valores de estado no significativos.
  6. 6. El decodificador de audio de acuerdo con la reivindicacion 4 o la reivindicacion 5, en el que un valor de mdice de regla de mapeo asociado con una segunda entrada dada de la tabla de troceo es identico a un valor de mdice de regla de mapeo asociado con un tercer intervalo de valores de contexto, un lfmite del cual esta definido por la segunda entrada dada de la tabla de troceo, y diferente de un valor de mdice de regla de mapeo asociado con un cuarto intervalo de valores de contexto, un lfmite del cual esta definido por la segunda entrada dada de la tabla de troceo, de manera que la segunda entrada dada de la tabla de troceo define un lfmite entre dos intervalos del valor numerico de contexto actual sin definir un valor de estado significativo del valor numerico de contexto actual.
  7. 7. El decodificador de audio de acuerdo con una de las reivindicaciones 1 a 6, en el que el decodificador aritmetico esta configurado para evaluar una sola tabla de troceo, las entradas numericamente ordenadas de la cual definen tanto valores de estado significativos del valor numerico de contexto actual como lfmites de los intervalos del valor numerico de contexto actual, para obtener un valor de mdice de tabla de troceo (i_min) que designa un intervalo, de los intervalos definidos por las entradas de la tabla de troceo, en el cual radica el valor numerico de contexto actual, y para determinar posteriormente, utilizando la entrada de la tabla designada por el valor de mdice de tabla de troceo obtenido, si el valor numerico de contexto actual toma un valor de estado significativo o un valor de estado no significativo.
  8. 8. El decodificador de audio de acuerdo con una de las reivindicaciones 1 a 7, en el que el decodificador aritmetico esta configurado para evaluar selectivamente una tabla de mapeo (ari_lookup_m), que mapea los valores de mdice de intervalo (i_min) sobre valores de mdice de regla de mapeo (pki), si se encuentra que el valor numerico de contexto actual no toma un valor de estado significativo, para obtener un valor de mdice de regla de mapeo (pki) asociado con un intervalo de valores de estado no significativos dentro del cual radica el valor numerico de contexto actual.
  9. 9. El decodificador de audio de acuerdo con una de las reivindicaciones 1 a 8, en el que las entradas de la tabla de troceo estan numericamente ordenadas, en el que el decodificador aritmetico esta configurado para evaluar una secuencia de entradas de la tabla de troceo, para obtener un resultado de valor de mdice de tabla de troceo (i_min) de una entrada de la tabla de troceo, de manera que el valor numerico de contexto actual (c) radica dentro de un intervalo definido por la entrada de la tabla de troceo designado por el resultado obtenido de valor de mdice de tabla de troceo y una entrada adyacente de la tabla de troceo;
    en el que el decodificador aritmetico esta configurado para realizar un numero predeterminado de iteraciones para determinar iterativamente el resultado del valor de mdice de tabla de troceo (i_min);
    en el que cada iteracion comprende solo una unica comparacion entre un valor de estado representado por una entrada actual (ari_hash_m[i]) de la tabla de troceo y un valor de estado representado por el valor numerico de contexto actual, y una actualizacion selectiva de un valor de mdice actual de tabla de troceo (i) dependiendo de un resultado de dicha unica comparacion.
  10. 10. El decodificador de audio de acuerdo con la reivindicacion 9, en el que el decodificador aritmetico esta configurado para distinguir entre un valor numerico de contexto actual que comprende un valor de estado significativo y un valor numerico de contexto actual que comprende un valor de estado no significativo solo despues de la ejecucion del numero predeterminado de iteraciones.
  11. 11. El decodificador de audio de acuerdo con una de las reivindicaciones 1 a 10, en el que el decodificador aritmetico esta configurado para evaluar la tabla de troceo usando el algoritmo:
    for
    {
    }
    (k=0;k<kmax;k++)
    i=i_min+i_diff[k] ; j=ari_hash_m[i] ; if (s>j)
    {
    i_min=i+1;
    }
    en el que k es una variable de ejecucion;
    en el que kmax designa un numero predeterminado de iteraciones;
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    en el que i es una variable que describe un valor de mdice actual de tabla de troceo;
    en el que i_min es una variable inicializada para designar un valor de mdice de tabla de troceo de una primera entrada de la tabla de troceo y actualizarla selectivamente dependiendo de una comparacion entre s y j; en el que ari_hash_m designa la tabla de troceo;
    en el que ari_hash_m[i] designa una entrada de la tabla de troceo que tiene el valor de mdice de tabla de troceo i;
    en el que s designa una variable que representa el valor numerico de contexto actual o una version cambiada de escala del mismo; y
    en el que i_diff[k] designa un tamano de paso para la adaptacion del valor de mdice de tabla de troceo actual en una iteracion k-esima.
  12. 12. El decodificador de audio de acuerdo con la reivindicacion 11, en el que el decodificador aritmetico esta configurado ademas para obtener el valor de mdice de regla de mapeo como un valor de retorno de acuerdo con:
    j=ari_hash_m[i_min]; if (s>j)
    return (ari_lookup_m[i_min+1]; else if (c<(j>>8))
    return (ari_lookup_m[i-min]);
    else
    return (j&0xFF);
    en el que i_min se obtiene como resultado de la evaluacion de la tabla de troceo;
    en el que ari_lookup_m es una tabla que describe valores de mdice de regla de mapeo (pki) asociados con diferentes intervalos del valor numerico de contexto actual para valores no significativos del valor numerico de contexto actual;
    en el que ari_lookup_m[i_min + 1] designa una entrada de la tabla “arijookup_m” que tiene un mdice de entrada i_min + 1;
    en el que ari_lookup_m[i_ min] designa una entrada de la tabla “ari_lookup_m” que tiene un mdice de entrada i_min;
    en el que la condicion “s > j” define que un valor de estado descrito por la variable s es mayor que un valor de estado descrito por la entrada de la tabla ari_hash_m[i_min];
    en el que la condicion “c < (j >> 8)” define que un valor de estado descrito por la variable s es menor que un valor de estado descrito por la entrada de la tabla ari_hash_m[i_min]; y
    en el que “j&0xFF” describe un valor de mdice de regla de mapeo descrito por la entrada de la tabla ari_hash_m[i_min].
  13. 13. El decodificador de audio de acuerdo con una de las reivindicaciones 1 a 10, en el que el decodificador aritmetico esta configurado para evaluar la tabla de troceo usando el algoritmo:
    while ((i_max-i_min)>1) {
    i = i_min+((i_max-i_min)/2); j = ari_hash_m[i]; if (c<(j >>8))
    i_max = i; else if (c>(j>>8)) i_min=i;
    else
    return(j &0xFF);
    }
    return ari_lookup_m[i_max];
    en el que c es una variable que describe el valor numerico de contexto actual;
    en el que i_min es una variable inicializada para tomar un valor que es menor, en 1, que un valor de mdice de tabla de troceo de una primera entrada de la tabla de troceo y actualizarla selectivamente dependiendo de una comparacion entre c y un valor de estado j»8 descrito por una entrada de la tabla de troceo j=ari_hash_m[i]; en el que i_max es una variable inicializada para designar un valor de mdice de tabla de troceo de una ultima entrada de la tabla de troceo y actualizarla selectivamente dependiendo de una comparacion entre c y un valor de estado j»8 descrito por una entrada de la tabla de troceo j=ari_hash_m[i]; en el que i es una variable que describe un valor de mdice de tabla de troceo actual; en el que ari_hash_m designa la tabla de troceo;
    en el que ari_hash_m[i] designa una entrada de la tabla de troceo que tiene el valor de mdice de tabla de troceo i;
    en el que la condicion “c < (j >> 8)” define que un valor de estado descrito por la variable c es menor que un valor
    5
    10
    15
    20
    25
    30
    35
    40
    45
    50
    55
    60
    de estado descrito por la entrada de la tabla j=ari_hash_m[i];
    en el que la condicion “c > (j >> 8)” define que un valor de estado descrito por la variable c es mayor que un valor de estado descrito por la entrada de la tabla j=ari_hash_m[i]; y
    en el que “j&0xFF” describe un valor de mdice de regla de mapeo descrito por la entrada de la tabla j=ari_hash_m[i].
  14. 14. Un codificador de audio (100; 700) para proporcionar una informacion de audio codificada (112; 712) basandose en una informacion de audio de entrada (110; 710), comprendiendo el codificador de audio:
    un convertidor compactador de energfa del dominio del tiempo al dominio de la frecuencia (130; 720) para proporcionar una representacion de audio en el dominio de la frecuencia (132; 722) basandose en una representacion en el dominio del tiempo (110; 710) de la informacion de audio de entrada, de manera que la representacion de audio en el dominio de la frecuencia (132; 722) comprende un conjunto de valores espectrales; y
    un codificador aritmetico (170; 730) configurado para codificar un valor espectral (a) o una version previamente procesada del mismo utilizando una palabra de codigo de longitud variable (acod_m, acod_r), en el que el codificador aritmetico (170) esta configurado para mapear uno o mas valores espectrales (a, b), o un valor (m) de un plano de bits mas significativo de uno o mas valores espectrales (a, b), sobre un valor de codigo (acod_m),
    en el que el codificador aritmetico esta configurado para seleccionar una regla de mapeo que describe un mapeo de uno o mas valores espectrales, o de un plano de bits mas significativo de uno o mas valores espectrales, sobre un valor de codigo, dependiendo de un estado del contexto (s) descrito por un valor numerico de contexto actual (c); y en el que el codificador aritmetico esta configurado para determinar el valor numerico de contexto actual (c) dependiendo de una pluralidad de valores espectrales previamente codificados; y
    en el que el codificador aritmetico esta configurado para evaluar una tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores de estado no significativos entre los valores numericos de contexto, en el que un valor de mdice de regla de mapeo esta individualmente asociado a un valor de contexto numerico que es un valor de estado significativo, y en el que un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto que radican dentro de uno de dichos intervalos delimitados por dichos lfmites de intervalo;
    en el que la informacion de audio codificada comprende una pluralidad de palabras de codigo de longitud variable.
  15. 15. Un metodo para proporcionar una informacion de audio decodificada basandose en una informacion de audio codificada, comprendiendo el metodo:
    proporcionar una pluralidad de valores espectrales decodificados basandose en una representacion aritmeticamente codificada de los valores espectrales comprendidos en la informacion de audio codificada; y proporcionar una representacion de audio en el dominio del tiempo utilizando los valores espectrales decodificados, para obtener la informacion de audio decodificada;
    en el que proporcionar la pluralidad de valores espectrales decodificados comprende seleccionar una regla de mapeo que describe un mapeo de un valor de codigo (acod_m; valor) de la representacion codificada aritmeticamente de valores espectrales sobre un codigo de sfmbolo (sfmbolo) que representa uno o mas de los valores espectrales decodificados, o un plano de bits mas significativo de uno o mas de los valores espectrales decodificados dependiendo de un estado de contexto descrito por un valor numerico de contexto actual (c); y en el que el valor numerico de contexto actual (c) se determina dependiendo de una pluralidad de valores espectrales previamente decodificados;
    en el que se evalua una tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores de estado no significativos entre los valores numericos de contexto,
    en el que un valor de mdice de regla de mapeo esta individualmente asociado a un valor numerico de contexto que es un valor de estado significativo, y en el que un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto que radican dentro de uno de dichos intervalos delimitados por dichos lfmites de intervalo.
  16. 16. Un metodo para proporcionar una informacion de audio codificada basandose en una informacion de audio de entrada, comprendiendo el metodo:
    proporcionar una representacion de audio en el dominio de la frecuencia basandose en una representacion en el dominio del tiempo de la informacion de audio de entrada utilizando una conversion de compactacion de energfa del dominio del tiempo al dominio de la frecuencia, de manera que la representacion de audio en el dominio de la frecuencia comprende un conjunto de valores espectrales; y
    codificar aritmeticamente un valor espectral, o una version previamente procesada del mismo, utilizando una palabra codigo de longitud variable, en el que se mapea uno o mas valores espectrales o un valor de un plano de
    bits mas significativo de uno o mas valores espectrales sobre un valor de codigo;
    en el que se selecciona una regla de mapeo que describe el mapeo de uno o mas valores espectrales, o de un plano de bits mas significativo de uno o mas valores espectrales, sobre un valor de codigo dependiendo de un estado de 5 contexto descrito por un valor numerico de contexto actual (c);
    en el que el valor numerico de contexto actual (c) se determina dependiendo de una pluralidad de valores espectrales adyacentes previamente codificados;
    en el que se evalua una tabla de troceo, las entradas de la cual definen tanto valores de estado significativos entre los valores numericos de contexto como los lfmites de los intervalos de valores de estado no significativos entre los 10 valores numericos de contexto,
    en el que un valor de mdice de regla de mapeo esta individualmente asociado a un valor numerico de contexto actual que es un valor de estado significativo, y en el que un valor de mdice comun de regla de mapeo esta asociado a diferentes valores numericos de contexto que radican dentro de uno de dichos intervalos delimitados por dichos lfmites de intervalo;
    15 en el que la informacion de audio codificada comprende una pluralidad de palabras de codigo de longitud variable.
  17. 17. Un programa informatico para realizar el metodo de acuerdo con la reivindicacion 15 o la reivindicacion 16, cuando el programa informatico se ejecuta en una computadora.
ES11700132.1T 2010-01-12 2011-01-11 Codificador de audio, decodificador de audio, método para codificar una información de audio, método para decodificar una información de audio y programa informático que utiliza una tabla de troceo que describe tanto valores de estado significativos como límites de intervalo Active ES2615891T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US29435710P 2010-01-12 2010-01-12
US294357P 2010-01-12
PCT/EP2011/050272 WO2011086065A1 (en) 2010-01-12 2011-01-11 Audio encoder, audio decoder, method for encoding and audio information, method for decoding an audio information and computer program using a hash table describing both significant state values and interval boundaries

Publications (1)

Publication Number Publication Date
ES2615891T3 true ES2615891T3 (es) 2017-06-08

Family

ID=43617872

Family Applications (3)

Application Number Title Priority Date Filing Date
ES11700132.1T Active ES2615891T3 (es) 2010-01-12 2011-01-11 Codificador de audio, decodificador de audio, método para codificar una información de audio, método para decodificar una información de audio y programa informático que utiliza una tabla de troceo que describe tanto valores de estado significativos como límites de intervalo
ES11700402.8T Active ES2532203T3 (es) 2010-01-12 2011-01-11 Codificador de audio, decodificador de audio, método para codificar y decodificar una información de audio y programa de computación que obtiene un valor de contexto de sub-región basado en una norma de valores espectrales previamente decodificados
ES11700401.0T Active ES2536957T3 (es) 2010-01-12 2011-01-11 Codificador de audio, decodificador de audio, método para codificar e información de audio, método para decodificar una información de audio y programa de computación utilizando una modificación de una representación de un numero de un valor de contexto numérico previo

Family Applications After (2)

Application Number Title Priority Date Filing Date
ES11700402.8T Active ES2532203T3 (es) 2010-01-12 2011-01-11 Codificador de audio, decodificador de audio, método para codificar y decodificar una información de audio y programa de computación que obtiene un valor de contexto de sub-región basado en una norma de valores espectrales previamente decodificados
ES11700401.0T Active ES2536957T3 (es) 2010-01-12 2011-01-11 Codificador de audio, decodificador de audio, método para codificar e información de audio, método para decodificar una información de audio y programa de computación utilizando una modificación de una representación de un numero de un valor de contexto numérico previo

Country Status (20)

Country Link
US (4) US8898068B2 (es)
EP (3) EP2524372B1 (es)
JP (3) JP5622865B2 (es)
KR (3) KR101336051B1 (es)
CN (3) CN102792370B (es)
AR (3) AR079886A1 (es)
AU (3) AU2011206676B2 (es)
BR (6) BR122021008576B1 (es)
CA (3) CA2786944C (es)
ES (3) ES2615891T3 (es)
HK (2) HK1178306A1 (es)
MX (3) MX2012008075A (es)
MY (3) MY160067A (es)
PL (3) PL2524372T3 (es)
PT (1) PT2524371T (es)
RU (2) RU2628162C2 (es)
SG (3) SG182464A1 (es)
TW (3) TWI466103B (es)
WO (3) WO2011086066A1 (es)
ZA (3) ZA201205936B (es)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010003479A1 (en) 2008-07-11 2010-01-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder and audio decoder
CA2871498C (en) * 2008-07-11 2017-10-17 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder and decoder for encoding and decoding audio samples
EP2315358A1 (en) 2009-10-09 2011-04-27 Thomson Licensing Method and device for arithmetic encoding or arithmetic decoding
CN102667923B (zh) * 2009-10-20 2014-11-05 弗兰霍菲尔运输应用研究公司 音频编码器、音频解码器、用于将音频信息编码的方法、用于将音频信息解码的方法
CA2786944C (en) * 2010-01-12 2016-03-15 Fraunhofer Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder, method for encoding and audio information, method for decoding an audio information and computer program using a hash table describing both significant state values and interval boundaries
KR20120084639A (ko) * 2011-01-20 2012-07-30 한국전자통신연구원 엔트로피 부호화를 위한 적응적 정렬 테이블
KR101362696B1 (ko) * 2011-10-19 2014-02-17 전북대학교산학협력단 하이브리드 아키텍쳐가 적용된 신호 변환 장치, 신호 변환 방법 및 기록매체
US8880412B2 (en) * 2011-12-13 2014-11-04 Futurewei Technologies, Inc. Method to select active channels in audio mixing for multi-party teleconferencing
CN110706715B (zh) * 2012-03-29 2022-05-24 华为技术有限公司 信号编码和解码的方法和设备
TWI508569B (zh) * 2012-09-14 2015-11-11 Realtek Semiconductor Corp 行動高畫質連結資料轉換器以及行動高畫質連結資料轉換方法
US9818412B2 (en) 2013-05-24 2017-11-14 Dolby International Ab Methods for audio encoding and decoding, corresponding computer-readable media and corresponding audio encoder and decoder
MY171256A (en) 2013-06-21 2019-10-07 Fraunhofer Ges Forschung Time scaler, audio decoder, method and a computer program using a quality control
RU2663361C2 (ru) 2013-06-21 2018-08-03 Фраунхофер-Гезелльшафт Цур Фердерунг Дер Ангевандтен Форшунг Е.Ф. Блок управления джиттер-буфером, аудиодекодер, способ и компьютерная программа
US20150113027A1 (en) * 2013-10-22 2015-04-23 National Tsing Hua University Method for determining a logarithmic functional unit
JP2015206874A (ja) * 2014-04-18 2015-11-19 富士通株式会社 信号処理装置、信号処理方法、及び、プログラム
US9640376B1 (en) 2014-06-16 2017-05-02 Protein Metrics Inc. Interactive analysis of mass spectrometry data
KR101910376B1 (ko) * 2014-06-29 2019-01-04 엘지전자 주식회사 연결된 rom-ram 테이블에 기초하여 산술 코딩을 수행하는 방법 및 장치
EP2996269A1 (en) * 2014-09-09 2016-03-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio splicing concept
US9385751B2 (en) 2014-10-07 2016-07-05 Protein Metrics Inc. Enhanced data compression for sparse multidimensional ordered series data
US10062762B2 (en) * 2014-12-23 2018-08-28 Stmicroelectronics, Inc. Semiconductor devices having low contact resistance and low current leakage
US10354421B2 (en) 2015-03-10 2019-07-16 Protein Metrics Inc. Apparatuses and methods for annotated peptide mapping
CN104872268B (zh) * 2015-06-02 2018-06-12 应关雄 一种低温除氧剂
MY188894A (en) 2015-10-08 2022-01-12 Dolby Int Ab Layered coding and data structure for compressed higher-order ambisonics sound or sound field representations
CA3199796A1 (en) 2015-10-08 2017-04-13 Dolby International Ab Layered coding for compressed sound or sound field representations
US20170231320A1 (en) * 2016-02-16 2017-08-17 Djo Consumer, Llc Fitting system and method for customizable footwear
CN109328382B (zh) * 2016-06-22 2023-06-16 杜比国际公司 用于将数字音频信号从第一频域变换到第二频域的音频解码器及方法
US20180089309A1 (en) * 2016-09-28 2018-03-29 Linkedln Corporation Term set expansion using textual segments
US10319573B2 (en) 2017-01-26 2019-06-11 Protein Metrics Inc. Methods and apparatuses for determining the intact mass of large molecules from mass spectrographic data
US10797723B2 (en) 2017-03-14 2020-10-06 International Business Machines Corporation Building a context model ensemble in a context mixing compressor
US10361712B2 (en) * 2017-03-14 2019-07-23 International Business Machines Corporation Non-binary context mixing compressor/decompressor
US11626274B2 (en) 2017-08-01 2023-04-11 Protein Metrics, Llc Interactive analysis of mass spectrometry data including peak selection and dynamic labeling
US10546736B2 (en) 2017-08-01 2020-01-28 Protein Metrics Inc. Interactive analysis of mass spectrometry data including peak selection and dynamic labeling
US10510521B2 (en) 2017-09-29 2019-12-17 Protein Metrics Inc. Interactive analysis of mass spectrometry data
WO2019091576A1 (en) 2017-11-10 2019-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoders, audio decoders, methods and computer programs adapting an encoding and decoding of least significant bits
EP3483883A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio coding and decoding with selective postfiltering
EP3483884A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Signal filtering
WO2019091573A1 (en) 2017-11-10 2019-05-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for encoding and decoding an audio signal using downsampling or interpolation of scale parameters
EP3483878A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio decoder supporting a set of different loss concealment tools
EP3483880A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Temporal noise shaping
EP3483882A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Controlling bandwidth in encoders and/or decoders
EP3483879A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Analysis/synthesis windowing function for modulated lapped transformation
EP3483886A1 (en) 2017-11-10 2019-05-15 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Selecting pitch lag
WO2019113911A1 (zh) * 2017-12-15 2019-06-20 海尔优家智能科技(北京)有限公司 设备控制方法、云端设备、智能设备、计算机介质及设备
US11044495B1 (en) 2018-02-13 2021-06-22 Cyborg Inc. Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation
US10929607B2 (en) 2018-02-22 2021-02-23 Salesforce.Com, Inc. Dialogue state tracking using a global-local encoder
US10915341B2 (en) * 2018-03-28 2021-02-09 Bank Of America Corporation Computer architecture for processing correlithm objects using a selective context input
KR20200000649A (ko) * 2018-06-25 2020-01-03 네이버 주식회사 오디오 병렬 트랜스코딩을 위한 방법 및 시스템
KR20210032413A (ko) * 2018-07-06 2021-03-24 프라운호퍼 게젤샤프트 쭈르 푀르데룽 데어 안겐반텐 포르슝 에. 베. 산술 인코더, 산술 디코더, 비디오 인코더, 비디오 디코더, 인코딩 방법, 디코딩 방법 및 컴퓨터 프로그램
CN110535497B (zh) * 2018-08-10 2022-07-19 中兴通讯股份有限公司 Csi发送、接收方法及其装置、通信节点及存储介质
US11640901B2 (en) 2018-09-05 2023-05-02 Protein Metrics, Llc Methods and apparatuses for deconvolution of mass spectrometry data
US11275568B2 (en) 2019-01-14 2022-03-15 Microsoft Technology Licensing, Llc Generating a synchronous digital circuit from a source code construct defining a function call
US11144286B2 (en) 2019-01-14 2021-10-12 Microsoft Technology Licensing, Llc Generating synchronous digital circuits from source code constructs that map to circuit implementations
US11106437B2 (en) * 2019-01-14 2021-08-31 Microsoft Technology Licensing, Llc Lookup table optimization for programming languages that target synchronous digital circuits
US11113176B2 (en) 2019-01-14 2021-09-07 Microsoft Technology Licensing, Llc Generating a debugging network for a synchronous digital circuit during compilation of program source code
US11093682B2 (en) 2019-01-14 2021-08-17 Microsoft Technology Licensing, Llc Language and compiler that generate synchronous digital circuits that maintain thread execution order
US10491240B1 (en) 2019-01-17 2019-11-26 Cyborg Inc. Systems and methods for variable length codeword based, hybrid data encoding and decoding using dynamic memory allocation
US11346844B2 (en) 2019-04-26 2022-05-31 Protein Metrics Inc. Intact mass reconstruction from peptide level data and facilitated comparison with experimental intact observation
CN111862953B (zh) * 2019-12-05 2023-08-22 北京嘀嘀无限科技发展有限公司 语音识别模型的训练方法、语音识别方法及装置
EP4204948A1 (en) 2020-08-31 2023-07-05 Protein Metrics, LLC Data compression for multidimensional time series data
WO2022079049A2 (en) * 2020-10-13 2022-04-21 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for encoding a plurality of audio objects or apparatus and method for decoding using two or more relevant audio objects

Family Cites Families (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222189A (en) 1989-01-27 1993-06-22 Dolby Laboratories Licensing Corporation Low time-delay transform coder, decoder, and encoder/decoder for high-quality audio
US5388181A (en) * 1990-05-29 1995-02-07 Anderson; David J. Digital audio compression system
US5659659A (en) 1993-07-26 1997-08-19 Alaris, Inc. Speech compressor using trellis encoding and linear prediction
ZA947317B (en) * 1993-09-24 1995-05-10 Qualcomm Inc Multirate serial viterbi decoder for code division multiple access system applications
US5798719A (en) 1994-07-29 1998-08-25 Discovision Associates Parallel Huffman decoder
EP0880235A1 (en) 1996-02-08 1998-11-25 Matsushita Electric Industrial Co., Ltd. Wide band audio signal encoder, wide band audio signal decoder, wide band audio signal encoder/decoder and wide band audio signal recording medium
JP3305190B2 (ja) 1996-03-11 2002-07-22 富士通株式会社 データ圧縮装置及びデータ復元装置
US5721745A (en) * 1996-04-19 1998-02-24 General Electric Company Parallel concatenated tail-biting convolutional code and decoder therefor
US6269338B1 (en) 1996-10-10 2001-07-31 U.S. Philips Corporation Data compression and expansion of an audio signal
JP3367370B2 (ja) 1997-03-14 2003-01-14 三菱電機株式会社 適応符号化方法
DE19730130C2 (de) 1997-07-14 2002-02-28 Fraunhofer Ges Forschung Verfahren zum Codieren eines Audiosignals
KR100335609B1 (ko) 1997-11-20 2002-10-04 삼성전자 주식회사 비트율조절이가능한오디오부호화/복호화방법및장치
KR100335611B1 (ko) 1997-11-20 2002-10-09 삼성전자 주식회사 비트율 조절이 가능한 스테레오 오디오 부호화/복호화 방법 및 장치
US6029126A (en) 1998-06-30 2000-02-22 Microsoft Corporation Scalable audio coder and decoder
US6704705B1 (en) 1998-09-04 2004-03-09 Nortel Networks Limited Perceptual audio coding
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
AU1984100A (en) 1999-01-13 2000-08-01 Koninklijke Philips Electronics N.V. Embedding supplemental data in an encoded signal
US6978236B1 (en) * 1999-10-01 2005-12-20 Coding Technologies Ab Efficient spectral envelope coding using variable time/frequency resolution and time/frequency switching
US7260523B2 (en) * 1999-12-21 2007-08-21 Texas Instruments Incorporated Sub-band speech coding system
US20020016161A1 (en) 2000-02-10 2002-02-07 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for compression of speech encoded parameters
JP2001318698A (ja) * 2000-05-10 2001-11-16 Nec Corp 音声符号化装置及び音声復号化装置
US6677869B2 (en) * 2001-02-22 2004-01-13 Panasonic Communications Co., Ltd. Arithmetic coding apparatus and image processing apparatus
US6538583B1 (en) 2001-03-16 2003-03-25 Analog Devices, Inc. Method and apparatus for context modeling
CN1235192C (zh) * 2001-06-28 2006-01-04 皇家菲利浦电子有限公司 传输***以及用于接收窄带音频信号的接收机和方法
US20030093451A1 (en) * 2001-09-21 2003-05-15 International Business Machines Corporation Reversible arithmetic coding for quantum data compression
JP2003255999A (ja) * 2002-03-06 2003-09-10 Toshiba Corp 符号化デジタルオーディオ信号の変速再生装置
JP4090862B2 (ja) 2002-04-26 2008-05-28 松下電器産業株式会社 可変長符号化方法および可変長復号化方法
US7242713B2 (en) * 2002-05-02 2007-07-10 Microsoft Corporation 2-D transforms for image and video coding
PT1467491E (pt) 2002-05-02 2007-03-30 Fraunhofer Ges Forschung Codificação aritmética de coeficientes de transformação
GB2388502A (en) 2002-05-10 2003-11-12 Chris Dunn Compression of frequency domain audio signals
US7447631B2 (en) 2002-06-17 2008-11-04 Dolby Laboratories Licensing Corporation Audio coding system using spectral hole filling
CN1328707C (zh) 2002-07-19 2007-07-25 日本电气株式会社 音频解码设备以及解码方法
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
US7299190B2 (en) 2002-09-04 2007-11-20 Microsoft Corporation Quantization and inverse quantization for audio
US7328150B2 (en) 2002-09-04 2008-02-05 Microsoft Corporation Innovations in pure lossless audio compression
DK1400954T3 (da) 2002-09-04 2008-03-31 Microsoft Corp Entropi-kodning ved tilpasning af kodning mellem niveau- og runlængde/niveau-moduser
CA2499212C (en) * 2002-09-17 2013-11-19 Vladimir Ceperkovic Fast codec with high compression ratio and minimum required resources
FR2846179B1 (fr) * 2002-10-21 2005-02-04 Medialive Embrouillage adaptatif et progressif de flux audio
US6646578B1 (en) 2002-11-22 2003-11-11 Ub Video Inc. Context adaptive variable length decoding system and method
US7876966B2 (en) 2003-03-11 2011-01-25 Spyder Navigations L.L.C. Switching between coding schemes
US6900748B2 (en) * 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
US7562145B2 (en) 2003-08-28 2009-07-14 International Business Machines Corporation Application instance level workload distribution affinities
JP2005130099A (ja) * 2003-10-22 2005-05-19 Matsushita Electric Ind Co Ltd 算術復号装置、算術符号化装置、算術符号化・復号装置、携帯端末装置、動画像撮影装置、及び、動画像記録・再生装置
JP2005184232A (ja) 2003-12-17 2005-07-07 Sony Corp 符号化装置、プログラム、およびデータ処理方法
JP4241417B2 (ja) * 2004-02-04 2009-03-18 日本ビクター株式会社 算術復号化装置、および算術復号化プログラム
DE102004007200B3 (de) * 2004-02-13 2005-08-11 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audiocodierung
CA2457988A1 (en) 2004-02-18 2005-08-18 Voiceage Corporation Methods and devices for audio compression based on acelp/tcx coding and multi-rate lattice vector quantization
US7516064B2 (en) 2004-02-19 2009-04-07 Dolby Laboratories Licensing Corporation Adaptive hybrid transform for signal analysis and synthesis
KR20050087956A (ko) * 2004-02-27 2005-09-01 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
EP1914722B1 (en) * 2004-03-01 2009-04-29 Dolby Laboratories Licensing Corporation Multichannel audio decoding
US20090299756A1 (en) * 2004-03-01 2009-12-03 Dolby Laboratories Licensing Corporation Ratio of speech to non-speech audio such as for elderly or hearing-impaired listeners
KR100561869B1 (ko) 2004-03-10 2006-03-17 삼성전자주식회사 무손실 오디오 부호화/복호화 방법 및 장치
US7577844B2 (en) 2004-03-17 2009-08-18 Microsoft Corporation Systems and methods for encoding randomly distributed features in an object
KR101050261B1 (ko) 2004-07-14 2011-07-19 에이전시 포 사이언스, 테크놀로지 앤드 리서치 콘텍스트 기반의 신호 엔코딩 및 디코딩
KR100624432B1 (ko) * 2004-08-05 2006-09-19 삼성전자주식회사 내용 기반 적응적 이진 산술 복호화 방법 및 장치
EP1810182A4 (en) 2004-08-31 2010-07-07 Kumar Gopalakrishnan METHOD AND SYSTEM FOR PROVIDING INFORMATION SERVICES RELEVANT TO VISUAL IMAGE
EP1798724B1 (en) 2004-11-05 2014-06-18 Panasonic Corporation Encoder, decoder, encoding method, and decoding method
US7903824B2 (en) 2005-01-10 2011-03-08 Agere Systems Inc. Compact side information for parametric coding of spatial audio
KR100829558B1 (ko) 2005-01-12 2008-05-14 삼성전자주식회사 스케일러블 오디오 데이터 산술 복호화 방법 및 장치와스케일러블 오디오 비트스트림 절단 방법
WO2006075901A1 (en) 2005-01-14 2006-07-20 Sungkyunkwan University Methods of and apparatuses for adaptive entropy encoding and adaptive entropy decoding for scalable video encoding
EP1864281A1 (en) * 2005-04-01 2007-12-12 QUALCOMM Incorporated Systems, methods, and apparatus for highband burst suppression
KR100694098B1 (ko) 2005-04-04 2007-03-12 한국과학기술원 산술 복호 방법 및 그 장치
KR100703773B1 (ko) * 2005-04-13 2007-04-06 삼성전자주식회사 향상된 코딩 효율을 갖는 엔트로피 코딩 및 디코딩 방법과이를 위한 장치, 이를 포함하는 비디오 코딩 및 디코딩방법과 이를 위한 장치
US7991610B2 (en) * 2005-04-13 2011-08-02 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Adaptive grouping of parameters for enhanced coding efficiency
US7196641B2 (en) * 2005-04-26 2007-03-27 Gen Dow Huang System and method for audio data compression and decompression using discrete wavelet transform (DWT)
US7546240B2 (en) * 2005-07-15 2009-06-09 Microsoft Corporation Coding with improved time resolution for selected segments via adaptive block transformation of a group of samples from a subband decomposition
US7539612B2 (en) * 2005-07-15 2009-05-26 Microsoft Corporation Coding and decoding scale factor information
US20070036228A1 (en) * 2005-08-12 2007-02-15 Via Technologies Inc. Method and apparatus for audio encoding and decoding
KR20080067637A (ko) 2005-10-03 2008-07-21 노키아 코포레이션 독립 변수들에 대한 적응적 가변 길이 코드들
US20070094035A1 (en) 2005-10-21 2007-04-26 Nokia Corporation Audio coding
KR100803206B1 (ko) 2005-11-11 2008-02-14 삼성전자주식회사 오디오 지문 생성과 오디오 데이터 검색 장치 및 방법
EP1995974B1 (en) * 2005-12-05 2015-05-20 Huawei Technologies Co., Ltd. Method for realizing arithmetic coding
CN101133649B (zh) 2005-12-07 2010-08-25 索尼株式会社 编码装置、编码方法以及解码装置、解码方法
KR101237413B1 (ko) 2005-12-07 2013-02-26 삼성전자주식회사 오디오 신호의 부호화 및 복호화 방법, 오디오 신호의부호화 및 복호화 장치
US7283073B2 (en) 2005-12-19 2007-10-16 Primax Electronics Ltd. System for speeding up the arithmetic coding processing and method thereof
WO2007080211A1 (en) * 2006-01-09 2007-07-19 Nokia Corporation Decoding of binaural audio signals
WO2007080225A1 (en) 2006-01-09 2007-07-19 Nokia Corporation Decoding of binaural audio signals
KR100774585B1 (ko) 2006-02-10 2007-11-09 삼성전자주식회사 변조 스펙트럼을 이용한 음악 정보 검색 방법 및 그 장치
US8027479B2 (en) * 2006-06-02 2011-09-27 Coding Technologies Ab Binaural multi-channel decoder in the context of non-energy conserving upmix rules
US7948409B2 (en) * 2006-06-05 2011-05-24 Mediatek Inc. Automatic power control system for optical disc drive and method thereof
EP1883067A1 (en) 2006-07-24 2008-01-30 Deutsche Thomson-Brandt Gmbh Method and apparatus for lossless encoding of a source signal, using a lossy encoded data stream and a lossless extension data stream
ATE496365T1 (de) * 2006-08-15 2011-02-15 Dolby Lab Licensing Corp Arbiträre formung einer temporären rauschhüllkurve ohne nebeninformation
US7554468B2 (en) 2006-08-25 2009-06-30 Sony Computer Entertainment Inc, Entropy decoding methods and apparatus using most probable and least probable signal cases
JP4785706B2 (ja) 2006-11-01 2011-10-05 キヤノン株式会社 復号装置及び復号方法
DE102007017254B4 (de) * 2006-11-16 2009-06-25 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung zum Kodieren und Dekodieren
US20080243518A1 (en) * 2006-11-16 2008-10-02 Alexey Oraevsky System And Method For Compressing And Reconstructing Audio Files
KR100868763B1 (ko) * 2006-12-04 2008-11-13 삼성전자주식회사 오디오 신호의 중요 주파수 성분 추출 방법 및 장치와 이를이용한 오디오 신호의 부호화/복호화 방법 및 장치
US7365659B1 (en) 2006-12-06 2008-04-29 Silicon Image Gmbh Method of context adaptive binary arithmetic coding and coding apparatus using the same
CN101231850B (zh) 2007-01-23 2012-02-29 华为技术有限公司 编解码方法及装置
KR101365989B1 (ko) * 2007-03-08 2014-02-25 삼성전자주식회사 트리 구조를 기반으로 한 엔트로피 부호화 및 복호화 장치및 방법
JP2008289125A (ja) * 2007-04-20 2008-11-27 Panasonic Corp 算術復号化装置及びその方法
ES2452348T3 (es) * 2007-04-26 2014-04-01 Dolby International Ab Aparato y procedimiento para sintetizar una señal de salida
US7813567B2 (en) 2007-04-26 2010-10-12 Texas Instruments Incorporated Method of CABAC significance MAP decoding suitable for use on VLIW data processors
JP4748113B2 (ja) 2007-06-04 2011-08-17 ソニー株式会社 学習装置および学習方法、並びにプログラムおよび記録媒体
EP2158587A4 (en) 2007-06-08 2010-06-02 Lg Electronics Inc METHOD AND DEVICE FOR PROCESSING AUDIO SIGNAL
CA2691993C (en) 2007-06-11 2015-01-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder for encoding an audio signal having an impulse-like portion and stationary portion, encoding methods, decoder, decoding method, and encoded audio signal
US8521540B2 (en) * 2007-08-17 2013-08-27 Qualcomm Incorporated Encoding and/or decoding digital signals using a permutation value
WO2009027606A1 (fr) * 2007-08-24 2009-03-05 France Telecom Codage/decodage par plans de symboles, avec calcul dynamique de tables de probabilites
US7839311B2 (en) * 2007-08-31 2010-11-23 Qualcomm Incorporated Architecture for multi-stage decoding of a CABAC bitstream
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding
US8527265B2 (en) * 2007-10-22 2013-09-03 Qualcomm Incorporated Low-complexity encoding/decoding of quantized MDCT spectrum in scalable speech and audio codecs
US8515767B2 (en) * 2007-11-04 2013-08-20 Qualcomm Incorporated Technique for encoding/decoding of codebook indices for quantized MDCT spectrum in scalable speech and audio codecs
US7714753B2 (en) 2007-12-11 2010-05-11 Intel Corporation Scalable context adaptive binary arithmetic coding
US8631060B2 (en) * 2007-12-13 2014-01-14 Qualcomm Incorporated Fast algorithms for computation of 5-point DCT-II, DCT-IV, and DST-IV, and architectures
EP2077551B1 (en) 2008-01-04 2011-03-02 Dolby Sweden AB Audio encoder and decoder
US8554550B2 (en) * 2008-01-28 2013-10-08 Qualcomm Incorporated Systems, methods, and apparatus for context processing using multi resolution analysis
JP4893657B2 (ja) * 2008-02-29 2012-03-07 ソニー株式会社 算術復号装置
WO2009110738A2 (ko) 2008-03-03 2009-09-11 엘지전자(주) 오디오 신호 처리 방법 및 장치
MX2010009932A (es) 2008-03-10 2010-11-30 Fraunhofer Ges Forschung Metodo y dispositivo para manipular una señal de audio que tiene un evento transitorio.
EP2284796A4 (en) 2008-04-28 2012-10-31 Univ Osaka Prefect Public Corp METHOD FOR CREATING AN IMAGE DATABASE FOR OBJECT RECOGNITION, PROCESSING DEVICE AND PROCESSING PROGRAM
US7864083B2 (en) 2008-05-21 2011-01-04 Ocarina Networks, Inc. Efficient data compression and decompression of numeric sequences
WO2010003479A1 (en) * 2008-07-11 2010-01-14 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Audio encoder and audio decoder
PL2346030T3 (pl) 2008-07-11 2015-03-31 Fraunhofer Ges Forschung Koder audio, sposób kodowania sygnału audio oraz program komputerowy
EP2144230A1 (en) * 2008-07-11 2010-01-13 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Low bitrate audio encoding/decoding scheme having cascaded switches
US7714754B2 (en) 2008-07-14 2010-05-11 Vixs Systems, Inc. Entropy decoder with pipelined processing and methods for use therewith
PT2146344T (pt) 2008-07-17 2016-10-13 Fraunhofer Ges Forschung Esquema de codificação/descodificação de áudio com uma derivação comutável
US20110137661A1 (en) 2008-08-08 2011-06-09 Panasonic Corporation Quantizing device, encoding device, quantizing method, and encoding method
US20100088090A1 (en) 2008-10-08 2010-04-08 Motorola, Inc. Arithmetic encoding for celp speech encoders
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression
US7982641B1 (en) * 2008-11-06 2011-07-19 Marvell International Ltd. Context-based adaptive binary arithmetic coding engine
GB2466666B (en) 2009-01-06 2013-01-23 Skype Speech coding
KR101622950B1 (ko) 2009-01-28 2016-05-23 삼성전자주식회사 오디오 신호의 부호화 및 복호화 방법 및 그 장치
US8457975B2 (en) * 2009-01-28 2013-06-04 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio decoder, audio encoder, methods for decoding and encoding an audio signal and computer program
KR20100136890A (ko) * 2009-06-19 2010-12-29 삼성전자주식회사 컨텍스트 기반의 산술 부호화 장치 및 방법과 산술 복호화 장치 및 방법
EP3352168B1 (en) 2009-06-23 2020-09-16 VoiceAge Corporation Forward time-domain aliasing cancellation with application in weighted or original signal domain
CA2777073C (en) 2009-10-08 2015-11-24 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Multi-mode audio signal decoder, multi-mode audio signal encoder, methods and computer program using a linear-prediction-coding based noise shaping
EP2315358A1 (en) * 2009-10-09 2011-04-27 Thomson Licensing Method and device for arithmetic encoding or arithmetic decoding
CN102667923B (zh) 2009-10-20 2014-11-05 弗兰霍菲尔运输应用研究公司 音频编码器、音频解码器、用于将音频信息编码的方法、用于将音频信息解码的方法
US8149144B2 (en) 2009-12-31 2012-04-03 Motorola Mobility, Inc. Hybrid arithmetic-combinatorial encoder
CA2786944C (en) 2010-01-12 2016-03-15 Fraunhofer Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Audio encoder, audio decoder, method for encoding and audio information, method for decoding an audio information and computer program using a hash table describing both significant state values and interval boundaries
CN102131081A (zh) 2010-01-13 2011-07-20 华为技术有限公司 混合维度编解码方法和装置
WO2012048472A1 (en) * 2010-10-15 2012-04-19 Huawei Technologies Co., Ltd. Signal analyzer, signal analyzing method, signal synthesizer, signal synthesizing method, windower, transformer and inverse transformer
US20120207400A1 (en) 2011-02-10 2012-08-16 Hisao Sasai Image coding method, image coding apparatus, image decoding method, image decoding apparatus, and image coding and decoding apparatus
US8170333B2 (en) 2011-10-13 2012-05-01 University Of Dayton Image processing systems employing image compression

Also Published As

Publication number Publication date
WO2011086067A1 (en) 2011-07-21
CA2786945A1 (en) 2011-07-21
MX2012008077A (es) 2012-12-05
MX2012008075A (es) 2013-12-16
EP2524371B1 (en) 2016-12-07
CA2786944A1 (en) 2011-07-21
MX2012008076A (es) 2013-01-29
KR20120128127A (ko) 2012-11-26
AR079888A1 (es) 2012-02-29
BR122021008576B1 (pt) 2022-04-12
TWI476757B (zh) 2015-03-11
JP2013517519A (ja) 2013-05-16
HK1177649A1 (en) 2013-08-23
CN102792370B (zh) 2014-08-06
EP2524372B1 (en) 2015-01-14
CN102792370A (zh) 2012-11-21
AU2011206677B9 (en) 2014-12-11
MY160067A (en) 2017-02-15
MY153845A (en) 2015-03-31
SG182467A1 (en) 2012-08-30
PL2524372T3 (pl) 2015-08-31
SG182464A1 (en) 2012-08-30
KR20120109616A (ko) 2012-10-08
RU2012141242A (ru) 2014-05-27
WO2011086065A1 (en) 2011-07-21
AR079886A1 (es) 2012-02-29
RU2012141243A (ru) 2015-08-10
EP2524371A1 (en) 2012-11-21
CN102859583A (zh) 2013-01-02
EP2524372A1 (en) 2012-11-21
KR101339058B1 (ko) 2013-12-10
PL2517200T3 (pl) 2015-10-30
JP5624159B2 (ja) 2014-11-12
AU2011206676B2 (en) 2014-07-17
CN102859583B (zh) 2014-09-10
EP2517200A1 (en) 2012-10-31
ES2536957T3 (es) 2015-06-01
US20130013323A1 (en) 2013-01-10
BR112012017258A2 (pt) 2017-10-03
US8645145B2 (en) 2014-02-04
AU2011206675A1 (en) 2012-08-09
CA2786945C (en) 2016-03-29
ES2532203T3 (es) 2015-03-25
PT2524371T (pt) 2017-03-15
TW201145260A (en) 2011-12-16
BR122021008583B1 (pt) 2022-03-22
RU2012141241A (ru) 2015-03-27
BR122021008581B1 (pt) 2022-08-16
KR101336051B1 (ko) 2013-12-04
TW201145262A (en) 2011-12-16
US8682681B2 (en) 2014-03-25
BR112012017256B1 (pt) 2021-08-31
SG182466A1 (en) 2012-08-30
AR079887A1 (es) 2012-02-29
BR112012017256A2 (pt) 2020-08-25
ZA201205936B (en) 2013-05-29
ZA201205938B (en) 2013-05-29
JP2013517521A (ja) 2013-05-16
CN102844809B (zh) 2015-02-18
JP2013517520A (ja) 2013-05-16
CA2786946A1 (en) 2011-07-21
AU2011206676A1 (en) 2012-08-09
HK1178306A1 (en) 2013-09-06
AU2011206675B2 (en) 2014-07-10
BR112012017258B1 (pt) 2020-12-29
JP5622865B2 (ja) 2014-11-12
CA2786946C (en) 2016-03-22
KR20120109621A (ko) 2012-10-08
MY159982A (en) 2017-02-15
AU2011206677B2 (en) 2014-07-10
JP5773502B2 (ja) 2015-09-02
AU2011206677B8 (en) 2014-12-11
CA2786944C (en) 2016-03-15
WO2011086066A1 (en) 2011-07-21
TWI466104B (zh) 2014-12-21
ZA201205939B (en) 2013-05-29
CN102844809A (zh) 2012-12-26
BR112012017257A2 (pt) 2017-10-03
KR101339057B1 (ko) 2013-12-10
RU2644141C2 (ru) 2018-02-07
US9633664B2 (en) 2017-04-25
US20130013322A1 (en) 2013-01-10
PL2524371T3 (pl) 2017-06-30
US8898068B2 (en) 2014-11-25
RU2628162C2 (ru) 2017-08-15
US20130013301A1 (en) 2013-01-10
TWI466103B (zh) 2014-12-21
EP2517200B1 (en) 2015-04-15
AU2011206675C1 (en) 2016-04-28
US20150081312A1 (en) 2015-03-19
AU2011206677A1 (en) 2012-08-09
TW201145261A (en) 2011-12-16

Similar Documents

Publication Publication Date Title
ES2615891T3 (es) Codificador de audio, decodificador de audio, método para codificar una información de audio, método para decodificar una información de audio y programa informático que utiliza una tabla de troceo que describe tanto valores de estado significativos como límites de intervalo
ES2937066T3 (es) Decodificador de audio, procedimiento y programa informático para decodificación de audio
ES2454020T3 (es) Codificador de audio, decodificador de audio, procedimiento para codificar información de audio, procedimiento y programa de computación que usa una regla dependiente de la región para un mapeado mediante codificación aritmética
BR122021003398A2 (pt) Codificador de áudio, decodificador de áudio, método de codificação e informação de áudio, método de decodificação de uma informação de áudio e programa de computador que utiliza uma tabela hash otimizada
BR122021003390A2 (pt) Codificador de áudio, decodificador de áudio, método de codificação e informação de áudio, método de decodificação de uma informação de áudio e programa de computador que utiliza uma tabela hash otimizada