Codec g729

Embed Size (px)

Citation preview

  • Diferenzas entre Cdec G729 libre e Cdec licenciado

    Hace algn tiempo me pregunt qu diferencias existan entre la versin comercial del cdec G.729 que distribuye Digium y la versin opensource que se puede encontrar en algunas webs.

    Mientras buscaba informacin, me top con la casualidad de que algunas personas me hacan preguntas sobre esta diferencia, he incluso personas que utilizaban la versin opensource se encontraban con problemas de audio por lo que decid ponerme a leer e investigar las diferencias.

    En este artculo intentar explicar de la forma ms didctica posible estas diferencias, as como el funcionamiento bsico de ambos cdecs.

    El archivo codec_g729 para que Asterisk sea capaz de reproducir o escuchar el cdec G.729 se basa en un algoritmo mtodo matemtico patentado y por lo tanto, la utilizacin de este algoritmo, no est exenta de pagar una licencia de uso, tanto si es para uso comercial, como si es para educacin, pruebas, etc a ellos les da igual para qu lo vayas a utilizar, mientras pagues.

    Ahora bien, los creadores de ese algoritmo mtodo matemtico, 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 creacin del G729, tienen a su disposicin un gran nmero de licencias anuales (para meterlo en su propio software, en sus mviles, etc) y adems, esta fundacin en s tiene vendedores de licencias para el cdec entre las que se encuentran algunas como Global IP Sound, Soundpoint, y algunas otras que venden la licencia para utilizar el algoritmo de compresin nicamente.

    Digium ha utilizado este algoritmo y lo ha introducido como mdulo 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 cdec cuesta dinero)

    Ahora bien, Intel es uno de los creadores de este cdec y como dispone de licencias para uso particular, ofrece dicha licencia para el algoritmo de compresin 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)

    Ms adelante, aprovechando la licencia que Intel ofrece para docencia, pruebas, etc, alguien cogi el binario del algoritmo y se auto-fabric un archivo codec_g729 compatible con Asterisk pero con la versin que Intel tiene puesta en su pgina, y otra persona lo llam errneamente opensource (http://www.readytechnology.co.uk/open/ipp-codecs-g729-g723.1/) aunque nadie sabe dnde se encuentra el cdigo 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 versin, el cdigo que tiene Intel en su pgina es el mismo desde hace 10 aos, cuando el cdec oficial ha ido evolucionando poco a poco de forma ms o menos transparente para su utilizacin aunque realizando algunas mejoras en cuanto a coste, carga, velocidad, etc. Muchas personas me han preguntado sobre las diferencias entre estos cdecs (saludos a todas ellas y siento el retraso en esta contestacin), y aqu va:

    El cdec G729 contiene lo que sera un diccionario de sonidos. Estas pequeas partes de sonidos se podran interpretar como micro-fonemas. Cuando le enviamos un trozo de voz al cdec, este lo reemplaza con una referencia a una palabra de su diccionario y lo enva, tambin prepara los siguientes sonidos que cree que pueden precederle. As es cmo el cdec comprime la voz tan bien. Realmente esto no enva absolutamente nada de la voz original, enva trozos matemticos que ha ido creando en tiempo real. Por este motivo, la voz se escucha perfectamente, mientras que la msica (por ejemplo cuando hacemos un MusicOnHold) no. As se comporta el cdec G729 plano.

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

    Estos aadidos se conocen como anexos y se definen como letras A, B, C, y de ah es de donde viene cada letra que acompaa al nombre del cdec. Por eso existe el cdec G729A, G729B,

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

    Como he comentado, el cdec G729 tiene muchas variantes (G.729a,b,c,d,e,c+,f,g,h e incluso el g.279i) cada una con sus peculiaridades, aunque el ms utilizado es el G.729a y el G.729b por ser el ms sencillo y por lo tanto el ms rpido de comprimir y descomprimir, el resto se utilizan en telefona mvil y como base para otros cdecs menos conocidos y mucho ms 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 cdec ya que por ahora (y esperemos que siga siendo as) las patentes software no han sido aprobadas y por lo tanto el cdigo sigue sin ser patentable, la pega es que la entidad encargada de este cdec est en los EEUU y all s que hay patentes software, por lo que si alguien quiere conseguir una licencia, no tendr ms remedio que pagar por ella.

    Por esto, en Europa es legal utilizar la versin opensource aunque como he dicho antes, las empresas que ofrecen servicios de VoIP y que utilizan la versin patentada del cdec, las empresas fabricantes tambin lo utilizan, por lo que si utilizamos la versin opensource en nuestro Asterisk, adems de no disponer de las evoluciones del cdec, mayor velocidad a la hora de comprimir y descomprimir, etc tal y como he comentado, debera funcionar de manera ms o menos transparente y este ms o menos es lo que hace que en algunos casos se produzcan cortes en las llamadas cuando se utiliza este cdec para comunicar ciertos terminales que s disponen de la ltima versin.

    Otra de las pegas que nos podemos encontrar con la versin Intel, es que suele dar algn 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 cdec las diferencias aumentan y eso lo vuelve inconsistente.

    http://www.sinologic.net/blog/2008-03/codec-g729-diferencias-entre-la-version-free-y-la-comercial

  • Instalar Cdec G729 libre en Elastix Cando instalamos Elastix entre os cdecs que instala non est o G729. Isto podmolo comprobar indo a PBX->Tools e a en Asterisk CLI poer core show translation, nos amosa a informacin dos cdecs . Os instalados son os que teen cifras, como vemos o G729 non ten nada, polo tanto non est instalado.

    1. En primeiro lugar a que visitar o seguinte enlace escoller o cdec para o noso equipo http://asterisk.hosting.lv/

    2. Escollemos o tipo de Asterisk que tea a nosa mquina e logo o tipo de cdec que corresponda ca nosa CPU

    3. Renomear o cdec descargado a cdec_g_729.so

  • 4. Copiar o cdec G729 nosa mquina Elastix para elo imos usar WinSCP Introducimos a direccin da nosa IP-PBX Elastix, o usuario e o password e prememos en login

    Unha vez dentro da nosa IP-PBX desprazmonos ata Usr/lib/asterisk/modules e copiamos o arquivo descargado e renomeado anteriormente.

    5. Dar permisos de execucin ao cdec (abrimos unha sesin co Putty) #chmod +x /usr/lib/asterisk/modules/codec_g729.so

    6. Cargar o mdulo en Asterisk

    #asterisk -rx module load codec_g729.so

  • 7. Reiniciar Asterisk #service asterisk restart

    8. Comprobar que o cdec est activo PBX->Tools->Asterisk CLI e introducimos o comando Core show translatin.

    Pdemos comprobar que, si comparamos a imaxe ca primeira desta gua que o cdec g729 est activo e nos indica a carga que tera de pasar de g729 a calquera outro dos existentes.

  • Instalar licenza oficial Cdec G729 en Elastix Cando instalamos Elastix entre os cdecs que instala non est o G729. Isto podmolo comprobar indo a PBX->Tools e a en Asterisk CLI poer core show translation, nos amosa a informacin dos cdecs . Os instalados son os que teen cifras, como vemos o G729 non ten nada, polo tanto non est instalado.

    Despois desto temos que comprar a licenza de G729, podmolo facer a travs de calquera distribuidor como Avanzada 7 en http://www.avanzada7.com ou tamn en www.digium.com e creamos unha conta de usuario. Iniciamos a sesin e imos a produtos e mercamos a licenza G729 codec. Unha vez recibido o correo ca clave de rexistro procedemos cos seguintes pasos.

    1. Descargar e executar a utilidade register para rexistrar e xerar unha licenza vlida. Abrimos unha sesin co putty na IP-PBX # cd /root # wget downloads.digium.com/pub/register/x86-32/register Cambiamos os permisos da aplicacin # chmod 500 /root/register Executamos a aplicacin # /root/register

  • Escollemos a categora Produtos Digium presionando 1 E logo nos aparece

    Escollemos a opcin 5 G729 codec Vainos pedir a clave recibida por correo Please enter your Key-ID: G729-XXXXXXXXXXXX Infrmanos de que a clave xa existe e nos pide si queremos rexistrar a licenza Product available to be registered. Do you want to register this key now(y/n) ycd

  • 2. Descargar e executar a utilidade 'benchg729' para saber que versin de G729 ten mais rendemento no noso servidor. Esta utilidade chequea o hardware do noso servidor e ao final danos o nome en clave da versin g729 para o noso sistema. # cd /root # wget downloads.digium.com/pub/telephony/codec_g729/benchg729/x86-32/benchg729-1.0.8-x86_32 Cambiamos os permisos # chmod 500 /root/benchg729-1.0.8-x86_32 Executamos a utilidade # /root/benchg729-1.0.8-x86_32 O ltimo paragrafo amsanos a versin recomendada para o noso sistema

    3. Usar a utilidade web 'G.729 Selector' para saber o paquete de descarga recomendado.

    www.digium.com/en/docs/G729/g729-download.php

    4. Descargar e instalar o paquete binario 'codec_g729' construdo para a nosa plataforma. # cd /root # wget downloads.digium.com/pub/telephony/codec_g729/asterisk-1.8.0/x86-32/codec_g729a-1.8.0_3.1.5-opteron_sse3_32.tar.gz # tar xzvf codec_g729a-1.8.0_3.1.5-opteron-sse_32.tar.gz # cp /root/codec_g729a-1.8.0_3.1.5-opteron-sse3_32/codec_g729a.so /usr/lib/asterisk/modules NOTA: Na versin de 64 bit o destino / usr/lib64 /asterisk/modules

    5. Dar permisos de execucin ao cdec #chmod +x /usr/lib/asterisk/modules/codec_g729a.so

    6. Cargar o mdulo en Asterisk #asterisk -rx module load codec_g729a.so

    7. Reiniciar Asterisk #service asterisk restart

  • 8. Comprobar que o cdec est activo PBX->Tools->Asterisk CLI e introducimos o comando Core show translatin.

    9. Tamn pdemos comprobar a licenza executando

    #asterisk -rx core show licenses si aparece a seguinte lia todo est correcto Licenses Found: File: G729-XXXXXXXXXXXX.lic -- Key: G729-XXXXXXXXXXXX -- Host-ID: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX -- Channels: 1 (Expires: XXXX-XX-XX) (OK)