Contador estandar

01. May 2008

Comparación entre el códec H.264 y Theora

Hace poco, escribí un artículo sobre el IAXClient 2 donde se añadía el soporte de vídeo a esta librería y por extensión, al soporte de vídeo de IAX en Asterisk.
En estos añadidos nuevos, se encontraban soporte para el códec H.264 y Theora.

El H.264 es uno de los mejores códecs para emisión/recepción de vídeo. No en vano se utiliza actualmente para videoconferencia con una calidad y velocidad sin precedentes. Tanto en softphones como Eyebeam, Ekiga, etc como en hardphones como el GXV-3000 de GrandStream para hacer videoconferencias con Asterisk, pero…

¿Qué clase de códec es el Theora?

De los creadores de OggVorbis (la versión libre del popular mp3) una fundación de desarrolladores llamada Xiph, nace una versión libre del códec de vídeo de alta calidad llamada Theora.
Theora se podría decir que es la “alternativa libre” del actual H.264, ya que ambas soportan calidades y consumos de ancho de banda bastante similares. Pueden codificar vídeo con una resolución desde 128×96 hasta 4096×2048 a 30 frames por segundo, no es de extrañar que sean los códecs de vídeo del futuro, tanto para hacer videoconferencia en infraestructuras con muy poco ancho de banda como para emitir películas en alta definición (HD) ya que el ratio de compresión es variable lo que permite cambiar la calidad en función del ancho de banda que dispongamos en este momento.

¿Cual de los dos códecs es mejor para vídeo?

Tras leer algunas comparativas de calidad y velocidad, parece ser que todas llegan a una misma conclusión, en ancho de banda es similar mientras que la calidad de la imagen aún es mejor en el H.264 que en Theora. Pero eso no significa que sea así siempre. Recordemos que el software libre vivo mejora exponencialmente frente al software propietario y estoy convencido que pronto será Theora la que ofrezca mejor calidad y velocidad que el H.264, pero en la actualidad, esto no es así.

Para ilustrarlo, aquí teneis un ejemplo de una captura enviada en H.264 y una con Theora:

¿Que software tiene soporte para Theora?

Actualmente no hay muchos softphones que lo soporten. Como he comentado antes, los softphones libres como Ekiga o linphone lo soportan y Twinkle lo soportará en breve. Los softphones comerciales como X-Lite o Eyebeam también lo soportarán pronto y es que Theora es bastante “nuevo” y aún tiene que evolucionar y darse a conocer.

Por supuesto, las aplicaciones de streaming libres soportan este códec GStream, VideoLan, etc…, las comerciales suelen traer este soporte como un añadido o plugin pero poco a poco se irá incorporando de serie a medida que vaya haciéndose más conocido.

¿Qué software tiene soporte para H.264?

Por lo general, cualquier softphone que soporte vídeo trae soporte para H.263 y las más evolucionadas traen soporte para H.264 pero siempre como una evolución del H.263 y del H.263+ aunque este códec tenga un sistema completamente distinto en cuanto a procesamiento, finalmente desbancará al H.263/+ y el H.264 se convertirá finalmente en un estandar en todas las aplicaciones de vídeo streaming.

Enlaces de Interés:
- Información sobre el códec H.264.
- Información sobre el códec Theora.

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

18. December 2007

Videoconferencia con Asterisk y 3G

Asterisk videoNuestro colega Bytecoders nos apunta en un comentario que acaba de traducir un tutorial creado en inglés por Sergio García (de fontventa.com) sobre cómo compilar Asterisk para que tenga soporte de códecs que conecten con la red 3G y permitan la videoconferencia con los móviles de última generación. (bueno, los anteriores al iPhone. :D )

Parece que la idea de meter Video en Asterisk lleva bastante tiempo dando guerra, pero parece que este año que entra ahora va a cobrar mucho más protagonismo. Ya escribiré más adelante qué se espera para este nuevo año, de momento vamos a centrarnos.

En el tutorial se indica que funciona con terminales Nokia N95 y LG.

Para la instalación utilizan Debian Etch y una Digium B410P.

Se hace una instalación completa de Asterisk con soporte de mISDN para la tarjeta Digium y luego se procede a compilar el soporte de vídeo:

- Instalación del H324M y modificaciones para integrarlo con la tarjeta B410P.
- Instalación del códec AMR.
- Instalación del gateway H324 (Para recibir y hacer llamadas 3G)
- Instalación del mpeg4ip
- Instalación del app_mp4.
- Instalación del app_rtsp.
- Instalación del app_transcode.
- Instalación del pcm2mp4.
- Ejemplos de uso del dialplan.

Un tutorial que a más de uno le hará la vida un poco más sencilla. :P

Enlace:  http://bytecoders.homelinux.com/…/tutorial-asterisk-…-video-…-3g.html

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