Codec g729 no oficial y Asterisk

6 04 2008

Llevo algún tiempo “haciendo pruebas” con el codec g729 en alguno de mis servidores Asterisk. Utilizo el codec que hay en asterisk.hosting.lv y que está compilado según los binarios de Intel. La versión de Asterisk es la 1.4 y las máquinas son variadas: 32 bits, 64 bits, dualcore, etc, etc. Obviamente, elijo el codec adecuado para cada arquitectura.

En dichas pruebas, siempre he observado un comportamiento errático y que no era capaz de explicar achacándolo a mis limitados conocimientos en redes. Me metia por telnet en el router y usaba la funcionalidad que implementa el mismo, para ver el ancho de banda usado en tiempo real. Pues bien, cual era mi sorpresa al observar como la velocidad de subida siempre era mayor que la de bajada!!! Si, por ejemplo, tenía una llamada activa, pues entonces tenía 8.000 B/s de subida y 5.000 B/s de bajada. ¡Extraño comportamiento!. La verdad es que no tenía ni la más pajolera idea de por donde podían ir los tiros.

Incluso tras leer el detallado post de Elio Rojano sobre las diferencias entre el codec oficial y el no oficial, no pude aclarar este extremo.

No fue hasta que di con el blog de un habitual de la lista de Asterisk-Es, Miguel Rabí, que descubrí las “putaditas” ocultas que tiene el susodicho no oficial. Parece que el muy mamón (el codec, no Miguel :) ) no comprime lo mismo en un sentido que en otro, es decir, presenta una asimetría en la compresión del audio, de forma que existe una diferencia de velocidad en el canal de subida y en el de bajada.

Un punto a tener en cuenta para los que trastean con esto y luego se “olvidan” de comprar las versiones oficiales.

Actualización: gracias a las observaciones de David, he de puntualizar que esta situación se observa en la rama 1.2 de asterisk. En la 1.4 (y con los úlimos codecs free parece que ya no pasa :) )