CODIFICADOR MP3 EN MATLAB

Este sitio está dedicado al formato de audio MPEG-1 Capa III


Contenido

Principal

Psicoacústica
Definición
Aspectos relevantes
Conclusión

Grupo MPEG
Historia
Estándares MPEG
Audio MPEG

Codificación MP3
La Capa III
Análisis psicoacústico
Filtro híbrido
Cuantización
Formato
Encabezado
Información secundaria
Datos principales

Descargas

Links


CODIFICACIÓN MP3

INFORMACIÓN SECUNDARIA

Ésta consta de 17 bytes para el modo monofónico, y de 32 bytes en cualquier otro modo. La información que contiene, consiste de cuatro partes: el puntero main_data_begin, información secundaria para ambos gránulos (scfsi y private_bits), información secundaria para el gránulo 0, e información secundaria del gránulo 1.

  • main_data_begin: el campo main_data no está necesariamente localizado justo después de la información secundaria. main_data_begin es un puntero que usa 9 bits, indicando la localización donde está el primer byte del main_data de la trama actual. La localización está especificada como un desplazamiento negativo en bytes desde el encabezado actual (bytes a la izquierda, antes del primer bit del encabezado).


La información secundaria (SI) común a ambos gránulos se muestra a continuación:

  • private_bits: El número de private_bits para la información secundaria depende del número de canales (5 para mono y 3 para estéreo). El número de bits reservados para private_bits es definido por el usuario.
  • scfsi: La variable scfsi (información para selección del factor de escala) determina si los factores de escala se envían para cada gránulo, o si son comunes para ambos gránulos, por canal. Se transmiten cuatro (4) bits por canal, cada bit perteneciente a un grupo de bandas del factor de escala diferente. Un '0' para un grupo específico de bandas del factor de escala, indica que los factores de escala para ese grupo en particular, se transmiten para cada gránulo. Un '1' indica que se usan los mismos factores de escala para ambos grupos; por lo tanto, sólo se transmiten los factores de escala correspondientes al grupo de bandas del primer gránulo.

Después de la información secundaria para ambos gránulos, sigue la información secundaria para cada gránulo:

Figura 1. Información secundaria para cada gránulo.


En el caso de bloques largos, la información secundaria para cada gránulo es:

  • part2_3_length: Denota el número de bits que son usados en main_data para los factores de escala y los datos codificados con Huffman. Se usan 12 bits en modo mono y 24 en los otros modos. Como la cantidad de bits usados para la información secundaria es constante, part2_3_length puede usarse para calcular el comienzo del próximo gránulo.
  • big_values: Después de la cuantización, las 576 muestras MDCT cuantizadas están organizadas en un orden determinado (de menor a mayor frecuencia). Luego, estos valores se dividen en tres particiones consecutivas: rzero, count1 y big_values. La primera partición, rzero, se localiza en las altas frecuencias y consiste en pares de ceros. La partición de la mitad, count1, consiste de cuádruplos cuyo valor es -1, 0 ó 1. La última partición, big_values, se localiza en las bajas frecuencias extendiéndose hasta el nivel de directa (frecuencia de 0 Hz) y se compone de pares de valores restringidos a una amplitud máxima absoluta de 8206 (8191+15, el cual es el máximo valor cuantizado permitido). El campo big_values indica la cantidad de pares cuantizados que pertenecen a esta partición. Nueve (9) bits se usan para big_values en modo mono y 18 en los otros modos.
  • global_gain: Contiene información acerca del intervalo usado en el cuantizador, donde la cuantización se hace logarítmicamente. La variable global_gain usa 8 bits en modo mono y 16 bits para los otros modos.
  • scalefac_compress: Es una variable de 4 bits (en modo mono), transmitida para cada gránulo, la cual determina el número de bits usados para la transmisión de los factores de escala. Cada gránulo se divide en 12 ó 21 bandas del factor de escala dependiendo del tipo de ventana que se esté usando. Estas bandas del factor de escala se dividen de nuevo en dos grupos (0-10 y 11-20 para ventanas largas; 0-5 y 6-11 en el caso de ventanas cortas). La variable scalefac_compress se usa como índice a una tabla proporcionada en el estándar ISO 11172-3, la cual retorna dos variables llamadas "slen1" y "slen2", que indican la cantidad de bits usados para los factores de escala del primer y segundo grupo de bandas, respectivamente.
  • window_switching_flag: Un (1) bit por canal que señala si una ventana diferente del tipo NORMAL se está usando. Este valor determina los siguientes 22 bits en la información secundaria: si está en '1', se añaden los bits de la figura 1(b); si está en '0', se añaden los bits de la figura 1(c).
  • table_select: Habilita el uso de 32 diferentes tablas para el código de Huffman, dependiendo de las estadísticas de la señal. Se usan 15 bits por canal (5 bits por región) para indicar cuáles de las 32 tablas han sido seleccionadas.
  • region0_count: Para mejorar el desempeño en la codificación, la partición big_values se subdivide en tres regiones llamadas region0, region1 y region2. Cada región se codifica con una de las 32 tablas de Huffman (seleccionada con table_select). La variable region0_count especifica el límite entre region0 y region1. Esta variable de 4 bits (en modo mono) especifica la cantidad de bandas del factor de escala incluidas en esta región, pero disminuidas en 1.

region0_count = bandas del factor de escala en region0 - 1

  • region1_count: especifica el límite entre region1 y region2. Esta variable de 3 bits por canal indica las bandas del factor de escala incluidas en region1, disminuidas en 1.

region1_count = bandas del factor de escala en region1 - 1

  • preflag: Un (1) bit por canal, indicando que se usó preénfasis (o sea, amplificación adicional en las altas frecuencias). Este valor apunta a una tabla en el estándar ISO 11172-3, cuyos 21 valores son sumados a los factores de escala. Para bloques cortos, no se usa preénfasis.
  • scalefac_scale: Los factores de escala están cuantizados de manera logarítmica con un intervalo de 2 ó (2)1/2, dependiendo del valor de scalefac_scale, que usa 1 bit por canal.
  • count1table_select: Esta variable, que usa 1 bit por canal, indica cuál de dos (2) posibles tablas de Huffman fue usada para codificar la partición count1.


En el caso de bloques cortos, la información secundaria sólo cambia en las variables mostradas en la figura 1(c), las cuales son reemplazados por aquellas de la figura 1(b). Las otras variables mostradas en la figura 1 no cambian.

  • block_type: Indica el tipo de ventana que se usa en un gránulo particular. La variable block_type consume 2 bits por canal.
  • mixed_block_flag: Esta variable, que consume 1 bit por canal, indica que se usan diferentes tipos de ventana en las bajas y en las altas frecuencias. Si esta variable está en '1', las dos subbandas más bajas usan ventana NORMAL, y las 30 subbandas restantes usan el tipo de ventana especificado por block_type.
  • table_select: En este caso, table_select usa 10 bits por canal, debido a que, para bloques cortos, la partición big_values sólo se subdivide en dos (2) regiones.
  • subblock_gain: Habilita una ganancia por un factor de 4 para un subbloque particular. Esta variable usa 3 bits por canal.

[ Principal ]
Psicoacústica: [
Definición | Aspectos relevantes | Conclusión ]
Grupo MPEG: [
Historia | Estándares MPEG | Audio MPEG ]
Codificación MP3: [
La Capa III | Análisis psicoacústico | Filtro híbrido | Cuantización | Formato
Encabezado | Información secundaria | Datos principales ]
[
Descargas ]
[
Links ]