LongoMatch:The Digital Coach

GStreamer-WinBuilds en el Google Summer of Code

Posteado por: longomatch en: Marzo 25, 2009

Después del éxito que ha tenido el sub-proyecto GStreamer-WinBuilds en la comunidad de desarrolloadores de GStreamer, he decido presentarlo al Google Summer of Code. Mi propuesta es trabajar junto con el equipo de GStreamer para facilitar el desarrollo de GStreamer en Windows, lo cual pasa por 3  importantes puntos:

  1. Automatizar la creación de un  entorno de compilación con todas las depencias externas del proyecto GStreamer para facilitar la compilación de los plugins externos a GStreamer.
  2. Portar todos los proyectos existentes de Visual Studio a Code::Blocks, un IDE multiplataforma y de Software Libre, para no depender de Visual Studio
  3. Finalizar el trabajo empezado con GStreamer-WinBuilds y crear un instalador con todos los plugins existentes en GStreamer.

Ahora sólo falta que el equipo de GStreamer lo considere de interés!

Colaborador de GStreamer!!!

Posteado por: longomatch en: Marzo 23, 2009

Hace un par de días se publicó la versión 0.10.11 del módulo gst-plugins-bad, en la cual colaboré con los siguientes bugs:

A raíz de esto aparezco en la lista de colaboradores de esta versión como se puede ver en las “release notes”.

Compilando ffmpeg-0.5 en Windows

Posteado por: longomatch en: Marzo 23, 2009

Hace unas semanas ffmpeg anunciaba una nueva versión oficial, la 0.5, lo cual es una estupenda noticia teniendo en cuenta que la última versión databa de la era prehistórica. Estos últimos años el equipo de ffmpeg mantenía la rama trunk de desarrollo “estable”, de tal forma que compilar la última versión de ffmpeg era compilar la última revisión del repositorio. Parece ser que han cambiado de política y van a volver a lanzar una nueva versión de forma periódica, lo cual, en mi opinión, es una excelente idea.

La última actualización del módulo ffmpeg de GStreamer utiliza esta versión, la 0.5, y no puede usarse ninguna revisión posterior por los cambios introducidos en avutil. Como siempre, he descargado el tarball y me he puesto a compilar…. Todo perfecto, pero a la hora de ejecutar me salta un horrible error:

“The application failed to initialize properly (0xc00000005). Click OK to terminate the application”

Esto supone un gran contratiempo, ya que no podré incluir la actualización de este módulo en GStreamer-WinBuilds. Además, a primera vista, es un error al que no se le puede dar suloción
Indagando en las listas de correo de ffmpeg, resulta que el enlace dinámico con avutil y avcodec está roto en Windows, por lo que sólo se puede enlazar estáticamente con dichas librerías. Esta noche intentaré configurar el proyecto gstffmpeg de Visual Studio para enlazar estáticamente utilizando las librerías de MinGW.

Preparando la nueva versión: LongoMatch 0.14

Posteado por: longomatch en: Marzo 18, 2009

En estas últimas semanas me he estado centrando GStreamer Winbuild, dejando un poco de lado LongoMatch, pero pensando siempre en nuevas mejoras.

Últimamente he recibido unas cuantas propuestas de mejoras, que he decidido incluirlas en esta versión al considerarlas de gran utilidad. Las mejoras que aportará esta nueva versión son las siguientes:

  1. Notificación de actualizaciones
  2. Exportación de proyectos a archivos csv para crear estadísticas de los encuentros
  3. Zoom del timeline ajustable mediante escala

Esta versión, la 0.14,  será oficializada a principios de la semana que viene.

Debian Mentors: caminando hacia los repositorios oficiales de Debian

Posteado por: longomatch en: Marzo 12, 2009

Son muchas las distribuciones que he probado en mi vida, pero hay una que me enamoró desde el principio… Debian.  Me encató la forma en que se gestionan los paquetes mediante apt-get y como se organizaba la distribución en distintas ramas según la estabilidad de los paquetes. Venía de Windows, donde era impensable instalar cualquier programa con un simple comando, y mi paso por redhat fué un poco frustante, ya que por esa época rpm todavía no gestionaba las dependecias de los paquetes. Por esa razón, una de mis grandes ilusiones fue la de tener un programa en los repositorios oficiales de Debian.

Al presentar LongoMatch al concurso universitario de Software Libre y ver que el programa estaba funcionando bien, se me pasó por la cabeza empezar a buscar la forma para incluirlo en Debian, y así es como descubrí Debian Mentors. Debian Mentors es un repositorio de paquetes público, a través del cual se ofrece la posibilidad de incluir paquetes en los repositorios oficiales sin ser un “Debian Developer”.

Los “Debian Developers” son los únicos que pueden subir paquetes a los repositorios oficiales, y debian mentors ofrece un punto de enlace entre los aspirantes y los “Debian Developers”. Así que la forma que tenemos los desarrolladores ajenos al proyecto Debian de conseguir ver nuestros paquetes en Debian es consiguiendo un “Sponsor”, es decir, un “Debian Developer” que revise el paquete, le dé el visto bueno y lo suba por nosotros.

El proceso es bastante simple:

  1. Creas una cuenta en debian mentors
  2. Subes tu paquete
  3. Buscas un “Sponsor”
  4. Sigues las recomensaciones de tu “Sponsor”
  5. Con un poco de suerte tu paquete será incluido en los repositorios de Debian.

Mini artículo para Linux Magazine

Posteado por: longomatch en: Marzo 10, 2009

LongoMatch:The Digital Coach

Creado por Andoni Morales Alastruey, estudiante de Ingeniería de Telecomunicaciones en la Universidad Politécnica de Madird

LongoMatch es un proyecto de Software Libre diseñado para facilitar el análisis por vídeo de encuentros deportivos. Su función es la de ayudar a los entrenadores a realizar estudios técnico/tácticos de un partido, marcando las jugadas de interés y agrupándolas por categorías. Con un simple click, permite visualizar cualquier jugada del partido que hayamos añadido con anterioridad a la base datos, pudiendo ajustar finamente el tiempo de inicio y fin de cada una. Además, incluye un conjunto de herramientas que facilitan la presentación de los resultados del análisis como son las listas de reproducción, la generación de series de imágenes de una jugada o la creación de nuevos vídeos a partir de una lista de reproducción, entre otras.

Motivación

En el deporte de alto nivel, el uso de las nuevas tecnologías es cada vez más habitual a la hora intentar mejorar el rendimiento de un equipo o de un deportista. En los deportes de equipo con un alto componente táctico, como el hockey hierba, el baloncesto o el rugby, se hace uso del vídeo para analizar el juego del equipo contrario y poder plantear el encuentro de la mejor forma posible. Actualmente existen varios programa de pago con esta finalidad, pero su coste es desorbitado, en torno a los 6000€… un precio que muchos clubes no se pueden permitir. LongoMatch nace con la intención de ser el primer proyecto que ofrece una solución libre y gratuita para el estudio y análisis de encuentros deportivos por vídeo, en un afán por democratizar el deporte.

Funcionamiento

LongoMatch ofrece herramientas para las tres fases del análisis. En la fase de codificación, permite marcar las jugadas importantes del encuentro, agrupándolas por categorías de tal forma que sean accesibles con un simple click. En la fase de análisis, permite ajustar de forma precisa el inicio y fin de cada jugada mediante un timeline, pudiendo revisar cada una de ellas frame a frame. El último paso es el de presentación, para el cual LongoMatch ofrece tres herramientas: exportación de jugadas a series de imágenes, listas de reproducción mediante las cuales podemos mostrar de forma sencilla las jugadas más importantes y exportación de las listas reproducción a un nuevo vídeo.

Promoviendo el uso de GStreamer en la comunidad

LongoMatch es multiplataforma y es uno de los primeros proyectos, junto con Elisa y Songbird,  en apostar por el uso de GStreamer como framework multimedia en todas las plataformas. GStreamer es un gran veterano en GNU/Linux, pero hasta ahora, pocos se han atrevido a utilizarlo en Windows o Mac OS X, principalmente porque el equipo de GStreamer no porporciona binarios para estos sitemas operativos, dejando a los desarrolladores la tarea de portabilidad y compilación. Los esfuerzos de LongoMatch por portar GStreamer a Windows han derivado en un nuevo proyecto en colaboración con Andrés Colubri: GStreamer Win&MacBuild. Este proyecto ha tenido una excelente acogida en la comunidad por ser el primero en proporcionar un instalador para Windows (y en un futuro muy cercano también para Mac OS X) con binarios funcionales de GStreamer. De esta forma, se ofrece por primera vez una alternativa libre a los ya conocidos DirectShow y QuickTime.

Publicado GStreamer WinBuild 0.10!!!

Posteado por: longomatch en: Febrero 26, 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!

“Manifest Hell”: Despliegue de apliaciones VC2008

Posteado por: longomatch en: Febrero 25, 2009

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!

Actualización de Longomatch 0.12.3

Posteado por: longomatch en: Febrero 17, 2009

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

Nueva versión: LongoMatch 0.12

Posteado por: longomatch en: Febrero 5, 2009

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

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