Patent ES-2828429-T3 (ES)
Title: Decodificador de audio, procedimiento de decodificación de audio y programa informático
Inventor: FUCHS GUILLAUME
IPC: G10L19/02
Filed: 2011-07-20
Granted: 2021-05-26
Abstract: Un decodificador de audio según la USAC WD7, ISO/IEC JTC1/SC29/WG11, N11299, abril de 2010, donde el decodificador de audio está configurado para usar una tabla ari_lookup_m [742] según la figura 21, donde el decodificador de audio está configurado para usar una tabla ari_hash_m [742] según las figuras 22 (1) a 22 (4), donde el decodificador de audio está configurado para usar una tabla ari_cf_m [64] [17] según la figura 23 (1) a 23 (3), donde el decodificador de audio está configurado para usar una tabla ari_cf_r [4] según la figura 24; donde el decodificador de audio está configurado para derivar el contexto usando coeficientes espectrales previamente decodificados que provienen tanto de la trama pasada como de la presente, donde los coeficientes espectrales se dividen en tres partes, el signo, los bits más significativos (MSB) y los bits menos significativos (LSB), donde tres 2 tuplas de una trama pasada y una 2 tupla de una trama presente se consideran para una derivación de contexto, donde el decodificador espectral sin ruido está configurado para llevar a cabo el siguiente procedimiento: donde los coeficientes espectrales cuantizados qdec se decodifican sin ruido comenzando desde el coeficiente de frecuencia más baja y progresando hasta el coeficiente de frecuencia más alta, donde se decodifican por grupos de dos coeficientes sucesivos a y b reunidos en una denominada 2-tupla {a, b}, donde los coeficientes decodificados para AAC se almacenan en una matriz x_ac_quant[g][win][sfb][bin], donde una orden de transmisión de las palabras de código de codificación sin ruido es tal que cuando se decodifican en el orden recibido y se almacenan en la matriz, bin es el índice de incremento más rápido y g es el índice de incremento más lento, donde dentro de una palabra de código el orden de decodificación es a y, a continuación, b; donde los coeficientes decodificados para TCX se almacenan en una matriz x_tcx_invquant[win][bin], donde una orden de transmisión de las palabras de código de codificación silenciosa es tal que cuando se decodifican en el orden en que se reciben y almacenan en la matriz, bin es el índice de incremento más rápido y win es el índice de incremento más lento, donde dentro de una palabra de código el orden de decodificación es a y, a continuación, b; donde el procedimiento de decodificación comienza con una fase de inicialización donde se realiza una asignación entre el contexto pasado guardado almacenado en qs y el contexto de la trama actual q, donde un contexto pasado qs se almacena en 2 bits por línea de frecuencia; donde la función arith_map_context se define como se muestra en la figura 40a; donde el decodificador sin ruido genera 2 tuplas de coeficientes espectrales cuantizados sin signo, donde al principio, el estado c del contexto se calcula en base a los coeficientes espectrales previamente decodificados que rodean la 2-tupla que se va a decodificar, donde el estado se actualiza incrementalmente usando el estado de contexto de la última 2-tupla decodificada considerando solo dos nuevas 2-tuplas, donde el estado se codifica en 17 bits y es devuelto por una función arith_get_context(); donde la función arith_get_context se define como se muestra en la figura 40b; donde una vez que se calcula el estado de contexto c, el plano a lo largo de 2 bits más significativo m se decodifica utilizando el arith_decode() alimentado con la tabla de frecuencias acumuladas apropiada correspondiente al modelo de probabilidad correspondiente al estado de contexto, donde una correspondencia se realiza mediante una función arith_get_pk(); donde la función arith_get_pk se define como se muestra en la figura 40c; donde el valor m se decodifica usando la función arith_decode () llamada con la tabla de frecuencias acumulativas, arith_cf_m [pki][], donde pki corresponde al índice devuelto por arith_get_pk(), donde un algoritmo utilizado se define como se muestra en las figuras 40d y 40e; donde cuando el valor decodificado m es el símbolo de escape, ARITH_ESCAPE, la variable lev y esc_nb se incrementan en uno y se decodifica otro valor m, donde en este caso, la función get_pk () se llama una vez más con el valor c & esc_nb «17 como argumento de entrada, donde esc_nb es el número de símbolos de escape decodificados previamente para la misma tupla 2 y delimitados a 7; donde una vez que el valor m no es el símbolo de escape, ARITH_ESCAPE, el decodificador verifica si los sucesivos m forman un símbolo ARITH_STOP, donde si la condición (esc_nb> 0 && m == 0) es verdadera, se detecta el símbolo ARITH_STOP y el procedimiento de decodificación finaliza y el decodificador salta directamente a la función arith_save_context (); donde si no se cumple el símbolo ARITH_STOP, los planos de bits restantes se decodifican si existe alguno para la 2-tupla presente, donde los planos de bits restantes se decodifican desde el nivel más significativo al más bajo llamando lev veces arith_decode() con la tabla de frecuencias acumulativas arith_cf_r[], donde los planos de bits decodificados r permiten refinar el valor m previamente decodificado usando un algoritmo como se muestra en la figura 40f; donde en este punto, el valor sin signo de la 2-tupla {a, b} está completamente decodificado, donde el contexto que se actualiza entonces para la siguiente 2-tupla, si es también la última 2-tupla; donde ambas actualizaciones se realizan mediante una función arith_update_context, que se define como se muestra en la figura 40g; donde una siguiente 2-tupla de la trama se decodifica a continuación incrementando i en uno, donde si la 2-tupla lg/2 ya estaba decodificada con la trama o si apareció el símbolo de interrupción ARITH_STOP, se llama una función arith_save_context(), donde el contexto se guarda y se almacena en qs para la siguiente trama, donde la función arith_save_context() se define como se muestra en la figura 40h; y donde una vez que se decodifican todos los coeficientes espectrales cuantizados sin signo, a continuación se añade el signo, donde para cada valor cuantizado no nulo de qdec se lee un bit, donde si el valor del bit leído es igual a cero, el valor cuantizado es positivo, no se hace nada y el valor con signo es igual al valor sin signo previamente decodificado, y donde de lo contrario, el coeficiente decodificado es negativo y el complemento a dos se toma del valor sin signo, donde los bits de signo se leen desde las frecuencias bajas a las altas.