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 PDF

Info

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
Application number
ES04014504T
Other languages
English (en)
Inventor
Ralph Sperschneider
Martin Dietz
Andreas Ehret
Karlheinz Brandenburg
Heinz Gerhauser
Ali Nowbakht-Irani
Pierre Lauber
Roland Bitto
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
Priority claimed from DE19747119A external-priority patent/DE19747119C2/de
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 ES2329466T3 publication Critical patent/ES2329466T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details 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/66Details 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/662Details 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/35Unequal 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H20/00Arrangements for broadcast or for distribution combined with broadcast
    • H04H20/44Arrangements characterised by circuits or components specially adapted for broadcast
    • H04H20/46Arrangements characterised by circuits or components specially adapted for broadcast specially adapted for broadcast systems covered by groups H04H20/53-H04H20/95
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04HBROADCAST COMMUNICATION
    • H04H20/00Arrangements for broadcast or for distribution combined with broadcast
    • H04H20/65Arrangements characterised by transmission systems for broadcast
    • H04H20/71Wireless 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.
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.
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:
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.
ES04014504T 1997-10-24 1998-10-12 Procedimientos y dispositivos para codificar o decodificar una señal de audio o un flujo de bits. Expired - Lifetime ES2329466T3 (es)

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)

* Cited by examiner, † Cited by third party
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 記録装置

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) Процессор передатчика звуковых сигналов, процессор приемника звуковых сигналов и связанные с ними способы и носители данных