Códec G729: Diferencias entre la versión free y la comercial

Hace algún tiempo me pregunté qué diferencias existían entre la versión comercial del códec G.729 que distribuye Digium y la versión “opensource” que se puede encontrar en algunas webs.

Mientras buscaba información, me topé con la casualidad de que algunas personas me hacían preguntas sobre esta diferencia, he incluso personas que utilizaban la versión opensource se encontraban con problemas de audio por lo que decidí ponerme a leer e investigar las diferencias.

En este artículo intentaré explicar de la forma más “didáctica” posible estas diferencias, así como el funcionamiento básico de ambos códecs.

El archivo codec_g729 para que Asterisk sea capaz de reproducir o escuchar el códec G.729 se basa en un algoritmo método matemático patentado y por lo tanto, la utilización de este algoritmo, no está exenta de pagar una “licencia de uso”, tanto si es para uso comercial, como si es para educación, pruebas, etc… a ellos les da igual para qué lo vayas a utilizar, mientras pagues.

Ahora bien, los creadores de ese algoritmo método matemático,  al que pertenecen bastantes empresas muy conocidas (SUN, Nokia, Skype, Intel, etc… http://www.sipro.com/licensees.php) por ser “creadoras” o “patrocinadores” de la creación del G729, tienen a su disposición un gran número de licencias anuales (para meterlo en su propio software, en sus móviles, etc…) y además, esta fundación en sí tiene “vendedores” de licencias para el códec entre las que se encuentran algunas como Global IP Sound, Soundpoint, y algunas otras que venden la licencia para utilizar el algoritmo de compresión únicamente.

sounds2

Digium ha utilizado este algoritmo y lo ha introducido como módulo para poder utilizarlo en Asterisk (de ahí las licencias G.279 para Asterisk y el porqué de pagar la licencia, porque el uso de dicho códec cuesta dinero)

Ahora bien, Intel es uno de los “creadores” de este códec y como dispone de licencias para uso particular, ofrece dicha licencia para el algoritmo de compresión de audio completamente gratis para temas docentes, pruebas, etc… nunca nada comercial, pero eso es únicamente el algoritmo, nada del canal para utilizarlo en Asterisk. (http://www.intel.com/cd/software/products/asmo-na/eng/219771.htm)

Más adelante, aprovechando la licencia que Intel ofrece para docencia, pruebas, etc, alquien cogió el binario del algoritmo y se auto-fabricó un archivo codec_g729 compatible con Asterisk pero con la versión que Intel tiene puesta en su página, y otra persona lo llamó erróneamente opensource (http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/) aunque nadie sabe dónde se encuentra el código fuente que genera finalmente el archivo codec_g729 y aunque existiera, de opensource no tiene nada ya que el hecho de utilizar ese algoritmo ya implica haber pagado la licencia.

En esta última versión, el código que tiene Intel en su página es el mismo desde hace 10 años, cuando el códec “oficial” ha ido evolucionando poco a poco de forma más o menos transparente para su utilización aunque realizando algunas mejoras en cuanto a coste, carga, velocidad, etc.
Muchas personas me han preguntado sobre las diferencias entre estos códecs (saludos a todas ellas y siento el retraso en esta contestación), y aquí va:

El códec G729 contiene lo que sería un diccionario de sonidos. Estas pequeñas partes de sonidos se podría intepretar como micro-fonemas. Cuando le enviamos un trozo de voz al códec, este lo reemplaza con una referencia a una palabra de su diccionario y lo envía, también prepara los siguientes sonidos que cree que pueden precederle. Así es cómo el códec comprime la voz tan bien. Realmente esto no envía absolutamente nada de la voz original, envía trozos matemáticos que ha ido creando en tiempo real. Por este motivo, la voz se escucha perféctamente, mientras que la música (por ejemplo cuando hacemos un MusicOnHold) no. Así se comporta el códec G729 “plano“.

A medida que se va ampliando ese diccionario, la calidad de sonido aumenta, el tiempo para encontrar un sonido “matemático” similar disminuye lo que provoca una menor carga del procesador.

Estos añadidos se conocen como “anexos” y se definen como letras A, B, C,… y de ahí es de donde viene cada letra que acompaña

al nombre del códec. Por eso existe el códec G729A, G729B, …

El códec “libre” utiliza las primitivas Intel IPP, por lo que sigue siendo un códec G.729 y la principal diferencia es que utiliza un conjunto diferente de ecuaciones, por lo que la evolución del resto de anexos del códec inicial ya no es viable y de hecho provocan diferencias en la propia carga del procesador.

Como he comentado, el códec G729 tiene muchas variantes (G.729a,b,c,d,e,c+,f,g,h e incluso el g.279i) cada una con sus peculiariedades, aunque el más utilizado es el G.729a y el G.729b por ser el más sencillo y por lo tanto el más rápido de comprimir y descomprimir, el resto se utilizan en telefonía móvil y como base para otros códecs menos conocidos y mucho más caros incluidos en DSPs integrados en tarjetas de comunicaciones.
En cuanto a la legalidad…

En Europa no debe pagarse ninguna licencia por el uso del códec ya que por ahora (y esperemos que siga siendo así) las patentes software no han sido aprobadas y por lo tanto el código sigue sin ser patentable, la pega es que la entidad encargada de este códec está en los EEUU y allí sí que hay patentes software, por lo que si alguien quiere conseguir una licencia, no tendrá más remedio que pagar por ella.

wave2Por esto, en Europa es legal utilizar la versión “opensource” aunque como he dicho antes, las empresas que ofrecen servicios de VoIP y que utilizan la versión patentada del códec, las empresas fabricantes también lo utilizan, por lo que si utilizamos la versión “opensource” en nuestro Asterisk, además de no disponer de las “evoluciones” del códec, mayor velocidad a la hora de comprimir y descomprimir, etc… tal y como he comentado, debería funcionar de manera más o menos transparente y este “mas o menos” es lo que hace que en algunos casos se produzcan cortes en las llamadas cuando se utiliza este códec para comunicar ciertos terminales que sí disponen de la última versión.

Otra de las pegas que nos podemos encontrar con la versión Intel, es que suele dar algún que otro problema con kernels SMP: (Intel g729 crash redhat)  e incluso cortes de audio en Asterisk que se van resolviendo, pero a medida que evoluciona el códec las diferencias aumentan y eso lo vuelve inconsistente.

Espero que con este artículo se hayan resuelto algunas cuestiones :)

Atención

Este artículo es bastante antiguo.
Posiblemente algunos enlaces pueden dejar de funcionar o la información ya esté obsoleta.
 

Social Share

Este artículo ha sido comentado 9 veces

 
Saúl Ibarra

Publicado el 6 marzo, 2008 a las 2:10

 

Que buena Elio!! Enhorabuena por la explicación, más claro agua :)

 
aerys

Publicado el 6 marzo, 2008 a las 11:39

 
Rosa Atienza

Felicidades y Enhorabuena por el post es genial! :)

 
Iñaki Baz

Publicado el 6 marzo, 2008 a las 13:36

 

Esto sí que es un post como dios manda, ya vale de “Lanzada la versión 1.3.2.4.5.rc3 del software XXXXX”. Esto es información útil pura y dura.

Felicidades y gracias, en serio ;)

 
samuel

Publicado el 6 marzo, 2008 a las 16:39

 

Estás seguro que es legal utilizar la versión binaria del canal 729 de Asterisk en Europa para fines diferentes de la investigación o de test? Yo separaría la patentabilidad de software en Europa del tema 729 ya que en el caso de la codificación de voz creo recordar que la patente define el ALGORTIMO de la codificación de audio y no un software. Por lo tanto cualquier elemento que utilize el algoritmo, y por definición el códec g729, está sujeto a la patente sobre él.

Me temo mucho que no es legal utilizar para fines comerciales la implementación “open source esa que comentas” de g729 en canal asterisk. Dentro de dichos fines entran muchos operadores y empresas del mundo de vozIP que obtienen ingresos a partir de la utilización de estos canales g729 en asterisk.

Espero haber aclarado mi punto de vista y me gustaría indicaras si estoy equivocado.

Para finalizar, me úno a las felicitaciones por el artículo!

Un saludo,
Samuel.

 
Elio Rojano

Publicado el 6 marzo, 2008 a las 17:37

 
Elio Rojano

Efectivamente no es legal utilizar la versión “opensource” con fines comerciales, de hecho en la página donde hablo de él lo deja claro:
“Please note that this code is available for you to download for education purposes only and if a patent exists in your country for G.729 or G.723.1 then you should contact the owner of that patent and request their permission before executing the code.

To distribute Intel’s IPP libraries with a commercial product, you may need to pay a once-off license fee to Intel (currently $US180).”

Pese a todo, la gente lo incluye en sus instalaciones lo que luego son fuente de problemas diferentes y extraños: “cortes en el audio”, “mayor latencia”, “asterisk que se cuelga”, y un largo etcétera.

“En Europa, la ley de los años 70 decía claramente que solamente son patentables inventos reales, y no el software. Con el tiempo, durante los 80 y sobre todo los 90, los europeos empezaron a hacer ciertas “tretas”, como patentar “una computadora con un software capaz de hacer tal y tal cosa”, y en definitiva se estaba patentando el algoritmo, y no un invento real.

Durante el 2003 hubo una movida para cambiar la ley, y por un tiempo pareció que iban a permitir patentar el software, como en los EEUU. En definitiva, se aprobó una ley bastante buena, que dice claramente que no se pueden patentar algoritmos ni software computacional a menos que sea el sistema embebido para manejar una máquina industrial. De todas maneras hay algunas cosas ambiguas, que se está trabajando con la gente del software libre europeo para desambiguarlas, pero la ley es bastante clara.”

Vamos, no soy ningún experto en leyes ni patentes, solo me baso en los comentarios y webs sobre el tema y saco mis propias conclusiones en base a lo que encuentro, por lo que si estoy equivocado en algún punto, solo invitaros a que me lo aclareis. :)

 
G.729 Digium vs versioni “Free” -- Daily Asterisk

Publicado el 7 marzo, 2008 a las 10:55

 

[...] recente Sinologic ha pubblicato un’interessante articolo in cui spiega alcune differenze tra il codec G729 [...]

 
Malcolm Davenport

Publicado el 7 marzo, 2008 a las 16:07

 

Hello,

Further, since the Intel codec is not licensed under the GPL, and cannot be, the distribution of binaries of the Intel codec linked against Asterisk as codec_g729 violates the GPL of Asterisk.

I apologize for my English. Babelfish is okay to translate Spanish to English, but I do not trust it to translate English to Spanish.

Cheers.

 
AngeLinuX

Publicado el 7 marzo, 2008 a las 17:30

 

Buen trabajo, Elio. Hasta ahora, no havia visto una explicación tan detallada de las diferencias entre los distintos g729.

Enhorabuena, nice post !!

 
Codec g729 no oficial y Asterisk « La VozIP de Almería

Publicado el 6 abril, 2008 a las 19:00

 

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