LongoMatch:The Digital Coach

Archive for febrero 2009

Después de varios meses de duro trabajo en colaboración con Andrés Colubri, nos enorgullecemos de anunciar lel lanzamiento oficial de GStreamer WinBuild, el primer paquete de binarios totalmente funcional de GStreamer para Windows!

El versionado sigue la política de GStreamer, siendo 0.10 la rama actual de desarrollo.

GStreamer WinBuild proporciona actualmente binarios para los siguientes módulos de GStreamer:

  1. gstreamer 0.10.22
  2. gst-plugins-base 0.10.22
  3. gst-plugins-good 0.10.14
  4. gst-plugins-bad 0.10.10
  5. gst-plugins-ugly 0.10.10
  6. gst-ffmpeg 0.10.6

Podéis encontrar una lista con todos los plugins soportados en el wiki.

Este primera release incluye importantes cambios con respecto a las anteriores versiones no oficiales:

  • Actualización de todos los módulos de GStreamer a su última versión
  • Soporte para codificación h-264 mediante x264!!!
  • Soporte para Matroska
  • Soporte para ogg, vorbis y theora
  • Camerabin: plugin para captura de video

Espero que la comunidad lo disfrute!

El termino DLL Hell se refiere a los problemas ocasionados por las dll en Windows. El “infierno” ocurre cuando:

  • Una instalación sobreescribe una biblioteca con otra versión, dejando en algunos casos los porgramas que enlazaban con ella inservibles.
  • Una desintalación borra una biblioteca compartida.

El DLL Hell se ha intentado corregir por parte de Microsoft con los “side-by-side  assemblies”  (SxS) que permiten a una aplicación selecionar una versión específica de una dll.  En que consiste esto? Pues tiene una fácil explicación: en el manifest de la aplicación se especifica la dll que vamos a usar y su versión, de tal forma que cuando se vaya cargar dicha dll, se buscará el ensamblado con la versión especificada en el manifest. El problema es que se buscan las dll’s en un caché de ensamblados y si no está, la aplicación muere al no poder cargarla. Ahora ya no se puede simplemente copiar esa dll a cargar en el directorio en el que está el ejecutable (esto daría lugar al famoso DLL Hell), sino que tiene que estar registrada en el caché

Esto deriva en nuevo problema: el Manifest Hell. ¿Qué pasa si compilamos una aplicación con VC2008, enlazando con el CRT de Windows, es decir, con msvcr90.dll? La aplicación tendrá un manifest de este tipo:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
</requestedPrivileges>
</security>
</trustInfo>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>

Cómo se observa en la sección dependentAssembly, la aplicación buscará el ensamblado Microsoft.VC90.CRT de versión 9.0.21022.8 , el cual no se distribuye en por defecto en ningún sistema operativo de Windows. ¿Esto quiere decir que si compilo una aplicación con VC2008  no la puedo ejecutar en culauiqer máquina? La respuesta es NO, NO SE PUEDE. Este problema ha sido todo un infierno, de ahí el nombre Manifest Hell, en el despliegue de LongoMatch (y más específicamente de GStreamer) y me ha llevado un muchos de quevraderos de cabeza estos últimos meses. La solución de Microsoft es instalar en la máquina objetivo el Microsoft Redistributable Package, lo cual me parece una solución poco elegante al tener que recurrir a otro instalador.

El problema es que mi aplicación usa  GStreamer, cuyos binarios tengo que compilar con VC2008 (GStreamer no proporciona binarios para Windows y cada uno tiene que hacerlo a su manera, lo cual ha derivado en nuevo proyecto que está teniendo muy buena acogida en la  comunidad GStreamer).  La solución es más simple de lo que parece, pero estando muy mal documentada fué muy difícil de encontrar.

Antes he comentado que la busqueda de ensamblados se realiza en una caché de ensamblados SxS, pero existe una forma de distribuir copias privadas. Consiste en copiar el contenido de la capeta %PROGDIR%\Microsoft Visual Studio 9.0\VC\Redist\x86\Microsoft.VC90.CRT a la carpeta bin\ de nuestro programa. De esta forma, al lanzar el ejecutable principal y buscar el ensamblado Microsoft.VC90.CRT, encontrará en su directorio de ejecución una carpeta de nombre Microsoft.VC90.CRT con el contenido del ensamblado. Si la versión buscada coincide con la especificada en el manifest cargará la dll con éxito.

Problema Solucionado!

Pequeña actualización de LongoMatch que corrige un error del editor de plantillas. Un error en el lector de plantillas hacía que se leyese el tiempo de parada siempre.
La nueva versión está lista para descargarse desde la forja

Después de casi 3 semanas sin publicar niguna versión ( por exámenes y por tener el portátil roto), finalmente sale a la luz LongoMatch 0.12.

Lavado de imagen

LongoMatch 0.12: Lavado de imagen

En este versión me he centrado en mejorar el aspecto de la aplicación en Windows, añadiendo un selector de temas para personalizarlo al gusto de cada uno.  Al selector de temas se accede con el ejecutable gtk2_prefs.exe localizado en la carpeta bin del directorio de instalación.

También he añadido unos cuantos plugins a GStreamer, el motor multimedia, dando soporte a archivos MP4 y añadiendo un decodificador MPEG2. Además se han corregido una serie de pequeños errores que tenía la aplicación de tal forma que estoy ya pensanado en crear la primera prerelease para LongoMach 1.0

Tema Aurora-midnight

LongoMatch 0.12: Tema Aurora-midnight

Como siempre podéis descargaros la útima versión desde la página oficial de Longomatch

The GStreamer project doesn’t provide  any updated  binary package for Windows and if you want to develop an application based on GStreamer  for this OS you have to build them by yourself.

That why we have created the GStreamer WinBuilds project which goal is to provide precompiled GStreamer binary packages for Microsoft Windows, including a large collection of encoding/decoding plugins.

This project is based on  OABuild, but with a different approach in the way of adding external plugins. Rather than trying to compile all the external dependencies with the MSVC toolchain (ffmpeg, libxvid, libx264, liba52, etc…) , which not always possible,  we compile them using Mingw/Msys linking the gstreamer plugins to these libraries.

The changes we made so far are:

  • Added ffmpeg plugin with full codec support
  • Added gstvolume plugin.
  • Added gstmad plugin.
  • Added gstasfdemux plugin.
  • Added gstlame.
  • Removed  Direct Show wrapper to use the ffmepg plugin for all the decoding stuff.
  • Added gstxvid plugin.
  • Added gstmpeg2decoder plugin.
  • Added gstmpegstream plugin.
  • Added gstresindvd plugin.
  • Added gstfaad plugin.
  • Added gstfaac plugin.
  • Added gstdvdspu plugin.
  • Adde gsta52 plugin.
  • Added gstmpeg4parse plugin.
  • Added gstqtdemux plugin.

Find out more at the  GStreamer Winbuilds Wiki


Descripción del proyecto

LongoMatch es un proyecto de Software Libre que proporciona una serie de herramientas para el análisis por vídeo. Está enfocado al deporte y ayuda a entrenadores y ténicos a realizar estudios de acciones a través del vídeo, permitiendo localizar y agrupar por categorías diferentes segmentos de una grabación para facilitar su posterior análisis. Su uso puede llegar a ser más genérico, pudiendo ser utilizado para realizar resúmenes de conferencias, estudios de películas o cualquier actividad que consista en localizar y estudiar partes concretas de una grabación. Para más información, visitad la página web del proyecto: www.ylatuya.es