Contador estandar

05. March 2008

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 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, ese algoritmo, 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 cogido 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ó 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 :)

20. February 2008

SDK para programar tu softphone en Visual Studio

pressreleasedPortSIP es una empresa que ha desarrollado unas librerías para que cualquier programador de Visual Studio (Visual Basic, Visual C++), Delphi C# o incluso JavaScript/HTML, pueda programarse su propio softphone de una manera mucho más sencilla y cómoda.

Estas librerías soportan:

  • Códecs G.711a, G.711u, iLBC, G.723, G.729 y GSM 6.10.
  • Videoconferencia con H.263 y H.264.
  • DTMF2833 y SIP INFO

NewShot

Las SDK de PortSIP son comerciales, aunque podemos descargar una versión limitada para hacer nuestras pruebas. Esta limitación consiste en que únicamente permiten 3 minutos de audio/video y que el software no podrá ser distribuido, vendido, etc…

Más información: http://www.portsip.com/

17. January 2008

Actualiza gratis tu TC400B a 120 canales!

Una sorpresa que nos ha traído hoy Digium, ha sido que con la última versión del Zaptel, para aquellos que tienen la tarjeta de transcoding TC400B (que recuerden, soportaba 96 canales G.729 y 92 canales G.723) ahora viene con dos sorpresas:

1.- Ahora la tarjeta soporta G.723.1 (5.3kbits/seg y 6.3kbits/seg)
Hasta ahora únicamente soportaba la versión de 5.3kbits/seg.

2.- Al actualizar con el último zaptel, tendremos que darnos cuenta que, en lugar de 96 licencias G.729 y 92 licencias G.723, ahora tendremos 120 licencias G.729 totalmente gratis. (25% más)

Lo que se suele decir en estos casos: Hasta que no lo vea, no lo creeré, así que… a actualizar y a probarlo! :D

Enlace: http://blogs.digium.com/2008/01/17/more-more-more-tc400/

23. December 2007

Skype mejora su códec de audio

Leyendo el blog de Andy Abramson, que estuvo unos días en España, habla sobre la excelente calidad de sonido de esta aplicación que, como ya recordais, se desmarcó del conocido códec comercial GIPS de Global IP Sound.

Comenta que ha probado varios softphones y que, debido a la infraestructura existente en España en cuanto a redes Wifi y ADSL, hace que aplicaciones como SightSpeed y Skype “brillen más”, supongo que lo dirá por la latencia y el ancho de banda de las redes donde lo haya intentado, aunque considerando que el mejor códec del que puede disponer un softphone normal sea G.729, otros como GIPS o el nuevo códec de Skype llamado SVOPC, permitirían una mejora de la calidad, así como un ahorro del ancho de banda.

Pero que esto no lleve a equivocación:
Para llamadas procedentes de la red Skype a telefonía convencional, sigue siendo mediante G729A.

Las comparaciones, a veces son odiosas. :D

01. December 2007

Asterisk Addons 1.4.5 y nueva versión códec G729

Del equipo de desarrolladores de Asterisk recibo un correo con dos actualizaciones interesantes:

Asterisk-addons-1.4.5:
Compatible con la versión actual de Asterisk 1.4.15 y algunos errores solucionados.

Version 33 del códec G729:
Es una actualización para que funcione el códec G729a con la última versión de Asterisk.

Podeis descargarlo de http://downloads.digium.com/pub