DECODIFICACION DE DATOS CODIFICADOS EN FORMA PREDICTIVA UTILIZANDO ADAPTACION DE MEMORIA INTERMEDIA
Campo de la Invención La invención se refiere, de manera general, a la decodificación de la información comprimida digital. En particular, al menos algunas modalidades de esta invención se refieren a la decodificación de flujos de bits que representan el contenido que ha sido comprimido utilizando una o más técnicas que emplean la codificación predictiva a largo plazo. Antecedentes de la Invención Con el objeto de minimizar la cantidad de datos que tiene que ser almacenada y/o transmitida a través de un canal de comunicación, el contenido (por ejemplo, la información de audio y/o video) es frecuentemente comprimido en un flujo de datos con una menor cantidad de bits de los que podrían ser necesarios de otro modo. Numerosos métodos para esta compresión han sido desarrollados. Algunos de estos métodos emplean las técnicas de codificación predictiva. Por ejemplo, el formato de Codificación Avanzada de Audio (AAC, por sus siglas en inglés) , especificado por varios estándares del
Grupo de Expertos de Imagen en Movimiento (MPEG) , incluye varios conjuntos de herramientas para la codificación (y de manera subsiguiente para la decodificación) del contenido de REF. 198287 audio (por ejemplo, música) . Estas herramientas o perfiles incluyen los perfiles Principal, LC (de Baja Complejidad), SSR (Velocidad de Muestreo Escalable) y LTP (Predicción a Largo Plazo) . La codificación LTP puede proporcionar una calidad más alta de audio al usuario final, aunque a un precio que aumenta los requerimientos de cómputo. Esto puede originar la necesidad de una memoria y hardware de procesamiento adicional en un dispositivo, tal como un teléfono móvil o reproductor de música digital. Además, la necesidad comercial puede requerir que los dispositivos pretendidos decodifiquen y reproduzcan los datos de audio AAC para que sean capaces de acomodar múltiples perfiles. Por ejemplo, los usuarios frecuentemente desean descargar música de una diversidad de fuentes. Algunas de estas fuentes podrían codificar música utilizando el perfil AAC-LC, mientras que otros podrían codificar música o utilizando el perfil AAC-LTP. La Figura 1A es un diagrama de bloques que muestra la estructura general para un codificador AAC-LTP. Aunque la operación de estos codificadores (y algunos decodificadores correspondientes) es bien conocida, el siguiente panorama general es incluido a fin de proporcionar el contexto para la subsiguiente descripción. Una señal de audio de dominio de tiempo de entrada es recibida por un predictor 1 de largo plazo, una transformada modificada del coseno discreto (MDCT)2 y mediante un modelo psicoacústico 3. El predictor de largo plazo 1 genera los datos (los coeficientes de predicción y un retraso de fase) que pueden ser utilizados para predecir la señal de dominio de tiempo actualmente entrada en base a las señales de dominio de tiempo para las porciones anteriores del flujo de audio. Las versiones de dominio de tiempo de estas porciones anteriores son recibidas como entrada a partir de la transformada modificada inversa del coseno discreto (IMDCT) 4 y a partir de un banco de filtro de síntesis (no se muestra) , y son almacenadas por el predictor de largo plazo en una memoria intermedia (tampoco se muestra en la Figura 1A) . Los coeficientes de predicción y el retraso de fase son proporcionados por el predictor de largo plazo 1 a un multiplexor de flujo de bits 11. El audio previsto (es decir, la señal de audio de dominio de tiempo que se originaría a partir de los coeficientes de predicción y el retraso de fase calculados) es convertido en el dominio de frecuencia por MDCT 5. El audio de dominio de tiempo de entrada también es proporcionado a una MDCT 2 separada. A diferencia de la MDCT 5, que sólo transforma la versión prevista de este audio, la señal original de audio de entrada es convertida al dominio de frecuencia por MDCT 2. La salida de MDCT 2 es proporcionada a un conmutador selectivo de frecuencia (FFS) 7 (se discute más adelante) y a un sumador 6. El sumador 6 calcula la diferencia entre la salida de MDCT 5 (la versión de dominio de frecuencia de la señal prevista de audio) y la salida de MDCT 2 (la versión de dominio de frecuencia de la señal original de audio) . En efecto, la salida del sumador 6 (o error de predicción) es la diferencia entre la señal actual de audio y la versión prevista de la misma señal. La salida del error de predicción del sumador 6 es proporcionada al FFS 7. El FFS 7 recibe las entradas de control del modelo psicoacústico 3. El modelo psicoacústico 3 contiene los datos perceptuales derivados en forma experimental con respecto a los intervalos de frecuencia que son perceptibles a los escuchas humanos. El modelo psicoacústico 3 además contiene datos con respecto a ciertos tipos de patrones de audio que no son bien modelados utilizando la predicción de largo plazo. Por ejemplo, los segmentos de señal de cambio rápido o transitorio pueden ser difíciles de modelar mediante la predicción. El modelo psicoacústico 3 examina la señal de audio de entrada en el dominio de tiempo y evalúa cuales subbandas tienen que ser representadas mediante el error de predicción (del sumador 6) , los coeficientes de predicción (del predictor 1) y el retraso de fase (también del predictor 1), así como también cuales subbandas tienen que ser representadas por los coeficientes MDCT del audio original (de la MDCT 2). En base a los datos del modelo psicoacústico 3, el FFS 7 selecciona los datos que serán transmitidos al bloque 8 para su cuantificación y codificación. Para las subbandas en donde la predicción será utilizada, los coeficientes de error de predicción del sumador 6 son transmitidos al cuantificador/codificador 8. Para otras subbandas, la salida de MDCT 2 es transmitida al cuantificador/codificador 8. La salida de la señal de control del FFS 7 incluye un aviso para cada subbanda indicando si la predicción de largo plazo es permitida para esta subbanda. Entonces, las señales que provienen de FFS 7 son cuantificadas en el cuantificador/codificador 8 (por ejemplo, utilizando la codificación de Huffman) . Los datos perceptuales del modelo psicoacústico 3 también son utilizados por el cuantificador/codificador 8. Entonces, la salida del cuantificador/codificador 8 es multiplexada en el bloque 11 con datos de control que provienen del predictor de largo plazo 1 (por ejemplo, los coeficientes de predicción y el retraso de fase) y FFS 7 (avisos de subbanda) . A partir del bloque 11, los datos multiplexados son entonces proporcionados a un canal de comunicación (por ejemplo, una transmisión de radio o de Internet) o a un medio de almacenamiento. La salida del cuantificador/codificador 8 también es proporcionada al cuantificador inverso 9. La salida del cuantificador inverso 9 es transmitida hacia el conmutador selectivo de frecuencia inversa (IFFS) 10, como es la salida de MDCT 5 y las señales de control (avisos de subbanda) de FFS 7. A continuación, IFFS 10 proporciona, para cada subbanda para la cual los coeficientes cuantificados de error de predicción fueron transmitidos en el flujo de bits, la suma de los coeficientes descuantificados de error de predicción y la salida de MDCT 5. Puesto que cada subbanda para la cual la salida cuantificada de MDCT 2 fue transmitida en el flujo de bits, IFFS proporciona la salida descuantificada MDCT 2. Entonces, la salida de IFFS es convertida de regreso al dominio de tiempo mediante IMDCT 4. La salida de dominio de tiempo de IMDCT 4 es entonces proporcionada al predictor de largo plazo 1. Una porción de la salida de IMDCT 4 es almacenada en forma directa en la memoria intermedia de predicción descrita con anterioridad. Otras porciones de la memoria intermedia mantienen los cuadros de datos de audio totalmente reconstruidos (dominio de tiempo) que son generados por la superposición-adición (en el banco de filtro de síntesis) de la salida de IMDCT 4. La Figura IB es un diagrama de bloques que muestra la estructura general para el decodificador AAC-LTP. El flujo de bits de entrada es desmultiplexado en el bloque 15. Los avisos de subbanda de FFS 7 (Figura 1A) son proporcionados a IFFS 17. Los coeficientes de predicción y el retraso de fase del predictor de largo plazo 1 en la Figura 1A son proporcionados al predictor de fase 20. Los datos cuantificados de FFS 7 en la Figura 1A son descuantificados en el cuantificador inverso 16, y posteriormente, son proporcionados a IFFS 17. En base a los correspondientes valores de retraso de subbanda, IFFS 17 determina si la predicción a largo plazo fue permitida para varias subbandas. Para las subbandas en donde la predicción no fue permitida, IFFS 17 simplemente transmite la salida del cuantificador inverso 16 a IMDCT 18. Para subbandas en donde la predicción fue permitida, IFFS 17 agrega la salida del cuantificador inverso 16 (es decir, los coeficientes descuantificados de error de predicción) a la salida de DCT 21 (se discute más adelante), y transmite el resultado a IMDCT 18. Posteriormente, IMDCT 18 transforma la salida de IFFS 17 de regreso al dominio de tiempo. La salida de IMDCT 18 es entonces utilizada para la superposición-adición en el banco de filtro de síntesis (no se muestra) para producir una señal de dominio de tiempo totalmente reconstruida que es una réplica cercana de la entrada de señal original de audio en la Figura 1A. Esta señal de dominio de tiempo totalmente reconstruida puede ser entonces procesada por un convertidor de digital a analógico (no se muestra en la Figura IB) para su reproducción, por ejemplo, en uno o más altavoces. Las porciones recientes de la salida de dominio de tiempo de IMDCT 18 y de la señal de dominio de tiempo totalmente reconstruida del banco de filtro de síntesis también son almacenadas en la memoria intermedia de predicción a largo plazo (LTP) 19. La memoria intermedia LTP 19 tiene las mismas dimensiones y se pretende que duplique los contenidos de la memoria intermedia dentro del predictor de largo plazo 1 de la Figura 1A. Los datos de la memoria intermedia LTP 19 son utilizados por el predictor de fase 20 (en conjunto con los coeficientes de predicción y los valores de retraso de fase) para predecir la señal de audio de entrada en el dominio de tiempo. La salida del predictor de fase 20 corresponde con la salida del predictor de largo plazo 1 proporcionada a MDCT 5 en la Figura 1A. La salida del predictor de fase 20 es entonces convertida al dominio de frecuencia en MDCT 21, con la salida de MDCT 21 proporcionada a IFFS 17. La estructura convencional de la memoria intermedia
LTP 19 (como es prescrito por los estándares aplicables MPEG-4) se muestra en la Figura 1C. El cuadro t-1 es la señal más reciente de dominio de tiempo totalmente reconstruida formada por la superposición-adición de señales de dominio de tiempo en el banco de filtro de síntesis (no se muestra) del decodificador . El cuadro t es la salida de la señal de dominio de tiempo de IMDCT 18 y es la señal alternativa de dominio de tiempo que será utilizada para la superposición-adición en el siguiente cuadro que será salido por el banco de filtro de síntesis. El cuadro t-2 es el cuadro totalmente reconstruido del periodo previo de tiempo. La dimensión (o longitud) N de cada cuadro es de 1024 muestras. El bloque de linea rota en el lado derecho de la memoria intermedia LTP representa un cuadro de 1024 muestras de amplitud cero. Este bloque de ceros no es una parte actual de la memoria intermedia LTP 19. En su lugar, es utilizado para indicar en forma conceptual la ubicación del punto de retraso cero. De manera especifica, cuando el valor para el retraso de fase se encuentre en su máximo, son previstas 2048 muestras de dominio de tiempo en base a 2048 muestras en el cuadro t-1 y el cuadro t-2. Cuando el retraso de fase se encuentre entre el mínimo y el máximo (por ejemplo en el punto indicado como el retraso L) , las 2048 muestras antes de la ubicación del retraso de fase (es decir, hacia la derecha del punto L en la Figura 1C) son utilizadas para predecir 2048 muestras. Cuando el retraso de fase sea menor que 1024, los ceros son utilizados para las "muestras" 1023 y por debajo de la memoria intermedia LTP. Por ejemplo, cuando el retraso de fase se encuentre en su mínimo (retraso cero) las 1024 muestras en el cuadro t y las 1024 muestras de amplitud cero son utilizadas para predecir 2048 muestras. Aunque el uso de las amplitudes de puros ceros origina una reproducción menos exacta del sonido, se requiere una menor cantidad de memoria para la memoria intermedia LTP. Debido a que el cero o valores muy bajos de retraso se presentan de una manera relativamente no frecuente, la calidad total del sonido no es afectada en forma seria. Un decodificador tal como en la Figura IB y la memoria intermedia LTP asociada de la Figura 1C son frecuentemente utilizados en el dispositivo móvil tal como un reproductor portátil de música o una terminal móvil. De manera frecuente, estos dispositivos tienen recursos limitados de computación y memoria. El agregado de una capacidad adicional de memoria y procesamiento a menudo es costoso, con lo cual, se incrementa el costo total del dispositivo. Debido a que el decodificador y la memoria intermedia utilizan cantidades significantes de estos recursos, estos podrían ser limitados a la capacidad de exceso para acomodar características adicionales. Por ejemplo, a menudo es deseable que los dispositivos de reproducción de audio tengan una capacidad de avance rápido. Si la velocidad de salida del decodificador de audio fuera aumentada, numerosas operaciones de decodificación tendrían que ser realizadas a una velocidad todavía más alta. Como otro ejemplo, un dispositivo que está realizando la decodificación y la reproducción de un flujo de audio podría necesitar realizar brevemente alguna otra tarea (por ejemplo, responder a una llamada telefónica de entrada o a otra comunicación) . A menos que sea aumentada la capacidad de procesamiento y memoria, o a menos que el procesamiento y la memoria necesiten que sea reducida la decodificación y reproducción de audio, el dispositivo podría ser incapaz de realizar en forma simultánea múltiples tareas. Sumario de la Invención Este Sumario es proporcionado para introducir una selección de conceptos en una forma simplificada, los cuales son adicionalmente descritos más adelante en la Descripción Detallada. No se pretende que este Sumario identifique las características clave o esenciales de la materia reivindicada, tampoco se pretende que sea utilizada como una ayuda para determinar el alcance de la materia reivindicada. Al menos algunas modalidades de la invención incluyen un método para el procesamiento de datos que han sido codificados utilizando técnicas predictivas, en base a los datos anteriores en una memoria intermedia de codificación de predicción que tiene dimensiones conocidas. Después de la codificación y la transmisión (y/o almacenamiento) un decodificador recibe un flujo que contiene los datos codificados y la información predictiva que se originó de las predicciones de codificación. El decodificador además recibe un factor que indica (y en qué cantidad) si los datos codificados serán muestreados en forma ascendente o muestreados en forma descendente durante el proceso de decodificación. A medida que los datos codificados son decodificados , porciones de los datos decodificados son almacenadas en una memoria intermedia para uso en una subsiguiente decodificación de los datos codificados en base a una subsiguiente información predictiva. La memoria intermedia en la cual son colocados los datos decodificados tiene diferentes dimensiones que la memoria intermedia utilizada durante las operaciones de predicción realizadas por el codificador. Una porción de los datos en la memoria intermedia del decodificador es identificada, y posteriormente, es modificada de manera que corresponda con las dimensiones de la memoria intermedia de codificación de predicción. En algunas modalidades, esta modificación incluye el intercalado de los valores cero entre elementos de los datos identificados. En ciertas modalidades, los datos codificados se encuentran en el dominio de frecuencia y la decodificación incluye la conversión al dominio de tiempo. En algunas modalidades, los datos modificados de la memoria intermedia del decodificador primero son convertidos al dominio de frecuencia. Entonces, estos datos convertidos y modificados son escalados y agregados a los coeficientes de error de predicción de dominio de frecuencia, con los valores resultantes que son entonces convertidos en el dominio de tiempo . Al menos en algunas modalidades, un decodificador acomoda el muestreo ascendente durante la decodificación de los datos codificados. A medida que son decodificados los datos codificados, sólo las muestras seleccionadas de un cuadro de las muestras de dominio de tiempo totalmente reconstruidas son almacenadas en un cuadro de memoria intermedia que corresponde con los datos actuales. Breve Descripción de las Figuras El sumario anterior de la invención, asi como también la siguiente descripción detallada de las modalidades ilustradas, serán mejor entendidos cuando sean leídos en conjunto con las figuras que la acompañan, las cuales son incluidas por medio de ejemplo y no por medio de limitación con respecto a la invención reivindicada. La Figura 1A es un diagrama de bloques que muestra una estructura general para un codificador convencional AAC-LTP. La Figura IB es un diagrama de bloques que muestra la estructura general para un decodificador convencional AAC-LTP. La Figura 1C es un diagrama de bloques para una memoria intermedia LTP convencional en el decodificador de la Figura IB. La Figura 2 es un diagrama de bloques de un ejemplo de un sistema en el cual pueden ser empleadas las modalidades de la invención. La Figura 3 es un diagrama de bloques que muestra un ejemplo de un dispositivo móvil configurado para recibir y decodificar señales de audio de acuerdo al menos con algunas modalidades . La Figura 4 es un diagrama de bloques de un decodificador , de acuerdo al menos con algunas modalidades, que es adaptado para acomodar el muestreo descendente. La Figura 5 muestra la memoria intermedia LTP del decodificador de la Figura 4 cuando el factor de decimación sea 2. Las Figuras 6A-6D muestran el cálculo de cualquier serie XLPTÍ] de la memoria intermedia LTP de la Figura 5 de acuerdo con varias circunstancias. Las Figuras 7A y 7B son diagramas de flujo- que muestran la operación del decodificador de la Figura 4 de acuerdo al menos con algunas modalidades. Las Figuras 8A y 8B muestran cómo es adaptada la memoria intermedia LTP, al menos en algunas modalidades, para ajusfar el muestreo ascendente. Las Figuras 9A y 9B son diagramas de flujo que muestran la operación de un decodificador , de acuerdo al menos con algunas modalidades, cuando se está realizando el muestreo ascendente. La Figura 10 es un diagrama de bloques de un decodificador , de acuerdo al menos con algunas modalidades, que es adaptado para acomodar el muestreo ascendente.
La Figura 11 es un diagrama de bloques de un decodificador , de acuerdo al menos con algunas modalidades, que es adaptado para acomodar tanto el muestreo ascendente como el muestreo descendente. Descripción Detallada de las Invención Aunque las modalidades de la invención serán descritas mediante el ejemplo de las comunicaciones de acuerdo con el formato de Codificación Avanzada de Audio (AAC) y con el perfil de Predicción a Largo Plazo (LTP) del mismo, como es definido por el estándar del Grupo de Expertos de Imagen en Movimiento MPEG-4 ( ISO-14 , 496) , la invención no se limita a este aspecto. En particular, la invención también puede ser aplicable a otros esquemas de codificación en los cuales un flujo de datos codificados ha sido generado utilizando métodos de codificación predictiva. La Figura 2 es un diagrama de bloques de un ejemplo de un sistema en el cual pueden ser empleadas las modalidades de la invención. El origen o fuente 30 da salida a las señales comprimidas de audio AAC-LTP para su transmisión a usuarios remotos. La fuente 30 podría producir que AAC-LTP salga mediante el procesamiento en tiempo real de una señal de audio de entrada (no se muestra) , o mediante el acceso al audio previamente comprimido que ha sido almacenado en la base de datos 31. La fuente 30 transmite el audio AAC-LTP en forma inalámbrica a los dispositivos móviles 32 (por ejemplo, los teléfonos móviles configurados para recibir y decodificar las señales comprimidas de audio de la fuente 30) . Los dispositivos móviles 32 podrían estar en comunicación dentro de una red inalámbrica de largo alcance (por ejemplo, una red telefónica móvil, una red 3GPP, etc.), podrían estar en comunicación en una red inalámbrica de alcance corto (por ejemplo, una 'red BLUETOOTH) , podrían estar en comunicación por medio de un enlace inalámbrico de la Internet, podrían estar recibiendo transmisiones de radiodifusión (por ejemplo, de radio satelital) , etcétera. La fuente 30 también proporciona la AAC-LTP comprimida a través de una red inalámbrica (por ejemplo, la conexión alambrada de Internet) para la descarga a través de los dispositivos tales como la computadora personal 34. La Figura 3 es un diagrama de bloques que muestra un ejemplo de un dispositivo móvil 32 que es configurado para recibir y decodificar señales de audio AAC-LTP de acuerdo al menos con algunas modalidades. Las transmisiones inalámbricas de la fuente 30 son recibidas por medio de la antena 40. La señal de radio de entrada es desmodulada y procesada de otro modo en el bloque 41 a fin de recuperar el flujo transmitido de bits de datos digitales. El controlador 43 (por ejemplo, un microprocesador) recibe la señal recuperada digital del bloque 41. El controlador 41 separa las señales de control (por ejemplo, los coeficientes de predicción y el retraso de fase, los avisos de subbanda) que provienen de los componentes cuantificados el dominio de frecuencia que corresponden con la salida de un FFS en la fuente 30 similar al FFS 7 de la Figura 1A. El controlador 43 descuantifica estos componentes del dominio de frecuencia y proporciona estos componentes (con las señales de control) a un procesador de señal digital (DSP) 46. Entonces, el DSP 46 utiliza estos datos en el modo discutido más adelante, para generar una señal de dominio de tiempo. La señal de dominio de tiempo que proviene del DSP 46 es proporcionada a un convertidor de digital a analógico (DAC) 47 y es salida por medio de un altavoz 49. Una memoria de acceso aleatorio 44 es utilizada para almacenar las instrucciones para la operación del controlador 43 y 46, asi como también para el almacenamiento intermedio de los datos (por ejemplo, para uso como una memoria intermedia LTP) . La memoria sólo de lectura (ROM) también podría ser utilizada para almacenar las instrucciones de programación para el controlador 43 y/o DSP 46. La configuración de la Figura 3 simplemente es un ejemplo. En otras modalidades, el DSP separado no podría ser incluido, con todo el procesamiento realizado a través de un procesador único. La RAM separada también podría ser omitida, con un controlador y/o DSP en lugar de tener la RAM interna. El controlador 43, DSP 46 y la RAM 44 normalmente, tendrán la forma de uno o más circuitos integrados ("chips" o un "conjunto de chips") . La Figura 4 es un diagrama de bloques de un decodificador de acuerdo al menos con algunas modalidades de la invención, y el cual decodifica una señal de un codificador convencional tal como el que se muestra en la Figura 1A. En algunas modalidades, las operaciones representadas por los bloques 67, 68, 70, 20 y 21 de la Figura 4 (asi como también, el banco de filtro de síntesis y otros elementos no mostrados en la Figura 4) son implementados mediante el funcionamiento de las instrucciones de programación mediante DSP 46, con el bloque 69 (memoria intermedia LTP) implementado en una RAM separada 44. Como se indicó con anterioridad, no obstante uno o más de los bloques 67, 68, 70, 20 y 21 (y/u otros elementos) pueden ser implementados en forma alterna mediante la ejecución de instrucciones de programación en el controlador 43. En forma similar, la RAM 69 podría ser incluida dentro de DSP 46 y/o el controlador 43 en lugar de la RAM separada 44. El desmultiplexor de flujo de bits 15, el cuantificador inverso 16, el predictor de fase 20 y MDCT 21 operan en forma similar a los componentes numerados de la misma forma en la Figura IB. El IFFS 67 es capaz de realizar las funciones de IFFS 17 en la Figura IB, aunque también es capaz de realizar las operaciones adicionales como se describe más adelante. La IMDCT 68 es capaz de funcionar en un modo similar a IMDCT 18 de la Figura IB. Sin embargo, IMDCT 68 es adicionalmente configurada en respuesta a un factor de decimación de entrada (decimFactor) para realizar el muestreo descendente con respecto al audio de salida. De manera especifica, IMDCT 68 disminuye mediante el decimFactor el número de coeficientes MDCT que son procesados cuando se convierte una señal de dominio de frecuencia de regreso al dominio de tiempo. Cuando es realizado el muestreo descendente, el número de muestras en los cuadros almacenados en la memoria intermedia LTP 69 también es afectado. Cuando el decimFactor = 2, por ejemplo, cada cuadro en la memoria intermedia LTP 69 sólo tiene 512 muestras de longitud (contra 1024 muestras en las memorias intermedias LTP convencionales). Aunque el muestreo descendente disminuye el número de cálculos realizados en IMDCT 68 y reduce la cantidad de memoria necesaria para la memoria intermedia LTP, es introducido un problema separado. En particular, una memoria intermedia LTP muestreada en forma descendente no coincidirá con la memoria intermedia del predictor de largo plazo en el codificador AAC-LTP que originalmente produjo la señal codificada. A menos que sean realizadas etapas adicionales, un subcomponente de señal de audio en base a los contenidos de la memoria intermedia LTP 69 no coincidirá con el subcomponente correspondiente de la señal de audio prevista en el codificador. La Figura 5 muestra la memoria intermedia LTP 69 cuando el decimFactor = 2. En un modo similar a la memoria intermedia LTP convencional de la Figura 1C, el cuadro t es llenado con una señal alternativa de dominio de tiempo salida de la IMDCT 68, con el cuadro t-1 llenado a partir del cuadro de dominio de tiempo más recientemente reconstruido que es salido mediante el banco de filtro de síntesis. Debido al muestreo descendente, y como se indicó con anterioridad, los cuadros de la memoria intermedia LTP 69 son más cortos que los cuadros en la memoria intermedia LTP del decodificador . Con el fin de adaptarse a este desajuste, una porción ¾ de la memoria intermedia LTP 69 primero es identificada al menos en algunas modalidades. De manera específica, un valor desplazado (Iagd) es calculado en base al valor de retraso de fase transmitido a partir del codificador. Entonces, Xd es llenado con los contenidos de la memoria intermedia LTP 69 comenzando en lagd y el procedimiento regresa en tiempo (hacia la izquierda en la Figura 5) para dos longitudes de cuadro de la memoria intermedia LTP actual 69 (1024 muestras en el ejemplo de la Figura 5) . Las muestras de Xd son entonces expandidas por el procesador previo 70, en el modo descrito más adelante, para así comparar de manera más estrecha la memoria intermedia LTP en el codificador. La Figura 6A muestra la memoria intermedia LTP 69 y la serie de datos XD en mayor detalle. El punto de inicio para XD es identificado utilizando lagd, el punto final para XD es identificado en base al factor de decimación actual (decimFactor) . El cálculo de lagd se describe más adelante. Al menos en algunas modalidades, XD es implementado como una serie que tiene 1024/elementos decimFactor (es decir, [0, 1, 2, ... (1024/decimFactor-l)]) . El elemento de serie Xd[ ] es llenado con la muestra en la memoria intermedia LTP 69 después del punto de inicio (la muestra n en la Figura 6A, Xd[l] lleno con la siguiente muestra (n+1), etc., con d
[1023] lleno con la "última" muestra. Entonces, XD[] es expandido en una serie XLPT[] que tiene el mismo número de muestras utilizadas por el predictor de largo plazo en el codificador (por ejemplo, 1024 muestras) . De modo que XLPT[] mezclará nuevamente de manera más estrecha las muestras utilizadas para la predicción a través del predictor de largo plazo dentro del codificador, los contenidos de XD[] son uniformemente distribuidos a través de XLPT[] con valores de cero introducidos para las ranuras de muestra de intervención en XLPTÍ] · Como se muestra en la Figura 6A, esto origina XLPTÍO] = ¾[0], XLpT[l) = 0, XLPT[2] = Xd[l], ... ¾Pr
[1023] = 0. Al menos en algunas modalidades, y como se muestra en la Figura 6B, XLPT[) es llenado en un modo ligeramente diferente cuando el valor para la cantidad lagOffset = 0 (el cálculo de lagOffset se describe más adelante) . En este caso, es invertido el orden de los ceros y los elementos ¾[] . Esto es realizado a fin de producir una señal de dominio de tiempo prevista que sea alineada totalmente con el tiempo que represente la misma señal longitudinal de tiempo que pudiera originarse si el decimFactor fuera igual a 1. Las Figuras 6C y 6D son similares a las Figuras 6A y 6B, aunque es mostrada la generación de XLPTÍ] cuando el decimFactor = 4. Las muestras de XLPTÍ] son utilizadas por el predictor de fase 20 para generar una predicción de dominio de tiempo de la señal original de audio. Esta predicción aproximará la predicción que es salida por el predictor de largo plazo dentro del codificador (por ejemplo, la señal transferida del predictor de largo plazo 1 a MDCT 5 en la Figura 1A) . La salida del predictor de fase 20 es entonces proporcionada a MDCT 21 para su conversión al dominio de frecuencia. Al menos en algunas modalidades, esto origina una serie XMDCT[] que contiene coeficientes MDCT. Como puede apreciarse por aquellas personas expertas en la técnica, XMDCTÍ] no necesariamente tendrá el mismo número de elementos que XLPTÍ] - LOS coeficientes MDCT en XMDCTÍ] son entonces proporcionado a IFFS 67. Entonces, IFFS 67 agrega los coeficientes de XMDCTÍ] a los coeficientes cuantificados de error de predicción (por ejemplo, la salida del sumador 6 de la Figura 1A) en el modo descrito más adelante. Las Figuras 7A y 7B son diagramas de flujo que muestran la operación de un decodificador AAC-LTP de acuerdo al menos con algunas modalidades, y como se describió con anterioridad en conexión con las Figuras 4-6D. La operación del decodificador comienza en la Figura 7A y continúa en el bloque 80, en donde es recibido un flujo de datos de entrada (por ejemplo, mediante el desmultiplexor de flujo de bits 15) . El flujo de datos de entrada incluye avisos de subbanda y la información de predicción (por ejemplo, los coeficientes de predicción y el retraso de fase salidos por el predictor 1 de la Figura 1A) , asi como también, los datos cuantificados del dominio de frecuencia. Para algunas subbandas, los datos del dominio de frecuencia son el resultado de una MDCT en una entrada de audio original (por ejemplo, como la salida por la MDCT 2 de la Figura 1A) . Para otras subbandas, los datos de dominio de frecuencia son los valores de error de predicción (por ejemplo, que son salidos por el sumador 6 en la Figura 1A) . El decodificador continúa en el bloque 81, en donde los avisos de subbanda y la información de predicción son extraídos del flujo recibido de datos. Los avisos de subbanda son transmitidos a IFFS 67 (Figura 4), y la información de predicción es transmitida al predictor de fase 20. El retraso de fase también es transmitido a un procesador previo 70. Regresando a la Figura 7A, el decodificador continúa en el bloque 82, en donde los datos cuantificados de dominio de frecuencia son descuantificados y transmitidos a IFFS 67. La operación continúa en el bloque 83, en donde el decodificador identifica (utilizando los avisos de subbanda e IFFS 67) las subbandas que serán reproducidas utilizando los datos predictivos y las subbandas que serán reproducidas a partir de los coeficientes MDCT del audio original de entrada. En el bloque 84, y puesto que las subbandas que serán reproducidas utilizando los datos predictivos, el decodificador combina los valores descuantificados de error de predicción (salidos del sumador 6 en la Figura 1A) con las predicciones del dominio de frecuencia en base a los contenidos de la memoria intermedia LTP 69 [XMDCTÍ] , como se describió con anterioridad) . De manera especifica, las muestras del dominio de frecuencia de MDCT 21 (XMDCTÍ] ) son escaladas y agregadas a los valores de error de predicción (representados por conveniencia como la serie Xqí]). Cuando no esté sucediendo el muestreo descendente, los valores en XMDCTÍ] son escalados ppr un factor (cLTP) que es transmitido en el flujo de datos al decodificador . Cuando esté sucediendo el muestreo descendente, el decodificador agrega XMDCTÍ] a Xqí] en IFFS 67 de acuerdo con el siguiente pseudocódigo (que sigue la sintaxis del lenguaje de programación C) . para (sfb = 0; sfb<ltp_bands ; sfb++) si (ltp_used [sfb] ) { para (bin = startBinOffset [sfb] ; bin < endBinOffset [sfb]; bin++) Xg[bin] = Xg[bin] + XWDCr[bin] * scale; } En el código anterior, "ltp_bands" es el limite de banda de frecuencia para el cual las señales de error de predicción pueden ser transmitidas. Para modalidades implementadas en conexión con la codificación AAC-LTP, este valor es especificado por el estándar aplicable MPEG-4. En otras palabras, el modelo psicoacústico normalmente especificará las subbandas de la señal de audio de entrada que serán representadas por los coeficientes MDCT (salida mediante MDCT 2 de la Figura 1A) o a través de los coeficientes de error de predicción (salidos por el sumador de la Figura 1A) . Si cada una de estas subbandas fuera numerada 0, 1, 2, ... k, "ltp_bands" seria el más alto que aquellos números que corresponden con la subbanda en la cual fue utilizada la predicción a largo plazo. El valor "ltp_used [ sfb] " indica si para la subbanda sfb es permitida la predicción a largo plazo. En otras palabras, ltp_used[] se encuentra fuera de los avisos de subbanda entrados a IFFS 67 en la Figura 4. Las series "startBinOffset [] " y "endBinOffset [ ] " contienen los índices de inicio y finalización, de manera respectiva, para cada subbanda. En particular, startBinOffset [sfb] y endBinOffset [sfb] son los respectivos índices de inicio y finalización para la subbanda sfb. Los índices de inicio y finalización para todas las subbandas también son especificados por los estándares aplicables MPEG-4. La variable "escala" es ya sea cLTP o el factor de corrección adoptivo derivado del coeficiente LTP y de las propiedades de los espectros cuantificados , como es señalado en la ecuación 1. Ecuación 1:
(CLTP, s decimFactor de otro modo
f riedmPactor-1 "\ en donde c2LTP = ???? 1, f"JcLlvJ ^ ^ V3l°reS cuantlflcados para la banda sfb fueran cero, o además C2LTP™ ^UTV
Como puede ser apreciado por personas expertas en la técnica, no podrían existir valores de predicción [X durante una o más fases iniciales a través del circuito del algoritmo mostrado en la Figura 7A. En estos casos, X Í] puede ser inicialmente sembrado con ceros. A partir del bloque 84, el decodificador continúa en el bloque 85 y determina (por ejemplo, en base al factor de decimación recibido) si el muestreo descendente será realizado. Si no, el decodificador continuaría en la derivación "No" en el bloque 86 y continuaría en los datos de dominio de frecuencia de IFFS 67 en un modo convencional. El procesador previo 70 (Figura 4) es inactivo cuando no exista muestreo descendente, y XLTP[] es obtenido a partir de la memoria intermedia LTP 69 en un modo convencional. A partir del bloque 86, el decodificador continúa en el bloque 87 (se describe más adelante) . Si en el bloque 85 el decodificador determinara que el muestreo descendente será realizado, el decodificador continuaría por medio del conector fuera de página A, a la Figura 7B. En el bloque 101 de la Figura 7B, el decodificador cambia los contenidos del cuadro t-1 de la memoria intermedia LTP 69 al cuadro t-2 y almacena las muestras del cuadro de dominio de tiempo más recientes totalmente reconstruido (salido a través del banco de filtro de síntesis) en el cuadro t-1. En el bloque 102, y utilizando IMDCT 68, el decodificador genera muestras alternativas de datos de dominio de tiempo utilizando los datos de dominio de frecuencia de IFFS 67 y el factor de decimación, y almacena aquellas muestras alternativas en el cuadro t de la memoria intermedia LTP 69. En el bloque 103, el decodificador calcula el valor para lag^ utilizando las Ecuaciones 2 y 3. Ecuación 2: lagOffset Itpjag- * decimFactor
Ecuación 3: p_lag decimFactor La cantidad "ltp_lag" en las ecuaciones 2 y 3 es el valor para el retraso de fase transmitido por el codificador, y este valor supone que la memoria intermedia LTP es de tamaño convencional. El símbolo "L representa una función de piso que regresa el valor que representa el entero más grande que es menor o igual al argumento de función de piso. A continuación, el decodificador continúa en el bloque 104 y marca los puntos "START" y "END" en la memoria intermedia LTP, y genera la serie ¾?· Entonces, el decodificador continúa en el bloque 105 y genera la serie XLPTÍ] de ¾[]· Señalado más adelante se encuentra el pseudocódigo, que sigue de manera general la sintaxis del lenguaje de programación C, para la generación XLPTÍ] de acuerdo al menos con algunas modalidades. fulldx, predLastdx: fulldx = (N* decimFactor ) -1 ; predLastdx = N -1; para (i = predLastdx; i>=0; i— )
si (lagOffset)
para ( j=0; j <decimFactor XLPT[ fulldx-] = 0; XLPTÍ fulldx- además { XiPr[fulldx— ] = Xd[i] ; para (i=0; j <decimFactor -l;j++) Xlpr[fulldx--] = 0; } } La variable "N" en el código anterior es el tamaño de cada cuadro de memoria intermedia LTP 69 en la presencia del muestreo descendente. Para los ejemplos de las Figuras 6A-6D, N es igual a 1024/decimFactor . Aunque los valores comunes para el decimFactor son 2 y 4, también podrían utilizarse otros valores. En forma similar, la invención no se limita al uso en conjunto con sistemas que emplean un tamaño de cuadro de memoria intermedia LTP, en la ausencia del muestreo descendente, de 1024 muestras. Los operadores "—" y "++" indican el aumento y disminución, de manera respectiva, durante cada paso a través de un circuito. Entonces, el decodificador continúa en el bloque 106 y realiza una MDCT en base a XLTp[ ] a fin de obtener una serie de coeficientes de dominio de frecuencia XMDCTÍ] ¦ Los valores recientemente calculados XMDCTÍ] son transmitidos a IFFS 67 para su combinación con los valores de error de predicción (-¾[]) que serán recibidos en una subsiguiente porción del flujo de datos. Del bloque 106, el decodificador regresa (por medio del conector fuera de página B) al bloque 87 de la Figura 7A. En el bloque 87, el decodificador determina si existen datos adicionales de audio para procesar. Si fuera asi, el decodificador regresaría al bloque 80 en la derivación "Si". De otro modo, el algoritmo finalizaría. En algunas modalidades, el decodificador también es capaz de acomodar el "muestreo ascendente". En otras palabras, en algunas ocasiones es deseable incrementar (mediante la interpolación de los coeficientes MDCT recibidos desde un codificador) el número de coeficientes MDCT que son utilizados para crear una señal de salida de dominio de tiempo. Esto podría ser realizado, por ejemplo, a fin de generar una señal que sea compatible con otros dispositivos. Sin embargo, el muestreo ascendente también puede provocar un desajuste entre la memoria intermedia LTP en el codificador y la memoria intermedia LTP en el decodificador . Por ejemplo, cuando se realice la decodificación del audio convencional AAC-LTP, un factor de muestreo ascendente (o interpolación) de 2 dará por resultado cuadros de memoria intermedia LTP que tengan 2048 muestras a menos que sean efectuadas etapas adicionales . Las Figuras 8A y 8B ilustran cómo es adaptada una memoria intermedia LTP, al menos en algunas modalidades, para ajusfar el muestreo ascendente. Las Figuras 8A y 8B suponen un factor de muestreo ascendente (o interpolación) "upSampFactor" de 2, aunque también podrían utilizarse otros valores. Como se muestra en la Figura 8A, sólo cada muestra upSampFactorth de la salida de cuadro totalmente reconstruida a través del banco de filtro de síntesis es movida hacia el cuadro t-1 de memoria intermedia LTP, con el cuadro t-1 movido hacia el cuadro t-2 durante el subsiguiente período de tiempo. El cuadro t mantiene la mayoría de la salida de señal de dominio de tiempo alternativa e interpolada por IMDCT. Como se muestra en la Figura 8A, el cuadro t tiene un tamaño de 1024*upSampFactor . Al menos en algunas implementaciones , el cuadro t no es parte de la memoria intermedia LTP. La salida IMDCT alternativa de dominio de tiempo es almacenada en forma temporal en cualquier lugar dentro del decodificador . En estas implementaciones, el acceso a los datos representados por el cuadro t es conseguido mediante indicadores de dirección a las ubicaciones de memoria utilizadas para almacenar en forma temporal la salida IMDCT alternativa e interpolada durante la superposición-adición. Un arreglo similar de punto podría ser implementado para el cuadro t en las modalidades de las Figuras 4-7B. Cuando el retraso de fase se encuentre en su valor máximo, y como se muestra en la Figura 8A, XLTPÍ] es obtenido en forma directa a partir de los cuadros t-1 y t-2. Cuando el retraso de fase sea menor que el máximo, y como se muestra en la Figura 8B, la porción de XLTPÍ] que se extiende más allá del cuadro t es llenado en forma directa a partir del cuadro t-1 y (en algunos casos) el cuadro t-2. La porción de XLTP[] que corresponde con el "cuadro" de todos ceros es llenada con ceros. La porción de X?TP[] que corresponde con el cuadro t es llenada tomando cada muestra upSampFactorth del cuadro t. Por simplicidad, la transferencia de muestras al cuadro t y el cuadro t-1 no se muestra en la Figura 8. Las Figuras 9A y 9B son diagramas de flujo que muestran la operación de un decodificador AAC-LTP, de acuerdo al menos con algunas modalidades cuando se está realizando el muestreo ascendente. Las operaciones que corresponden con los bloques 150-153, 156 y 157 son generalmente las mismas que aquellas que corresponden con los bloques 80-83, 86 y 87 descritas en conexión con la Figura 7A y de esta manera, no serán adicionalmente descritas. Las operaciones que corresponden con el bloque 154 son similares a aquellas del bloque 84, excepto con respecto a la escala de los valores XMDCTÍ] cuando se está realizando el muestreo ascendente. Dentro de IFFS 67 (véase la Figura 10 que se discute más adelante), el decodificador agrega XMDCT[] a Xg[] de acuerdo con el mismo pseudocódigo discutido con anterioridad para el bloque 84 de la Figura 7A. Sin embargo, en el algoritmo de la Figura 9A, la variable "escala" es establecida en cLTp*upSampFactor . El bloque 155 también es similar al bloque 85 de la Figura 7A, excepto que el decodificador determina en el bloque 155 (por ejemplo, en base al factor recibido de muestreo ascendente o de interpolación) si será efectuado el muestreo ascendente. Si fuera asi, el decodificador continuaría por medio del conector fuera de página C a la Figura 9B. En el bloque 180 de la Figura 9B, el decodificador cambia los contenidos del cuadro t-1 de la memoria intermedia LTP 69' (Figura 10) al cuadro t-2. El decodificador también almacena cada muestra upSampFactorth de la más recientemente muestra de dominio t de tiempo totalmente reconstruida (del banco de filtro de síntesis) en el cuadro t-1. En el bloque 182, el decodificador genera las muestras de datos de dominio de tiempo interpoladas y alternativas utilizando los datos de dominio de frecuencia de IFFS 67' y el factor de muestreo ascendente, y almacena estas muestras alternativas en el cuadro t. En el bloque 183, el decodificador determina si el retraso de frase {ltp_lag) se encuentra en su valor máximo. Si fuera así, el decodificador continuaría en la derivación "Si" al bloque 184, en donde XÍTp[ ] es llenado de los cuadros de memoria intermedia t-1 y t-2. A partir del bloque 184, el decodificador entonces continúa en el bloque 187 (se discute más adelante) . Si el retraso de fase fuera menor que el máximo, el decodificador continuaría en la derivación "No" del bloque 183 al bloque 186. En el bloque 186, XLTPÍ] es generado utilizando el valor ltp_lag transmitido a partir del decodificador . Para porciones de XLTP[] que correspondan con el cuadro t, sólo cada muestra upSampFactorth sería copiada en XLTPÍ] · A partir del bloque 186, el decodificador continúa en el bloque 187 y realiza una MDCT en base a XLTPÍ] para obtener una serie de coeficientes de dominio de frecuencia XMDCTÍ] ¦ A partir del bloque 187, el decodificador regresa al bloque 157 (Figura 9A) por medio del conector fuera de página D. La Figura 10 es un diagrama de bloques de un decodificador, de acuerdo al menos con algunas modalidades, que es configurado para realizar las operaciones de las Figuras 9A y 9B. Los componentes 15, 16, 20 y 21 son similares a los componentes numerados del mismo modo que se describen en conjunto con las Figuras IB y . Los componentes 67', 68', 69' y 70' son similares a los componentes 67, 68, 69 y 70 de la Figura 4, aunque son configurados para acomodar el muestreo ascendente en el modo descrito con anterioridad en conjunto con las Figuras 8A-9B. La Figura 11 es un diagrama de bloques de un decodificador , de acuerdo al menos con algunas modalidades adicionales, que es configurado para acomodar tanto el muestreo ascendente como el muestreo descendente. Los componentes 15, 16, 20 y 21 son similares a los componentes numerados del mismo modo descritos en conjunto con las Figuras IB, 4 y 10. Los componentes 67", 68", 69" y 70" son similares a los componentes 67, 68, 69 y 70 de la Figura 4, aunque también son configurados para acomodar el muestreo ascendente en el modo descrito con anterioridad en conjunto con las Figuras 8A-9B. Aunque los ejemplos específicos para realizar la invención han sido descritos, aquellas personas expertas en la técnica apreciarán que existen numerosas variaciones y permutaciones de los sistemas y métodos descritos con anterioridad que se encuentran contenidos dentro del espíritu y alcance de la invención como es señalado en las reivindicaciones adjuntas. Por ejemplo, la invención también podría ser implement.ada como un medio susceptible de ser leído por máquina (por ejemplo, RAM, ROM, una memoria instantánea separada, etc.) que tiene instrucciones ejecutables en máquina almacenadas en el mismo, de manera que cuando las instrucciones sean leídas y ejecutadas por el dispositivo adecuado (o dispositivos), sean efectuadas las etapas del método de acuerdo con la invención. Todavía como otro ejemplo, los decodificadores tales como se describe con anterioridad también podrían ser implementados en otros numerosos tipos de dispositivos (por ejemplo, reproductores portátiles de música y otros tipos de dispositivos electrónicos de consumo) . Estas y otras modificaciones se encuentran dentro del alcance de la invención como es señalado en las reivindicaciones adjuntas. En las reivindicaciones, varias porciones son introducidas con referencias de letra o número por conveniencia. Sin embargo, el uso de estas referencias no sólo implica una relación temporal no requerida de otro modo por el lenguaje de las reivindicaciones . Se hace constar que con relación a esta fecha el mejor método conocido por la solicitante para llevar a la práctica la citada invención, es el que resulta claro de la presente descripción de la invención.