ES2329466T3 - Procedimientos y dispositivos para codificar o decodificar una señal de audio o un flujo de bits. - Google Patents
Procedimientos y dispositivos para codificar o decodificar una señal de audio o un flujo de bits. Download PDFInfo
- Publication number
- ES2329466T3 ES2329466T3 ES04014504T ES04014504T ES2329466T3 ES 2329466 T3 ES2329466 T3 ES 2329466T3 ES 04014504 T ES04014504 T ES 04014504T ES 04014504 T ES04014504 T ES 04014504T ES 2329466 T3 ES2329466 T3 ES 2329466T3
- Authority
- ES
- Spain
- Prior art keywords
- code
- spectral
- words
- bit stream
- plot
- 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.)
- Expired - Lifetime
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/66—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission for reducing bandwidth of signals; for improving efficiency of transmission
- H04B1/662—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission for reducing bandwidth of signals; for improving efficiency of transmission using a time/frequency relationship, e.g. time compression or expansion
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04H—BROADCAST COMMUNICATION
- H04H20/00—Arrangements for broadcast or for distribution combined with broadcast
- H04H20/44—Arrangements characterised by circuits or components specially adapted for broadcast
- H04H20/46—Arrangements characterised by circuits or components specially adapted for broadcast specially adapted for broadcast systems covered by groups H04H20/53-H04H20/95
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04H—BROADCAST COMMUNICATION
- H04H20/00—Arrangements for broadcast or for distribution combined with broadcast
- H04H20/65—Arrangements characterised by transmission systems for broadcast
- H04H20/71—Wireless systems
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
Abstract
Dispositivo para decodificar un flujo de bits, presentando el flujo de bits palabras (1, 2, 6, 7a) con diferentes longitudes a partir de una tabla (n) de códigos y, como información lateral, la longitud de la palabra de código más larga que aparece realmente en un bloque (0), caracterizado por: un decodificador para decodificar el flujo de bits utilizando la tabla de códigos, siendo el decodificador eficaz para detectar si una palabra de código extraída del flujo de bits es más larga que la longitud de la palabra de código más larga que aparece realmente y por tanto es una palabra de código falsa, adoptándose una contramedida cuando se detecta una palabra de código falsa de este tipo.
Description
Procedimientos y dispositivos para codificar o
decodificar una señal de audio o un flujo de bits.
La presente invención se refiere a
procedimientos y a dispositivos para codificar o decodificar una
señal de audio o un flujo de bits, que pueden realizar una
codificación o decodificación de entropía robusta frente a errores
y especialmente una codificación o decodificación Huffman robusta
frente a errores.
Los procedimientos de codificación o
decodificación de audio modernos, que funcionan por ejemplo según la
norma MPEG-Layer 3, son capaces de comprimir la
tasa de transmisión de datos de señales de audio por ejemplo en un
factor de 12, sin perjudicar notablemente la calidad de los mismos.
Para conseguir una reducción de tasa de transmisión de datos tan
elevada, se muestrea una señal de audio, con lo que se obtiene una
secuencia de valores de muestreo discretos en el tiempo. Tal como
se conoce en la técnica, esta secuencia de valores de muestreo
discretos en el tiempo se divide en ventanas mediante funciones
ventana adecuadas para obtener bloques divididos en ventanas de
valores de muestreo temporales. Un bloque de valores de muestreo
divididos en ventanas temporalmente se transforma entonces,
mediante un banco de filtros, una transformada discreta del coseno
modificada (MDCT) u otro dispositivo adecuado, al dominio de
frecuencia para obtener valores espectrales que, en conjunto,
representan la señal de audio, es decir, el fragmento temporal que
viene dado por el bloque de valores de muestreo discretos en el
tiempo, en el dominio de frecuencia. Habitualmente se generan
bloques temporales que se solapan en un 50% y mediante una MDCT se
transforman al dominio de frecuencia, por lo que debido a las
propiedades especiales de la MDCT por ejemplo 1024 valores de
muestreo discretos en el tiempo siempre llevan a 1024 valores
espectrales.
Se conoce que la capacidad receptiva del oído
humano depende del espectro instantáneo de la propia señal de
audio. Esta dependencia está recogida en el denominado modelo
psicoacústico, mediante el que es posible desde hace tiempo
calcular en función del espectro instantáneo umbrales de
enmascaramiento. Enmascaramiento significa que se cubre un
determinado tono o componente espectral, cuando por ejemplo una
banda espectral adyacente tiene una energía relativamente elevada.
Este hecho del enmascaramiento se aprovecha para cuantificar los
valores espectrales existentes tras la transformación de la manera
más basta posible. Por tanto se pretende, por un lado, evitar
interferencias audibles en la señal decodificada de nuevo y, por
otro lado, utilizar la menor cantidad posible de bits para
codificar o en este caso cuantificar la señal de audio. Las
interferencias introducidas mediante la cuantificación, es decir,
el ruido de cuantificación, debe situarse por debajo del umbral de
enmascaramiento y de este modo ser inaudible. Según procedimientos
conocidos se realiza por tanto una clasificación de los valores
espectrales en denominadas bandas de factor de escala, que deben
corresponder a los grupos de frecuencia del oído humano. Los
valores espectrales en un grupo de factor de escala se multiplican
por un factor de escala para ajustar a escala en conjunto los
valores espectrales de una banda de factor de escala. Las bandas de
factor de escala ajustadas a escala mediante el factor de escala se
cuantifican a continuación, después de lo cual se producen valores
espectrales cuantificados. Evidentemente, un agrupamiento en bandas
de factor de escala no es crucial. Sin embargo, se utiliza en las
normas MPEG-Layer 3 o en la norma
MPEG-2 AAC (AAC = Advanced Audio Coding,
Codificación Avanzada de Audio).
Un aspecto muy esencial de la reducción de datos
consiste en la codificación de entropía, que sigue después de la
cuantificación, de los valores espectrales cuantificados. Para la
codificación de entropía se utiliza habitualmente una codificación
Huffman. Por una codificación Huffman se entiende una codificación
con longitud variable, es decir, la longitud de la palabra de
código para un valor que va a codificarse depende de su probabilidad
de aparición. Lógicamente se asocia al símbolo más probable el
código más corto, es decir, la palabra de código más corta, de modo
que con la codificación Huffman puede conseguirse una reducción de
redundancia muy buena. Un ejemplo de una codificación con longitud
variable conocida de forma generalizada es el alfabeto Morse.
En la codificación de audio se usan códigos
Huffman par la codificación de los valores espectrales
cuantificados. Un codificador de audio moderno, que por ejemplo
funciona según la norma MPEG-2 AAC, utiliza para la
codificación de los valores espectrales cuantificados diferentes
tablas de códigos Huffman, que se asocian por regiones al espectro
según determinados criterios. A este respecto se codifican siempre 2
ó 4 valores espectrales juntos en una palabra de código.
Una diferencia del procedimiento según
MPEG-2 AAC con respecto al procedimiento
MPEG-Layer 3 consiste pues en que se agrupan
diferentes bandas de factor de escala, es decir, diferentes valores
espectrales, en cualquier número de regiones espectrales. En AAC
una región espectral comprende al menos cuatro valores espectrales,
aunque preferiblemente más de cuatro valores espectrales. La gama de
frecuencias completa de los valores espectrales se divide por tanto
en regiones adyacentes, representando una región una banda de
frecuencias, de modo que todas las regiones juntas comprenden la
gama de frecuencias completa que cubre los valores espectrales tras
la transformación de los mismos.
A una región se asocia ahora, al igual que en el
procedimiento MPEG-Layer-3, una
denominada tabla Huffman a partir de una pluralidad de tablas de
este tipo para conseguir una reducción de redundancia máxima. En el
flujo de bits del procedimiento AAC, que presenta habitualmente 1024
valores espectrales, se encuentran ahora las palabras de código
Huffman para los valores espectrales en orden de frecuencia
ascendente. La información acerca de la tabla utilizada en cada
región de frecuencia se transmite en la información lateral. Esta
situación se representa en la figura 2.
La figura 2 representa el caso ejemplar en el
que el flujo de bits comprende 10 palabras de código Huffman. Si se
forma siempre una palabra de código a partir de un valor espectral,
entonces en este caso pueden estar codificados 10 valores
espectrales. Sin embargo, habitualmente se codifican siempre 2 ó 4
valores espectrales juntos mediante una palabra de código, por lo
que la figura 2 representa una parte del flujo de bits codificado,
que comprende 20 ó 40 valores espectrales. En el caso en el que cada
palabra de código Huffman comprende 2 valores espectrales, la
palabra de código designada con el número 1 representa los 2
primeros valores espectrales, siendo la longitud de la palabra de
código nº. 1 relativamente pequeña, lo que significa que los valores
de los dos primeros valores espectrales, es decir, de los dos
coeficientes de frecuencia más bajos, aparecen con relativa
frecuencia. En cambio, la palabra de código con el nº. 2 tiene una
longitud relativamente grande, lo que significa que los valores
absolutos del 3º y 4º coeficiente espectral en la señal de audio
codificada aparecen con relativamente poca frecuencia, por lo que
los mismos se codifican con una cantidad de bits relativamente
grande. A partir de la figura 2 puede verse además que las palabras
de código con nº. 3, 4 y 5, que representan los coeficientes
espectrales 5 y 6, ó 7 y 8 ó 9 y 10, también aparece con relativa
frecuencia, puesto que la longitud de las palabras de código
individuales es relativamente reducida. Lo mismo es válido para las
palabras de código con nº. 6 a 10.
Tal como ya se ha mencionado, puede verse
claramente a partir de la figura 2 que las palabras de código
Huffman para los valores espectrales codificados están dispuestas
de manera ascendente lineal en el flujo de bits según la
frecuencia, cuando se considera un flujo de bits que se genera
mediante un dispositivo de codificación conocido.
Una gran desventaja de los códigos Huffman en el
caso de canales con errores es la propagación de errores. Supóngase
por ejemplo que la palabra de código nº. 2 en la figura 2 presenta
una interferencia. Con bastante probabilidad está alterada entonces
también la longitud de esta palabra de código nº. 2 falsa. Ésta se
diferencia de este modo de la longitud correcta. Cuando en el
ejemplo de la figura 2 la palabra de código nº. 2 se ha alterado
con respecto a su longitud mediante una interferencia, ya no es
posible para un codificador determinar los inicios de las palabras
de código 3 a 10, es decir, de casi toda la señal de audio
representada. Por tanto tampoco pueden decodificarse correctamente
ya todas las demás palabras de código después de la palabra de
código que presenta una interferencia, porque que no se sabe dónde
empiezan estas palabras de código, y porque se seleccionó un punto
de inicio falso debido al error.
La patente europea nº. 0612156 propone como
solución para el problema de la propagación de errores disponer una
parte de las palabras de código de longitud variable en una trama, y
distribuir las palabras de código restantes en los huecos
restantes, de modo que puede encontrarse de manera más fácil el
inicio de una palabra de código sin decodificación completa o en el
caso de una transmisión con errores.
El procedimiento conocido remedia parcialmente
la propagación de errores mediante reordenamiento de las palabras
de código. Para algunas palabras de código se acuerda un sitio fijo
en el flujo de bits, mientras que para las palabras de código
restantes están disponibles los espacios intermedios que quedan.
Esto no requiere bits adicionales, pero evita en caso de errores la
propagación de errores entre las palabras de código reordenadas.
Sin embargo, el parámetro decisivo para la
eficacia del procedimiento conocido es cómo se determina la trama
en la aplicación práctica, es decir, cuántos puntos de trama deben
utilizarse, qué separación de trama tienen los puntos de trama,
etc. Sin embargo, la patente europea 0612156, aparte de la
indicación general de utilizar una trama para limitar la
propagación de errores, no proporciona ninguna indicación detallada
con respecto a cómo debe diseñarse la trama de manera eficaz para
posibilitar, por un lado, una codificación robusta frente a errores
y, por otro lado, también una codificación eficaz.
El documento EP 0 424 016 A2 da a conocer un
procedimiento para la codificación adaptada al oído de señales de
audio. Una estimación para el umbral de enmascaramiento de señales
de audio se determina en función de la frecuencia. Especialmente se
forma un índice de tonalidad, que proporciona información detallada,
que es útil a la hora de formar la función de enmascaramiento de
ruido. En la decodificación se obtiene la información espectral de
la señal de audio, y el decodificador reconstruye una representación
adaptada al oído del espectro original basándose en información
lateral transmitida. La información lateral puede ser una indicación
explícita del incremento de cuantificación o información que se
refiere al modo de asignar bits. Otra información lateral, que se
refiere a la división en ventanas, un pre-eco, a un
ajuste a escala y otros parámetros, puede decodificarse y
utilizarse igualmente para interpretar información espectral
codificada.
El objetivo de la presente invención consiste en
crear un concepto para decodificar de manera robusta frente a
errores y aún así eficaz un flujo de bits.
Este objetivo se soluciona mediante un
procedimiento para decodificar un flujo de bits según la
reivindicación 6 o mediante un dispositivo para decodificar un
flujo de bits según la reivindicación 1.
Los ejemplos de realización de la presente
invención aprovechan el hecho de que la trama ya propuesta está
configurada u ocupada de una manera determinada para conseguir,
además de una decodificación robusta frente a errores, también una
decodificación eficaz. A este respecto es útil que las palabras de
código, que se obtienen mediante una codificación de entropía en
forma de una codificación Huffman, tienen de manera inherente una
longitud diferente, ya que se consigue el máximo beneficio de
codificación cuando se asigna a un valor que va a codificarse, que
aparece con la máxima frecuencia, una palabra de código lo más corta
posible. En cambio, un valor que va a codificarse, que aparece con
relativamente poca frecuencia, a pesar de una palabra de código
relativamente larga, que se asigna al mismo, lleva a una cantidad de
datos óptima desde el punto de vista estadístico. Las palabras de
código que se obtienen mediante una codificación Huffman presentan
por tanto longitudes diferentes en sí.
Según un ejemplo de realización se colocan en
los puntos de trama denominadas palabras de código prioritarias, de
modo que, a pesar de un posible error en el flujo de bits, debido a
la trama un decodificador siempre puede establecer con seguridad el
inicio de las palabras de código prioritarias. Por palabras de
código prioritarias deben entenderse palabras de código que son
significativas desde el punto de vista psicoacústico. Esto significa
que los valores espectrales que están codificados mediante
denominadas palabras de código prioritarias, contribuyen
esencialmente a la impresión auditiva de una señal de audio
codificada. Cuando por ejemplo la señal de audio presenta una gran
parte de voz, entonces las palabras de código prioritarias podrían
ser las palabras de código que representan valores espectrales más
bien más bajos, ya que la información espectral esencial en este
caso aparece en la banda espectral baja. Cuando se piensa en una
señal de audio que presenta un grupo de tonos en la gama de
frecuencias media, entonces las palabras de código prioritarias
podrían ser las palabras de código, que están asociadas a los
valores espectrales en la gama de frecuencias media correspondiente,
ya que entonces éstos son los valores espectrales significativos
desde el punto de vista psicoacústico. Valores espectrales
significativos desde el punto de vista psicoacústico podrían ser
también valores espectrales que, en comparación con otros valores
espectrales, comprenden un gran valor absoluto, es decir, una
energía de señal elevada, en el espectro. En cambio, palabras de
código menos significativas desde el punto de vista psicoacústico,
que se denominan también palabras de código no prioritarias,
rellenan la trama. Por tanto no se alinean con puntos de trama,
sino que se ordenan de modo que se "introducen" en los sitios
aún libres tras la colocación de las palabras de código
prioritarias sobre los puntos de trama.
Según el ejemplo de realización, las palabras de
código prioritarias, que están asociadas a valores espectrales que
son significativos desde el punto de vista psicoacústico, se
disponen por tanto en una trama de modo que el inicio de las
palabras de código prioritarias coincide con los puntos de
trama.
Según un ejemplo de realización adicional se
realiza un agrupamiento de los valores espectrales en regiones
espectrales, asociándose a cada región espectral otra tabla de
códigos. La asociación de una tabla de códigos a una región
espectral se basa en aspectos de estadística de señal, es decir, qué
tabla de códigos es óptimamente adecuada para la codificación de
una región espectral, conociéndose ya en la técnica la asociación de
una tabla de códigos a una región espectral.
Se utiliza ahora una trama que presenta varios
grupos de puntos de trama equidistantes en sí, de modo que la
separación de los puntos de trama de un grupo de puntos de trama
depende de la tabla de códigos que se utiliza para la codificación
de una región espectral. En otra región espectral se utiliza otra
tabla de códigos para conseguir una reducción de datos óptima. A la
otra tabla de códigos está asociado a su vez otro grupo de puntos
de trama equidistantes, dependiendo la separación entre dos puntos
de trama de estos otros grupos de puntos de trama, de la tabla de
códigos adicional correspondiente. La dependencia de la separación
de dos puntos de trama en los diferentes grupos de puntos de trama
puede determinarse al menos de tres maneras diferentes.
Por un lado se establece la longitud máxima de
una palabra de código de una tabla de códigos. La separación de dos
puntos de trama en el grupo de puntos de trama que está asociado a
esta tabla de códigos puede seleccionarse ahora de modo que sea
igual o mayor que la longitud de palabra de código máxima en la
tabla de códigos, de modo que también la palabra de código más
larga de esta tabla de códigos tiene cabida en la trama. De manera
análoga a esto se determina la separación de dos puntos de trama de
otro grupo de puntos de trama, que a su vez corresponde a otra
tabla de códigos, según la longitud de palabra de código máxima de
esta otra tabla de códigos.
La segunda alternativa, que se describe a
continuación, puede contribuir igualmente a un aumento del número
de puntos de trama. Debido a las propiedades inherentes del código
Huffman, las palabras de código que aparecen con menor frecuencia
son más bien más largas que palabras de código que aparecen con
mayor frecuencia. Por tanto, cuando la separación de puntos de
trama se selecciona de modo que sea igual o mayor que la longitud
de la palabra de código con longitud máxima de una tabla, entonces,
en la mayoría de los casos se insertan palabras de código en la
trama que son más cortas que la separación de puntos de trama. La
separación de puntos de trama puede seleccionarse por tanto también
de modo que sea menor que la longitud de la palabra de código más
larga de una tabla. Entonces, en caso de que en la codificación
aparezca una palabra de código que no cabe en la trama, entonces el
resto que no cabe en la trama se introduce en otro lugar adecuado en
el flujo de bits, de manera no alineada con la trama. Esto lleva a
que esta palabra de código "dividida en trozos" ya no está
protegida de manera eficaz frente a una propagación de errores. Sin
embargo, puesto que esto aparece con muy poca frecuencia, puede
aceptarse en beneficio del aumento del número de puntos de
trama.
Una posibilidad adicional para determinar las
diferentes separaciones de puntos de trama consiste en no considerar
la longitud de palabra de código máxima de una tabla, sino utilizar
la longitud de la palabra de código más larga que aparece realmente
en el flujo de bits en una región espectral codificada.
Según un ejemplo de realización adicional puede
utilizarse, en vez de una disposición que aumenta esencialmente de
manera lineal con la frecuencia de las palabras de código en el
flujo de bits, una disposición distribuida según la frecuencia de
las palabras de código, designándose este procedimiento también como
"aleatorización". Esto tiene la ventaja de que denominados
errores "de ráfaga" no llevan a una decodificación con errores
de una banda de frecuencias completa, sino que sólo generan
pequeñas interferencias en varias gamas de frecuencias
diferentes.
Según un ejemplo de realización adicional puede
utilizarse además, en vez de una disposición que aumenta de manera
lineal con la frecuencia de las palabras de código, también una
disposición, en la que por ejemplo sólo se dispone cada enésima
palabra de código (por ejemplo cada 2ª o cada 3ª o cada 4ª...) en la
trama. De este modo se posibilita cubrir una banda espectral lo más
grande posible mediante palabras de código prioritarias, es decir,
protegerla frente a una propagación de errores, cuando el número de
posibles puntos de trama es menor que el número de palabras de
código prioritarias.
Además se prefiere que las palabras de código
prioritarias se determinen de una manera determinada para que se
consiga un funcionamiento eficaz. Por tanto se descarta
preferiblemente la hipótesis de que las palabras de código
significativas desde el punto de vista psicoacústico, es decir,
palabras de código prioritarias, son aquéllas que codifican valores
espectrales de baja frecuencia. Esto será cierto muchas veces, pero
no siempre debe ser el caso.
Normalmente palabras de código prioritarias son
palabras de código que codifican líneas espectrales significativas
desde el punto de vista psicoacústico, que habitualmente son valores
espectrales con energía elevada. Es igualmente importante que no
aparezcan líneas espectrales con energía elevada debido a
errores.
Así puede utilizarse un indicador que ya existe
explícitamente. El indicador depende de la tabla de códigos
utilizada. En la norma AAC existen por ejemplo once tablas de
códigos que tienen intervalos de valores absolutos diferentes entre
sí. La tabla de códigos nº. 1 comprende por ejemplo valores
espectrales con un valor absoluto de -1 a +1, mientras que la tabla
de códigos nº. 11 puede codificar valores espectrales de -8191 a
+8191. Cuanto más alta sea la tabla de códigos, mayor será también
el intervalo de valores permitido por la misma. Esto significa que
las tablas de códigos con números bajos sólo representan valores
relativamente pequeños y por tanto sólo permiten errores
relativamente pequeños, mientras que las tablas de códigos con
números más altos pueden representar valores relativamente grandes
y por tanto también permiten errores relativamente grandes.
Si en una tabla de códigos baja aparece un
error, entonces éste, dado el caso, no será audible en absoluto, ya
que se produce una línea espectral con errores que, desde un punto
de vista absoluto, no se diferencia tanto de la línea espectral
originalmente correcta. Sin embargo, si en la tabla de códigos más
alta aparece un error, entonces este error puede adoptar en
principio todos los valores absolutos posibles en esta tabla de
códigos. Si por ejemplo una línea espectral codificada con la tabla
de códigos más alta tuviese un valor bajo y, debido a un error
durante la transmisión, se decodifica en el decodificador como línea
espectral que tiene el valor absoluto más alto de esta tabla de
códigos, entonces esta línea espectral con errores seguramente será
audible.
Con respecto a la robustez frente a errores, la
tabla de códigos más importante es por tanto la tabla de códigos
más alta (en la norma AAC la tabla de códigos nº. 11), ya que esta
tabla de códigos admite valores de escape con un intervalo entre
-2^{13} + 1 (-8191) y +2^{13} -1 (+8191).
Según un ejemplo de realización adicional, en la
norma AAC se utilizan ventanas cortas en señales transitorias. En
el caso de ventanas cortas se reduce la resolución de frecuencia en
beneficio de una mayor resolución temporal. Una determinación de
las palabras de código prioritarias se realiza en el sentido de que
se colocan con seguridad sobre puntos de trama valores espectrales
significativos desde el punto de vista psicoacústico, es decir,
valores espectrales en el caso de frecuencias más bajas o valores
espectrales de tablas de códigos más altas. Para ello se suprime
una intercalación según bandas de factor de escala realizada por
ejemplo en la norma AAC.
Ejemplos de realización preferidos de la
presente invención se analizan a continuación con más detalle
haciendo referencia a los dibujos adjuntos. Muestran:
la figura 1, un ejemplo de una división en
tramas de un flujo de bits codificado que contiene palabras de
código, según un ejemplo de realización; y
la figura 2, una disposición que aumenta de
manera lineal con la frecuencia de palabras de código según el
estado de la técnica.
\vskip1.000000\baselineskip
Para explicar la presente invención, en la
figura 2, que representa una disposición conocida, que aumenta de
manera lineal con la frecuencia, de palabras de código de diferente
longitud, se representan mediante rayado palabras de código
prioritarias. En la figura 2 las palabras de código prioritarias son
las palabras de código nº. 1 a nº. 5. Tal como ya se mencionó
anteriormente, las palabras de código que están asociadas a valores
espectrales bajos según la frecuencia, son palabras de código
prioritarias cuando la señal de audio contiene por ejemplo una
parte de voz elevada, o relativamente muchos tonos de baja
frecuencia. Las palabras de código nº. 6 a 10 en la figura 2 se
refieren a valores espectrales de frecuencia más alta que, si bien
contribuyen absolutamente a la impresión global de la señal de
audio codificada, sin embargo no tienen efectos esenciales sobre la
impresión auditiva y por tanto son menos significativos desde el
punto de vista psicoacústico.
La figura 1 muestra ahora un flujo de bits, que
presenta un número de puntos 10 a 18 de trama, estando designada la
separación entre el punto 10 de trama y el punto 12 de trama como
D1, mientras que la separación entre el punto 14 de trama y el
punto 16 de trama se designa como D2.
Con respecto a la representación de un ejemplo
de realización, considérese sólo la parte del flujo de bits que se
extiende desde el punto 10 de trama hasta el punto 14 de trama. Las
palabras 1 y 2 de código prioritarias se orientan ahora en la
trama, para que se garantice que las componentes espectrales
esenciales, que se encuentran en el caso de la señal ejemplar
representada en la figura 2 en la gama de frecuencias baja, no estén
sujetas a propagación de errores durante una codificación. Las
palabras de código no prioritarias, que en las figuras no están
representadas mediante rayado, se disponen después de las palabras
de código prioritarias para rellenar la trama. No es necesario que
las palabras de código no prioritarias quepan en un solo trozo en la
trama, ya que la longitud de una palabra de código Huffman se
obtiene por sí misma. Un decodificador sabe por tanto si sólo ha
leído parte de una palabra de código. En este caso añadirá
automáticamente al primer trozo de palabra de código un determinado
número de bits después de la palabra de código prioritaria detrás
del siguiente punto de trama. Por tanto es posible insertar una
primera parte de una palabra de código no prioritarias en una
primera posición aún libre en la trama, e insertar la parte restante
de la misma en otro lugar, tal como se representa por ejemplo
mediante las palabras 7, 8 y 9 de código no prioritarias, que en el
flujo de bits se han divido en cada caso en dos, es decir, 7a, 7b ó
8a, 8b ó 9a, 9b.
Tal como ya se ha representado, la segunda parte
del flujo de bits de la figura 1 ya se refiere a otro ejemplo de
realización. Si la separación D1 de trama no se modificara para
formar una separación de trama más pequeña, entonces una trama con
la separación D1, en la que deben disponerse todas las palabras 1 a
5 de código prioritarias, llevaría a un flujo de bits tan largo
que, para así decir, no existen suficientes palabras de código no
prioritarias para rellenar todos los huecos que quedan en la trama.
Por tanto sólo se extraen de una señal de audio tantas palabras de
código prioritarias como puedan insertarse en el flujo de bits, para
que esencialmente no queden lugares libres, es decir, para que el
flujo de bits no se prolongue innecesariamente.
A continuación se entra en detalle en el otro
ejemplo de realización, haciendo referencia a la figura 1. En el
caso del procedimiento de codificación según la norma
MPEG-2 AAC pueden utilizarse 11 tablas de códigos
Huffman diferentes para la codificación. Para la mayoría de estas
tablas, la longitud de palabra de código máxima posible asciende a
entre 10 y 20 bits. Sin embargo, una tabla especial, la denominada
tabla "de escape" comprende una longitud de 49 bits como
máximo. Si se utilizara en este caso como separación D de trama la
longitud de la palabra de código más larga de todas las tablas,
entonces se obtendría una separación de trama de 49 bits, lo que
lleva a una trama con un ancho muy grande y por tanto es ineficaz
para casi todas las tablas, ya que el flujo de bits se volvería
demasiado largo, cuando todas las palabras de código prioritarias
deben alinearse con un punto de trama. Según la invención se ajusta
por tanto el ancho de la trama en función de la tabla de códigos
usada. Tal como ya se mencionó al inicio pueden agruparse valores
espectrales en regiones espectrales, asociándose entonces, teniendo
en cuenta aspectos relativos a las estadísticas de señales, a cada
región espectral una tabla de códigos óptima para la misma. Sin
embargo, la longitud de palabra de código máxima en una tabla de
códigos se diferencia en la mayoría de los casos de la longitud de
palabra de código máxima de otra tabla.
Supóngase por tanto que los valores espectrales,
que se representan mediante las palabras 1 y 2 de código,
pertenecen a una primera región espectral, mientras que los valores
espectrales, que están representados mediante las palabras 3 a 10
de código, pertenecen a una segunda región espectral. El flujo de
bits se divide entonces en tramas utilizando 2 grupos de puntos de
trama, presentando el 1º grupo de puntos de trama los puntos 10, 12
y 14 de trama, mientras que el 2º grupo de puntos de trama presenta
los puntos 14, 16 y 18 de trama. Supóngase además que a la región 0
espectral se le asignó la tabla n de códigos Huffman, mientras que a
la región 1 espectral se le asoció la tabla m de códigos Huffman.
Supóngase además que la palabra 2 de código es la palabra de código
más larga de la tabla n que se asoció a la región 0 espectral. La
separación de trama del 1º grupo de puntos de trama se ajusta de
modo que sea mayor o preferiblemente igual a la longitud máxima de
la palabra de código de la tabla n, en el ejemplo por tanto de la
palabra de código nº. 2.
En cambio, la región del flujo de bits entre el
punto 14 de trama y el final del flujo de bits en la palabra de
código nº. 10 muestra que, en este ejemplo seleccionado, la palabra
de código con la longitud máxima de la tabla m de códigos no
aparece en el flujo de bits. En la trama de flujo de bits que se
designa mediante el grupo 2, no existe por tanto una palabra de
código que presente una longitud D2.
Según este ejemplo de realización se ajusta por
tanto el ancho de la trama en función de la tabla de códigos usada.
Sin embargo, ha de indicarse que en este caso ya debe conocerse la
tabla utilizada en el decodificador para la decodificación. Sin
embargo, éste es el caso, ya que se transmite de todos modos como
información lateral para cada región espectral un número de tabla
de códigos, mediante el que un decodificador puede identificar la
tabla de códigos utilizada a partir de un conjunto predeterminado de
tablas Huffman diferentes, en este ejemplo 11.
Tal como ya se mencionó, en el caso de una
dependencia de la separación de trama con respecto a la tabla de
códigos utilizada, especialmente cuando se piensa en la tabla de
escape cuya palabra de código más larga tiene una longitud de 49
bits, aún no puede conseguirse una reducción de datos óptima, ya que
en el caso de una tabla de escape el ancho de trama se ajusta a 49
bits para codificar valores espectrales de tamaño máximo. Las
tablas de escape se emplean para tener, por un lado, tablas de
códigos relativamente cortas, sin embargo, por otro lado, para
poder codificar valores relativamente grandes mediante las tablas de
códigos cortas en conexión con una tabla de escape. En el caso de
un valor que supera el intervalo de valores de una tabla de
códigos, la palabra de código adopta para este valor espectral un
valor predeterminado que señaliza al decodificador que se ha
utilizado adicionalmente una tabla de escape en el codificador. Si
una tabla de códigos comprende por ejemplo los valores de 0 a 2,
entonces un valor de 3 en la tabla de códigos señalizaría al
decodificador que se recurre a una tabla de escape. A la palabra de
código con el valor 3 de la tabla de códigos "base" se asocia
al mismo tiempo un valor de la tabla de escape, que junto con el
valor máximo de la tabla de códigos base proporciona el valor
espectral correspondiente.
Según un ejemplo de realización adicional de la
presente invención, la separación de los puntos de trama de un
grupo (por ejemplo del grupo 1 o del grupo 2) ya no se ajusta de
modo que sea igual a la longitud de la palabra de código más larga
de una tabla de códigos, sino de modo que sea igual a la longitud de
la palabra de código más larga que aparece realmente en un flujo de
bits que pertenece a una tabla de códigos. Esto representa una
mejora adicional con respecto a los ejemplos de realización
anteriores, ya que a pesar de este procedimiento la eficacia de
codificación en la tabla de escape sigue sin ser óptima. Debido a la
técnica de codificación, la longitud máxima del código de esta
tabla (dentro de un espectro) es en la mayoría de los casos
esencialmente inferior. La palabra de código más larga en la tabla
de escape tiene una longitud por ejemplo de 49 bits.
La palabra de código más larga de la tabla de
escape, que aparece realmente en señales de audio habituales, tiene
normalmente una longitud de aproximadamente 20 bits. Por tanto es
posible aumentar adicionalmente el número de puntos de trama y de
este modo el número de palabras de código prioritarias que pueden
alinearse con los puntos de trama, transmitiéndose adicionalmente
la longitud de la palabra de código más larga de un bloque. La
longitud de trama se obtiene entonces a partir del mínimo de la
longitud de palabra de código máxima que aparece realmente y la
longitud de palabra de código máxima en teoría de la tabla que acaba
de utilizarse. Para la determinación del mínimo es posible utilizar
la palabra de código que aparece realmente de cada tabla de códigos
en una trama de audio o sólo la palabra de código realmente más
larga de todas las tablas de códigos en una trama de audio. Esta
opción funciona también para tablas no de escape, esto es, para
tablas Huffman "base", sin embargo de manera mucho menos
eficaz que para las tablas de escape.
La transmisión de la longitud máxima de una
palabra de código en una región espectral o bloque según la presente
invención tiene un efecto secundario favorable. El decodificador
puede detectar según la invención, debido a la longitud máxima que
aparece realmente, si en un flujo de bits en determinadas
circunstancias que presenta una interferencia existe una palabra de
código más larga. Palabras de código largas significan habitualmente
una energía elevada de los valores espectrales. Cuando debido a un
error de transmisión se produce una palabra de código muy larga,
pueden producirse interferencias extraordinariamente audibles. La
transmisión de la longitud máxima posibilita de este modo según la
invención en la mayoría de los casos una detección de un error de
este tipo y de este modo contramedidas, que por ejemplo son
simplemente una supresión de esta palabra de código demasiado
larga, o una medida de ocultación más complicada.
En este punto ha de mencionarse que para una
codificación lo más robusta posible frente a errores y aún así
eficaz se desea la mayor cantidad posible de puntos de trama. Sin
embargo, el número de puntos de trama está limitado hacia arriba
por la longitud total del flujo de bits. Evidentemente, ésta no
debería aumentarse mediante la división en tramas, ya que entonces
existirían lugares no usados en el flujo de bits, que irían en
contra de la filosofía de la compresión de datos completa. Aún así
debe indicarse que, en beneficio de una robustez elevada frente a
errores en determinados casos de aplicación puede aceptarse
absolutamente una prolongación del flujo de bits. Por otro lado es
deseable disponer una trama de modo que la mayor cantidad posible de
palabras de código se inicien en puntos de trama. Ejemplos de
realización permiten de este modo de manera eficaz una
flexibilización de la separación de puntos de trama a diferencia del
estado de la técnica. La flexibilización llevaría en el caso
absolutamente ideal a asociar esencialmente a cada palabra de código
un punto de trama, lo que evidentemente sólo es posible con un
esfuerzo considerable. Sin embargo, la disposición de los puntos de
trama, es decir, la determinación de las separaciones de puntos de
trama en función de las tablas de códigos para cada región
espectral permite una aproximación muy eficaz al estado óptimo, ya
que no todas las palabras de código son significativas desde el
punto de vista psicoacústico, ni mucho menos, y ya que todas las
palabras de código menos significativas desde el punto de vista
psicoacústico deberían ordenarse también de manera que se
introduzcan, para así decir, en el flujo de bits entre las palabras
de código significativas desde el punto de vista psicoacústico
dispuestas según la trama, para que no queden lugares no usados en
el flujo
de bits.
de bits.
Según un ejemplo de realización adicional se
descarta la disposición que aumenta de manera lineal con la
frecuencia en el flujo de bits, y las palabras de código para
diferentes valores espectrales "se aleatorizan". Cuando se
observa la figura 1, entonces puede verse una disposición lineal en
cierto modo intercalada de las palabras de código con la
frecuencia, ya que las palabras de código prioritarias representadas
mediante rayado están dispuestas en sentido de frecuencia
ascendente, y ya que las palabras de código no prioritarias, que no
están representadas mediante rayado, también están ordenadas de
modo que se introducen en un orden de frecuencia ascendente en el
flujo de bits. Si ahora apareciera en el flujo de bits representado
en la figura 1 un denominado error "de ráfaga", es decir, una
interferencia que lleva a que se dañen varias palabras de código
sucesivas, entonces se destruirían por ejemplo las palabras 6, 7a,
2, 3 y 7b de código simultáneamente.
En la señal de audio decodificada
correspondiente aparecería en la banda espectral representada
mediante las palabras 2 y 3 de código prioritarias una
interferencia relativamente amplia desde el punto de vista espectral
y de este modo una interferencia audible más bien de manera más
clara. El problema de los errores de ráfaga no puede verse de
manera especialmente clara a partir del ejemplo muy sencillo en la
figura 1. Sin embargo, en la práctica debe partirse de que
existirán mucho más que cinco puntos de trama, extendiéndose los
errores de ráfaga con frecuencia por varios puntos de trama, lo que
puede llevar a una pérdida de datos para una banda de frecuencias
relativamente ancha. Por tanto, según el ejemplo de realización
adicional, las palabras de código prioritarias y opcionalmente
también las palabras de código no prioritarias para los valores
espectrales ya no se disponen preferiblemente en un orden de
frecuencia ascendente sino "de manera mezclada", de modo que
éstas tienen una disposición aleatoria o pseudoaleatoria según la
frecuencia. En el caso de una disposición pseudoaleatoria no debe
transmitirse información con respecto a la distribución como
información lateral, ya que esta distribución puede ajustarse en el
decodificador a priori de manera fija. Esto llevaría entonces
a que una pérdida de palabras de código adyacentes en el flujo de
bits no lleva a una pérdida de una banda de frecuencias completa,
sino sólo a una pérdida muy pequeña en varias gamas de frecuencias.
Esta interferencia apenas debería ser audible y también podría
ocultarse de manera más eficaz que una pérdida de una banda de
frecuencias completa.
Según un ejemplo de realización adicional es
posible, en vez de una disposición que aumenta de manera lineal con
la frecuencia, de las palabras de código prioritarias o de las
palabras de código no prioritarias, una disposición que sólo
dispone por ejemplo cada enésima palabra de código en la trama y
ordena las palabras de código restantes de manera que las introduce
entre las mismas. Tal como ya se mencionó, el número de puntos de
trama está limitado para un flujo de bits mediante la longitud total
y la separación de puntos de trama seleccionada. Cuando por ejemplo
se piensa en un muestreo con ancho de banda reducido, entonces puede
darse el caso de que, de las palabras de código, la gran mayoría
son palabras de código significativas desde el punto de vista
psicoacústico, ya que la señal completa tiene un ancho de banda útil
teóricamente posible de 8 kHz, cuando se utiliza una tasa de
muestreo de 16 kHz. Según la experiencia sólo puede disponerse el
30% de las palabras de código en puntos de trama, debiendo
utilizarse el 70% restante para rellenar la trama completamente.
Sin embargo, esto significaría que no puede cubrirse o
"protegerse" toda la gama de frecuencias importante en el caso
de señales de voz, por ejemplo la gama de 0 a 4 kHz con palabras de
código prioritarias que están dispuestas en puntos de trama. Para
aún así conseguir para la gama de frecuencias importante una
protección suficiente frente a propagaciones de error, ya no se
alinea por tanto cada palabra de código prioritaria, sino sólo cada
2ª, 3ª ó 4ª, etc. con un punto de trama, mientras que las palabras
de código prioritarias situadas entre las mismas no se alinean con
puntos de trama, sino que rellenan la trama. Cuando por ejemplo en
la gama de frecuencias baja se conoce cada 2º valor espectral o
cada 3º, etc., entonces las palabras de código situadas entre las
mismas, cuando se dañan en una transmisión, pueden restaurarse en el
decodificador en determinadas circunstancias mediante técnicas de
ocultación de errores, tal como por ejemplo una predicción o
similar.
Los procedimientos o dispositivos para
decodificar un flujo de bits funcionan esencialmente de manera
inversa a la codificación descrita.
En un procedimiento general para decodificar un
flujo de bits, que representa una señal de audio codificada,
presentando el flujo de bits codificado palabras de código con
diferente longitud a partir de una tabla de códigos y una trama con
puntos (10, 12, 14) de trama equidistantes, presentando las palabras
de código palabras de código prioritarias que representan
determinados valores espectrales que, en comparación con otros
valores espectrales son significativos desde el punto de vista
psicoacústico, y estando alineadas las palabras de código
prioritarias con puntos de trama, (a) se detecta la separación D1
entre dos puntos de trama adyacentes. Cuando se conoce la
separación entre dos puntos de trama, (b) pueden reordenarse las
palabras de código prioritarias alineadas con los puntos de trama
en el flujo de bits codificado, de modo que se obtiene una
disposición lineal según la frecuencia de las mismas, coincidiendo
el inicio de una palabra de código prioritaria con un punto de
trama. Ahora las palabras de código prioritarias están situadas de
nuevo en la disposición lineal según la frecuencia en general
mostrada en la figura 2, por lo que (c) pueden volver a
decodificarse las palabras de código prioritarias con una tabla de
códigos, a la que pertenecen las mismas, para obtener valores
espectrales decodificados. Tras una (d) transformación de los
valores espectrales decodificados de vuelta al dominio de tiempo,
existe una señal de audio decodificada, que puede procesarse de una
manera conocida por ejemplo para suministrarse a un altavoz.
Si el flujo de bits sólo está codificado con una
única tabla de códigos, entonces puede detectarse la separación de
los puntos de trama de manera sencilla, deduciéndose de la
información lateral del flujo de bits con qué tabla de códigos se
codificó. Según la codificación descrita, la separación es entonces
por ejemplo la longitud de la palabra de código más larga de esta
tabla, que podría estar ajustada de manera fija en el codificador.
Si la separación es la longitud de la palabra de código más larga
que aparece realmente en una parte del flujo de bits, a la que está
asociada una tabla de códigos, entonces ésta se comunica mediante la
información lateral, que está asociada al flujo de bits, al
decodificador, etc.
El decodificador realiza una reordenación de las
palabras de código prioritarias y también de las palabras de código
no prioritarias, aplicando por ejemplo un puntero al flujo de bits
codificado. Si el decodificador conoce la separación de trama,
entonces éste puede saltar, en caso de una disposición lineal según
la frecuencia de las palabras de código prioritarias, a un punto de
trama y leer la palabra de código que se inicia en el mismo. Una
vez finalizada la lectura de una palabra de código, entonces el
puntero salta al siguiente punto de trama y repite la operación
descrita. Una vez leídas todas las palabras de código prioritarias,
entonces se encuentran en el flujo de bits todavía las palabras de
código no prioritarias. Si se seleccionó una disposición lineal en
cada caso de las palabras de código prioritarias o de las palabras
de código no prioritarias en el flujo de bits, entonces las
palabras de código no prioritarias ya están dispuestas, de por sí,
de manera lineal con la frecuencia y pueden volver a decodificarse
y transformarse de vuelta sin una reordenación adicional.
Si se seleccionó una codificación según el
tercer o cuarto aspecto de la presente invención, entonces o bien
puede transmitirse información de aleatorización como información
lateral, o bien está fijada a priori una distribución de
aleatorización y por tanto la conoce también el decodificador desde
el principio. Con respecto al cuarto aspecto es válido lo mismo.
Siempre existe la posibilidad de acordar de manera fija o configurar
de manera variable una distribución y entonces comunicarla al
decodificador a través de información lateral.
A continuación se entra en una determinación y
manejo ventajosos de las palabras de código prioritarias. Tras el
establecimiento de una trama para un flujo de bits codificado,
mediante la determinación de la separación de puntos de trama
utilizando una única tabla de códigos o de las separaciones de
puntos de trama utilizando varias tablas de códigos, deben
colocarse las palabras de código prioritarias en la trama, de modo
que el inicio de cada palabra de código prioritaria coincida con un
punto de trama.
Según un ejemplo de realización preferido de la
invención, esta colocación se realiza de modo que las palabras de
código se ordenan, a partir de un tipo de tabla de ordenación,
secuencialmente de manera que se introducen en la trama vacía en
cierto modo. A este respecto se empieza con la primera palabra de
código de la tabla de ordenación. Mediante la ordenación de las
palabras de código de manera que se introducen en la tabla de
ordenación puede influirse por tanto en las palabras de código
prioritarias, siendo palabras de código prioritarias siempre las
palabras de código de la tabla de ordenación que caben en la trama,
es decir, para las que están disponibles puntos de trama. Para
palabras de código a partir de la tabla de ordenación, para las que
ya no están disponibles puntos de trama, no queda otra posibilidad
que insertar las mismas en los sitios aún libres del flujo de bits.
Estas palabras de código a partir de la tabla de ordenación no son
por tanto palabras de código prioritarias en el sentido de esta
invención.
A este respecto, el número de palabras de código
prioritarias no se determina previamente. Se escriben palabras de
código prioritarias hasta que la memoria disponible para el flujo de
bits codificado está llena, es decir, hasta que ya no pueda
escribirse ninguna palabra de código prioritaria adicional. El
tamaño de la memoria se determina a partir del número total de bits
utilizados previamente para los datos espectrales, es decir, debido
a la división en tramas no se necesitan bits adicionales. La memoria
está por tanto limitada por el número de palabras de código, para
que no disminuya la eficacia de codificación debido a la ordenación
de introducción en trama. Evidentemente podrían colocarse todas las
palabras de código sobre puntos de trama para hacer que las mismas
sean robustas frente a errores. Sin embargo, esto llevaría a una
disminución considerable de la eficacia de codificación, ya que los
bits que quedan libres entre los puntos de trama están sin usar.
Un ejemplo de realización se refiere a la
determinación de las palabras de código prioritarias, es decir, de
las palabras de código que representan valores espectrales que, en
comparación con otros valores espectrales, son significativos desde
el punto de vista psicoacústico. Una línea espectral significativa
desde el punto de vista psicoacústico es por ejemplo una línea
espectral que contiene más energía que otra línea espectral. En
general puede afirmarse que cuanta más energía contenga una línea
espectral, más importante será la misma. Por tanto es importante
por un lado que las líneas espectrales con energía elevada no
presenten una interferencia, por otro lado es igualmente importante
que no se produzcan líneas espectrales con energía elevada debido a
errores.
Hasta ahora se partía de que las líneas
espectrales con energía elevada se encuentran preferiblemente en la
parte inferior del espectro. Esto es cierto en muchos casos, sin
embargo en algunos no. Un ejemplo de realización omite esta
suposición, utilizando un indicador implícitamente existente para
estimar la energía de la línea espectral o líneas espectrales
codificadas en una palabra de código, cuando se codifican varias
líneas espectrales en una palabra de código.
Este indicador es el libro de códigos utilizado
o la tabla de códigos utilizada, que por ejemplo puede ser una
tabla de códigos Huffman. En la norma AAC se utilizan por ejemplo
once tablas. Los intervalos de valores de estas tablas se
diferencian esencialmente. Los valores absolutos máximos de las
tablas 1 a 11 se representan como sigue: 1; 1; 2; 2; 4; 4; 7; 7;
12; 12; 8191.
Debido a estos intervalos de valores diferentes
el error máximo depende en los mismos de la tabla. Teniendo en
cuenta el signo para cada tabla, que o bien está disponible
explícitamente en la tabla o se transmite conjuntamente fuera de la
tabla, asciende al doble del valor absoluto mencionado. Según la
invención se realiza la determinación de las palabras de código
prioritarias mediante la tabla de códigos utilizada, siendo el
indicador el valor absoluto máximo e implícitamente el número de
tabla de códigos. En primer lugar se consideran palabras de código
cuya tabla de códigos tiene el mayor intervalo de valores. A
continuación siguen palabras de código cuya tabla de códigos tiene
el segundo valor más grande, etc. En el ejemplo de la norma AAC se
tiene en cuenta de este modo en primer lugar la tabla 11, seguida
por la tabla 9 y 10, hasta que finalmente sigue la tabla 1 y 2 con
la menor prioridad. Palabras de código prioritarias, que se colocan
en puntos de trama, son por tanto las palabras de código en la
tabla de ordenación, para las que están disponibles puntos de
trama.
En esta determinación de las palabras de código
es ventajoso el hecho de que no debe transmitirse información
adicional para el decodificador, ya que las tablas utilizadas ya se
transmiten en la información lateral y el decodificador puede
determinar a partir de esta información el orden de palabras de
código utilizado durante la transmisión.
Un ejemplo de realización adicional se refiere
al uso de ventanas de muestreo cortas o "ventanas cortas" a
diferencia de ventanas largas para la transformación de valores de
muestreo discretos en el tiempo de la señal de audio al dominio de
frecuencia para obtener valores espectrales que representan la señal
de audio. En la norma AAC se definen también, al igual que en la
norma Layer 3, ventanas de muestreo cortas ("ventanas cortas").
En el caso de ventanas cortas se utilizan, en vez de una MDCT
larga, varias MDCT cortas.
En la norma AAC se utiliza por ejemplo, en vez
de una MDCT con 1024 valores iniciales, un grupo de ocho MDCT con
128 valores iniciales en cada caso. De este modo se aumenta la
resolución temporal del codificador a costa de la resolución de
frecuencia. En general se utilizan ventanas cortas en señales
transitorias. Si se utilizan ventanas cortas, se obtienen por
ejemplo en el caso de AAC, ocho espectros completos sucesivos en el
tiempo, es decir, ocho conjuntos de valores espectrales,
comprendiendo cada conjunto de valores espectrales el espectro
completo. Sin embargo, a diferencia de las ventanas largas, la
separación entre los valores espectrales es igualmente ocho veces
más grande. Esto repre-
senta la resolución de frecuencia reducida, aunque el codificador tiene de este modo una mayor resolución temporal.
senta la resolución de frecuencia reducida, aunque el codificador tiene de este modo una mayor resolución temporal.
En la norma AAC se realiza un agrupamiento, es
decir, se forman grupos a partir de los ocho espectros. Para cada
uno de estos grupos existe un conjunto de factores de escala. En el
caso más sencillo, cada grupo contiene sólo una ventana. En este
caso deben transmitirse ocho conjuntos de factor de escala. Para
posibilitar una mayor compresión se realiza en la norma AAC por
regla general un agrupamiento de varias ventanas en un grupo,
teniendo en cuenta requisitos psicoacústicos. De este modo se reduce
el número de factores de escala que van a transmitirse para
conseguir una mejor compresión de datos. Los datos espectrales se
transmiten en grupos de manera secuencial, es decir, se escriben en
un flujo de bits codificado. Dentro de los grupos se realiza un
denominado "interleaving" según bandas de factor de
escala, es decir, una intercalación según bandas de factor de
escala.
Esto se representa mediante el siguiente
ejemplo. En el ejemplo se realizó un agrupamiento en tres grupos.
El primer grupo contiene dos ventanas, el segundo grupo contiene
tres ventanas y el tercer grupo contiene igualmente tres
ventanas. Cada espectro presenta 12 bandas de factor de escala. El agrupamiento se representa entonces como sigue:
ventanas. Cada espectro presenta 12 bandas de factor de escala. El agrupamiento se representa entonces como sigue:
1º grupo, 1ª ventana, 1ª banda de factor de
escala
1º grupo, 2ª ventana, 1ª banda de factor de
escala
1º grupo, 1ª ventana, 2ª banda de factor de
escala
1º grupo, 2ª ventanas, 2ª banda de factor de
escala
...
1º grupo, 2ª ventana, 12ª banda de factor de
escala
2º grupo, 3ª ventana, 1ª banda de factor de
escala
2º grupo, 4ª ventana, 1ª banda de factor de
escala
2º grupo, 5ª ventana, 1ª banda de factor de
escala
2º grupo, 3ª ventana, 2ª banda de factor de
escala
...
\vskip1.000000\baselineskip
Esta disposición es desfavorable para la
ordenación previa u ordenación de palabras de código a partir de la
tabla de ordenación de modo que se introducen en la trama, ya que en
la realización de una ordenación de introducción secuencial se
protegería el espectro completo de los primeros grupos, en cambio el
del último quedaría completamente desprotegido. Por tanto se
realiza en el caso de ventanas cortas una ordenación previa según
el ejemplo de realización. A este respecto se elimina en el caso de
la norma AAC el agrupamiento así como la consideración según bandas
de factor de escala. Se realiza una nueva ordenación previa, y
concretamente en unidades de líneas espectrales.
En un ejemplo de realización preferido, cada
unidad recibe 4 líneas espectrales. En la norma AAC, cada ventana
contiene de este modo 32 unidades, lo que corresponde a 128 líneas
espectrales. La disposición de los datos espectrales se realiza
como sigue:
1ª ventana, 1ª unidad
2ª ventana, 1ª unidad
...
8ª ventana, 1ª unidad
1ª ventana, 2ª unidad
2ª ventana, 2ª unidad
...
8ª ventana, 2ª unidad
1ª ventana, 3ª unidad
...
\vskip1.000000\baselineskip
Mediante esta ordenación previa se garantiza que
las bandas espectrales individuales de todas las ventanas se sitúan
adyacentes entre sí, es decir, que se escriben valores espectrales
bajos según la frecuencia a partir de los conjuntos individuales de
valores espectrales en la región anterior de la tabla de ordenación
por delante de los valores espectrales con alta frecuencia. Si
especialmente los valores espectrales en la banda espectral
inferior son significativos desde el punto de vista psicoacústico,
entonces puede realizarse, partiendo de esta ordenación previa
descrita, en la tabla de ordenación, la ordenación a partir de la
misma con introducción en la trama. Para esta ordenación previa de
las palabras de código, es decir, la determinación de las palabras
de código prioritarias, no tiene que transmitirse información
adicional, ya que el decodificador sabe exactamente mediante la
información lateral, que en este bloque o "trama" se utilizaron
ventanas cortas, y el algoritmo de ordenación en el codificador
para generar las unidades, es siempre fijo y por tanto está
programado de manera fija en el decodificador.
En este punto debe indicarse que la ordenación
previa de palabras de código en una tabla de ordenación corresponde
a la determinación de las palabras de código prioritarias, ya que
esta tabla establece en sí misma, si pueden escribirse con una
probabilidad muy alta palabras de código en puntos de trama. Las
palabras de código que pueden colocarse con una probabilidad muy
alta en puntos de trama, es decir, las palabras de código
prioritarias, son concretamente las palabras de código al inicio o
en la región anterior o superior de la tabla de ordenación.
A diferencia de esto, esta ordenación previa no
ocurrirá mediante una tabla de ordenación, sino que la misma puede
realizarse igualmente mediante una indexación, de modo que se
realiza una indexación de las palabras de código individuales,
estableciendo esta indexación el orden en el que se escriben las
palabras de código indexadas en el flujo de bits.
Por la norma AAC se conoce que algunas tablas de
códigos son de dos o de cuatro dimensiones, es decir, que una
palabra de código codifica dos o cuatro valores espectrales. Por
tanto es favorable agrupar cuatro líneas espectrales o un múltiplo
del mismo en una unidad, ya que así pueden ordenarse palabras de
código, que codifican la misma gama de frecuencias, de manera
directamente sucesiva. El número de líneas espectrales a partir de
una unidad por tanto puede dividirse preferiblemente por las
diferentes dimensiones de las tablas de códigos, es decir, el
número de líneas por cada unidad debe ser un múltiplo común del
número de las líneas por cada palabra de código y, en el mejor
caso, el mínimo común múltiplo.
Un aumento de la eficacia puede conseguirse
mediante la combinación de dos ejemplos de realización descritos.
Cuando en el caso de ventanas cortas se ha realizado la reordenación
según la invención en unidades, entonces puede seguir la
determinación de palabras de código prioritarias mediante el
indicador de tabla de códigos, de modo que el resultado de la
reordenación de unidades se reordena otra vez para garantizar que
las palabras de código a partir de tablas de códigos más altas se
convierten en palabras de código prioritarias que se colocan en
puntos de trama fijos para conseguir una alta seguridad frente a
errores. Esta combinación no es obligatoriamente necesaria, sin
embargo proporciona los mejores resultados.
Claims (8)
1. Dispositivo para decodificar un flujo de
bits, presentando el flujo de bits palabras (1, 2, 6, 7a) con
diferentes longitudes a partir de una tabla (n) de códigos y, como
información lateral, la longitud de la palabra de código más larga
que aparece realmente en un bloque (0), caracterizado
por:
- un decodificador para decodificar el flujo de bits utilizando la tabla de códigos, siendo el decodificador eficaz para detectar si una palabra de código extraída del flujo de bits es más larga que la longitud de la palabra de código más larga que aparece realmente y por tanto es una palabra de código falsa, adoptándose una contramedida cuando se detecta una palabra de código falsa de este tipo.
2. Dispositivo según la reivindicación 1, en el
que se realiza como contramedida una supresión o una ocultación de
la palabra de código falsa.
3. Dispositivo según la reivindicación 1 o la
reivindicación 2, en el que el flujo de bits representa una señal
de audio codificada, y en el que una palabra de código larga
corresponde a un valor espectral de la señal de audio que presenta
una energía elevada en comparación con una palabra de código corta
en comparación que corresponde a un valor espectral que presenta
una energía reducida en comparación.
4. Dispositivo según una de las reivindicaciones
anteriores, en el que el flujo de bits representa una señal de
audio codificada, conteniendo el flujo de bits palabras de código
con diferentes longitudes a partir de una tabla de códigos y
presentando una trama con puntos (10, 12, 14) de trama
equidistantes, comprendiendo las palabras de código palabras de
código prioritarias que representan determinados valores espectrales
de un bloque de valores espectrales que, en comparación con otros
valores espectrales, son significativos desde el punto de vista
psicoacústico, representando el bloque de valores espectrales un
espectro de un bloque de valores de muestreo temporales de la señal
de audio, y estando las palabras de código prioritarias alineadas
con puntos de trama, de modo que el inicio de una palabra de código
prioritaria, que representa un valor espectral del bloque de
valores espectrales, coincide con un punto de trama, y de modo que
el inicio de otra palabra de código prioritaria, que representa
otro valor espectral del bloque de valores espectrales, coincide con
otro punto de trama, presentando el dispositivo además las
siguientes características:
- una unidad para detectar la separación (D1) entre dos puntos de trama adyacentes utilizando la longitud de la palabra de código más larga que aparece realmente, que se transmite en el flujo de bits como información lateral, y para ajustar la separación de modo que sea igual a la longitud; y
- una unidad para leer las palabras de código prioritarias que están alineadas con los puntos de trama, en el flujo de bits codificado, coincidiendo el inicio de una palabra de código prioritaria con un punto de trama, de modo que las palabras de código prioritarias pueden decodificarse utilizando una tabla de códigos asociada para obtener valores espectrales decodificados, y se transforman de vuelta al dominio de tiempo para obtener una señal de audio decodificada.
5. Dispositivo según la reivindicación 4, en el
que el flujo de bits codificado contiene palabras de código con
diferentes longitudes a partir de al menos dos tablas de códigos y
presenta una trama con al menos dos grupos de puntos (10, 12, 14 y
14, 16, 18) de trama equidistantes y, como información lateral, para
una región, la longitud de la palabra de código más larga que
aparece realmente de la región espectral, presentando el dispositivo
además una unidad para identificar la tabla de códigos asociada a
una región espectral,
siendo la unidad para detectar además eficaz
para ajustar la separación entre dos puntos de trama para palabras
de código asociadas a la región espectral de modo que sea igual a la
longitud de la palabra de código más larga que aparece realmente de
la región espectral, y
en la decodificación, decodificándose las
palabras de código prioritarias de una región espectral con la tabla
de códigos asociada correspondiente, y
siendo el decodificador además eficaz para
detectar, para una región, las palabras de código asociadas a una
región, si una palabra de código asociada a la región es más larga
que la longitud de la palabra de código más larga que aparece
realmente.
6. Procedimiento para decodificar un flujo de
bits, presentando el flujo de bits palabras (1, 2, 6, 7a) de código
con diferentes longitudes a partir de una tabla (n) de códigos y,
como información lateral, la longitud de la palabra de código más
larga que aparece realmente en un bloque (0), con las siguientes
etapas:
- decodificar el flujo de bits utilizando la tabla de códigos, detectándose en la etapa de decodificación, si una palabra de código extraída del flujo de bits es más larga que la longitud de la palabra de código más larga que aparece realmente y por tanto es una palabra de código falsa; y
- adoptar una contramedida, cuando se detecta una palabra de código falsa de este tipo.
7. Procedimiento según la reivindicación 6, en
el que el flujo de bits representa una señal de audio codificada,
conteniendo el flujo de bits palabras de código con diferentes
longitudes a partir de una tabla de códigos, y presentando una
trama con puntos (10, 12, 14) de trama equidistantes, comprendiendo
las palabras de código palabras de código prioritarias que
representan determinados valores espectrales de un bloque de valores
espectrales que, en comparación con otros valores espectrales, son
significativos desde el punto de vista psicoacústico, representando
el bloque de valores espectrales un espectro de un bloque de valores
de muestreo temporales de la señal de audio, y estando las palabras
de código prioritarias alineadas con puntos de trama, de modo que
el inicio de una palabra de código prioritaria, que representa el
valor espectral del bloque de valores espectrales, coincide con un
punto de trama y el inicio de otra palabra de código prioritaria,
que representa otro valor espectral del bloque de valores
espectrales, coincide con otro punto de trama, presentando el
procedimiento además las siguientes etapas:
- detectar la separación (D1) entre dos puntos de trama adyacentes utilizando la longitud de la palabra de código más larga que aparece realmente, que se transmite en el flujo de bits como información lateral, y ajustar la separación de modo que sea igual a la longitud; y
- reordenar las palabras de código prioritarias, que están alineadas con los puntos de trama, en el flujo de bits codificado, de modo que se obtiene una disposición lineal con la misma frecuencia, coincidiendo el inicio de una palabra de código prioritaria con un punto de trama, de modo que las palabras de código prioritarias pueden decodificarse utilizando una tabla de códigos asociada para obtener valores espectrales decodificados, y pueden transformarse de vuelta al dominio de tiempo para obtener una señal de audio decodificada.
8. Procedimiento según la reivindicación 7,
en el que el flujo de bits codificado contiene
palabras de código con diferentes longitudes a partir de al menos
dos tablas de códigos y presenta una trama con al menos dos grupos
de puntos (10, 12, 14 y 14, 16, 18) de trama equidistantes y, como
información lateral, para una región, la longitud de la palabra de
código más larga que aparece realmente de la región espectral,
presentando el dispositivo además una unidad para identificar la
tabla de códigos asociada a una región espectral,
ajustándose en la etapa de detección de la
separación la separación entre dos puntos de trama para palabras de
código asociadas a la región espectral de modo que sea igual a la
longitud de la palabra de código más larga que aparece realmente de
la región espectral, y
en la decodificación, decodificándose las
palabras de código prioritarias de una región espectral con la tabla
de códigos asociada correspondiente, y
realizándose las subetapas de detección y
adopción, para una región, utilizando la longitud de la palabra de
código más larga que aparece realmente para la respectiva región,
que está contenida en el flujo de bits como información
lateral.
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19747119A DE19747119C2 (de) | 1997-10-24 | 1997-10-24 | Verfahren und Vorrichtungen zum Codieren bzw. Decodieren eines Audiosignals bzw. eines Bitstroms |
DE19747119 | 1997-10-24 | ||
DE19840853A DE19840853B4 (de) | 1997-10-24 | 1998-09-07 | Verfahren und Vorrichtungen zum Codieren eines Audiosignals |
DE19840853 | 1998-09-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2329466T3 true ES2329466T3 (es) | 2009-11-26 |
Family
ID=32598179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04014504T Expired - Lifetime ES2329466T3 (es) | 1997-10-24 | 1998-10-12 | Procedimientos y dispositivos para codificar o decodificar una señal de audio o un flujo de bits. |
Country Status (5)
Country | Link |
---|---|
EP (2) | EP1458103B1 (es) |
AT (1) | ATE271727T1 (es) |
DE (3) | DE19840853B4 (es) |
ES (1) | ES2329466T3 (es) |
PT (1) | PT1458103E (es) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3943881B4 (de) * | 1989-04-17 | 2008-07-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Digitales Codierverfahren |
US5040217A (en) * | 1989-10-18 | 1991-08-13 | At&T Bell Laboratories | Perceptual coding of audio signals |
EP0482888B1 (en) * | 1990-10-25 | 1997-06-04 | Matsushita Electric Industrial Co., Ltd. | Video signal recording/reproducing apparatus |
JPH04221465A (ja) * | 1990-12-21 | 1992-08-11 | Matsushita Electric Ind Co Ltd | 記録装置 |
-
1998
- 1998-09-07 DE DE19840853A patent/DE19840853B4/de not_active Expired - Lifetime
- 1998-10-12 PT PT04014504T patent/PT1458103E/pt unknown
- 1998-10-12 EP EP04014504A patent/EP1458103B1/de not_active Expired - Lifetime
- 1998-10-12 ES ES04014504T patent/ES2329466T3/es not_active Expired - Lifetime
- 1998-10-12 DE DE59811685T patent/DE59811685D1/de not_active Expired - Lifetime
- 1998-10-12 EP EP98119235A patent/EP0911981B1/de not_active Expired - Lifetime
- 1998-10-12 DE DE59814374T patent/DE59814374D1/de not_active Expired - Lifetime
- 1998-10-12 AT AT98119235T patent/ATE271727T1/de active
Also Published As
Publication number | Publication date |
---|---|
DE19840853A1 (de) | 2000-03-09 |
EP0911981A2 (de) | 1999-04-28 |
EP1458103A3 (de) | 2007-05-09 |
DE59811685D1 (de) | 2004-08-26 |
EP1458103B1 (de) | 2009-07-15 |
EP1458103A2 (de) | 2004-09-15 |
DE19840853B4 (de) | 2004-12-09 |
ATE271727T1 (de) | 2004-08-15 |
DE59814374D1 (de) | 2009-08-27 |
PT1458103E (pt) | 2009-09-29 |
EP0911981B1 (de) | 2004-07-21 |
EP0911981A3 (de) | 1999-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6975254B1 (en) | Methods and devices for coding or decoding an audio signal or bit stream | |
US6441755B1 (en) | Device and method for entropy encoding of information words and device and method for decoding entropy-encoded information words | |
US7526432B2 (en) | Apparatus and method for producing a data stream and apparatus and method for reading a data stream | |
ES2753228T3 (es) | Dispositivo de codificación de audio de voz, dispositivo de decodificación de audio de voz, procedimiento de codificación de audio de voz y procedimiento de decodificación de audio de voz | |
ES2400987T3 (es) | Atenuación de pre-ecos en una señal de audio digital | |
ES2329466T3 (es) | Procedimientos y dispositivos para codificar o decodificar una señal de audio o un flujo de bits. | |
ES2902949T3 (es) | Codificación de audio de dominio de frecuencia que soporta conmutación de longitud de transformada | |
DE60207227D1 (de) | Verfahren und gerät zur informationscodierung, verfahren und gerät zur informationsdecodierung, speichermedium und signal | |
KR20030044065A (ko) | 전송오류에 대항하여 최적 비트 보호를 제공하기 위한방법 및 장치 | |
JP3978194B2 (ja) | オーディオ信号又はビットストリームの復号化のための装置及び方法 | |
KR100407479B1 (ko) | 가변 길이의 코드 워드의 데이터 스트림을 만드는 방법 및장치와 가변 길이의 코드 워드의 데이터 스트림을 읽어내는 방법 및 장치 | |
RU2782730C1 (ru) | Процессор передатчика звуковых сигналов, процессор приемника звуковых сигналов и связанные с ними способы и носители данных |