Generalidades

Las señales de audio, producto de trasducciones acustoeléc­tricas son en la gran mayoría de los casos de tipo analógicas. Es decir, una señal eléctrica de magnitud finita y continua en el tiempo, con niveles variables de acuerdo a los valores de la información ori­ginal, acotados entre dos límites. Esta simple representación ha per­mitido la transmisión, a través de métodos de modulación adecuados, y el almacenamiento de la información. Sin embargo, la eficiencia y efi­cacia de estos procedimientos no son perfectos. La aparición de rui­dos, de origen natural o creados por el hombre, y de distorsiones li­neales y alinéales propias del canal de transmisión deterioran la se­ñal analógica en forma más o menos severa, según los casos.

El desarrollo de la tecnología digital ha posibilitado la incorpo­ración de nuevas formas de tratamiento de la informa­ción, que permiten disminuir los efectos de tales disturbios e imper­fecciones. Pero la digitalización trae como consecuencias un aumento sustancial del ancho de banda necesario para la transmisión y un aumento de la capacidad necesaria para el almacenamiento. En consecuencia, uno de los desarrollos más recientes y prometedores es la compresión de datos que intenta disminuir algunos de los efectos no deseados de la digitalización.

La reducción de la velocidad de transmisión o tasa de bits (directamente relacionada con el ancho de banda de transmisión) es necesaria porque los costos de transmisión aumentan con dicha velocidad. Por lo tanto es imperativo el uso de técnicas de compresión para conseguir la más baja velocidad posible que proporcione una aceptable calidad de imagen y audio en una determinada aplicación.

La digitalización de las redes de telecomunicaciones ha traído también un cambio en las características y calidad de las señales transportadas, y puede afirmarse que las señales digitales son transportadas con una facilidad cada vez mayor. En especial, las señales de televisión, tanto normales como de alta calidad, si bien eran aptas para su transporte digital, debían enfrentarse a la necesidad de un transporte de información en cantidades cada vez mayores.

En consecuencia, durante mucho tiempo fue notorio el interés de encontrar la posibilidad de reducir la velocidad de transmisión necesaria aprovechando las características específicas de las señales de audio y voz.

Uno de los principales requisitos para el éxito de cualquier sistema de compresión es la compatibilidad entre terminales. Por consiguiente, es necesario encontrar estándares nacionales e internacionales para velocidades de transferencia de datos, interfaces, protocolos y señalización.

La compresión digital de audio es un campo cada vez más importante y activo. El progreso en los algoritmos de compresión, la tecnología VLSI, y las normas de codificación han hecho del audio digital una tecnología practicable para muchas aplicaciones. Ante todo, se han desarrollado muchos nuevos algoritmos de compresión, que permiten la transmisión o el almacenamiento de audio digital con excelente calidad a tasa de datos razonables. Además, el avance en la tecnología VLSI hace posible implementar algoritmos sofisticados de compresión para aplicaciones en tiempo real de una manera eficaz en función de los costos. Finalmente, surgieron rápidamente las normas para la compresión de audio que facilitan las plataformas comunes de comunicación. Como resultado de todo esto, se están formando nuevas alianzas, comercializándose nuevos productos, efectuándose nuevos ensayos, y se están suministrando nuevos servicios, con lo cual la compresión digital de audio está adquiriendo cada vez una importancia mayor.

A fin de normalizar todo lo referente al tema compresión, la Organización Internacional de Normas ( ISO : I nternational S tandards O rganization) creó un subcomité en conjunto con la Comisión Internacional Electrotecnia ( IEC : I nternational E lectrotechnical C ommission) denominado “Grupo de Expertos en Imágenes en Movimiento” MPEG ( M oving P ictures E xperts G roup). Este grupo de trabajo ha desarrollado dos normas, una para el vídeo y audio digital de computadoras identificada por la sigla MPEG-1 (publicada en noviembre de 1992) y otra para el vídeo y audio digitales empleados en la radiodifusión y en la distribución filoguiada de tales señales, bautizada con la denominación MPEG-2 . En marzo de 1993 el MPEG publicó una propuesta de la norma MPEG-2, en la que se definió que el objetivo de calidad buscado era el nivel establecido en la Recomendación 601 de la UIT-R (ex CCIR: Comité Consultivo Internacional de Radiocomunicaciones). En julio de 1993 se publicaron los requisitos establecidos por la Norma MPEG-2. La ISO esta trabajando en una nueva iniciativa para la codificación a tasa muy baja de bits de información de audio y de vídeo ( MPEG-4 ) que se presentará en 1999.

El desarrollo de MPEG-1 (en lo que a audio se refiere) se orientó hacia las técnicas para reducir la tasa de bits a 1.5 Mbps como límite superior.

El MPEG no especifica una técnica única de compresión, sino un conjunto de las herramientas de compresión que pueden usarse en con­formidad con reglas exactas de una sintaxis de compresión. Estas re­glas exactas facilitan el intercambio de flujo de bits entre aplicaciones diferentes.

En éste proyecto se introducirán primero conceptos generales sobre compresión y otros temas necesarios para el entendimiento de las técnicas utilizadas en los sistemas que se ajustan a las normas MPEG 1. Se tratará exclusivamente lo relacionado a la compresión del audio. Luego se expondrán temas más relacionados a la implementación de diferentes algoritmos necesarios para los codecs MPEG 1.

Definición de compresión

La compresión de las señales es el proceso mediante el que se ob­tiene la reducción del caudal de datos a transmitir y/o almacenar.

Este proceso tiene que ser eficaz, esto es: la técnica empleada para la re­ducción debe permitir que el terminal receptor y/o reproductor pre­sente la información de modo que, luego de expandirla, los observado­res y/u oyentes no se encuentren en capacidad de notar diferencia alguna si tuvie­ran la oportunidad de comparar la señal original con la así procesada. Además, el proceso tiene que ser eficiente, es decir: ha de efectuarse en tiempo real y con un costo que justifique los beneficios pretendi­dos. El dominio elegido para este proceso es el digital, por las in­numerables ventajas que posee sobre el analógico.

Compresión, reducción de la tasa de bits y reducción de datos son todos términos que significan básicamente lo mismo en este con­texto. En esencia, compresión significa que la misma información se transfiere usando una menor tasa de datos. Se debe indicar que en el lenguaje tradicional del audio, “compresión” significa un proceso en el cual se reduce el rango diná­mico de la señal representativa del sonido. En el lenguaje digital la misma palabra significa que la tasa de bits se reduce, idealmente dejando sin cambios la diná­mica de la señal. Por lo tanto en este contexto se adoptará el último significado.

La compresión puede ser utilizada de dos maneras diferentes:

1) En transmisión

2) En almacenamiento

La compresión utilizada en transmisión se resume en la figura 1.1. Se puede ver en la figura 1.1.A que el compresor reduce la tasa de datos de la fuente. Los datos comprimidos atraviesan un canal de comunicación y luego son vueltos a la tasa original mediante el expansor . La relación entre la tasa de datos de la fuente y la tasa de datos del canal se llama factor de compresión . Se usa también el término ganancia de codificación . A veces a un compresor y un expansor en cascada se los denomina com­pansor . El compresor puede igualmente bien llamarse codificador y el expansor decodificador en cuáles casos el par en tándem puede denominarse codec. En las comunicaciones, el costo de los enlaces de datos es la mayoría de las veces proporcional (groseramente) a la tasa de datos y por lo tanto es que surge una cierta presión económica para usar un factor alto de compresión. Sin embargo, se debe tener en mente que la implementación de un codec también tiene un costo que sube con el factor de compresión y en consecuencia será necesario llegar a un compromiso.

La figura 1.1.B muestra el uso de un codec para almacenamiento de información. El uso de la compresión en aplicaciones de almacenamiento es sumamente poderoso. Es decir, que el mismo trae numerosas ventajas como ser que el tiempo de reproducción medio se extiende en proporción al factor de compresión puesto que, por ejemplo, en una cinta puede almacenarse más información. En el caso de las cintas, el tiempo de acceso se mejora por­que la longitud de cinta necesaria para una grabación determinada se reducirá y por lo tanto puede ser rebobinada más rápidamente.

index clip image0033 Compresión de audio MPEG

Figura 1.1.a. Compresión utilizada en transmisión.

index clip image0052 Compresión de audio MPEG

Figura 1.1.B. Uso de un codec para almacenamiento de información.

Razones de las técnicas de compresión

El audio comenzó como un medio analógico. Las señales de audio se capturaron, almacenaron, procesaron, y transmitieron usando técnicas analógicas en las que una señal “forma” en sí misma el sonido.

Hoy, el audio (y la televisión) reúne otro tipo de información electrónica y las tecno­logías utilizadas en comunicaciones son totalmente digitales. En vez de emplear formas de onda analógicas, las señales de audio se digitalizan, lo cual significa que la información visual se muestrea en muchos puntos en el espacio y en el tiempo, y estos valores de muestreo se con­vierten en códigos digitales binarios (O’s y 1′s). Estos valores digita­les, no son señales analógicas en sí mismos, son los qué luego se almacena­rán en cinta, disco, o silicio y se transmiten por cable o aire utilizando adecuados métodos de modulación.

El audio (y vídeo) digital involucra una cantidad muy grande de datos. Al repre­sentar las señales de audio en forma digital pueden ponerse a prueba tanto el almacenamiento, la capacidad de dispositivos, como graba­dores, discos, sistemas basados en RAM, etc., y también pueden retarse la capacidad de transporte de información de los canales de transmisión.

La transmisión, almacenamiento, y procesamiento de la señal de audio digital requiere la manipulación de cuantiosos flujos de datos (mayor aún la compuesta de vídeo y audio). La ve­locidad de estos flujos de datos se llama tasa de bits , la cual mide la cantidad de datos en bits por segundo . Cuanto más alta es la cali­dad de la señal de audio representada, más alta es la tasa de bits, lo cual implica un mayor desafío para los dispositivos de almacenamiento y para los canales de transmisión.

Las señales de audio digital ocupan mucho más ancho de banda que sus equivalentes analógicas. Por lo tanto los sistemas que pueden re­ducir los requerimientos de espectro sin empobrecer la calidad son verdaderamente estimados. Ellos permiten que la transmisión digital sea práctica y económica. Ahora están disponibles varios sistemas que permiten la transmisión de audio digital de alta calidad en menos de un cuarto del an­cho de banda previamente requerido.

Con la amplia escala de aceptación de los discos compactos (CD), los beneficios del audio de alta fidelidad digital han atraído dramáticamente la atención de los usuarios y profesionales. La claridad y robustez del CD no han sido equiparada por ninguno de los otros reproductores domésticos de la anterior tecnología. Además, en los últimos años, se puede apreciar que la demanda por sonido de alta calidad se ha filtrado a través de muchas otras áreas de la industria del entretenimiento.

Respondiendo a esta creciente demanda por mejorar la calidad del sonido, muchas compañías de audio y autoridades del broadcasting han determinado su intención por desarrollar los medios de audio digital, prometiendo un amplio rango de futuros servicios digitales.

Aunque la grabación de audio digital y la transmisión ofrecen muchas ventajas sonoras y opera­cionales sobre su contraparte analógica (inmunidad al ruido, mejor ancho de banda de audio y múltiples reproducciones sin degradación de la señal) esta claro que las señales de audio digital ocupan un extremadamente amplio ancho de banda de transmisión. Por ejemplo, la tasa de transferencia digital de un CD es más de 1.4 Mbps (44100 x 16 x 2 = 1411200, es decir, tasa de muestreo por bit por muestra por número de canales para reproducción estéreo). Esta salida representa un an­cho de banda de aproximadamente 1,5 MHz (más de 60 veces del que posee la señal analógica original). Para los medios de almacenamiento, esto no ha sido un factor limitante en el desarrollo de esta­ciones de trabajo (workstations) y/o de sistemas de reproducción al aire, pero ello puede ser un pro­blema en aplicaciones de transmisión.

Para disfrutar del audio digital de uso extendido a lo largo de la industria del broadcast, el ancho de banda de la señal digitalizada debe reducirse. Se disponen ahora de una variedad de siste­mas innovativos que reducen el ancho de banda del audio digital con calidad de CD. Por nume­rosas razones, la transmisión de audio de alta calidad será la de mayor demanda y de aplicación persistente de tales técnicas de reducción de datos.

Están disponibles ahora varias técnicas que reducen la tasa de datos de las señales de audio PCM de 16 bits estándar tanto que ellas pueden transportarse sobre líneas de 64 Kbps, 96 Kbps, 128 Kbps o 256 Kbps (dependiendo de la frecuencia de muestreo y la relación de re­ducción de la tasa de bits). Esto permite su transmisión sobre ISDN, fracciones de canal T-1, etc. Las relaciones de compresión (cociente entre la tasa de bits de entrada al compresor y la tasa de bits a la salida del compresor) comunes varían entre 4:1 a tan altas como 12:1.

Hoy en día, y por lo que concierne a las redes troncales, los cables de fibra óptica permiten la transmisión de señales digitales de vídeo y audio de una forma más fácil que en el pasado.

No obstante, todavía son numerosas las aplicaciones que requieren ahorro en el ancho de banda utilizado, siendo virtualmente obligatorio el uso de la compresión de señales en las aplicaciones vía satélite o mediante radioenlaces. Por otra parte, el costo de los medios de transmisión y las tarifas por su utilización juegan un papel importante en la elección de la velocidad de transmisión deseada. Ello explica como, incluso en el caso de transmisión por fibra óptica, puede ser útil la economía del ancho de banda.

La tremenda evolución en el desarrollo de la tecnología de señales digitales, en la fabricación de microprocesadores y en la capacidad de las memorias actuales, permite la ejecución en tiempo real de algoritmos extremadamente complejos, garantizando así que la calidad del audio (y vídeo) se vea apenas afectadas por la compresión.

Actualmente se hallan completamente desarrolladas técnicas de reducción de redundancia para aplicaciones de contribución, siendo en la actualidad utilizadas de forma aún más generalizada en redes de distribución secundarias.

De lo expuesto se puede apreciar claramente que es necesario encontrar una manera de acomodar los cuantiosos flujos de datos a los medios de transmisión y almacenamiento disponibles. La solución a este problema no es otra más que la compresión de los datos representativos del audio (y vídeo); manteniendo lo mejor posible, de acuerdo a los requerimientos del servicio en particular, la calidad audiovisual resultante.

De acuerdo con lo expresado anteriormente se puede decir que hay dos razones fundamentales por lo cual las técnicas de compresión se usan:

index clip image0072 Compresión de audio MPEG

Figura 1.2

Conclusión : El objetivo buscado es obtener una reducción del ancho de banda ocupado por las transmisiones de audio (y vídeo) así como tam­bién disminuir la capacidad necesaria para el almacenamiento de dichas informaciones, ya sea por cuestiones de practicidad o por cuestiones económicas.

Irrelevancia y redundancia

• Una señal o dato es irrelevante cuando su presencia no es percepti­ble por la mayoría de los evaluadores (observadores y/u oyentes) o cuando no produce efecto al­guno sobre el sistema.

• Una señal o dato es redundante cuando su pre­sencia, aunque perceptible, no provee un aporte a la información ya conocida.

Teniendo en cuenta estas dos características, los distintos métodos de compresión se proponen eliminar del caudal de datos aqué­llos que son irrelevantes y/o redundantes.

Un buen algoritmo de compresión tiene dos metas. La primer meta es proveer un método más eficiente de representación de la imagen (y/o del sonido). La segunda meta es sacrificar aquellas característi­cas del cuadro de vídeo (y/o secuencia PCM para el caso del audio) a las que los sentidos humanos son menos sensibles y sacrificar también aquella información de sucesos que son muy poco probables que aparezcan (es decir, en la codificación, solo se tendrán en cuenta los sucesos habituales).

Clasificación de las redundancias en el audio

La mayoría de los sistemas de audio digital usan técnicas de modulación por codificación de pul­sos (PCM) para digitalizar las señales de audio analógicas. Los sistemas de alta calidad, tales como los formatos CD’s con PCM lineal de 16 bits, resultan en tasas de datos que exceden en mucho la tasa de información de la señal original. Por esta razón, los datos digitales PCM son altamente redundantes y generalmente con grandes anchos de banda.

Las redundancias en PCM pueden identificarse en dos importantes áreas:

1) Redundancias obje­tivas (o redundancias) las cuales son medibles y cuantifican ciertas características numéricamente predecibles de las señales de audio, tales como la perio­dicidad de las formas de onda

2) Redundancias subjetivas (o irrelevancia), las que resultan de los fenómenos psicoacústicos de la audición humana. (La eliminación de redundancia es también citada como compresión estadística, mientras que la remoción de la irrelevancia es frecuentemente llamada codificación perceptiva).

La figura 1.3 ilustra este principio en forma gráfica. Las curvas superiores en cada una de las muestras de música exhibe la respuesta de amplitud en el tiempo, mientras que las inferiores son el trazado de la amplitud vs. frecuencia de un breve muestreo de 32 mseg. Notar que la forma de onda (b) superior es altamente periódica y repetitiva, y que el espectro es ponderado predominantemente hacia las bajas frecuencias debajo de los 4 KHz. Usando estas dos fundamentales propiedades, pueden idearse esquemas que examinen la forma de onda del audio o en el dominio del tiempo (la familiar respuesta amplitud en el tiempo) o dentro del dominio de la frecuencia, mediante por ejemplo la ejecu­ción de la transformada de Fourier sobre la forma de onda más relevante.

index clip image0092 Compresión de audio MPEG

Figura 1.3. (a) Guitarra clásica y (b) trombón

Compresión sin pérdidas y con pérdidas

Las técnicas de compresión de audio, en general, se pueden clasifi­car en dos categorías básicas: sin pérdidas y con pérdidas. Aunque hay muchas diferentes técnicas de compresión, todas ellas caen en una u otra de estas categorías.

En la compresión sin pérdidas , los datos del expansor son idénti­cos bit por bit a los datos originales de la fuente. La compresión sin pérdida, también es conocida como compre­sión reversible, ya que no pierde datos. La señal de audio comprimido puede ser descomprimida sin omitir ninguna muestra de información. La compresión sin pér­dida, sin embargo, permite solo una modesta reducción de tasa de bit.

Los programas del tipo del ‘Stacker’ que aumentan la capacidad aparente de uni­dades de disco en computadoras personales usan codecs sin pérdida. Se puede ver claramente que para los programas de computadora la co­rrupción de un solo bit puede ser catastrófica. La compresión sin pérdidas se restringe generalmente a factores de compresión de alre­de­dor 2:1.

Es importante apreciar que un codificador sin pérdidas no puede garantizar un factor de compresión en particular y por lo tanto los vínculos de comunicaciones o los procedimientos de almacenamiento utilizados deberán ser capaces de funcionar con una tasa de datos variable.

Los datos de fuente, que en un codec determinado, causan factores pobres de compresión son conocidos como dificultad del material. Se debe indi­car que la dificultad es frecuentemente una función del co­dec. En otras palabras, los datos que un codec encuentra difícil puede que otro no lo encuentre difícil .

Los codecs sin pérdida pueden incluirse en los planes de prueba de la tasa de bits erróneos. Es también po­sible poner en serie o en tándem codecs sin pérdida sin precauciones especiales.

En la compresión con pérdidas , los datos desde el expansor no son idénticos bit a bit a los datos de la fuente. La compresión con pér­dida es irreversible, ya la señal de audio reconstruida perderá al­gunos de sus muestras originales.

La compresión con pérdida, permite una más alta reducción de la tasa de bits. En general, una mayor compresión crea una mayor dis­torsión pero con técnicas cuidadosamente seleccionadas, esta distor­sión puede hacerse bastante imperceptible al oído humano. Los codecs con pér­dida no son apropiados para los datos de computadora, pero son habituales en aplicaciones de audio puesto que ellos permi­ten un mayor factor de compresión que los codecs sin pérdida.

Los codecs con pérdida exitosos son aquellos en los cuales las diferencias se arre­glan para que un oyente humano los encuentre subjeti­vamente difícil de percibir. Así los codecs con pérdida deben ser ba­sados en una comprensión de percepción psicoa­cústica. Estos se llaman frecuentemente códigos perceptivos.

En la compresión (o codificación) perceptiva, un mayor factor de compresión, reque­rirá, que deban modelarse más precisamente los sen­tidos humanos. Los codificadores perceptivos tienen la ventaja de que pueden forzarse a operar a un factor fijo de compresión. Esto es conveniente para apli­caciones prácticas de transmisión y almacena­miento donde una tasa fija de datos es más fácil de manejar que una tasa variable. El resultado de emplear un factor fijo de compresión es que la calidad subjetiva puede variar con la “dificultad” del ma­terial de entrada al codec.

Los codecs perceptivos no deberían conectarse en tándem (en cascada) indiscriminadamente, especialmente si ellos usan algoritmos diferentes. Debido a que la señal reconstruida desde un codec per­ceptivo no es bit a bit precisa, tal codec no puede incluirse en cualquier sistema de prueba de la tasa de bits erróneos puesto que las diferencias introducidas por la compresión serían indistingui­bles de los verdaderos errores.

Los códigos sin pérdida son menos comunes en audio (y en vídeo) donde los códigos perceptivos pueden utilizarse. Los códigos perceptivos frecuen­temente obtiene una ganancia de codificación acortando las longitudes de las palabras de datos que representan la forma de onda de la señal. Esto aumenta el nivel de ruido. El truco está en asegu­rarse que el ruido resultante se pone a frecuencias donde los senti­dos humanos son menos capaces de percibirlo. Como resultado, aunque la señal reci­bida sea apreciablemente diferente de los datos de la fuente, puede pare­cerle lo mismo al oyente. Lográndose así factores moderados de compresión. Como estos códigos confían en las características de la audi­ción, ellos pueden solamente probarse en forma total­mente subjetiva.

El factor de compresión de tales códigos puede establecerse a vo­luntad por elección de la longitud de las palabras de los datos com­primi­dos. Una compresión leve sería indetectable, pero con un mayor factor de compresión, las dificultades de codificación llegarían a ser perceptibles.

2 – El Modelo Psicoacústico

Generalidades. Experimentos realizados.

Los modelos psicoacústicos se componen a partir de las percepciones de un grupo de personas entrenadas para rendir al máximo en este campo. Por medio de una serie de experimentos se puede determinar la sensibilidad del oído humano a una serie de fenómenos, de forma que aparezcan resultados útiles para el tratamiento del sonido, como ya hemos visto.

Las tres siguientes características de la audición se acompañan del experimento que sirve para cuantificarlas.

•  Sensibilidad del oído humano. Experimento : situar a la persona aislada de otros sonidos y ofrecer un tono de 1 KHz al nivel mínimo de sonido posible. Elevar el volumen hasta que sea justo perceptible. Variar la frecuencia y representar en la gráfica.

index clip image0111 Compresión de audio MPEG

Figura 2.1. Sensibilidad del oído humano en función de la frecuencia

•  Enmascaramiento en frecuencia. Experimento : en las mismas condiciones, ofrecer un tono de 1 KHz (enmascarador) a un volumen determinado (60 dB, por ejemplo). Ofrecer un sonido de prueba a 1,1 KHz y elevar su volumen hasta que sea justo perceptible. Variar la frecuencia del tono de prueba y trazar la gráfica del límite de audición.

index clip image00210 Compresión de audio MPEG
Figura 2.2. Enmascaramiento en frecuencia del tono de 1 KHz

Repetir para todas las frecuencias de tonos de prueba necesarias.

index clip image0046 Compresión de audio MPEG

Figura 2.3. Enmascaramiento de diversos tonos de prueba

•  Enmascaramiento temporal. Experimento : en las mismas condiciones, ofrecer un tono enmascarador de 1 KHz a 60 dB y un tono de prueba de 1,1 KHz a 40 dB. El tono de prueba no es audible. Parar el tono enmascarador y, con un pequeño retraso, el de prueba. Aumentar el retraso hasta que se distinga el tono de prueba.

index clip image005 0000 Compresión de audio MPEG

Figura 2.4. Variación del volumen audible con el retardo

Realizar a la inversa, el enmascaramiento pre-temporal también existe, aunque en un tiempo muy inferior, casi despreciable. Repetir para diversas frecuencias y volúmenes y representar.

index clip image007 0000 Compresión de audio MPEG

Figura 2.5. Representación tridimensional del enmascaramiento

Percepción

La percepción auditiva está basada en el análisis de bandas criticas en la parte más interna del oído donde la transformación de frecuencia-espacio tiene lugar en la membrana basilar. El espectro de potencia no está representado en una escala lineal de frecuencias sino sobre bandas limitadas de frecuencia denominadas ‘Bandas Críticas’.

El sistema de audición puede ser descripto como un banco de filtros pasabanda, constituidos por filtros pasabandas fuertemente solapados con anchos de bandas del orden de los 100 Hz para frecuencias por debajo de 500 Hz y del orden de 5 KHz para señales de frecuencias superiores.

Hasta los 24 KHz son 26 las ‘Bandas Críticas’ a ser tenidas en cuenta.

Enmascaramiento simultáneo (dominio frecuencia)

El enmascaramiento simultáneo es un fenómeno que tiene lugar en el dominio de la frecuencia donde las señales de bajo nivel (por ejemplo podría ser un tono puro) puede volverse inaudible al oído humano si simultáneamente una señal más fuerte (por ejemplo un ruido de banda angosta) está lo suficientemente próximo en frecuencia.

index clip image0102 Compresión de audio MPEG

Figura 2.6

Por ejemplo, para un tono de 1 KHz, un UMBRAL de ENMASCARAMIENTO puede ser medido, de manera que cualquier señal debajo del mismo no será audible. El umbral de enmascaramiento depende del nivel de presión sonora (SPL) (volumen de la señal) y de la frecuencia de la señal enmascarada.

En este caso un tono de 1 KHz con una presión sonora de 60 dB presenta un umbral de enmascaramiento como el que se observa en la figura 2.6 por lo que cualquier señal cuyo nivel de presión sonora (SPL) se ubique por debajo de este umbral no será percibida por el oído humano. Cabe destacarse que la pendiente de la curva descripta por el umbral de enmascaramiento es mas pronunciada hacia las bajas frecuencias (de lo que deduce que frecuencias cercanas más altas que la enmascaradora pueden ser más fácilmente enmascarables). Por otra parte la distancia entre el nivel de enmascaramiento y el umbral de enmascaramiento es menor cuando un ruido enmascara un tono que a la inversa.

Las contribuciones del ruido y de señales de bajo nivel son enmascaradas dentro y fuera de una determinada banda critica si su SPL está por debajo del UE. Los aportes producidos por el ruido pueden deberse al ruido de codificación, distorsión por aliasing y ruidos de transmisión.

Sin la presencia del enmascarador una señal será inaudible si su SPL está por de bajo del umbral de silencio, el cual depende de la frecuencia y recorre un rango dinámico de 60 dB como se puede observar en la curva inferior de la figura anterior.

Figura 2.7

En la figura 2.7 se pueden ver mas detalles del umbral de enmascaramiento:

index clip image013 Compresión de audio MPEGindex clip image0141 Compresión de audio MPEGindex clip image015 Compresión de audio MPEGindex clip image0161 Compresión de audio MPEG

La distancia entre el nivel de la señal enmascaradora (un tono en el ejemplo) y el umbral de enmascaramiento se la denomina Relación Señal Máscara (SMR). El valor máximo se halla en el borde izquierdo de la Banda Crítica (BC) (punto A). Dentro de la BC el ruido de codificación no será audible en tanto la Relación Señal-Ruido (SNR) sea mayor que la SMR.

Consideremos por ahora a la SNR como la relación resultante de una cuantificación de m-bits, luego la distorsión perceptible en una dada subbanda es entonces medida como la Relación Ruido Máscara (NMR)

NMR=SMR-SNR (en dB.). La NMR describe la diferencia entre el ruido de codificación en una determinada subbanda y el nivel donde una distorsión se vuelve audible; este valor (expresado en dB) debe ser negativo.

Hasta ahora se ha descripto el enmascaramiento producido por una sola señal enmascaradora. Si la fuente de señal consta de numerosas señales enmascaradoras el Umbral Global de Enmascaramiento puede ser calculado como el aporte que realizan el resto de las bandas sobre la considerada obteniéndose el nivel de distorsiones perceptibles en función de la frecuencia.

El cálculo del umbral global de enmascaramiento esta basado en la suma (en dB.) de los enmascaramientos individuales de todas las bandas comprendidas en la señal de audio o voz, suficiente para el análisis basado en bandas criticas y es determinado en audio a través de la Transformada Rápida de Fourier (FFT) de orden 512 o 1024.

En un primer paso los umbrales de enmascaramiento individuales son calculados dependiendo del tipo de enmascarador (tono o ruido) y rango de frecuencia.

Luego, el umbral total de enmascaramiento es calculado por adición de los niveles individuales de enmascaramiento a lo que se le adiciona también el umbral de silencio (esto hace que se asegure que el umbral global de enmascaramiento no se ubique nunca por debajo del de silencio)

Los efectos del enmascaramiento sobrepasando los límites de las bandas críticas deben ser incluidos en el cálculo. Por último la Relación Señal Mascara Total (TSMR) se determina como la relación entre el máximo de potencia de la señal y el umbral de enmascaramiento Global (o como la diferencia en dB) (ver fig. anterior)

Enmascaramiento temporal

Junto con el enmascaramiento simultáneo, otros dos fenómenos juegan un importante rol en la percepción del audio en el ser humano:

•  Pre enmascaramiento

•  Post enmascaramiento

Los efectos de enmascaramiento temporal tienen lugar antes y después que una señal comience y termine. Los efectos del Pre enmascaramiento tienen una duración de una décima parte del post enmascaramiento y según lo determinan nuevos estudios es bastante menor que ese valor.

La duración del pos enmascaramiento esta en el orden de los 50 a 200 mseg.

Ambos efectos son explotados en los algoritmos de codificación de ISO/MPEJ.

index clip image019 Compresión de audio MPEG

Figura 2.8. Efectos del pre y post enmascaramiento

Determinación del enmascaramiento temporal . Experimento: en las mismas condiciones, ofrecer un tono enmascarador de 1 KHz a 60 dB y un tono de prueba de 1,1 KHz a 40 dB. El tono de prueba no es audible. Parar el tono enmascarador y, con un pequeño retraso, el de prueba. Aumentar el retraso hasta que se distinga el tono de prueba.

Codificación Basada en la Percepción.

En los codificadores basados en la percepción el proceso de codificación esta controlado por la Relación Señal a Mascara Global (GSMR) versus la curva de Frecuencia. Si la tasa de bits necesaria para un enmascaramiento completo de la distorsión esta disponible el esquema de codificación será transparente (la señal decodificada será indistinguible de la señal fuente). Cabe señalar que la tasa de bits a la salida del codificador se mantiene constante, pudiendo darse casos donde la tasa disponible excede los requerimientos de la codificación (y por ende la codificación se efectúa en forma optima). En otros casos la tasa disponible a la salida es insuficiente para las pretensiones del codificador (en cuyo caso la transmisión incluirá ruido de codificación). Si la tasa de bits para un enmascaramiento completo no esta disponible, entonces el umbral de enmascaramiento global sirve como una función de ponderación del error espectral; el espectro de error resultante tiene la forma del umbral de enmascaramiento global.

En los diseños prácticos de codificación basada en la percepción, no se puede sobrepasar los límites establecidos por el enmascaramiento dado que el procesamiento posterior de la señal acústica (por ejemplo filtrados en ecualizadores) por el usuario final y los múltiples procesos de codificación y descodificación pueden desenmascarar el ruido. Además, dado que el conocimiento acerca del enmascaramiento auditivo es muy limitado, el modelo auditivo usado para en el diseño de un modelo particular de codificador basado en la percepción no es lo suficientemente preciso, por lo que, como un requerimiento adicional, se necesita un margen de seguridad en los diseños prácticos de codificadores.

Mediciones de Calidad

Las representaciones digitales de formas de ondas analógicas producen la introducción de alguna clase de distorsión la cual puede ser expresada:

•  A través de algún criterio subjetivo tal como lo es el ‘Mean Opinion Score’ (Opinión de puntaje promedio) como una medida de similitud en la percepción.

•  Por un simple criterio objetivo como lo es la relación señal ruido (SNR) como medida de la similitud entre dos formas de ondas (la original y la reconstruida), o

•  A través de un criterio complejo que sirve como medición objetiva de la similitud percibida, el cual contempla hechos acerca de la percepción de un auditorio humano.

El más popular de los métodos de evaluación es el ‘ Puntaje de la opinión media MOS ( Mean Opinion Score ) donde individuos clasifican la calidad de los codificadores sobre una escala de calidad de N puntos.

El resultado final de tales exámenes es un Juicio promediado (MOS). Dos escalas graduadas en 5 puntos se usan,

•  Una para medir la calidad de la señal y

•  Otra para medir sus diferencias respecto de la fuente. Un puntaje de 5 en la escala de diferencia indica que la señal reconstruida no puede ser diferenciada de la fuente (al oído humano), mientras que un puntaje de 4 indica que la señal reconstruida si bien se diferencia, no resulta molesta la diferencia. La escala de diferencia resulta extremadamente útil sobre todo si los codificadores con pequeñas distorsiones deben ser evaluados.

Los exámenes del formato ISO/MPEG han mostrado que los exámenes de Triple estímulo, referencia oculta, doble escondido , basados en tales evaluaciones (MOS) conducen a resultados fiables, no obstante pequeñas diferencias en calidad se han detectado.

En estas pruebas tres señales A, B y C (Triple Stimulus) son escuchadas por oyentes adiestrados siendo:

•  A: siempre es la señal fuente

•  B y C son la señal reconstruida y la fuente pero tanto el oyente como el instructor de la prueba desconocen cual es una u otra (Double Blind) (Hidden reference).

Los oyentes deben determinar si B o C son la fuente y en caso de poder distinguirlas calificar la diferencia (de 1 a 5).

El lado negativo es que los resultados varían de acuerdo al panel de oyentes y al tiempo en que se realizan (por ser subjetivo) pudiendo los resultados variar mucho entre el promedio y determinados tipo de señal bajo prueba.

No obstante los exámenes realizados por MPEG y CCIR con paneles adiestrados de oyentes condujeron a resultados similares y estables.

Las medidas basadas en la percepción hacen uso de los umbrales de enmascaramiento derivados de la señal de ingreso, en orden de compararlos con el ruido de codificación actual del codificador. Resultados recientes han demostrados que tales medidas dan altas correlaciones entre los puntajes MOS y puntajes objetivos.

Por ejemplo, la medición de la calidad de audio percibible se ha aplicado a señales de audio en el CCIR en pruebas de transmisión de sonido digital obteniéndose una correlación de 0,98 y una desviación estándar de 0,17.

index clip image001 0000 Compresión de audio MPEG

Otro conjunto de parámetros, incluyendo relaciones de ruido a máscara locales (local Noise to Mask relations) y promedio de todas las bandas críticas, han probado que es fácilmente implementable y lo suficientemente preciso, para resultar útil en el diseño del codificador y su evaluación. En el CCIR, los tests de codificación de audio arrojaron una correlación de 0,94 y una desviación estándar de 0,27.

index clip image002 00004 Compresión de audio MPEG

Figura 2.9. MOS de la Capa II (64 Kbps por canal)

En muchos tests de escuchas, Layer III ha demostrado su elevada performance. En noviembre de 1991, tuvo lugar en Hannhover el primero de los tests de la aún incompleta implementación de Layer III en los estudios de la NDR. En éstos, Layer III probó ser notablemente superior a Layer II a igual tasa de bits, superando además a ASPEC el cual, hasta entonces, ostentaba la mejor calidad en codecs de 64 Kbs por canal de audio.

[a] Layer II y Layer III sin joint-stereo a 64 Kbs por canal de audio, solamente reproducción de altoparlantes.

[b] Layer II y Layer III con joint-stereo a 64 Kbs por canal de audio, solamente reproducción de altoparlantes

index clip image0049 Compresión de audio MPEG

Figura 9.10 Resultados comparativos entre Layer II y Layer III en los tests del CCIR

Para aplicaciones de transmisión de audio digital con codecs de bajo bitrate, se llevaron a cabo tests desde enero de 1992 a julio de 1992 en los que participaron práctimante todos los codecs disponibles hasta ese entonces. Se identificaron cuatro campos de aplicación, cada uno con diferentes requerimientos:

•  Enlaces con una tasa de 180 Kbits por canal de audio (codificados independientemente), con 20 KHz de ancho de banda y sin diferencias notables luego de 5 codecs en cascada.

•  Enlaces con una tasa de 120 Kbits por canal de audio (codificados independientemente), con 20 KHz de ancho de banda y sin diferencias notables luego de 3 codecs en cascada.

•  Enlaces con una tasa de 128 Kbits por canal de audio (codificados independientemente) o 96 Kbits (en joint stereo), con 20 KHz de ancho de banda y una calidad de sonido superior a 4 de acuerdo a la tabla del CCIR.

•  Enlaces con una tasa de 60 Kbits por canal de audio (mono o joint stereo), con 15 KHz de ancho de banda y una calidad de sonido equivalente al formato PCM lineal de 14 bits.

En todas las categorías los codecs ISO-MPEG Layer II y III obtuvieron los mejores resultados.

En realidad, Layer III resultó ser el único codec que proveyó de una aceptable calidad de sonido para la codificación independiente a 60 Kbits/seg. Para el test calificado como: “VOZ MASCULINA” el valor medio en la escala de diferencias del CCIR fue de 4.4 (comparado con 2.4 en Layer II). En general, en tests con altos contenidos de pre-ecos (castañuelas o percusiones) el valor medido (según CCIR), fue de 3.6 para Layer III (comparado con 2.05 para Layer II). A manera de preservar una suficiente tasa para la transmisión de datos auxiliares (ancillary data), el test se efectuó con 60 Kbs (en vez de 64 Kbs).

3 – Norma ISO/IEC 11172 – 3 : Audio

GENERALIDADES – El Estándar ISO/MPEG

El estándar MPEG Audio contempla tres niveles diferentes de codificación – decodificación de la señal de audio, de los cuales sólo los dos primeros están totalmente terminados. El otro es aplicable, y de hecho se utiliza habitualmente, pero sigue abiertos a ampliaciones. Estos tres niveles son:

•  MPEG-1: “Codificación de imágenes en movimiento y audio asociado para medios de almacenamiento digital hasta 1’5 Mbit/s”

•  MPEG-2: “Codificación genérica de imágenes en movimiento e información de audio asociada”

•  MPEG-3: la planificación original contemplaba su aplicación a sistemas HDTV; finalmente fue incluido dentro de MPEG-2 .

•  MPEG-4: “Codificación de objetos audiovisuales”

A su vez, MPEG describe tres layers (capas) de codificación de audio denominados layer-1, layer-2 y layer-3. Del primero al tercero aumentan tanto la complejidad del codificador como la calidad del sonido a igual tasa de bits. Los tres son compatibles jerárquicamente, esto es, el decodificador layer-i es capaz de interpretar información producida por un codificador layer-i y todos los niveles por debajo del i. Así, un decodificador layer-3 acepta los tres niveles de codificación, mientras el layer-2 sólo acepta el 1 y el 2.

MPEG define, para cada layer, el formato del bitstream y el decodificador (que puede ser implementado de diferentes maneras). Con vistas a admitir futuras mejoras no se define el codificador, pero en un apartado informativo se da un ejemplo de codificador para cada uno de los layers. Hay que decir que tanto MPEG-1 como MPEG-2 emplean estos tres layers, pero este último añade nuevas características.

ASPEC y MUSICAM , los padres de la norma ISO MPEG 1

En julio de 1990, cuatro sistemas fueron testeados en la Radio Sueca (Swedish Radio):

•  MUSICAM

•  ASPEC

•  ATRAC

•  SB-ADPCM

Al final de las pruebas, se consagraron 2 ganadores:

MUSICAM: por tener el puntaje general más alto, y ASPEC que consiguió la mejor calidad sonora, especialmente a bajas tasas de bits. Estos dos esquemas de codificación constituyeron los fundamentos para las tres capas de audio del estándar ISO MPEG 1.

MUSICAM fue la base para las capas I y II a tal punto que la capa II es prácticamente idéntica al MUSICAM y Layer I es una versión simplificada de éste. Ambos, Layer I y II cumplieron los requerimientos de la ISO para la tasa de bits de 192 y 128 Kbps respectivamente para la primera mitad de 1991, por lo que su especificación quedó establecida y las aplicaciones pudieron comenzar a hacer uso de ésta.

Layer III combina las mejores ideas de ASPEC y MUSICAM. El proceso de fusión requirió una cantidad de tiempo considerable, gran cantidad de modificaciones y nuevos desarrollos por lo que su especificación recién estuvo lista para los fines de la primera mitad de 1992. Los primeros productos comerciales para Layer III recién estuvieron disponibles en el mercado en 1993.

index clip image005 0001 Compresión de audio MPEG

El codificador.

Procesa la señal digital de audio (PCM) y genera el bitstream comprimido para el almacenamiento. El algoritmo del codificador no está estandarizado, y pueden ser utilizados varios medios, tales como la estimación del umbral de enmascaramiento auditivo, cuantificación y establecimiento de la escala (escalado) de la señal. De cualquier modo, la salida del codificador debe ser tal que el d ecodificador que cumpla con las especificaciones de la cláusula 2.4. de la norma producirá una señal de audio compatible para la aplicación propuesta.

index clip image0065 Compresión de audio MPEG
Estructura básica del codificador

Las muestras de audio ingresan al codificador. El mapeo crea una representación filtrada y submuestreada de la tira de audio de entrada. Las muestras mapeadas pueden llamarse tanto muestras de subbanda (como en layer I y II) o muestras de subbandas transformadas (como en layer III) .

Un modelo psicoacústico crea un conjunto de datos para controlar el cuantificador y codificación. Estos datos son diferentes dependiendo de la implementación actual del codificador. Una posibilidad es el uso de una estimación del umbral de enmascaramiento (UE) para efectuar el control de la cuantificación. El cuantificador y el bloque de codificación crean un conjunto de símbolos codificados con las muestras de entrada mapeadas. Nuevamente , este bloque puede depender del sistema de codificación. El bloque de empaquetado de la trama ensambla el bitstream actual desde la salida de datos de los otros bloques y le agrega información adicional (por ej. corrección de error) si es necesario.

Hay 4 diferentes modos posibles :

•  canal único (monofónico)

•  doble canal (2 canales de audio independientes el uno del otro)

•  estéreo (canal derecho e izquierdo de audio en un bitstream)

•  joint_stereo (2 canales donde pueden explotarse redundancias e irrelevancias entre ambos)

CAPAS (LAYERS)

Dependiendo de la aplicación, capas diferentes del sistema de codificación con creciente complejidad de codificación y mejor performance pueden ser usadas. Un decodificador ISO/IEC 11172 de capa N es capaz de decodificar el bitstream codificado para esa capa y también para capas anteriores a la N.

Capa 1 (Layer I).

El codificador para Layer 1 usa bloques por subbanda fijos de 12 muestras diezmadas.

El mapeado tiempo – frecuencia se realiza con un banco de filtros polifase con 32 subbandas. Los filtros polifase consisten en un conjunto de filtros con el mismo ancho de banda con interrelaciones de fase especiales que ofrecen una implementación eficiente del filtro subbanda. Se denomina filtro subbanda al que cubre todo el rango de frecuencias deseado. En general, los filtros polifase combinan una baja complejidad de computación con un diseño flexible y múltiples opciones de implementación.

El modelo psicoacústico utiliza una FFT (Fast Fourier Transform) de 512 puntos para obtener información espectral detallada de la señal. El resultado de la aplicación de la FFT se utiliza para determinar los enmascaramientos en la señal, cada uno de los cuales produce un nivel de enmascaramiento, según la frecuencia, intensidad y tono. Para cada subbanda, los niveles individuales se combinan y forman uno global, que se compara con el máximo nivel de señal en la banda, produciendo el SMR que se introduce en el cuantizador.

El bloque de cuantización y codificación examina las muestras de cada subbanda, encuentra el máximo valor absoluto y lo cuantiza con 6 bits. Este valor es el factor de escala de la subbanda. A continuación se determina la asignación de bits para cada subbanda minimizando el NMR (noise-to-mask ratio) total. Es posible que algunas subbandas con un gran enmascaramiento terminen con cero bits, es decir, no se codificará ninguna muestra. Por último las muestras de subbanda se cuantizan linealmente según el número de bits asignados a dicha subbanda concreta.

El trabajo del empaquetador de trama es sencillo. La trama, según la definición ISO, es la menor parte del bitstream decodificable por sí misma. Cada trama empieza con una cabecera para sincronización y diferenciación, así como 16 bits opcionales de CRC para detección y corrección de errores. Se emplean, para cada subbanda, 4 bits para describir la asignación de bits y otros 6 para el factor de escala. El resto de bits en la trama se utilizan para la información de muestras, 384 en total, y con la opción de añadir cierta información adicional. A 48 Khz, cada trama lleva 8 ms de sonido.

Cada factor de escala está representado por 6 bits y es transmitido para cada bloque de subbanda a menos que la regla de asignación de bits indique que dicho bloque de subbanda y su factor de escala no necesitan ser transmitidos.

Por cada bloque de 12 muestras se calcula la SMR a través de la FFT de 512 puntos.

Para cada subbanda la asignación de bits selecciona un cuantificador uniforme de un conjunto de 15 cuantificadores con M=2**m -1 niveles (m=0 o m=2… 15bits).

4 Bits se necesitan por bloque para la información de asignación de bits.

Los tests subjetivos de la ISO/MPEG arrojaron un MOS (Mean Opinion Score) de 4,7 para una tasa de 192 Kb/s por canal monofónico y el peor fue de 4,4 para una de las pruebas.

El mapeado tiempo-frecuencia se realiza con un banco de filtros polifase con 32 subbandas. Los filtros polifase consisten en un conjunto de filtros con el mismo ancho de banda con interrelaciones de fase especiales que ofrecen una implementación eficiente del filtro subbanda. Se denomina filtro subbanda al que cubre todo el rango de frecuencias deseado. En general, los filtros polifase combinan una baja complejidad de computación con un diseño flexible y múltiples opciones de implementación.

El modelo psicoacústico utiliza una FFT (Fast Fourier Transform) de 512 puntos para obtener información espectral detallada de la señal. El resultado de la aplicación de la FFT se utiliza para determinar los enmascaramientos en la señal, cada uno de los cuales produce un nivel de enmascaramiento, según la frecuencia, intensidad y tono. Para cada subbanda, los niveles individuales se combinan y forman uno global, que se compara con el máximo nivel de señal en la banda, produciendo el SMR que se introduce en el cuantizador.

El bloque de cuantización y codificación examina las muestras de cada subbanda, encuentra el máximo valor absoluto y lo cuantiza con 6 bits. Este valor es el factor de escala de la subbanda. A continuación se determina la asignación de bits para cada subbanda minimizando el NMR (noise-to-mask ratio) total. Es posible que algunas subbandas con un gran enmascaramiento terminen con cero bits, es decir, no se codificará ninguna muestra. Por último las muestras de subbanda se cuantizan linealmente según el número de bits asignados a dicha subbanda concreta.

El trabajo del empaquetador de trama es sencillo. La trama, según la definición ISO, es la menor parte del bitstream decodificable por sí misma. Cada trama empieza con una cabecera para sincronización y diferenciación, así como 16 bits opcionales de CRC para detección y corrección de errores. Se emplean, para cada subbanda, 4 bits para describir la asignación de bits y otros 6 para el factor de escala. El resto de bits en la trama se utilizan para la información de muestras, 384 en total, y con la opción de añadir cierta información adicional. A 48 Khz, cada trama lleva 8 ms de sonido.

Resumiendo: Incluye la división del mapeado básico de la señal de audio digital en 32 subbandas, segmentación para el formateo de los datos, modelo psicoacústico y cuantización fija. El retraso mínimo teórico es de 19 ms.

Capa 2 (Layer II).

El mapeado de tiempo-frecuencia es idéntico al del layer 1.

El codificador Layer 2 de la ISO/MPEG es básicamente similar al Layer 1 pero tiene una complejidad mayor con la que consigue una mejor performance, de acuerdo a tres modificaciones:

La FFT es de orden 1024 con lo que se obtiene una resolución en frecuencia más fina para el cálculo de SMR global. El modelo psicoacústico es similar. En los demás aspectos, es idéntico.

Si las características de la señal a codificar lo permiten, entonces tres muestras consecutivas (un triplet), pueden codificarse en una única palabra código (codeword) para su transmisión o almacenamiento.

El factor de escala total se reduce por un factor de alrededor de 2; en cada subbanda bloques de 12 muestras se forman y factores de escala de 3 bloques adyacentes se calculan (lo cual implica 3 x 12 x 32= 1152 muestras de entrada son tenidas en cuenta). Dependiendo de sus valores relativos sólo uno, dos o los tres factores de escala son transmitidos. Solamente uno de los factores de escala tiene que ser transmitido si las diferencias son relativamente pequeñas y solamente el primero de los factores de escala adyacentes tiene que ser transmitido si el segundo tiene un valor más pequeño, como en el caso del pos – enmascaramiento puede ser aprovechado. En el caso de grandes cambios dinámicos en la señal todos los factores de escala pueden tener que ser usados. El factor de escala seleccionado o los factores de escala son nuevamente representados por seis bits. El modelo de los factores de escala transmitidos será codificado con 2bit/subband en la información adyacente (side information) – denominado información de factor de escala selecto (SCFSI).

Se provee una cuantificación más fina con una resolución de amplitud de hasta 16 bits (lo que reduce el ruido de codificación). Por otro lado, el número de cuantificadores disponibles decrece con el incremento del índice de subbanda, el cual mantiene pequeña la información lateral (side information). La codificación continúa como en Layer I.

El bloque de cuantización y codificación también es similar, generando factores de escala de 6 bits para cada subbanda. Sin embargo, las tramas del layer II son tres veces más largas que las del layer I, de forma que se concede a cada subbanda tres factores de escala, y el codificador utiliza uno, dos o los tres, según la diferencia que haya entre ellos. La asignación de bits es similar a la del layer 1.

El formateador de trama: la definición ISO de trama es la misma que en el punto anterior. Utiliza la misma cabecera y estructura de CRC que el layer 1. El número de bits que utilizan para describir la asignación de bits varía con las subbandas: 4 bits para las inferiores, 3 para las medias y dos para las superiores, adecuándose a las bandas críticas. Los factores de escala se codifican junto a un número de dos bits que indica si se utilizan uno, dos o los tres. Las muestras de subbanda se cuantizan y a continuación se asocian en grupos de tres, llamados gránulos. Cada uno se codifica con una palabra clave, lo que permite interceptar mucha más información redundante que en el layer 1. Cada trama contiene, pues, 1152 muestras PCM. A 48 Khz. cada trama lleva 24 ms de sonido.

En resumen: Incluye codificación adicional, factores de escala y diferente composición de trama. El retraso mínimo teórico es de 35 ms.

Capa 3 (Layer III).

El esquema III es substancialmente más complicado que los dos anteriores e incluye una serie de mejoras. Su diagrama de flujos es conceptualmente semejante al visto para los otros dos esquemas, salvo que se realizan múltiples iteraciones para procesar los datos con el mayor nivel de calidad en un cierto tiempo, lo cual complica su diseño hasta el punto de que los diagramas ISO ocupan decenas de páginas.

El mapeado de tiempo-frecuencia añade un nuevo banco de filtros, el DCT (Discrete Cosine Transform), que con el polifase forman el denominado filtro híbrido. Proporciona una resolución en frecuencia variable, 6×32 o 18×32 subbandas, ajustándose mucho mejor a las bandas críticas de las diferentes frecuencias.

El modelo psicoacústico es una modificación del empleado en el esquema II, y utiliza un método denominado predicción polinómica. Incluye los efectos del enmascaramiento temporal.

El bloque de cuantización y codificación también emplea algoritmos muy sofisticados que permiten tramas de longitud variable. La gran diferencia con los otros dos esquemas es que la variable controlada es el ruido, a través de bucles iterativos que lo reducen al mínimo posible en cada paso.

El formateador de trama: la definición de trama para este esquema según ISO varía respecto de la de los niveles anteriores: “mínima parte del bitstream decodificable mediante el uso de información principal adquirida previamente”. Las tramas contienen información de 1152 muestras y empiezan con la misma cabecera de sincronización y diferenciación, pero la información perteneciente a una misma trama no se encuentra generalmente entre dos cabeceras. La longitud de la trama puede variarse en caso de necesidad. Además de tratar con esta información, el esquema III incluye codificación Huffman de longitud variable, un método de codificación entrópica que sin pérdida de información elimina redundancia. Los métodos de longitud variable se caracterizan, en general, por asignar palabras cortas a los eventos más frecuentes, dejando las largas para los más infrecuentes.

Resumiendo: Incluye incremento de la resolución en frecuencia, basado en el uso de un banco de filtros híbrido. Cuantificación no uniforme, segmentación adaptativa y codificación entrópica de los valores cuantizados. El retraso mínimo teórico es de 59 ms.

Cuadro comparativo de los 3 esquemas (layers)

index clip image002 00013 Compresión de audio MPEG

La calidad viene dada del 1 al 5, siendo el 5 la superior (ver apartado 6). Hay que señalar que pese a los números de la norma ISO, el retraso típico acostumbra a ser tres veces mayor en la práctica.

Decodificación

index clip image004 00002 Compresión de audio MPEG
decodificador debe procesar el bitstream para reconstruir la señal de audio digital. La especificación de este elemento sí esta totalmente definida y debe seguirse en todos sus puntos. La figura ilustra el layer del decodificador.

Figura 2: decodificador según la norma ISO 11172-3

Los datos del bitstream son desempaquetados para recuperar las diversas partes de la información. El bloque de reconstrucción recompone la versión cuantizada de la serie de muestras mapeadas. El mapeador inverso transforma estas muestras de nuevo a PCM.

4 – La Trama de Audio

Definición

Trama (Layer I y II)

Parte del bitstream que es decodificable por sí mismo. En Layer I contiene información de 384 muestras de audio mientras que en layer II de 1152. Comienza con una palabra de sincronismo y termina justo antes de la próxima palabra de sincronismo. Consiste en un número entero de slots (4 bytes p/layer I y 1 byte p/layer II).

Trama (Layer III)

Parte del bitstream que es decodificable con el uso de la información principal (main information) previamente adquirida. Cada trama en layer III contiene información de 1152 muestras. Aunque la distancia entre dos tramas consecutivas es número entero de slots (1 byte p/layer III) la información de audio perteneciente a una trama no está generalmente contenida entre dos palabras de sincronismo.

Cabecera (Header)

Cabecera : Parte del bitstream que contiene la sincronización e información de estado.

Layer
11 Layer I
10 Layer II
01 Layer III
00 reserved

Dentro de la cabecera se encuentran los sig. campos:

•  Syncword (Palabra de sincronismo) (12 bits): “1111 1111 1111”

•  ID (1 bit): indica si la trama responde a la norma 11172 (ID=1) o no (ID=0)

•  Layer (2 bits): de acuerdo a su contenido indica:

Para cambiar de capa se necesita un reset del decodificador de audio.

•  Protection_bit (1 bit): Indica si se ha introducido redundancia en el bitstream de audio para facilitar la detección y/o cancelación de errores:

•  1 : indica que NO se adiciono redundancia

•  0 : si se adicionó redundancia

Diagrama de la cabecera (Header) de una trama: (común a las 3 capas)

index clip image005 0002 Compresión de audio MPEG
Bitrate_index (4 bits): Indica la tasa de bits. Si el valor es 0000 indica que se transmite en formato libre lo que indica que la tasa de bits no necesita estar en la lista de bitrates. Formato fijo significa que la trama tiene N o N+1 slots dependiendo del valor del bit de relleno (padding bit). El bitrate_index es una entrada a la tabla de tasas de bits la cual varía para diferentes capas (Layers)

bitrate_index Layer I Layer II Layer III
0000 Free Free Free
0001 32 32 32
0010 64 48 40
0011 96 56 48
0100 128 64 56
0101 160 80 64
0110 192 96 80
0111 224 112 96
1000 256 128 112
1001 288 160 128
1010 320 192 160
1011 352 224 192
1100 384 256 224
1101 416 320 256
1110 448 384 320
1111 forbiden forbiden forbiden

El bitrate_index indica la tasa de bits total para el modo seleccionado (estéreo, joint_stereo, doble canal o canal único).

A los efectos de proveer del menor retardo posible y complejidad el decodificador no necesita soportar tasas de bits continuamente variables cuando decodifica tramas de las capas I y II.

La capa III soporta una tasa de bits variable por medio de conmutaciones en el bitrate_index. La conmutación del bitrate_index puede ser utilizada tanto para optimizar los requisitos de almacenamiento o para interpolar una tasa de bits que se encuentre entre dos tasas de bits contiguas en la tabla.

Cuando se utiliza formato libre se requiere que la tasa de bits se mantenga fija. Por otra parte, al decodificador no se le exige que soporte tasas de bits superiores a 448,384 y 320 Kbits/seg. para las capas I, II y III respectivamente cuando se transmite en formato libre.

Para la capa II no todas las combinaciones de tasas de bits están disponibles en todos los modos. Esto se ve en la siguiente tabla:

bitrate (kbits) Modos permitidos
free todos los modos
32 único canal
48 único canal
56 único canal
64 todos los modos
80 único canal
96 todos los modos
112 todos los modos
128 todos los modos
160 todos los modos
192 todos los modos
224 estéreo, est intenso, doble canal
256 estéreo, est. intenso, doble canal
320 estéreo, est. intenso, doble canal
384 estéreo, est. intenso, doble canal

Frecuencia de muestreo (2 bits): Indica la frecuencia de muestreo de acuerdo a la siguiente tabla:

Frec. de muestreo Frec. especif. (KHz)
00 44.1
01 48
10 32
11 reservado

Se requiere un reset del decodificador para cambiar la tasa de muestreo.

•  Padding_bit (1 bit): Indica (si es =1) que la trama contiene un slot adicional para ajustar la tasa de bits a la frecuencia de muestreo. Si es 0 la trama sólo tiene N Slots. El rellenado es necesario con una frecuencia de muestreo de 44.1 KHz y también puede ser necesario en formato libre. El rellenado se deberá aplicar al bitstream de forma tal que la longitud acumulada de las tramas codificadas después de un cierto número de tramas no se desvíe en más de (+0, -1 slot) del siguiente valor calculado:

Trama actual

Long de trama acumulada = å (tamaño de la trama)* (tasa de bits) / (frecuencia de muestreo)

1ra trama

Donde el tamaño de la trama es: 384 p/Layer I

1152 p/ Layer II y III

•  Private_bit (1 bit): Para uso privado. No cumple función en la norma ISO 11172

•  Mode (2 bits) Indica el modo de acuerdo a la siguiente tabla.

En Layer I y II joint_stereo es intensity stereo. En Layer III joint_stereo es intensity stereo y/o ms_stereo.

Joint Stereo es uno de los modos del algoritmo de codificación de audio donde se explotan la redundancia e irrelevancia estereofónica (para mayor detalles ver Cap. 6: El modo Joint Stereo)

modo modo especificado
00 estéreo
01 joint_st(intensity_ st and/or ms_stereo
10 canal dual
11 canal simple

En modo joint_stereo el límite es determinado por la tabla de mode_extension.

•  Mode_extension (2 bits): Estos bits se utilizan en el modo joint_stereo.

En layer I y II indican que subbandas están en intensity_stereo. Todas las otras subbandas se codifican en estéreo.

extensión de modo
00 subbandas 4-31 en intensity_st, límite=4
01 subbandas 8-31 en intensity_st, límite=8
10 subbandas 12-31 en intensity_st, límite=12
11 subbandas 16-31 en intensity_st, límite=16

En Layer III indican que tipo de método de codificación de joint_stereo se aplica. Los rangos de frecuencias sobre los que se aplican los modos intensity_stereo y ms_stereo están implícitos en el algoritmo. Mayores detalles se dan en el proceso de decodificación del Layer III.

extensión de modo intensity_st ms_st
00 off off
01 on off
10 off on
11 on on

Observar que el modo stereo se utiliza si los bits de modo (mode_bits) especifican “stereo” o si, equivalentemente, si en los bits de modo (mode_bits) se especifica ‘joint_stereo’ y en mode_extension se especifica: intensity_stereo = off y ms_stereo = off

•  Copyright (1 bit): ‘1′ indica protección de Copyright, ‘0′ que no está protegido el bitstream por el Copyright

•  Original/copy (1 bit): ‘0′ indica copia, ‘1′ indica que es original.

•  Emphasis (1 bit): ‘1′ indica que se utiliza énfasis en la codificación.

emphasis Enfasis especificado
00 Ninguno
01 50/15 microsegundos
10 Reservado
11 CCITT J.17

•  index clip image002 00021 Compresión de audio MPEG
RC_check: Una palabra de 16 bits se utiliza en forma opcional dentro del bitstream codificado. Esta palabra contiene un código de redundancia cíclica que sirve para chequear los datos de la cabecera de la trama y determinar si se produjo error en la recepción de los datos correspondientes a ésta.

index clip image003 0000 Compresión de audio MPEG

Datos de Audio – Capa I (Layer I)

allocation [ch][sb] bits por muestra
0 0
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 11
11 12
12 13
13 14
14 15
15 forbiden

Allocation [ch][sb] : (4 bits) (asignación) indica el número de bits usado para codificar las muestras en la subbanda sb del canal ch . Para las bandas en modo intensity_stereo el bitstream contiene solamente un elemento de asignación (allocation) por subbanda (y no dos).

Nota : para el código ‘0000′ no se transfieren muestras.

Scalefactor [ch][sb]: ( SCF ) indica el factor por el cual las muestras del canal ch y subbanda sb deberán ser multiplicadas. Los 6 bits constituyen un número entero no signado que sirve de entrada a la tabla B1 (Layer I y II Scalefactors)

index clip image005 0003 Compresión de audio MPEG
Sample [ch][sb][s] : Es la representación codificada de la s th muestra del canal ch y la subbanda sb . Las subbandas en modo intensity_stereo la representación de una muestra es válida para ambos canales. La longitud de la muestra viene dada por el contenido del campo allocation (0 a bits) .

Sintaxis genérica de los datos de audio para Layer I

Datos de Audio – Capa II (Layer II)

index clip image006 00002 Compresión de audio MPEG
Allocation [ch][sb ] (2~4 bits)

Este campo contiene :

•  información relativa a los cuantificadores usados para las muestras en la subbanda sb en el canal ch ,

•  si la información de 3 muestras consecutivas se agrupó en un código y,

•  sobre el número de bits utilizados para codificar las muestras.

El significado y longitud de este campo depende del número de subbanda, la tasa de bits y la frecuencia de muestreo. Los bits en este campo forman un número entero no signado utilizado como puntero a la tabla B2 (Layer II bit allocation. Tablas), la cual da el número de niveles utilizados para la cuantificación. Para las subbandas en modo intensity_stereo el bitstream contiene solamente un código de asignación (allocation) por subbanda.

SCFSI [ch][sb] (Scale Factor Selection Information). (2 bits)

Estos bits dan la información sobre el número de SCFs transferidos por la subbanda sb en el canal ch y para que partes de la señal en la trama son válidas. La trama se divide en tres partes iguales de 12 muestras por subbanda c/u.

index clip image007 0001 Compresión de audio MPEG

SCFSI [sb]
00 se transmiten los 3 SCF, para las partes 0,1,2
01 se transmiten 2 SCF, el 1ro para las partes 0y1 el 2do para la parte 2
10 se transmite 1 SCF valido para las 3 partes
11 se transmiten 2 SCF, el 1ro para la parte 0 el 2do para las partes 1y2

Scalefactor [ch][sb][p] (6 bits)

Indica el factor por el cual deben ser multiplicadas las muestras del canal ch y la subbanda sb de la parte p de la trama (p=0,1,2). Los 6 bits constituyen un número entero no signado que sirve de entrada a la tabla B1 (Layer I, II Scalefactors)

Grouping [ch][sb]

Es una función que no se transmite en la trama (sino que se evalúa en el decodificador) y determina si 3 muestras consecutivas (un triplet) de la actual subbanda sb en el canal ch en el gránulo gr son codificadas y transmitidas con una única palabra código y no usando 3 palabras códigos diferentes. Grouping() devolverá verdadero (.t.) en la tabla de asignación de bits actualmente en uso (ver tabla B2 ) si el valor hallado debajo de la subbanda sb (fila) y la asignación[sb] (columna) es 3,5, o 9. De otro modo devolverá falso y por lo tanto las muestras se codificarán en forma separada. Para las subbandas en intensity_stereo el valor devuelto por grouping() es válido para ambos canales.

Observación : Gránulo en Layer II está constituido por un set de 3 muestras consecutivas de una subbanda, de las 32 subbandas en que se divide el espectro antes de la cuantificación. Corresponden a 96 muestras PCM.

index clip image0083 Compresión de audio MPEG

Samplecode [ch][sb][s]

Representación codificada de 3 muestras consecutivas en el gránulo gr de la subbanda sb y el canal ch. Para las subbandas en intensity_stereo la representación codificada es válida para ambos canales.

Sample [ch][sb][s]

Es la representación codificada de la s th muestra del canal ch y la subbanda sb . Las subbandas en modo intensity_stereo la representación de una muestra es válida para ambos canales.

index clip image010 00001 Compresión de audio MPEG

Sintaxis genérica de los datos de audio para Layer II

Datos de Audio – Capa III (Layer III)

index clip image011 0000 Compresión de audio MPEG

Main_data_begin

El valor de main_data_begin es utilizado para determinar la ubicación del primer bit de los datos principales (main data) de una trama. El valor de main_data_begin especifica la ubicación como un offset negativo en bytes desde el primer byte de la palabra de sincronismo de audio (sync word). El número de bytes que pertenece a la cabecera e información lateral ( side info : ver diagrama de la trama Layer III en hoja anterior) no se tienen en cuenta. Por ejemplo, si main_data_begin == 0 entonces los datos principales comienzan después de la información lateral.

Private_bits

Bits para uso privado. Estos bits no serán usados en el futuro por ISO/IEC. El número de private_bits depende del número de canales. El número de bits asignados a private_bits está determinado para igualar el número total de bits utilizado en la información lateral (side information).

SCFSI [ch][scfsi_band]

En layer III, la SCF Selection Information trabaja de manera similar que en Layer II. La principal diferencia es el uso de scfsi_band para aplicar scfsi a grupos de SCF en cambio de a SCF únicos. La aplicación de los SCF a gránulos está controlado por scfsi.

Observación: Gránulo en Layer III representa a 576 líneas de frecuencia que llevan su propia información lateral.

SCFSI [scfsi_band]
0 los SCF son transmitidos para cada gránulo
1 los SCF transmitidos para el gránulo 0 son válidos para el gránulo 1

Si se utilizan bloques cortos, por ej.: block_type == 2 para uno de los gránulos, entonces scfsi es siempre cero para esta trama.

Se transmiten cuatro SCFSI ( uno para cada SCFSI band) como puede observarse en la sintaxis de datos de audio de la hoja anterior.

SCFSI_Band

Controla el uso del SCFSI para grupos de SCF (scfsi_bands). (No es un campo que se transmite en la trama). El valor sirve de entrada a la tabla B8 .

banda de SCFSI (scfsi_band) Scalefactor band (ver tabla B8)
0 0,1,2,3,4,5
1 6,7,8,9,10
2 11..15
3 16..20

Part2_3_length[gr][ch]

Este valor contiene el número de main_data bits utilizados para SCF y códigos de datos Huffman. Dado que la longitud de la información lateral (side information) es siempre la misma, este valor puede ser usado para calcular el comienzo de la información principal (SCF y códigos de datos Huffman) (main data information) para el próximo gránulo o la posición de información auxiliar (si se utiliza). Cabe notar que en caso de un canal sólo, la longitud de la información lateral (side information) es de 17 bytes y para 2 canales es de 32 bytes.

Big_values[gr][ch]

Los valores espectrales de cada gránulo son codificados con diferentes tablas de codificación Huffman. El rango completo de frecuencias, desde cero a la de Nyquist, se divide en muchas regiones, las cuales son codificadas utilizando diferentes tablas. La división se hace de acuerdo a la cantidad máxima de valores cuantificados. Esto se hace asumiendo que los valores correspondientes a las altas frecuencias tienen menores amplitudes o ni siquiera necesitan ser codificados.

Comenzando desde las altas frecuencias, se cuentan los pares de valores cuya cuantificación es cero. Este número se lo denomina rzero .

Luego se cuentan la cantidad de cuartetos de valores cuyo valor absoluto no supera la unidad (o sea sólo incluye al –1,0 y 1). Este número de denomina count1 .

De nuevo se cuentan los pares de valores restantes (cuyo valor absoluto supera la unidad). A este número se lo denomina big_values (valores grandes). El máximo valor absoluto en este rango está restringido a 8191. En la sig. figura se muestra la partición que se realiza:

index clip image013 0000 Compresión de audio MPEG

Global_gain[gr][ch]

La información lateral referente al paso del cuantificador se transmite en una variable denominada global_gain. Esta es cuantificada logaritmicamente. En el capítulo referente al proceso de decodificación se da la fórmula donde se utiliza la variable global_gain.

Scalefac_compres[gr][ch]

Selecciona el número de bits usado para la transmisión de los SCF de acuerdo a la sig. tabla:

Block_type Mixed_block_flag Slen1 (long de los SCF para las bandas:) Slen2 (long de los SCF para las bandas:)
0,1 o 3 No importa 0-10 11-20
2 0 0-5 6-11
2 1 0-7 (SCF band de ventana larga)
3-5 (SCF band de ventana corta)
6-11

Si block_type es 0,1 o 3 entonces :

Slen1 es la longitud de los SCF para las bandas de SCF 0 a 10

Slen2 es la longitud de los SCF para las bandas de SCF 11 a 20

Si block_type=2 y mixed_block_flag=0 entonces :

Slen1 es la longitud de los SCF para las bandas de SCF 0 a 5

Slen2 es la longitud de los SCF para las bandas de SCF 6 a 11

Si block_type=2 y mixed_block_flag=1 entonces :

Slen1 es la longitud de los SCF para las SCF bands de 0 a 7 (SCF band para ventanas largas) y 3 a 5 (SCF band para ventanas cortas).

Nota: SCF bands 0 a 7 se leen de la tabla “Long window SCF band” y los SCF bands 3 a 11 desde la tabla “Short window SCF band”

Esta combinación de particiones es contigua y abarcan el espectro completo de frecuencias.

Slen2 es la longitud de los SCF para las bandas de SCF 6 a 11

Window_switching_flag[gr][ch]:

SCF_compress[gr]

Slen1

Slen2
0 0 0
1 0 1
2 0 2
3 0 3
4 3 0
5 1 1
6 1 2
7 1 3
8 2 1
9 2 2
10 2 3
11 3 1
12 3 2
13 3 3
14 4 2
15 4 3

Indica que el bloque usa una ventana distinta de la normal (type 0 window). Si window_switching_flag = 1 otras variables se setean automáticamente:

Region0_count = 7 (si block_type=1 o block_type=3 o [block_type=2 y mixed_block_flag])

Region0_count = 8 (si block_type=2 y no mixed_block_flag)

Region1_count = 36 (todos los valores remanentes en la región de big_values son contenidos en la región 1)

Si window_switching_flag = 0 entonces el valor de block_type=0

Block_type[gr][ch]:

Indica el tipo de ventana para el gránulo.

Block_type [gr]
0 Reservado
1 Comienzo de bloque
2 3 ventanas cortas
3 Fin de bloque

Block_type y mixed_block_flag dan la información acerca del ensamble de valores en un bloque y sobre la longitud y cantidad de las transformadas.

Si window_switching_flag = 1 entonces mixed_block_flag indica si las subbandas de bajas frecuencias en el banco de filtro polifásico se codifican usando ventana de tipo normal.

En caso de bloques largos (block_type #2 o en las subbandas bajas de block_type 2 si mixed_block_flag=1) la IMDCT genera 36 valores de salida cada 18 muestras de entrada. Esta salida se enmarca (dependiendo del block_type) y la primera mitad se solapa con la segunda mitad del bloque anterior. El vector resultante es la entrada a la parte de síntesis del banco de filtro polifásico para una subbanda.

En caso de bloques cortos (en las subbandas superiores de un bloque tipo 2 (si mixed_block_flag=1) o en todas las subbandas de un bloque tipo 2 (si mixed_block_flag=0)), se computan 3 transformadas produciendo 12 muestras de salida cada una. Los 3 vectores se enmarcan y se solapan. Concatenando 6 ceros en ambos extremos del vector resultante da un vector de longitud 36, el que es procesado como si fuese una transformada larga.

index clip image001 0001 Compresión de audio MPEG

Mixed_block_flag[gr][ch]:

Indica que las frecuencias más bajas son procesadas con un tipo de ventana que es diferente que aquella utilizada para altas frecuencias.

Si Mixed_block_flag = 0 entonces todos los bloques son procesados como se indica en block_type[gr][ch].

Si Mixed_block_flag = 1 entonces las líneas de frecuencia correspondiente a las 2 subbandas más bajas del banco de filtros polifásicos (18×2=36 líneas) son procesadas con ventanas normales, mientras que las 30 subbandas restantes son procesadas de acuerdo a como lo indique block_type[gr][ch].

Table_select[gr][ch][region]:

Se utilizan diferentes tablas de codificación Huffman dependiendo del máximo valor cuantificado y de las estadísticas locales de la señal. Existen un total de 32 tablas diferentes posibles (tabla B7 )

Subblock_gain[gr][ch][window]

Indica un offset de ganancia (cuantificación: factor 4). Se utiliza solamente en bloques del tipo 2 (ventanas cortas). El valor del sub-block debe ser dividido por: 4 (subblock_gain[window]) en el decodificador (ver fórmula para la recuantización y escalado Cap. 5).

Region0_count[gr][ch]

Una nueva partición del espectro se utiliza para mejorar la performance del codificador Huffman. Es una subdivisión de la región la cual es descripta por big_values. El propósito de esta subdivisión es conseguir una mejor robustez ante errores y una codificación más eficiente . Se utilizan 3 regiones estas son:

•  Región 0

•  Región 1

•  Región 2

index clip image002 00031 Compresión de audio MPEG
Cada región se codifica utilizando una tabla de codificación de Huffman dependiendo del máximo valor cuantificado y de estadísticas locales.

Region0_count y region1_count se utilizan para indicar los límites de las 3 regiones. Los límites de las regiones están alineados con la partición del espectro en scale factors bands (bandas de SCF).

El campo region0_count contiene uno menos que el número de bandas de SCF en la región 0. En caso de bloques cortos cada SCF band se cuenta 3 veces, una por cada ventana, por lo que si el valor de la región0_count=8 indica que la región 1 comienza en la SCF band número 3.

Si block_type=2 y mixed_block_flag=0 entonces el número total de SCF bands para el gránulo en este caso es 12*3 = 36. Si block_type=2 y mixed_block_type=1 la cantidad de SCF bands es 8 + 9 * 3 = 35.

Si block_type # 2 la cantidad de SCF bands es 21.

Region1_count[gr][ch]

Su valor representa uno menos que el número de SCF bands en la región 1. Si block_type=2 los SCF que representan diferentes slots de tiempo son contados separadamente.

Preflag[gr][ch]

Este es un atajo para obtener una amplificación adicional en altas frecuencias de los valores cuantificados. Si preflag se setea, entonces los valores de la tabla B6 son agregados a los SCF. Esto es equivalente a la multiplicación de los SCF recuantificados con los valores de la tabla. Si block_type=2 (bloques cortos) preflag no se aplica.

Scalefac_scale[gr][ch]

Los SCF son cuantificados logaritmicamente con un tamaño de escalón de 2 o Ö 2 dependiendo del valor de scalefac_scale. En la sig. tabla se da el factor de escala utilizado en la fórmula de recuantificación para cada tamaño de escalón.

Scale_fac[gr] Scalefac_multiplier
0 0.5
1 1

Count1table_select[gr][ch]

Esta bandera selecciona uno de las 2 posibles tablas de codificación Huffman para la región de cuartetos que contienen valores que no exceden a |1|

Count1table_select[gr]
0 Tabla B.7 – A
1 Tabla B.7 – B

index clip image004 00011 Compresión de audio MPEG

Scalefac_l[gr][ch][sfb], Scalefac_s[gr][ch][sfb][window], is_pos[sfb]:

Los SCF son utilizados para “ colorear” el ruido de cuantificación. Si el ruido de cuantificación se colorea con la forma correcta, éste es enmascarado completamente. A diferencia de Layer I y II, los SCF de Layer III no se refieren al máximo local de la señal cuantificada. En layer III, SCF son utilizados en el decodificador para obtener los factores de división (divisores) para grupos de valores (agrupados en SCF bands). En caso de Layer III, estos grupos de valores (SCF bands) se extienden sobre varias líneas espectrales. Estos grupos denominados bandas de factores de escala (SCF bands) son seleccionados de manera de asemejarse a las bandas críticas del oído humano lo más cercano posible.

La tabla de Scalefac_compres muestra que los SCF 0 …10 tienen un rango de 0 a 15 (máx. long.=4 bits) y los SCF 11….21 tienen un rango de 0 a 7 (máx long.=3bits).

Si intensity_stereo está habilitado (mode_bit_extension) los SCF de la “ zero_part ”, de la diferencia (canal derecho), son utilizados como intensity_stereo positions (is_pos). Is_pos[sfb] es la posición de estéreo intenso para la SCF band sfb.

La subdivisión del espectro en SCF bands permanece fija para cada longitud de bloque y frecuencia de muestreo y almacenados en tablas en el codificador y decodificador (Tabla B8). Los SCF son cero (SCF=0) para líneas de frecuencia por sobre la línea más alta de la tabla, lo que significa que el factor de multiplicación es 1.

Los SCF son cuantificados logaritmicamente. El escalón de cuantificación se establece con scalefac_scale.

Huffmancodebits()

Corresponde a los datos codificados según Huffman.

La sintaxis para la codificación de los datos según Huffman muestra como los valores cuantificados son codificados. Dentro de la partición de big_values, pares de valores cuantificados con un valor absoluto menor de 15 son codificados directamente usando código Huffman. Los códigos son seleccionados directamente desde tablas numeradas de 0 a 31 (tablas B7 ). Siempre se codifica un par de valores (x,y). Si la magnitud cuantificada que se codifica es mayor o igual a 15, entonces los valores son codificados con un campo de separación siguiendo al código Huffman. Si uno o ambos de los valores de un par no es cero, uno o dos bits de signos deben ser agregados a la palabra de código.

Las tablas de Huffman para la partición de big_values se componen de tres parámetros:

hcod[|x|][|y|] es la entrada a la tabla de codificación para los valores x e y .

hlen[|x|][|y|] es la entrada a la tabla de longitud para los valores x e y .

linbits es la longitud de linbitsx o linbitsy cuando estos son codificados.

La sintaxis para los Huffmancodebits contiene los siguientes campos y parámetros:

•  signv es el signo de v (0 si es positivo, 1 si es negativo)

•  signw es el signo de w (0 si es positivo, 1 si es negativo)

•  signx es el signo de x (0 si es positivo, 1 si es negativo)

•  signy es el signo de y (0 si es positivo, 1 si es negativo)

•  linbitsx es usado para codificar el valor de x si la magnitud de x es mayor o igual a 15.Este campo se codifica solamente si |x| en hcod es igual a 15. Si linbits es 0, por lo que no se codifican bits cuando |x| = 15, entonces el valor de linbits se define como 0.

•  linbitsy igual que linbitsx pero para el valor y .

•  is[l] Es el valor cuantificado para la línea de frecuencia l .

Los campos linbitsx y linbitsy son solamente usados si un valor es mayor o igual a 15 necesitan ser codificado estos campos son interpretados como enteros no signados y agregados a 15 para obtener el valor codificado. Los campos linbitsx y linbitsy no son usados nunca si la tabla seleccionada es una con valor máximo codificado menor que 15. Observar que el valor 15 puede aún ser codificado con una tabla Huffman para la cual linbits es cero. En este caso los campos linbitsx o linbitsy no son codificados, dado que linbits es cero.

Dentro de la partición count1, los cuartetos de valores con valor absoluto menor o igual a 1 se codifican(valores –1,0 y 1). Nuevamente las magnitudes de los valores son codificadas usando Huffman desde las tablas A o B en la tabla B7 . Nuevamente para cada valor diferente de cero, se le agrega un bit de signo después del símbolo Huffman.

Las tablas de Huffman para la partición count1 se componen de los siguientes parámetros:

hcod[|v|][|w|][|x|][|y|] es la entrada a la tabla de codificación para los valores v,w,x,y

hlen[|v|][|w|][|x|][|y|] es la entrada a la tabla de longitud para los valores v,w,x,y

La tabla B de códigos Huffman no es realmente una tabla de 4 dimensiones dado que está construida con un código trivial: 0 se codifica con un 1 y el 1 se codifica con 0.

Los valores cuantificados por encima de la partición count1 son todos ceros, por lo tanto no son codificados.

Por claridad, el parámetro count1 se usa en la norma para indicar el número de códigos Huffman en la región count1. De cualquier modo, a diferencia de la partición de bigvalues el número de valores de la partición count1 no está explícitamente codificado por un campo en la sintaxis. El final de la partición count1 se conoce solamente cuando todos los bits del gránulo (especificado por part2_3_length), se han agotado, y el valor de count1 se conoce implícitamente después de decodificar la región count1.

El orden de los datos de Huffman depende del tipo de bloque del gránulo. Los datos codificados de Huffman están dados para sucesivas SCF bands, comenzando por la SCF band 0. Dentro de cada SCF band, los datos de ordenan en sucesivas ventanas temporales, comenzando por la ventana 0 y finalizando en la ventana 2. Dentro de cada ventana, los valores cuantificados son entonces ubicados ordenados de menor a mayor frecuencia.

Datos Auxiliares

El número de bits auxiliares (no_of_ancillary_bits) es igual al número de bits de la trama de audio menos el número de bits usados por el header (cabecera), error check y datos de audio.

•  En layer I y II el no_of_ancillary_bits corresponde a la distancia entre el fin de los datos de audio y el comienzo de la próxima cabecera.

•  En Layer III el no_of_ancillary_bits corresponde a la distancia entre el fin de Huffman_code_bits y la ubicación en el bitstream donde apunta main_data_begin de la próxima trama.

index clip image006 0001 Compresión de audio MPEG

5 – Decodificación

Generalidades

La primera acción es la sincronización del decodificador con el bitstream entrante. Apenas después de comenzar, esto puede hacerse buscando la palabra de sincronismo (12 bits = ‘1111 1111 1111′) de la trama. En algunas aplicaciones el ID y el bit de protección son conocidos en el decodificador por lo que los primeros 16 bits de la trama pueden utilizarse para la sincronización, permitiendo una sincronización más segura.

La posición de 2 palabras de sincronismo consecutivas puede calcularse con la información de los 7 bits siguientes al de protección: el bitstream se divide en slots. La distancia entre el comienzo de 2 palabras de sincronismo consecutivas es igual a N o N+1 slots. El valor de N depende de la capa (Layer).

Para la capa I la ecuación es:

N = 12 * (tasa de bits) / (frecuencia de muestreo) (1 slot = 4 bytes)

Para la capa II y III la ecuación resulta:

N = 144 * (tasa de bits) / (frecuencia de muestreo) (1 slot = 1 byte)

Si el cálculo no da un número entero el resultado es truncado y se realiza el padding (rellenado). En este caso el número de slots en una trama variará entre N y N+1. Entonces, si el bit de relleno se setea en 1, la trama tiene relleno; si está en 0 el número de slots será un entero exacto (N). El conocimiento de la posición de 2 palabras de sincronismo consecutivas facilita enormemente la sincronización.

Si la Tasa de bits (bitrate_index) es igual a ‘0000′ entonces no se especifica la tasa exacta. N puede determinarse como la distancia entre 2 palabras de sincronismo consecutivas y la evaluación del ‘bit de relleno’.

Los bits de modo del bitstream se leerán y si su valor es ‘01′, también debe leerse los bits de extensión de modo (mode_extension). Estos últimos establecen el ‘límite’ como se muestra en la descripción del campo mode_extension (Cap. 4) en que las subbandas son codificadas en modo joint_stereo.

Si el bit de protección en la cabecera está en ‘0′, indica que una palabra de chequeo de CRC se insertó en la trama a continuación de la cabecera (header). El método de detección de error usa una palabra de 16 bits cuyo generador polinomial responde a:

G(x) = X 16 + X 15 + X 2 + 1

index clip image008 00001 Compresión de audio MPEG

Los bits incluidos en la palabra de chequeo (CRC) se dan en la tabla B5.

El método se describe en la figura 5.1. El estado inicial del registro es de:

1111 1111 1111 1111

Entonces todos los bits incluidos en el CRC se introducen en el circuito de la figura. A medida que ingresan los bits, el contenido del registro se va desplazando. Luego de la última operación de desplazamiento las salidas B 15 …B 0 constituyen el CRC que será comparado con el generado en el decodificador. Si las palabras de CRC no son idénticas (la transmitida y la generada) indica que se produjo un error en la transmisión del ‘campo protegido’ de la trama.

A los efectos de evitar distorsiones audibles, se utilizan técnicas de ocultación como puede ser silenciar esa trama o solicitar su retransmisión.

Capa I (Layer I)

Después de la parte de la decodificación que es común a todas las capas, la asignación de bits (bit allocation) tiene que ser leída para todas las subbandas y los SCF en aquellas subbandas que tienen una asignación de bits (bit allocation) distinta de cero. El diagrama de bloques del decodificador se da en al fig. 5.2.

Recuantificación de las muestras de las subbandas

En la asignación de bits (bit allocation) se conoce el número de bits n b que debe ser leído para las muestras en cada subbanda. El orden en que se asignan las muestras se detalla en el diagrama de distribución de los datos de audio (Cap. 4) para cada modo. Después que los bits de una muestra fueron extraídos del bitstream, el primer bit debe ser invertido. El número resultante puede ser considerado como un número fraccional con complemento a 2 dónde el MSB representa el valor –1. El valor recuantificado puede ser obtenido aplicando la siguiente fórmula:

S” = 2 nb * (S”’+ 2 -nb+1 )

2 nb -1

Donde :

S”’ es el número fraccional

S” es el valor recuantificado

nb es el número de bits asignado a las muestras en la subbanda

Las muestras en la subbanda que está en modo estéreo intenso (intensity_stereo) deben ser copiadas a ambos canales. El valor recuantificado debe ser re-escalado. El factor de multiplicación puede encontrarse en la tabla B1 (norma)

S’ = factor * S”

index clip image002 00042 Compresión de audio MPEG

Figura 5.2. Diagrama de flujo del decodificador Mpeg-1 para Capas I y II

Filtro de Síntesis de Subbanda

Si no existen bits asignados a una subbanda las muestras en esa subbanda toman el valor 0. Cada vez que las muestras de las subbandas de todas las 32 subbandas de un canal se calcularon se aplican al banco de filtros de síntesis y se calculan las 32 muestras de audio (PCM). El diagrama de flujo de las muestras se observa en la figura 5.3 donde se detalla la operación de reconstrucción.

Los coeficientes N ik se obtienen de:

N ik = cos[(16+i)(2k+1) p /64] donde 0 <= i <= 63 0 <= k <=31

index clip image004 0002 Compresión de audio MPEG

Los coeficientes Di para la operación de enventanado se pueden obtener de la tabla B3 . Los coeficientes se han calculado para la optimización numérica. Una trama contiene 12*32=384 muestras de subbanda, las que se transforman, después del filtrado en 384 muestras de audio.

Figura 5.3. Diagrama de bloques del banco de filtro de síntesis

Capa II (Layer II)

La Capa II es más eficiente pero también más compleja que la capa I. El diagrama de flujo de la figura 5.2 válido para la capa I lo es también para la II.

Decodificación de la Asignación de bits (Bit allocation decoding)

Para diferentes combinaciones de tasa de bits y frecuencias de muestreo existen diferentes tablas de asignación.

Observación: las tasas de bits dadas en las tablas de cabecera son por canal.

Si el modo no es canal único, la tasa de bits debe ser dividida por 2 para obtener la tasa de bits por canal. La decodificación de la asignación de bits (bit allocation) se efectúa en tres pasos de aproximación.

•  El primer paso consiste en leer NBAL (2,3, o 4) ( N umber of B its of AL location) para una subbanda desde el bitstream. El valor NBAL se da en la 2da columna de la tabla B2 . Estos bits deberán ser interpretados como un número entero no signado.

•  El segundo paso utiliza este número y el número de la subbanda como índice para apuntar a un valor en la tabla. Este valor representa el número de niveles (nlevels) utilizados para cuantificar las muestras en la subbanda.

•  Como tercer paso :

•  el número de bits utilizados para codificar las muestras cuantificadas,

•  los coeficientes de recuantificación y

•  si los códigos que representan 3 muestras consecutivas se agrupen en un único código,

pueden ser determinados utilizando la tabla B4 .

Se puede observar en las tablas de asignación de bit ( B2 )(bit allocation) que alguna de las subbandas más altas nunca tendrán bits asignados. SBLIMIT (SubBandLIMIT) representa la cantidad de subbandas que tienen nbal#0 (ver tabla B2 ).

Decodificación del SCFSI (SCale Factor Selection Information)

Las 36 muestras de una subbanda dentro de una trama son divididas en tres partes iguales de 12 muestras cada una. Cada parte puede tener su propio SCF. El número de SCFs que deben ser leídos del bitstream depende del contenido de SCFSI[sb]. El SCFSI[sb] se lee del bitstream para las subbandas que tienen una asignación de bit (bit allocation) distinta de cero.

•  Si SCFSI[sb] = “00” entonces los 3 SCF son transmitidos para las partes 0, 1 y 2 respectivamente.

•  Si SCFSI[sb] = “01” 2 SCF son transmitidos el primero válido para las partes 0 y 1 y el segundo para la parte 2.

•  Si SCFSI[sb] = “10” 1 SCF es transmitido válido para las 3 partes.

•  Si SCFSI[sb] = “11” 2 SCF son transmitidos el primero válido para la parte 0 y el segundo válidos para las partes 1 y 2.

Decodificación de los SCF (SCale Factors)

Para cada subbanda con una asignación de bits (bit allocation) distinta de cero, son leídos desde el bitstream. El número de SCF codificados y la parte de las muestras de subbanda a las que se refieren, está definido por SCFSI[sb]. Los 6 bits de los SCF codificados deben ser interpretados como un entero no signado que sirve de entrada a la Tabla B1 (Layer I y II Scalefactors). Esta tabla contiene los SCFs por el cual las subbandas no nulas deberían ser multiplicadas después de la recuantificación.
Recuantibband ficación de las muestras de su a.
Seguidamente, se leen las muestras codificadas. Como se observa en el capítulo 4 (descripción de la trama- Layer II) las muestras codificadas aparecen como triplets, el código contiene tres muestras consecutivas simultáneamente. La cantidad de bits a ser leídos para un triplet en el bitstream, para cada subbanda, se obtiene de la Tabla B4 (Layer II Clases de cuantificación).

De la misma tabla se establece si el código corresponde a tres muestras consecutivas separadas o es uno combinado para las tres muestras (agrupado). En este último caso es necesario desagrupar. El código combinado debe ser considerado como un entero no signado denominado “ c ”. El siguiente pseudo-código provee los 3 códigos separados.

For i=0, mientras i<3, incremento=1

S[i] = módulo de [c / nlevels ]

c = c DIV nlevels

End for

Donde nlevels es el número de pasos como se muestran en la tabla B2 (Layer II Bit allocation Table). [nlevels puede tomar los valores 0, 3, 5, 7, 9, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767 o 65535]

El primer bit de cada uno de los 3 códigos tiene que ser invertido, y los números resultantes deben ser considerados como números fraccionales en complemento a dos, donde el MSB representa el valor –1. Los valores recuantificados pueden obtenerse con la aplicación de la siguiente fórmula:

S” = C * (S”’ + D)

Donde S”’ es el número fraccional

S” es el valor recuantificado

Los valores de las constantes C y D se dan en la tabla B4. Los valores recuantificados debe ser re-escalados. Los factores de multiplicación se encuentran en la Tabla B1 (Layer I, II Scalefactors). El valor re-escalado S’ se calcula como:

S’ = factor * S”

Síntesis del Filtro de Subbanda

Si no existen bits asignados a una subbanda las muestras en esa subbanda toman el valor 0. Cada vez que las muestras de las subbandas de todas las 32 subbandas de un canal se calcularon se aplican al banco de filtros de síntesis y se calculan las 32 muestras de audio (PCM). El diagrama de flujo de las muestras se observa en el diagrama de flujo del decodificador visto para Layer I donde se detalla la operación de reconstrucción (figura 5.3).

Los coeficientes N ik se obtienen de:

N ik = cos[(16+i)(2k+1) p /64] donde 0 <= i <= 63 0 <= k <=31

Los coeficientes Di para la operación de enventanado se pueden obtener de la tabla B3 . Los coeficientes Se han calculado para la optimización numérica. Una trama contiene 36*32=1152 muestras de subbanda, las que se transforman, después del filtrado en 1152 muestras de audio.

Capa III (Layer III)

Se obtiene una resolución superior en frecuencia a través del uso de un banco de filtros híbrido. Cada banda se separa en 18 líneas de frecuencia con la aplicación de una MDCT. La longitud de la MDCT es de 36. Se utiliza la conmutación de una ventana adaptativa para el control de Pre-ecos. (Descripto en el capítulo 6). La frecuencia a partir de la cual bloques más cortos (mejor resolución temporal) son usados, puede ser seleccionadas.

Partes de la señal, por debajo de una determinada frecuencia dependiendo de la bandera “mixed_block_flag”, es codificada con una mejor solución frecuencia y parte de la señal por encima de esta frecuencia es codificada con una mejor resolución temporal.

Los componentes de frecuencia son cuantificados usando un cuantificador no uniforme y codificados usando un codificador Huffman. El codificador Huffman usa una de las 18 diferentes tablas. Un buffer es usado para mejorar la eficiencia de codificación del codificador Huffman y para ayudar en el caso de condiciones de Pre-eco (ver características del buffer en Cap. 6. El tamaño del buffer de entrada es el tamaño de una trama a la tasa de 160 Kbits/s por canal para Layer III. La técnica de buffer de corto plazo usada es denominada Bit Reservoir porque éste usa un bitrate variable a corto plazo con un desplazamiento máximo integral a partir de la tasa de bits media.

Cada trama contiene los datos de 2 gránulos. Los datos de audio en una trama están ubicados de la siguiente manera:

•  HEADER

index clip image005 0004 Compresión de audio MPEG

•  main_data_begin_pointer

Side Information

side info para ambos gránulos (scfsi)

•  side info para el granulo 1

•  side info para el granulo 2

index clip image006 0002 Compresión de audio MPEG

Main data stream

SCF y códigos de datos Huffman del gránulo 1

•  SCF y códigos de datos Huffman del gránulo 2

•  Datos auxiliares.

El main_data_begin_pointer especifica un offset negativo desde la posición del primer byte de la cabecera.

index clip image002 00051 Compresión de audio MPEG

Decodificación

Figura 5.4. Diagrama de bloques del decodificador Layer III.

La primera acción es de sincronización en el decodificador con el bitstream entrante. Esto se realiza como las otras capas. La información acerca de la frecuencia de muestreo es usada para seleccionar la tabla SCALEFACTOR_BAND.

Side information

La información lateral (side information) debe ser extraída del bitstream y almacenada para su uso durante la decodificación de la trama asociada. La información de selección de tabla es usada para elegir un decodificador Huffman y el número de linbits de acuerdo a la tabla B7 .

Comienzo de Main_data

Los datos principales ( main_data ) ( factores de escala, códigos Huffman y datos auxiliares ) no son necesariamente ubicados en forma adyacente a la información lateral. El comienzo de la parte principal de datos es direccionado usando la información contenida en el puntero main_data_begin de la trama actual. La asignación de los datos principales (main data) es hecha de manera que todos los datos principales estén residentes en el buffer de entrada cuando la cabecera de la próxima trama está llegando al buffer de entrada. El decodificador tiene que saltar la cabecera y la información lateral cuando está decodificando los datos principales. Este conoce sus posiciones desde el bitrate_index y el padding bit.

La longitud de la cabecera es siempre de 4 bytes, la longitud de la información lateral es de 17 bytes en el modo de canal simple y de 32 bytes en los otros modos. Los datos principales pueden extenderse a más de un bloque de cabecera e información lateral.

index clip image008 0001 Compresión de audio MPEG
En la figura 5.5 se observan dos trozos de bitstream del Layer III. En el superior las características de demanda son normales. En el inferior se observa un pico de demanda en Main info 3 y una pequeña demanda en Main Info 2.

Figura 5.5

Consideraciones del buffer

La siguiente regla puede ser usada para calcular el máximo número de bits usado por un gránulo:

La longitud del buffer en de 7680 bits. Este valor es usado como el máximo buffer para cada tasa. A la tasa más alta en Layer III (320 Kbits/s en señal estéreo) y una frecuencia de muestreo de 48 KHz. La longitud media de la trama es:

(320.000/48.000)*1152=7680 bits

Por lo tanto las tramas deben tener una longitud constante a esta tasa y frecuencia de muestreo.

A 64 Kbits/s (128 Kbits/s en estéreo) la longitud media del gránulo es

•  (64000/48000)*576=768 bits para una frecuencia de muestreo de 48 KHz. Esto significa que hay una desviación máxima (buffer de corto plazo) de

•  7680 – 4* 768=4608 bits es permitida para 64 Kbits/seg.

La desviación actual es igual al número de bytes especificados en el puntero (de offset) main_data_begin. La desviación máxima real es:

•  2^9*8 bit = 4096 bits (main_data_begin = 9 bits)

Por consiguiente, se puede calcular el retardo y la longitud del buffer para tasas de bits intermedias. Se permite el intercambio del buffer entre el canal izquierdo y derecho en un bitstream estéreo sin restricciones. Debido a la limitación en el tamaño del buffer, main_data_begin se setea siempre en 0 en el caso que el Bit_rate_index == 14. Por ejemplo, en una tasa de 320 Kbits/seg. estéreo. En este caso todos los datos se ubican entre palabras de cabecera adyacentes.

Para frecuencias de muestreos menores de 48 KHz el buffer debería limitarse de manera tal que el mismo tamaño de buffer físico sea suficiente como para uno calculado a 48 KHz.

Scalefactors (SCF)

Los SCF son codificados de acuerdo a las variables slen1 y slen2 las cuales se determinan desde los valores de Scalefac_compres. Los valores decodificados pueden ser utilizados como entrada a una tabla utilizada para calcular los factores para cada SCF_band directamente. Cuando se está decodificando el segundo gránulo, debe ser considerada la SCFSI. Para las bandas en las cuales el correspondiente SCFSI está seteado en 1, los SCF del primer gránulo son también utilizados para el segundo gránulo, por lo tanto éstos (los SCF) no se transmiten para el segundo gránulo.

El número de bits utilizados para codificar los SCF se denomina part2_lengh y se calcula de la sig. manera:

•  Si el block_type == 0,1, o 3 tipo de block largo

Part2_length= 11*slen1+10*slen2 ( 11= cant de bandas[0,10] ; 10 cant de bandas[11,20] )

•  Si el block_type == 2 (tipo de block corto) y mixed_block_flag == 0

Part2_length= 18*slen1+18*slen2 ( 18= cant de bandas[0,5]*3 ; 18 cant de bandas[6,11]*3 )

•  Si el block_type == 2 (tipo de block corto) y mixed_block_flag == 1

Part2_length= 17*slen1+18*slen2 ( 17= cant de bandas[0,7]+cant de bandas[3,5]*3 ; 18 cant de bandas[6,11]*3 )

Del Cap. 4: Scalefac_compress se tenía:

Block_type Mixed_block_flag Slen1 (long de los SCF para las bandas:) Slen2 (long de los SCF para las bandas:)
0,1 o 3 No importa 0-10 11-20
2 0 0-5 6-11
2 1 0-7 (SCF band de ventana larga)
3-5 (SCF band de ventana corta)
6-11

Las fórmulas son válidas si gr. == 0 o si gr. == 1 y scfsi[ch][scfsi_band] == 0 (por ejemplo SCFSI no se usa).

Codificación HUFFMAN

Toda la información necesaria, incluyendo la tabla que realiza el árbol de codificación HUFFMAN puede generarse desde las tablas B7 .

Dato en la trama

Scalefac_compres[gr.] Slen1 Slen2
0 0 0
1 0 1
2 0 2
3 0 3
4 3 0
5 1 1
6 1 2
7 1 3
8 2 1
9 2 2
10 2 3
11 3 1
12 3 2
13 3 3
14 4 2
15 4 3

Los datos que corresponden a big_values se decodifica, utilizando las tablas con el número contenido en Table_select[gr.][ch][region]. Las líneas espectrales en la región 0, región 1 y región 2 son decodificadas de a pares hasta completar el número de pares de líneas espectrales contenido en big_values.

Los restantes bits de código HUFFMAN son decodificados utilizando la tabla de acuerdo a count1table_select[gr.][ch]. La decodificación se realiza hasta que todos los códigos HUFFMAN han sido decodificados o hasta que los valores cuantificados que representan 576 líneas han sido decodificados, lo que llegue primero. Si existen más bits de códigos HUFFMAN que los necesarios para decodificar 576 líneas espectrales estos son descartados. La variable count1 se deriva implícitamente cómo el número de valores (cuartetos) decodificados utilizando count1table_select.

Recuantificador

El cuantificador no uniforme utiliza una ley exponencial. Para cada valor, “is”, a la salida del decodificador Huffman se calcula el valor |is| 4/3 . Esto puede ser hecho a través del calculo explícito o bien puede estar tabulado en una tabla.

Formula para la recuantificación y escalado completo.

Una fórmula describe el proceso completo desde la salida del decodificador Huffman hasta la entrada de las muestras al banco de filtros polifásicos. Todos los factores de escala necesarios están incluidos en esta fórmula. Los datos de salida son reconstruidos desde las muestras recuantificadas.

Los valores de la ganancia global y de sub-bloque afectan a todos los valores dentro de una ventana de tiempo (en el caso de que block_type == 2).

Los factores de escala (SCF) y preflag ajustan antes la ganancia dentro de cada banda de factor de escala (scale factor band).

La siguiente es la fórmula de recuantificación para ventanas cortas (block_type=2). El valor decodificado (de la salida del decodificador Huffman) para la línea i se llama is i y la entrada al banco de filtros de síntesis para la línea i se denomina xr i :

KS = 2 1/4 * (global_gain[gr] – 210 – 8 * subblock_gain[window][gr.] )

xr i = sign(is i ) * | is i | (4/3 * KS) * 2 – ( Scalefac_multiplier * Scalefac_s[gr.][sfb][window] )

para bloques largos la fórmula es:

KL = 2 1/4 * (global_gain[gr.] – 210 )

xr i = sign(is i ) * | is i | (4/3 * KL) * 2 – ( Scalefac_multiplier * Scalefac_l[gr.][sfb][ch] + pretab[sfb])

donde :

•  Pretab[sfb] es el valor de pre-énfasis dado en la tabla B6 .

•  La constante ‘210′ es necesaria para escalar la fórmula apropiadamente (Es una cte. del sistema).

•  Se asume que el banco de filtro de síntesis está implementado de acuerdo a las fórmulas que se detallan más arriba. El rango de la salida del decodificador son valores (muestras) PCM que varían entre –1 y 1.

Observación: Gránulo en Layer III corresponde a 576 líneas de frecuencia que llevan su propia Side Info.

Reordenamiento

index clip image009 0000 Compresión de audio MPEGindex clip image010 0001 Compresión de audio MPEGindex clip image011 0001 Compresión de audio MPEG

Si se utilizan bloques cortos (block_type == 2), los datos reescalados xr[scf_band][window][freq_line] deberán ser reordenados por orden de subbanda antes de ingresar al bloque de IMCT ( xr[subband][window][freq_line] ).

Figura 5.6 .

Modo Ms_stereo

Este modo (que se encuentra en establecido en la cabecera en el campo Mode_extension) permite conmutar entre estéreo independiente a MS_stereo. Si:

MS_stereo Intensity Stereo Entonces:
Habilitado NO Habilitado El espectro completo se decodifica en MS_stereo
Habilitado Habilitado El límite superior de los SCF bands codificados en MS_stereo se obtienen a partir de “zero_part” de la diferencia (canal derecho). En este caso el SCF band en la cual la última línea de frecuencia, con valor #0, representa a la última SCF band a la cual se le aplica Intensity Stereo. Por encima de éste límite Intensity Stereo puede ser aplicado si se encuentra habilitado en el Header. La “zero_part” del canal diferencia es la parte del espectro que va desde Bigvalues*2+count1*4 hasta la Tasa de Nyquist (ver cap. 6 Codificación en Joint Stereo).

MS matrix

L i = M i + Si R i = M i – Si

Ö 2 Ö 2

En modo MS estéreo, los valores normalizados de los canales middle/side (M/S) son transmitidos en vez de los canales izquierdo/derecho. Así L i /R i son reconstruidas usando:

Los valores de M i son transmitidos por el canal izquierdo y los S i por el derecho.

Si ocurre una conmutación de ventana, entonces los canales M y S deben conmutar sincronizadamente.

Intensity Stereo Mode

Este modo, encontrado en la cabecera (header) en el campo mode_extension permite conmutar desde ‘stereo normal’ a ‘intensity stereo’. En Layer III , intensity stereo no se efectúa usando un par de SCF como en Layer I y II, sino a través de especificar la magnitud ( a través de los SCF del canal izquierdo como en MS_stereo [normal]) y la posición stereo is_pos sb [sfb]. Is_pos sb [sfb] se transmite en vez de los SCF del canal derecho. La posición stereo se utiliza para discriminar el canal derecho del izquierdo de acuerdo a las fórmulas abajo detalladas. El límite inferior de los SCF bands decodificados en stereo intenso se obtienen desde la ‘zero_part’ del canal derecho. Por sobre este límite la decodificación de stereo intenso es aplicando usando los SCF del canal derecho como posiciones de stereo intenso. Una posición de stereo intenso de 7 en un SCF band indica que este SCF band no esta decodificado como stereo intenso.

index clip image012 00001 Compresión de audio MPEG

Para cada SCF band [sb] codificada en stereo intenso los siguientes pasos se efectúan:

•  La posición de stereo intenso is_pos sb se lee desde el SCF del canal derecho.

•  Si ( is_pos sb == 7 ) los pasos 3), 4) y 5) no se ejecutan:

•  Is_ratio = tan( is_pos sb * p /12 )

L i = L i * Is_ratio / (1 + Is_ratio) para todos los índices i dentro de la actual SCF band sb.

•  R i = R i * 1 / (1 + Is_ratio) para todos los índices i dentro de la actual SCF band sb.

(Para mayor información sobre los modos Intensity Stereo y MS_stereo ver capítulo 6.)

Banco de filtros de síntesis

La figura 5.8 se muestra el diagrama incluyendo el banco de filtros de síntesis. Las líneas de frecuencia son pre-procesadas con el esquema de reducción de aliasing (ver figura 5.9 ) y los coeficientes que se utilizan están en la Tabla B9 , los cuales alimentan proceso de la transformada Inversa del coseno modificada (IMDCT).

index clip image001 0002 Compresión de audio MPEGindex clip image002 00062 Compresión de audio MPEGindex clip image003 0001 Compresión de audio MPEGindex clip image004 0003 Compresión de audio MPEGindex clip image005 0005 Compresión de audio MPEGindex clip image006 0003 Compresión de audio MPEGindex clip image007 0002 Compresión de audio MPEGindex clip image008 0002 Compresión de audio MPEG
Figura 5.8

index clip image009 0001 Compresión de audio MPEG

Figura 5.9. Reducción de aliasing.

Entonces:

•  Cada 18 líneas conforman un bloque a procesar.

•  La primera mitad de los valores de salida son sumados a los valores solapados almacenados provenientes del último block. Estos valores constituyen los nuevos valores de salida y son la entrada para el banco de filtro de síntesis.

•  La segunda mitad de los valores de salida se almacenan para solaparse con los datos provenientes del próximo gránulo.

•  A partir de la segunda subbanda del banco de filtros polifásico cada segundo valor de entrada es multiplicado por -1 para corregir la inversión de frecuencia del banco de filtro polifásico.

•  Para gránulos de bloque largos (block_type # 2) la entrada al banco de filtros de síntesis es procesada para la reducción del aliasing antes de aplicársele la IMDCT. En la norma se especifica un pseudo código que realiza esta acción. (Ver figura 5.10).

index clip image010 0002 Compresión de audio MPEGindex clip image011 0002 Compresión de audio MPEG
Figura 5.10

Reducción de aliasing

Para gránulos con tipos de bloque largos (long block_type), en el ingreso al banco de filtros de síntesis se procesa la reducción de aliasing antes del ingreso a la IMDCT. El siguiente pseudo-código describe computación de la reducción del aliasing:

For sb=1 hasta sb<32, incrementar de a 1

For i=0 hasta i<8, incrementar de a 1

xar[18*sb-1-i] = xr[18*sb-1-i]Cs[i] – xr[18*sb+i]Ca[i]

xar[18*sb +i] = xr[18*sb +i]Cs[i] – xr[18*sb-1-i]Ca[i]

end for (i)

end for (sb)

•  i=8 no se considera porque existen 2 líneas (cada 18) que no tienen solapamiento.

Los índices de las matrices xar[] y xr[] representan las líneas de frecuencias en el gránulo, ordenadas desde las bajas frecuencias hacia las altas, representando el cero la línea de frecuencia más baja y la 575 la más alta. Los coeficientes Cs(i) y Ca(i) están en la tabla B9 y las figuras 5.10 y 5.11 representan esquemáticamente el proceso.

index clip image012 0001 Compresión de audio MPEG
La reducción de aliasing no se aplica para gránulos con block_type == 2 (bloques cortos)

Figura 5.11

Transformada discreta inversa del coseno modificada. IMDCT

En la siguiente fórmula: ‘n’ es el número de muestras enmarcadas (para bloques cortos n=12 y para bloques largos n=36). En el caso de un bloque tipo ‘corto’ cada uno de los 3 bloques cortos es transformado separadamente. Los n/2 valores X k son transformados en n valores X i . La expresión analítica de la IMDCT es:

index clip image013 0001 Compresión de audio MPEG

Enmarcado (Windowing)

Dependiendo del tipo de block, son utilizados diferentes tipos de enmarcado (enventanados):

Block_type = 0 (enmarcado normal)

z i = x i sen [ p /36 * (i + 1/2)] para i = 0 a 35

Block_type = 1 (start block)

index clip image014 00001 Compresión de audio MPEGx i sen [ p /36 * (i + 1/2)] para i = 0 a 17

x i para i = 18 a 23

z i = x i sen [ p /12 * (i - 18 +1/2)] para i = 24 a 29

0 para i = 30 a 35

Block_type = 3 (stop block)

index clip image015 0000 Compresión de audio MPEG0 para i = 0 a 5

x i sen [ p /12 * (i - 6 +1/2)] para i = 6 a 11

z i = x i para i = 12 a 17

x i sen [ p /36 * (i +1/2)] para i = 18 a 35

Block_type = 2 (short block)

Cada uno de los 3 bloques cortos es enmarcado separadamente.

y i(j) = x i(j) sen [ p /12 * (i +1/2)] para i = 0 a 11 j = 0 a 2

index clip image016 00001 Compresión de audio MPEG

Los bloques cortos enmarcados deben ser solapados y concatenados.

Solapamiento y agregado con el bloque previo.

La primera mitad de los 36 valores esta solapada con la segunda mitad del bloque previo. La segunda mitad del bloque actual se almacena para ser utilizada en el próximo bloque:

result i = z i + s i para i = 0 a 17

s i = z i + 18 para i = 0 a 17

Compensación por la inversión de frecuencia del banco de filtros polifásicos

La salida de la suma solapada consiste 18 muestras para cada de las 32 subbandas. Si las muestras temporales son etiquetadas de 0 a 17, siendo 0 la primera de las muestras, y las subbandas se etiquetan 0 a 31, con 0 la subbanda mas baja, entonces toda muestra temporal impar de toda subbanda impar es multiplicada por -1 antes de ser procesada por el banco de filtros de síntesis polifásico.

6 – Codificación

Generalidades

El banco de filtro realiza un mapeo de tiempo a frecuencia. En la Norma ISO 11172 se utilizan 2 tipos de bancos de filtros:

Un banco del tipo polifásico para las capas I y II y un banco del tipo híbrido-polifásico (con MDCT) para la capa III.

Ambos proveen un mapeo específico del dominio tiempo a frecuencia. Los bancos hacen un muestreo crítico (hay tantas muestras en el dominio frecuencia como en el dominio tiempo) y proveen la primera separación de frecuencia en el codificador y los filtros de reconstrucción en decodificador. Las muestras de salida de los bancos de filtros son cuantificadas.

En las capas I y II, un banco de filtros con 32 subbandas es utilizado. En cada subbanda, 12 o 36 muestras son agrupadas para el procesamiento. En la capa III, el banco de filtros tiene una resolución dependiente de la señal donde puede haber 6×32 muestras frecuenciales (bloque corto) o 18×32 muestras frecuenciales (bloque largo). En el caso de 6×32 muestras frecuenciales, 3 sets de cada frecuencia son cuantificados separadamente.

Filtro Pasa Alto de entrada

index clip image017 Compresión de audio MPEG
El algoritmo de codificación provee una respuesta en frecuencia que arranca desde DC. De cualquier modo, en aplicaciones donde éste no es un requerimiento se recomienda la utilización de un filtro pasa alto que debe incluirse en la entrada del codificador. La frecuencia de corte del filtro debe estar entre 2 y 10 Hz. La utilización de dicho filtro evita un innecesario requerimiento de tasa de bits alta para la subbanda más baja e incrementa la calidad de audio total.

Filtro de Análisis de subbanda

El filtro de análisis de subbanda se utiliza para partir el ancho de banda de la señal con frecuencia de muestreo Fs en 32 equiespaciadas subbandas con una frecuencia de muestreo de FS/32. En este proceso se realizan las siguientes operaciones:

•  Ingreso de 32 muestras de audio

•  Construcción de un vector X de 512 elementos con las últimas 512 muestras de audio ingresadas. Las 32 muestras de audio ingresadas son desplazadas dentro del vector desde la posición 0 a 31, la más reciente en la posición 0, las últimas 32 se desplazan hacia fuera (se descartan).

•  Se enmarca el vector X con el vector C (cuyos coeficientes figuran en la tabla C1 ) generando el vector z (ver diagrama).

•  Se calculan los 64 valores Y i de acuerdo a la formula dada en el diagrama de flujo.

•  Se calculan las 32 muestras de cada subbanda S i a través de un matrizado. Los coeficientes para la matriz pueden ser calculados a través de la siguiente fórmula:

M ik = cos[(2i+1)(k-16) p /64] i desde 0 a 31 y k desde 0 a 63

index clip image001 0003 Compresión de audio MPEG
En el siguiente diagrama se detallan los pasos donde se transforman las muestras desde el dominio tiempo a las 32 subbandas (en el dominio frecuencia) [Banco de Filtros Polifásicos].

Diagrama de bloques del Filtro de Análisis de Subbanda

El modelo Psicoacústico

El modelo psicoacústico calcula el nivel de ruido perceptible para cada subbanda. Este nivel es utilizado en la asignación de bits o ruido para determinar los cuantificadores actuales y niveles de cuantificación. Los modelos psicoacústicos descriptos en la norma son dos y, si bien ambos pueden usarse para cualquiera de las capas, el primer modelo se adapta mejor a las capas I y II mientras que el modelo II lo hace mejor para la capa III (con una leve modificación) (ver modelo psicoacústico II capítulo 7).

En ambos modelos la salida es la Relación Señal Máscara (SMR) para cada banda (en las capas I y II) o grupo de bandas (capa III)

Asignación de Bits o Ruido

Al asignador ingresan tanto las muestras provenientes del banco de filtros y la SMR proveniente del modelo Psicoacústico, y ajusta la asignación de bits (Capas I y II) o la asignación de Ruido (Capa III) de manera de cumplir simultáneamente tanto con el requerimiento de la tasa de bits como también con el requerimiento de enmascaramiento. A bajas tasas estos métodos tratan de dedicar bits de manera que resulte psicoacústicamente tolerable cuando no se puede satisfacer la demanda psicoacústica a la tasa de bits requerida.

Método de asignación de bits o ruido: Existen dos métodos de control de la tasa de bits. En las capas I y II este método es un proceso de asignación de bits (una determinada cantidad de bits se asigna a cada muestra o grupos de muestras) en cada subbanda.

El método para la capa III es un bucle de asignación de ruido, donde los cuantificadores son variados de un modo organizado, y la variable a controlar es el ruido inyectado. En cada caso el resultado es un conjunto de parámetros de cuantificación y las muestras de salida cuantificadas que ingresan al formateador de trama.

El formateador de la trama

El formateador del bitstream varía de capa en capa. En las capas I y II se utilizan código PCM fijo para cada muestra de subbanda, con la excepción que en Layer II las muestras cuantificadas pueden ser agrupadas. En Layer III se utilizan códigos Huffman para representar las muestras de frecuencia cuantificadas. Los códigos Huffman son palabras de longitud variable que permiten una más eficiente representación de las muestras cuantificadas en el bitstream, a costo de una mayor complejidad.

El formateador del bitstream toma las salidas del banco de filtros cuantificadas junto con la asignación de bits (Capas I y II) o la asignación de ruido (capa III) y otra información adyacente (side info) requerida, y codifica y formatea esa información de una manera eficiente. En el caso de la Capa III, la codificación Huffman se inserta también en este punto.

Capa I (Layer I)

El cálculo de los parámetros del modelo psicoacústico puede obtenerse utilizando cualquiera de los modelos detallados (a modo de ejemplo) en la norma ISO 11172. La extensión (shift length) de la FFT es de 384 muestras. Cada modelo provee la SMR para cada subbanda

El banco de filtro de subbandas es como el detallado anteriormente.

El cálculo de los factores de escala (Scalefactors: SCF) se efectúa cada 12 muestras de cada subbanda. El máximo valor absoluto de estas 12 muestras se determina. Por tratarse de muestras normalizadas estas varían entre –1 y 1. El mínimo valor de la tabla B1 (de la norma) que resulta mayor que este máximo es usado como SCF.

El índice de la tabla B1 está representado por 6 bits, el MSB primero. El SCF se transmite sólo si el número de bits asignado a la subbanda es distinto de cero.

Asignación de bits .

Antes de ajustar a una tasa de bits fija, el número de bits disponibles para codificar las muestras y los SCF deben ser determinados. Este número se determina de la siguiente expresión:

Adb = cb – (bhdr + bcrc + bbal + banc) donde

donde:

Adb : bits disponibles para la codificación de las muestras

Cb : número total de bits disponibles

Bhdr : cantidad de bits del Header (cabecera) (32 bits)

Bcrc : palabra de control CRC (código de redundancia cíclica) (16 bits)

Bbal : bits utilizados para la asignación

Banc : bits utilizados para el envío de datos auxiliares (no forman parte del audio) en la trama.

El número de bits resultantes es usado para la codificación de las muestras de la subbandas y los SCF. El principio utilizado en el procedimiento de asignación es la minimización de la NMR (Relación Ruido Mascara) en la trama con la restricción que el número de bits utilizado no exceda el disponible para la trama. La cantidad de bits posibles para asignar a una muestra puede encontrarse en la tabla de Asignación de bits para Layer I (Capítulo 4), siendo el rango de 0 a 15 bits (excluyendo la asignación de 1 bit).

El procedimiento de asignación es iterativo, donde en cada paso de iteración se incrementa el número de niveles de las muestras de la subbanda que mayor beneficio produzca (de acuerdo al modelo psicoacústico).

Primero se calcula MNR (relación Máscara-Ruido) para cada subbanda restando a SNR la SMR

NMR=SNR – SMR donde la SNR puede hallarse en la tabla C2 y SMR es la salida del modelo psicoacústico.

En principio, ningún bit se asigna para las muestras y SCFs. El número de bits por muestras (Bspl) y el número de bits por SCF (Bscf) es seteados en cero. El procedimiento iterativo comienza y cada bucle de iteración contiene los siguientes pasos:

•  Determinación de la mínima MNR para todas las subbandas. La precisión de la cuantificación de la subbanda con el mínimo MNR se incrementa con el uso del próximo número de bits más alto

•  La nueva MNR se calcula

•  Bspl (bits por muestra) se actualiza de acuerdo al número de bits adicionales requeridos. Si por primera vez se asigna un número de bits a la subbanda entonces Bscf (bits para SCF) debe incrementarse en 6 bits por lo que los bits disponibles ahora se calcularán:

Adb = cb – (bhdr + bcrc + bbal + bscf + bspl + banc)

El proceso iterativo se repite tantas veces hasta que Adb no pueda incrementarse con un nuevo paso de iteración (por el incremento de Bspl y Bscf).

Cuantificación y codificación de las muestras de la subbandas.

Un cuantificador lineal con una representación de cero simétrico se utiliza para cuantificar las muestras de las subbandas. Esta representación evita que pequeños cambios de valor alrededor del cero cuantificando a diferentes niveles. Cada una de las muestras de las subbandas es normalizada dividiendo su valor por el SCF para obtener X y cuantificada de acuerdo a la sig. Fórmula:

•  Cálculo de AX+B

•  Tomar los N bits más significativos

•  Invertir el MSB

A y B son constantes que se encuentran en la tabla C3 . N representa el número de bits necesarios para codificar el número de pasos (escalones). La inversión del bit más significante se hace a los efectos de evitar todos ‘1′ en la representación del código, dado que el código con todos ‘1′ se utiliza para la palabra de sincronización.

La Codificación de la asignación de bits .

Se realiza de acuerdo a la tabla de Asignación de bits para Layer I (capítulo 4).

Datos Auxiliares

Pueden transmitirse dentro de la trama y su longitud no está acotada, pero éstos reducen la cantidad de bits disponibles para audio, lo que puede resultar en una degradación de la calidad de audio.

La presencia de un patrón de bits dentro de los datos auxiliares que coincida con la palabra de sincronismo puede dañar la sincronización. Esto puede ser más frecuente cuando se utiliza formato libre.

Formateo de los datos.

La información codificada de las subbandas se transfiere en tramas. El número de slots en una trama varía con la frecuencia de muestreo y la tasa de bits. Cada trama contiene información de 384 muestras de la señal de audio original por lo que la tasa de la trama es de Fs/384.

Fs (KHz) Tamaño de la Trama (ms)
48 8
44.1 8,7074
32 12

Una trama puede contener información de uno o dos canales. La longitud de un slot en la Capa I es de 32 bits (4 bytes). El número de slots en una trama puede obtenerse de la siguiente manera:

Número de slots/trama = (bitrate/Fs)* 12

Si el resultado no es un número entero éste se trunca y se requiere de “padding” (rellenado). Esto significa que el número de slots puede variar entre N y N+1.

index clip image002 00073 Compresión de audio MPEG

Formato de la Trama en Layer I

index clip image004 0004 Compresión de audio MPEG

Diagrama de bloques del codificador MPEG-1 válido para las capas I y II

Capa II (Layer II)

Modelo Psicoacústico

El modelo psicoacústico puede calcularse con cualquiera de los dos modelos descriptos en la norma. Si el modelo 1 se utiliza para calcular los parámetros psicoacústicos, la longitud de ventana de la FFT es de 1152 muestras. Si se utiliza el modelo 2, el cálculo se realiza dos veces con una longitud de ventana (shift length) de 576 muestras y el mayor de cada par de SMR se utiliza. Ambos modelos proveen la SMR para cada subbanda.

El banco de filtro de subbanda corresponde al descripto anteriormente.

El cálculo de los SCF para cada subbanda se realiza cada 12 muestras. Se determina el máximo valor absoluto de estas 12 muestras y el mínimo valor de la tabla B1 que sea mayor que este máximo se usa como factor de escala.

Codificación de los Factores de escala (SCF).

Una trama corresponde a 36 muestras por subbandas y por lo tanto contiene tres SCF por subbanda.

index clip image005 0006 Compresión de audio MPEGSB i

Se calculan las diferencias entre los SCF de cada grupo de 12 muestras:

Dscf 1 = scf 1 – scf 2

Dscf 2 = scf 2 – scf 3

La clase de cada diferencia se determina como sigue:

clase Dscf
1 Dscf<=-3
2 -3<dscf<0
3 Dscf=0
4 0<dscf<3
5 Dscf>=3

El par de clases de diferencias indican el punto de entrada a la tabla C4 (Layer II Scalefactors Transmission Patterns). La columna con nombre “Scalefactor used in the encoder” da los tres SCF que son actualmente usados. “1” , “2” y 3 significa que el primero, segundo y tercero dentro de una trama, respectivamente. “4” significa el máximo de los tres SCF. Si después de este ajuste de SCF dos o tres son iguales indica que no todos los SCF necesitan ser transmitidos para cierta subbanda dentro de la trama. Solamente los SCF indicados en la columna de “Transmission Patterns” serán transmitidos. La información que detalla el número y la posición de los SCF en cada subbanda se denomina “SCF Selection Information”.

Codificación de los SCFSI:

Se codifican utilizando con una palabra de 2 bits que también se encuentra en la tabla C4 . Solamente los SCFSI para las subbandas que tienen una asignación de bits distinta de 0 se transmiten.

Asignación de bits

Antes de ajustarse a una tasa fija de bits, el número de bits disponible (adb) que están disponible para la codificación de las muestras y de los SCF debe ser determinado. Este número puede obtenerse de la sig. manera:

Adb=cb- (bhdr + bcrc + bbal + banc)

Donde :

Adb : bits disponibles para la codificación de las muestras

Cb : número total de bits disponibles

Bhdr : cantidad de bits del Header(cabecera) (32 bits)

Bcrc : palabra de control CRC (código de redundancia cíclica) (16 bits)

Bbal : bits utilizados para la asignación

Banc : bits utilizados para el envío de datos auxiliares (no forman parte del audio) en la trama.

El número resultante puede ser utilizado para codificar las muestras de las subbandas y los SCF. El principio usado en el procedimiento de asignación es la minimización de la relación ruido a máscara (NMR) total sobre la trama con las restricciones que el número de bits utilizados no exceda el número de bits disponible para la esa trama. La tabla B2 de la norma indica para cada subbanda el número de posibles escalones que se pueden utilizar para cuantificar las muestras. El número de bits requeridos para representar esas muestras cuantificadas se detalla en la tabla B4

La asignación es un procedimiento iterativo donde, en cada paso de iteración el número de niveles de la subbanda que produzca el mayor beneficio psicoacústico se incrementa.

Primero se calcula la relación NMR para cada subbanda haciendo:

NMR = SNR – SMR (en dB)

SNR puede encontrarse en la tabla C5 , mientras que SMR es la salida del modelo psicoacústico.

Al inicio de la iteración, no se asignan bits para las muestras y SCF. El número de bits por muestras (Bspl) y el número de bits por SCF (Bscf) es seteados en cero. El procedimiento iterativo comienza y cada bucle de iteración contiene los siguientes pasos:

•  Determinación de la mínima MNR para todas las subbandas.

•  La precisión de la cuantificación de la subbanda con el mínimo MNR se incrementa con el uso del próximo número de bits más alto que se indica en la tabla B2.

•  La nueva MNR se calcula.

•  Bspl (bits por muestra) se actualiza de acuerdo al número de bits adicionales requeridos. Si un número de bits distinto de cero se asigna por primera vez a una subbanda, bsel debe ser actualizado y bscf es actualizado de acuerdo al número de SCF requeridos en la subbanda, por lo que los bits disponibles ahora se calcularán:

Adb = cb – (bhdr + bcrc + bbal + bsel + bscf + bspl + banc)

El proceso iterativo se repite tantas veces hasta que Adb no pueda incrementarse con un nuevo paso de iteración (por el incremento de Bsel, Bspl y Bscf).

Cuantificación y codificación de las muestras de la subbandas.

Cada una de las 12 muestras por subbandas están normalizadas dividiendo su valor por el SCF para obtener X y cuantificarlo usando la siguiente fórmula:

•  Cálculo de AX+B

•  Tomar los N bits más significativos

•  Invertir el MSB

A y B son constantes que se encuentran en la tabla C6 . N representa el número de bits necesarios para codificar el número de pasos (escalones). La inversión del bit más significante se hace a los efectos de evitar todos ‘1′ en la representación del código, dado que el código con todos ‘1′ se utiliza para la palabra de sincronización.

Dado el número de escalones en que las muestras serán cuantificadas, la tabla B4 indica si el agrupamiento de muestras tendrá lugar. Si este no será usado, las tres muestras se codifican con palabras de código individuales.

Si, en cambio, de determina que existirá agrupamiento las tres muestras se codifican en una única palabra de código. Solamente un valor, V m (m=3,5,9), se transmite. La relación entre este valor (V m ) y las tres muestras consecutivas (x,y,z) que son reemplazadas son:

V 3 = 9z + 3y + x (v 3 en 0….26)

V 5 = 25z + 5y + x (v 5 en 0..124)

V 9 = 81z + 9y + x (v 9 en 0..728)

Asignación de bits.

A los efectos de una codificación más eficiente, solamente se permiten un número limitado de cuantificaciones las cuales pueden ser diferentes para cada subbanda. Solamente el índice con la longitud de palabra ‘nbal’ en la tabla B2 se transmite, MSB primero (Most Significant Bit)

Datos Auxiliares:

Pueden transmitirse dentro de la trama y su longitud no está acotada, pero éstos reducen la cantidad de bits disponibles para audio, lo que puede resultar en una degradación de la calidad de audio. La presencia de una secuencia de bits en los datos auxiliares, igual a la palabra de sincronismo, puede dificultar la sincronización, pero este problema puede ser más frecuente cuando se utiliza el formato libre (Free Format).

Formato

index clip image001 0004 Compresión de audio MPEG

Las diferencias con la capa I son:

•  La longitud del slot es de 8 bits (1 byte)

•  Un nuevo bloque (SCFSI) se introdujo en la trama

•  La asignación de bits, SCF y muestras han sido sujetas a una codificación más eficiente.

Capa III (Layer III)

Generalidades

La codificación de la capa III introduce muchas características nuevas con respecto a las dos anteriores. El resumen de éstas son:

•  Banco de filtros híbrido conmutable (entre dos resoluciones distintas de frecuencia/tiempo)

•  Control avanzado de pre-eco (actúa sobre la resolución del banco de filtro híbrido).

•  Cuantificación no uniforme.

•  Codificación Huffman de las muestras cuantificadas. (Codificación entrópica)

•  Una técnica de buffereado (denominada bit reservoir ) que permite un mejor aprovechamiento del bit rate.

•  Unico de los 3 Layers que soporta codificación con tasa de bits (bit rate) variable.

•  Dentro del modo Joint Stereo soporta MS_stereo (Middle Side Stereo) a además de Intensity tereo, a diferencia de Layer I y II que solo soportan éste último.

Esquema de funcionamiento

index clip image003 0002 Compresión de audio MPEG
Las muestras de audio de la entrada se convierten en muestras de subbanda a través del banco de filtros híbrido que realiza el mapeo de tiempo a frecuencia. La salida de este banco de filtro se aplica a la entrada de MDCT donde a la salida se obtiene una resolución más fina en frecuencia.

De acuerdo a las características psicoacústicas de la señal (la existencia de pre-ecos, o no) se obtendrá a la salida del (MDCT Transformada discreta del coseno modificada) una mejor resolución frecuencial (pero pobre resolución temporal) o sea bloques largos (normal); o una mejor resolución temporal pero más pobre resolución frecuencial (bloques cortos) que permiten enmascarar eficientemente la existencia de pre-ecos.

Una situación de pre-eco se da cuando a un período de poca variación de la señal (baja requerimiento de bits para codificar) le sigue una variación abrupta de la misma (un mayor demanda instantánea de bits).

index clip image004 0005 Compresión de audio MPEG

Esto puede ser observado en el siguiente gráfico:

El ancho de banda de audio se divide en 21 bandas para los bloques largos o en 12 bandas si se utilizan bloques cortos.

A diferencia de Layer I o II los Scalefactors afectan a un conjunto de líneas espectrales y son gobernados por el modelo psicoacústico (se ajustan más precisamente a las bandas críticas) y existen SCF para bloques cortos y largos.

Los SCF son utilizados para “ colorear” el ruido de cuantificación. Si el ruido de cuantificación se colorea con la forma correcta, éste es enmascarado completamente. A diferencia de Layer I y II, los SCF de Layer III no se refieren al máximo local de la señal cuantificada. En Layer III, SCF son utilizados en el decodificador para obtener los factores de división (divisores) para grupos de valores (agrupados en SCF bands). En caso de Layer III, estos grupos de valores (SCF bands) se extienden sobre varias líneas espectrales. Estos grupos denominados bandas de factores de escala (SCF bands) son seleccionados de manera de asemejarse a las bandas críticas del oído humano en la forma más cercana posible.

Si intensity_stereo está habilitado (mode_bit_extension) los SCF de la “ zero_part ”, de la diferencia (canal derecho), son utilizados como intensity_stereo positions (is_pos). Is_pos[sfb] es la posición de estéreo intenso para la SCF band sfb.

La subdivisión del espectro en SCF bands permanece fija para cada longitud de bloque y frecuencia de muestreo y almacenados en tablas en el codificador y decodificador (Tabla B8). Los SCF son cero (SCF=0) para líneas de frecuencia por sobre la línea más alta de la tabla, lo que significa que el factor de multiplicación es 1.

Los SCF son cuantificados logaritmicamente. El escalón de cuantificación se establece con scalefac_scale.

index clip image005 0007 Compresión de audio MPEGindex clip image006 0004 Compresión de audio MPEGindex clip image007 0003 Compresión de audio MPEGindex clip image008 0003 Compresión de audio MPEGindex clip image009 0002 Compresión de audio MPEGindex clip image010 0003 Compresión de audio MPEGindex clip image011 0003 Compresión de audio MPEGindex clip image012 0002 Compresión de audio MPEGindex clip image013 0002 Compresión de audio MPEGindex clip image014 00011 Compresión de audio MPEG

Modelo Psicoacústico

Para el proceso de codificación en Layer III se puede utilizar cualquiera de los modelos psicoacústicos detallados en al norma, aunque en esta se adopta el modelo 2 para modificarlo de acuerdo a los requerimientos de codificación.

De ahora en adelante siempre se hará referencia al Modelo Psicoacústico 2 dentro del proceso de codificación del Layer III. Las características principales son:

Este modelo se corre 2 veces por bloque utilizando una longitud de desplazamiento (shift length) de 576 muestras.

Se calcula la relación Señal Máscara (SMR) para cada SCF Band.

Conmutación de ventanas

Una parte crucial en la codificación en el dominio de la frecuencia de las señales de audio es la aparición de pre-ecos. Considérese un caso dónde a un período de silencio le sigue un sonido de tipo percusivo, (tales como las castañuelas o platillos) dentro del mismo bloque de codificación. Dicho “ataque” producirá errores de cuantificación comparativamente grandes. Al producirse la decodificación de dicho bloque el filtro pasabanda (en el decodificador) esparcirá dicho error de cuantificación sobre todo el bloque, por lo que se volverá audible la distorsión, especialmente a bajos bitrate (MPEG-2).

Los pre-ecos pueden ser enmascarados utilizando el efecto temporal de pre-masking, si la ventana de tiempo es de corta longitud (del orden de unos pocos milisegundos). No obstante, un mayor porcentaje del bitrate total se requiere típicamente para la transmisión de la información lateral (Side info) si los bloques son más cortos. La solución pasa entonces por la conmutación de bloques de diferentes longitudes cuando las características de la señal los establezcan (un bloque largo de 576 muestras por canal con mejor resolución frecuencial y más pobre resolución temporal, o 3 bloques de 192 muestras por canal donde la resolución frecuencial es menor pero la temporal es mejor).

index clip image015 0001 Compresión de audio MPEG

En la fig. se observa la señal original de audio (a) y como el efecto del pre-eco es claramente visible cuando la longitud del bloque es 576 (b) , mientras que en (c) solo afecta parte del segundo sub-bloque y no al primero por ser el subloque de longitud 192.

Decisión de conmutación de ventana:

La decisión si el banco de filtros debiese ser conmutado a ventanas cortas se deriva del cálculo del umbral de enmascaramiento por medio de calcular la estimación de la entropía psicoacústica (PE) y conmutando cuando PE excede el valor 1800. Si se alcanza esta condición se inicia la secuencia:

Start (block_type = 1)

Short (block_type = 2)

Stop (block_type = 3)

En el siguiente diagrama se muestra los posibles estados y cambios para la lógica de conmutación de ventanas.

index clip image001 0005 Compresión de audio MPEG

Dos ventanas de MDCT especiales (start window y stop window) se necesitan en caso de transiciones entre bloques largos y cortos y viceversa para mantener la cancelación del aliasing que provee la MDCT en el dominio tiempo. Esto se Observa en la siguiente figura:

index clip image002 00082 Compresión de audio MPEG

Análisis del Banco de filtro Híbrido:

El análisis de subbanda del banco de filtros polifásico se ha descripto anteriormente. La salida del banco de filtros polifásico es la entrada a la subdivisión en líneas espectrales usando la MDCT. De acuerdo a la salida del modelo psicoacústico (las variables block_split_flag y block_type las ventanas y transformadas “normal”, “start”, “short”, y ”stop” son usadas).

18 valores de salida consecutivos de un gránulo y 18 valores consecutivos del gránulo anterior son ensamblados en un bloque de 36 muestras.

Block_type = 0 (enmarcado normal)

z i = x i ‘ sen [ p /36 * (i + 1/2)] para i = 0 a 35

Block_type = 1 (start block)

index clip image003 0003 Compresión de audio MPEGx i ‘ sen [ p /36 * (i + 1/2)] para i = 0 a 17

z i x i para i = 18 a 23

x i sen [ p /12 * (i - 18 +1/2)] para i = 24 a 29

0 para i = 30 a 35

Block_type = 3 (stop block)

index clip image004 0006 Compresión de audio MPEG0 para i = 0 a 5

z i x i sen [ p /12 * (i - 6 +1/2)] para i = 6 a 11

x i para i = 12 a 17

x i sen [ p /36 * (i +1/2)] para i = 18 a 35

Block_type = 2 (short block)

El bloque de 36 muestras se divide en 3 bloques solapados:

Y i (0) = x’ i+6 para i = 0 a 11

Y i (1) = x’ i+12 para i = 0 a 11

Y i (2) = x’ i+18 para i = 0 a 11

Cada uno de los 3 bloques cortos es enventanado separadamente.

z i (k) = y i (k) sen [ p /12 * (i +1/2)] para i = 0 a 11 k = 0 a 2

Transformada discreta del coseno modificada. MDCT

En la sig. fórmula: ´N’ es el número de muestras enmarcadas (para bloques cortos n=12 y para bloques largos n=36). En el caso de un bloque tipo ‘corto’ cada uno de los 3 bloques cortos es transformado separadamente.

index clip image005 0008 Compresión de audio MPEG

Donde z k es la muestra proveniente de la salida del banco de filtros polifásicos después del enventanado.

index clip image006 0005 Compresión de audio MPEG

Aliasing-Butterfly , Codificador

El cálculo de la reducción de aliasing en el codificador se realiza de manera similar al decodificador. La definición de la mariposa (butterfly) a ser usada se observa en la siguiente figura. Los coeficientes ca i y cs i se encuentran en la tabla B9 .

Cálculo del promedio de bits disponibles:

El número de bits disponibles por gránulo es calculado desde el tamaño de la trama. Por ejemplo, para un bitrate de 64 Kbps y 48000 muestras por seg. será:

64000 [bits/seg.] * ( 1152 [muestras/trama] / 48000 [muestras/seg.] ) / 2 [gránulo / trama] = 768 bits/gránulo

Como la cabecera toma 32 bits (4 bytes) y la información lateral (side information) 17 bytes (136 bits) en modo de “canal único”, la cantidad promedio de bits para main_data para el gránulo será:

768 – ( 32+136 [bis/trama]) / ( 2 [gránulo/trama] ) = 648 bits/gránulo

Reservación de bits:

La reserva de bits provee bits adicionales que pueden ser usados para el gránulo. El número de bits disponible en la reserva se establece en los lazos de iteración del codificador.

Cuantificación y codificación

Cuantificación y codificación de las muestras frecuenciales

Las muestras a la salida del banco de filtros híbrido (Banco de filtro de análisis y MDCT) se cuantifican no uniformemente, de esta manera se provee tanto errores (cuadráticos) medios menores y enmascaramiento, dado que errores mayores pueden se tolerados si las muestras a cuantificar son de valores grandes. La codificación Huffman, basada en 32 tablas de código y codificación run lenght adicional, se utilizan para una eficiente representación de los valores cuantizados.

La muestras frecuenciales son cuantificadas y codificadas dentro de 2 lazos de iteración que tienen lugar en el codificador.

Lazos de Iteración de la codificación en Layer III

Introducción

El módulo de procesamiento de la señal a codificar se divide en tres niveles (o lazos). Estos son:

•  Lazo de programa de la trama

•  Lazo de iteración externo

•  Lazo de iteración interno

Los lazos de iteración cuantifican un vector de entrada en un proceso iterativo de acuerdo a varias demandas.

El lazo interno cuantifica el vector de entrada e incrementa el tamaño del paso del cuantificador hasta que el vector de salida puede ser codificado con el número de bits disponible.

Después de un proceso completo en el lazo interno, el lazo externo chequea la distorsión de cada SCF band y, si la máxima distorsión permisible se excede, amplifica los la SCF band e invoca nuevamente al lazo interno.

Datos de entrada al módulo de procesamiento de la señal en Layer III:

•  Vector con las magnitudes espectrales xr(0…575)

•  x mín(sb) : La distorsión permitida para los SCF bands, donde: x mín =ratio (sb) .en (sb) /bw (sb)

•  window_switching_flag, la que junto con window_mixed_flag y block_type determinan el número de SCF.

•  mean_bits (Cantidad de bits disponibles para los SCF bands y la codificación Huffman)

•  more_bits : número de bits que se requieren adicionalmente, demandados por el valor de la PE (psicoacustic entropy) para el gránulo.

more_bits=3.1 * PE – mean_bits

Datos de salida del módulo de procesamiento de la señal en Layer III:

•  Vector con las magnitudes cuantificadas ix(0…575)

•  scalefac_l [sb] o scalefac_s [sb] dependiendo del window_switching_flag mixed_block_flag y block_type.

•  global_gain (información del tamaño del paso de cuantificación).
global_gain = qquant + systen_constant .
System_constant incluye todas las operaciones de escala en el codificador y un offset para obtener la salida correcta con el proceso de decodificación (descripto en el capítulo anterior).

•  Número de bits no utilizados disponibles para su uso mas tarde.

•  Preflag (pre-énfasis ON/OFF)

•  Información lateral (side information) relacionada a la codificación Huffman:

•  big_values (número de pares de valores codificados por Huffman excluyendo count1).

•  count_1table_select (tabla de codificación Huffman para valores que no exceden 1 en valor absoluto en la parte superior del espectro).

•  Table_select[0..2] Tablas de Huffman para las regiones 0,1 y 2.

•  Region0_count, region1_count (utilizado para el cálculo de los límites de aplicación de las tablas)

•  part2_3_length

index clip image003 0004 Compresión de audio MPEG

SI

Pasos preparatorios

index clip image005 0009 Compresión de audio MPEG

Reseteo de todas las variables de iteración.

•  Los SCF de las particiones del codificador (coder), Scalefac_l o Scalefac_s son reseteadas en 0 respectivamente.

•  El contador qquant, utilizado para el tamaño del paso de cuantificación se resetea a 0.

•  Preflag se resetea a 0 (cero).

•  Scalefac_scale = 0

•  El valor inicial de quantaf se seteará en: quantaf = system_constant* log e (sfm)

Donde sfm es S pectral F latness M easure y quantaf depende de la implementación computacional del codificador.

El valor de sfm viene dado por:

index clip image006 0006 Compresión de audio MPEGn-1

index clip image007 0004 Compresión de audio MPEG 1 å log xr(i) 2

n i=0

index clip image008 0004 Compresión de audio MPEGsfm = e

index clip image009 0003 Compresión de audio MPEGn-1

index clip image010 0004 Compresión de audio MPEG 1 å log xr(i) 2

n i=0

El valor de system_constant es elegido de forma tal, que para todas las señales el primer bucle de iteración del lazo de iteración interno salga con la suma de bits más alta que aquella deseada. De tal forma se asegura que en la primer llamada del lazo de iteración interno se utilicen tantos bits como sean posibles. A los efectos de ahorrar tiempo de computación es deseable que se minimicen el número de iteraciones y esto se consigue adaptando el valor de quantaf al bitrate y estadísticas de la señal.

Control de la reservación de Bits

Se guardan bits en la reserva (reservoir) cuando se usan para la codificación del gránulo menos bits que los necesarios. Si se ahorran bits para una trama, el valor de main_data_end por consiguiente se incrementa.

El número de bits que se hacen disponibles para main_data (denominados max_bits ) se calcula del umbral real estimado, (PE) (la Psicoacustic Entropy como cálculo del modelo psicoacústico), el número de bits promedio, ( mean_bits ) y el contenido real de la reserva de bits. El número de bytes en la reserva está dado por main_data_end .

Las reglas para el control de la reserva de bits son las siguientes:

•  Si un número de bits disponibles en el lazo de iteración interno no es utilizado por los códigos Huffman u otros campos de main_data, este número se adiciona a la reserva de bit.

•  Si la reserva de bits contiene más de 0.8 veces el contenido máximo permitido de reserva, todos los bytes que excedan este número se disponen para main_data (en suma a mean_bits ).

•  Si more_bits es mayor que 100 bits entonces el max( more_bits /8 , 0.6* main_data_end ) bytes se toman de la reserva de bits y se asignan a main_data (en suma a mean_bits ).

•  Luego que los bucles computacionales reales se completan, el número de bytes que no son utilizados por main_data se agrega a la reserva de bits.

•  Si luego de este paso el número de bytes en la reserva excede el contenido máximo permitido, bits de relleno se escriben en el bitstream y el contenido de la reserva de bits por consiguiente se ajusta.

Cálculo del SCFSI (Scale factor Selection Information)

Los SCFSI contienen la información que indica cual SCF (agrupados en SCFSI_bands), del primer gránulo pueden ser utilizados para el segundo gránulo. Estos SCF, por lo tanto, no se transmiten por lo que la ganancia de bits puede ser utilizada para los códigos Huffman.

Para determinar el uso de SCFSI, la siguiente información de cada gránulo debe ser almacenada:

•  Tipo de bloque (corto o normal)

•  La energía total del gránulo:

n

en_tot = int{ log 2 [ å | xr (i) | 2 ] }

i=1

donde n es el número total de valores espectrales.

•  La energía total que abarca el SCF Band.

Lbl (sb) +bw (sb) -1

en_(sb) = int{ log 2 [ å | xr (i) | 2 ] }

i=lbl (sb)

donde lbl (sb) es el número del primer coeficiente perteneciente a la banda de SCF sb y bw (sb) es el número de coeficientes dentro de la SCF band sb .

•  La distorsión permitida en cada SCF Band.

Xm (sb) = int{ log 2 [ xmin (i) ] }

donde xmin (i) es calculado por el modelo psicoacústico.

Los SCF del primer gránulo siempre se transmiten. Cuando se codifica el segundo gránulo, la información de los 2 gránulos se comparan. Existen 4 criterios para determinar si SCFSI puede ser utilizado en general. Si uno de los criterios no se satisfacen, entonces se deshabilitan los SCFSI (esto quiere decir que se setean en 0 todos los SCFSI_Bands.)

Estos criterios son: (índice 0 significa primer gránulo, índice 1:segundo)

•  Los valores espectrales no son todos ceros.

•  Ninguno de los gránulos contiene bloques cortos.

•  La diferencia de energía entre los gránulos no debe superar en_tot krit (en_tot krit =10 valor sugerido).

| en_tot 0 – en_tot 1 | < en_tot krit

•  La suma de todas las diferencias de energía (en valor absoluto) entre los gránulos 0 y 1 no deben superar en_dif krit (en_dif krit =100)

å | en(sb) 0 – en(sb)1 | < en_dif krit

all scalefactors bands

Si los SCFSI no son deshabilitados por ninguno de los condicionamientos precedentes, existen dos criterios para cada SCFSI_band que deben cumplirse simultáneamente para habilitar los SCFSI (o sea para setear en “1” el SCFSI en esa SCFSI_band). Estas condiciones son:

a- å | en(sb) 0 – en(sb)1 | < en(scfsi_band) krit

all cr.bands in scfsi_band

b- å | xm(sb) 0 – xm(sb)1 | < xm(scfsi_band) krit

all cr.bands in scfsi_band

donde : xm(sb) es la distorsión permitida de cada SCF band

en(sb) es la energía de cada SCF band

xm(sb)=int [log 2 (x min (i)] x min (i) es calculado por modelo psicoacústico

Las constantes (con el índice krit) debe ser elegido de manera tal que SCFSI solo se habilita de caso de similares energía/distorsión.

donde los valores sugeridos son:

en_tot krit = 10

en_dif krit = 100

en(scfsi_band) krit = 10

xm(scfsi_band) krit = 10

index clip image011 0004 Compresión de audio MPEG

[B] Lazo de iteración externo (lazo de control de distorsión)

Diagrama de bloques del Lazo de iteración externo en la codificación Layer III.

index clip image012 0003 Compresión de audio MPEG

El lazo de iteración externo controla el ruido de cuantificación que es producido por la cuantificación de las líneas de frecuencia en el lazo de iteración interno. El coloreado del ruido se hace multiplicando las líneas de frecuencia dentro de una SCF band con el SCF correspondiente a esa banda antes de hacer la cuantificación. Las siguientes líneas de pseudo código muestran una posible manera de hacer esa multiplicación:



Comments are closed.

blank