[Jde-dev] CameraServer y WebCam Philips

David Lobato dav.lobato en gmail.com
Sab Mar 20 14:22:30 CET 2010


A mi me parece, que el formato va ligado a la fuente y me parece que tiene
mas sentido ponerlo en la propia uri.

Independientemente del lugar, si ponemos el formato con un string que
nosotros definimos habrá que parsealo y encontrar el equivalente con
gstreamer. A priori, yo iría con el que usa gstreamer, salvo que resulte que
no hay funciones para parsearlo y tengamos que hacerlas nosotros.



2010/3/20 Roberto Calvo <rocapal en libresoft.es>

>
> Y que te parece si ponemos lo siguiente, siguiendo con el estilo que
> hiciste del fichero de conf
>
> CameraSrv.Camera.0.Uri=v4l2:///dev/video0
> CameraSrv.Camera.0.Uri.Format=I420
>
> ¿Cómo lo ves?
>
> El vie, 19-03-2010 a las 10:15 -0400, David Lobato escribió:
> > Dado que el parametro está relacionado concretamente con las cámaras
> > yo lo pondría como opción al especificar una uri que empiece con v4l o
> > v4l2.
> >
> >
> > Además dado que está ligado a gstreamer usaría el formato que ellos
> > usan para especificar capabilities de video( algo así
> > video/x-raw-yuv,width=320,height=240,...)  cuando las indicas desde
> > linea de comandos. No estoy seguro, pero supongo que la librería tiene
> > funciones para transformar un string en caps y viceversa. Habría que
> > buscarlo.
> >
> >
> > Así la manera de especificar que una cámara concreta debe sacar los
> > frames con un formato indicado sería:
> >
> >
> > CameraSrv.Camera.0.Uri=v4l2:///dev/video0?formato
> >
> >
> > He puesto ? por analogia con las url, pero vamos podemos poner otra
> > cosa si os parece mejor.
> >
> >
> > Cómo lo véis?
> >
> >
> > David.
> >
> > 2010/3/18 JoseMaria <jmplaza en gsyc.es>
> >         Idem. Lo veo bien como parámetro opcional, de modo que si no
> >         se pone
> >         nada el componente CameraServer lo hace lo mejor que puede por
> >         defecto.
> >         Muchas aplicaciones usarán justo el componente así, sin saber
> >         muchos
> >         detalles de las cámaras que tiene debajo.
> >
> >         Pero si para cierta cámara viene mejor tal o cual combinación,
> >         es muy
> >         útil que se pueda especificar vía fichero de configuración y
> >         saltarse el
> >         "por defecto" para que la captura se ajuste mejor a las
> >         características
> >         especiales de tal o cual cámara o los requisitos de tal o cual
> >         aplicación.
> >
> >         JoseMaria
> >
> >         On Mon, 2010-03-15 at 14:35 +0100, Roberto Calvo wrote:
> >         > El lun, 15-03-2010 a las 09:18 -0400, David Lobato escribió:
> >         > > No veo tan claro que la solución sea añadir otro
> >         parámetro. Esto nos
> >         > > obliga a caracterizar cada una de las cámaras que queramos
> >         conectar y
> >         > > apañar el código para cada cámara. Una cosa es que
> >         soportemos
> >         > > diferentes formatos de salida (RGB888, YUY2,...)
> >          estandarizados para
> >         > > que el que reciba al otro lado sepa a que atenerse, y otra
> >         es que haya
> >         > > que controlar al milímetro que entra y que sale. A mi
> >         parecer deja de
> >         > > hacer simple el uso del componente.
> >         >
> >         > Podemos ponerlo como parámetro opcional en el fichero de
> >         conf. No
> >         > siempre es necesario utilizarlo, pero hay veces que viene
> >         bien para no
> >         > tener que compilar código. Un parámetro opcional lo veo
> >         bastante bien.
> >         >
> >         > >
> >         > >
> >         > > Como solución para ir tirando lo acepto, pero creo que
> >         tenemos que
> >         > > investigar un poco mas sobre gstreamer para ver como
> >         detectar las
> >         > > "capabilities" que da la cámara con código (99% seguro de
> >         que se
> >         > > puede) y seleccionar aquella que mejor se adapte a la que
> >         se espera
> >         > > como salida (en principio con no cambiar de espacio de
> >         colores seria
> >         > > suficiente).
> >         >
> >         > Totalmente de acuerdo, si con gst-launch es capaz de
> >         negociarlo, desde
> >         > C++ también se puede hacer.
> >         >
> >         > Aún así, veo muy bueno y versátil disponer de este parámetro
> >         opcional en
> >         > el fichero de configuración, ya que nos permite modificar el
> >         > comportamiento de cameraserver sin necesidad de cambiar
> >         código. Aunque
> >         > nos de gstreamer las "capabilities", dejaría la opción de
> >         detallarle en
> >         > el fichero de conf el formato que queremos.
> >         >
> >         > Cada cámara y cada linux es un mundo, por lo que creo que
> >         nos vendrá muy
> >         > bien disponer del máximo detalle en los ficheros de conf.
> >         Eso si, con
> >         > parámetros opcionales, que podamos arrancar un cameraserver
> >         con las
> >         > mínimas líneas de conf tambien es importante.
> >         >
> >         > un saludo!
> >         >
> >         > >
> >         > >
> >         > > En cuanto al vloopback funcionando con todo, enhorabuena!
> >         Los números
> >         > > pintan bastante bien.
> >         > >
> >         > >
> >         > > David.
> >         > >
> >         > > 2010/3/15 JoseMaria <jmplaza en gsyc.es>
> >         > >         Estupendo!!
> >         > >
> >         > >         Sip, habría que añadir al fichero de configuración
> >         ese nuevo
> >         > >         parámetro.
> >         > >
> >         > >         David está preparando la descripción en el manual
> >         5.0 de
> >         > >         cameraServer,
> >         > >         cameraViewer, etc. Buen sitio para comentar cómo
> >         se usan estos
> >         > >         componentes, cómo se configuran, brevemente cómo
> >         están hechos
> >         > >         por
> >         > >         dentro, etc. A ver si esta semana conseguimos
> >         cerrar una
> >         > >         descripción
> >         > >         buena en el manual de ellos, que ya somos
> >         bastantes los que
> >         > >         estamos
> >         > >         usándolos.
> >         > >
> >         > >         Ánimo,
> >         > >
> >         > >         JoseMaria
> >         > >
> >         > >         On Sun, 2010-03-14 at 23:18 +0100, Roberto Calvo
> >         wrote:
> >         > >         > Al fin he conseguido hacerlo funcionar. La
> >         solución, como no
> >         > >         soporta
> >         > >         > YUY2, es mirar que formato soporta, y lo que he
> >         encontrado
> >         > >         es que esta
> >         > >         > cámara soporte I420
> >         > >         > Label         FOURCC in Hex           Bits per
> >         pixel
> >         > >            Description
> >         > >         > I420          0x30323449              12
> >         > >            8 bit Y plane followed by 8 bit 2x2 subsampled
> >         U and V
> >         > >         planes.
> >         > >         >
> >         > >         > Más info en [1]
> >         > >         >
> >         > >         > Por lo que el código, lo único que cambia es lo
> >         siguiente:
> >         > >         >
> >         > >         >      v4l2caps = gst_caps_new_simple
> >         ("video/x-raw-yuv",
> >         > >         >                                      "format",
> >         > >         GST_TYPE_FOURCC,
> >         > >         >
> >         > >          GST_MAKE_FOURCC('I','4','2','0'),
> >         > >         >                                      NULL);
> >         > >         >
> >         > >         >
> >         > >         > David, quizás deberíamos añadir al fichero de
> >         conf de camera
> >         > >         server este
> >         > >         > parámetro (formato en el que queremos recoger la
> >         imagen de
> >         > >         la cámara,
> >         > >         > para optimizar el proceso como has dicho), y
> >         añadirlo al que
> >         > >         ya tenemos,
> >         > >         > que es formato que ofrece el servidor. ¿Te
> >         parece?
> >         > >         >
> >         > >         > Por cierto, funciona todo bien ya sobre el
> >         módulo vloopback,
> >         > >         que ya era
> >         > >         > hora :-))
> >         > >         >
> >         > >         > Algunos datos interesantes probados en la
> >         miniITX (1.5Ghz)
> >         > >         >
> >         > >         > CameraServer + Vloopback = ~ 5% de CPU
> >         > >         > CameraServer + Vloopback + ffmpeg grabando = ~
> >         20% de CPU
> >         > >         >
> >         > >         > un saludete!
> >         > >         >
> >         > >         > [1] http://www.fourcc.org/yuv.php
> >         > >         >
> >         > >         >
> >         > >         > El dom, 14-03-2010 a las 22:05 +0100, Roberto
> >         Calvo
> >         > >         escribió:
> >         > >         > > Thanks por la explicación!!, ahora lo voy
> >         teniendo más
> >         > >         claro.
> >         > >         > >
> >         > >         > > Lo primero que he hecho es ejecutar el comando
> >         desde
> >         > >         consola, para ver
> >         > >         > > si es capaz de negociar gstreamer con esta
> >         cámara. Y si es
> >         > >         capaz, ya que
> >         > >         > > termina por mostrar la imagen y negociar con
> >         los
> >         > >         siguientes parámetros:
> >         > >         > >
> >         > >         >
> >         > >
> >         > /GstPipeline:pipeline0/GstXImageSink:ximagesink0.GstPad:sink:
> >         > >         > >     caps = video/x-raw-rgb, bpp=(int)16,
> >         depth=(int)16,
> >         > >         endianness=(int)1234,
> >         > >         > >     red_mask=(int)63488, green_mask=(int)2016,
> >         > >         blue_mask=(int)31, width=(int)320,
> >         > >         > >     height=(int)240, framerate=(fraction)15/2,
> >         > >         pixel-aspect-ratio=(fraction)1/1
> >         > >         > >
> >         > >         > >
> >         > >         > > He modificado el código para la parte donde se
> >         generar los
> >         > >         pipelines, en
> >         > >         > > el caso que conectamos un dispositivo v4l2
> >         (descomentado
> >         > >         la parte de
> >         > >         > > v4l2caps y caps, también he probado sólo
> >         dejando caps);
> >         > >         > >
> >         > >         > >
> >         > >         > >   else if (config_.uri.find("v4l://") ==
> >         0){/*handle v4l2
> >         > >         source*/
> >         > >         > >       std::string dev =
> >         config_.uri.substr(6);/*after
> >         > >         v4l2://*/
> >         > >         > >       source =
> >         > >         gst_element_factory_make("v4lsrc","source");
> >         > >         > >
> >         > >
> >         g_object_set(G_OBJECT(source),"device",dev.c_str(),NULL);
> >         > >         > >       sink =
> >         gst_element_factory_make("appsink","sink");
> >         > >         > >
> >         g_object_set(G_OBJECT(sink),"drop",1,NULL);
> >         > >         > >
> >         g_object_set(G_OBJECT(sink),"max-buffers",16,NULL);
> >         > >         > >
> >         > >         > >       videocolor =
> >         > >
> >         gst_element_factory_make("ffmpegcolorspace","videocolor");
> >         > >         > >
> >         > >
> >         gst_bin_add_many(GST_BIN(pipeline),source,videocolor,sink,NULL);
> >         > >         > >
> >         > >
> >           //gst_element_link_filtered(source,videocolor,v4l2caps);
> >         > >         > >
> >           //gst_element_link_filtered(videocolor,sink,caps);
> >         > >         > >     }
> >         > >         > >
> >         > >         > >
> >         > >         > > Después de estar un rato negociando, sale el
> >         siguiente
> >         > >         mensaje.
> >         > >         > >
> >         > >         > > info: Starting thread for camera: cameraA
> >         > >         > > error: Error: Error en el flujo de datos
> >         interno.
> >         > >         > >
> >         > >         > >
> >         > >         > > Sigo probado configuraciones, a ver que puede
> >         estar
> >         > >         pasando ....
> >         > >         > >
> >         > >         > > El sáb, 13-03-2010 a las 17:10 -0500, David
> >         Lobato
> >         > >         escribió:
> >         > >         > > > Hola,
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > El error "Could not negociate format" sale
> >         cuando alguno
> >         > >         de los
> >         > >         > > > componentes del pipeline no puede funcionar
> >         en el
> >         > >         formato que le
> >         > >         > > > estamos pidiendo.
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > El pipeline que hay para v4l2 está bastante
> >         optimizado
> >         > >         para a las
> >         > >         > > > cámaras logitech, ya que es la que tengo mas
> >         a mano.
> >         > >         Para que funcione
> >         > >         > > > con otras cámaras tenemos que hacer un poco
> >         mas
> >         > >         genérico. Lo que
> >         > >         > > > tenemos ahora es:
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > camara -----> ffmpegcolorspaces ------>
> >         appsink
> >         > >         > > >               |
> >                |
> >         > >         > > >           v4l2caps
> >         caps
> >         > >         > > >
> >         > >         > > >
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > Gstreamer es capaz de negociar el formato de
> >         los datos
> >         > >         que cada
> >         > >         > > > componente intercambia entre si, pero
> >         también te deja
> >         > >         especificar
> >         > >         > > > dicho formato con lo que se denominan
> >         "capabilities" que
> >         > >         vienen a ser
> >         > >         > > > una descripción del formato.
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > Así en nuestro pipeline tenemos un
> >         componente camara, el
> >         > >         componente
> >         > >         > > > ffmpegcolorspaces que es capaz de traducir
> >         de un espacio
> >         > >         de color a
> >         > >         > > > otro y el componente appsink, que es un
> >         buffer que
> >         > >         almacena los frames
> >         > >         > > > hasta que se los pedimos. Además, "caps"
> >         seleccionan el
> >         > >         formato que
> >         > >         > > > hemos configurado en el fichero cfg, de modo
> >         que los
> >         > >         frames que
> >         > >         > > > appsink nos da van en el formato que
> >         queremos (YUY2,
> >         > >         RGB888, GRAY8 por
> >         > >         > > > el momento).
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > Para el caso concreto de las cámaras
> >         logitech, estas son
> >         > >         capaces de
> >         > >         > > > generar datos en yuy2 (YUV422) y jpeg de
> >         forma nativa
> >         > >         sin ninguna
> >         > >         > > > transformación software. Pero por alguna
> >         razón que
> >         > >         desconozco cuando
> >         > >         > > > montas el pipeline con los elementos
> >         comentados (sin
> >         > >         contar v4l2caps)
> >         > >         > > > el formato que negocia la cámara con
> >         ffmpegcolorspaces
> >         > >         no es ninguno
> >         > >         > > > de los nativos por lo que se hace una
> >         conversión extra
> >         > >         (ver ejecución
> >         > >         > > > al final del mail). Para evitar esto añadí
> >         al pipeline
> >         > >         "v4l2caps" que
> >         > >         > > > fijan el formato a YUY2 eliminando la
> >         conversión extra.
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > Esto se hace concretamente aquí:
> >         > >         > > >
> >         st_element_link_filtered(source,videocolor,v4l2caps);
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > El problema viene cuando pones una cámara
> >         que no puede
> >         > >         generar dicho
> >         > >         > > > formato, como parece ser el problema de la
> >         philips. Así,
> >         > >         creo que la
> >         > >         > > > solución es simplemente quitar v4l2caps y
> >         dejar que se
> >         > >         negocie el
> >         > >         > > > formato, a costa de que no sea el mas
> >         optimo, pero
> >         > >         ganando el soporte
> >         > >         > > > de mas cámaras.
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > También cabe la posibilidad de que haya
> >         alguna manera
> >         > >         mejor de
> >         > >         > > > hacerlo, que yo de momento no he
> >         descubierto. En cuanto
> >         > >         tenga mas
> >         > >         > > > tiempo, me gustaría descubrir un poco mas de
> >         gstreamer,
> >         > >         que parece
> >         > >         > > > bastante interesante y potente para lo que
> >         buscamos.
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > Espero haber aclarado el asunto.
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > Un saludo,
> >         > >         > > > David.
> >         > >         > > >
> >         > >         > > >
> >         > >         > > >
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > Ejecución que muestra la negociación camara
> >         > >         ffmpegcolorspaces:
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > gst-launch-0.10 -v v4l2src
> >         device=/dev/video2 !
> >         > >         ffmpegcolorspace !
> >         > >         > > > video/x-raw-rgb,width=320,height=240 !
> >         ximagesink
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > (gst-launch-0.10:2960): GLib-WARNING **:
> >         g_set_prgname()
> >         > >         called
> >         > >         > > > multiple times
> >         > >         > > > Setting pipeline to PAUSED ...
> >         > >         > > > Xlib:  extension "Generic Event Extension"
> >         missing on
> >         > >         display
> >         > >         > > > "localhost:10.0".
> >         > >         > >
> >         > /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src:
> >         > >         caps =
> >         > >         > > > video/x-raw-yuv, format=(fourcc)I420,
> >         width=(int)320,
> >         > >         height=(int)240,
> >         > >         > > > framerate=(fraction)30/1,
> >         > >         pixel-aspect-ratio=(fraction)1/1
> >         > >         > > > Pipeline is live and does not need
> >         PREROLL ...
> >         > >         > > > Setting pipeline to PLAYING ...
> >         > >         > > > New clock: GstSystemClock
> >         > >         > >
> >         > >
> >         > /GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src:
> >         > >         caps =
> >         > >         > > > video/x-raw-rgb, bpp=(int)32, depth=(int)24,
> >         > >         endianness=(int)4321,
> >         > >         > > > red_mask=(int)65280,
> >         green_mask=(int)16711680,
> >         > >         > > > blue_mask=(int)-16777216, width=(int)320,
> >         > >         height=(int)240,
> >         > >         > > > framerate=(fraction)30/1,
> >         > >         pixel-aspect-ratio=(fraction)1/1
> >         > >         > >
> >         > >
> >         > /GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink:
> >         > >         caps =
> >         > >         > > > video/x-raw-yuv, format=(fourcc)I420,
> >         width=(int)320,
> >         > >         height=(int)240,
> >         > >         > > > framerate=(fraction)30/1,
> >         > >         pixel-aspect-ratio=(fraction)1/1
> >         > >         > >
> >         > >
> >         > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src:
> >         > >         caps =
> >         > >         > > > video/x-raw-rgb, bpp=(int)32, depth=(int)24,
> >         > >         endianness=(int)4321,
> >         > >         > > > red_mask=(int)65280,
> >         green_mask=(int)16711680,
> >         > >         > > > blue_mask=(int)-16777216, width=(int)320,
> >         > >         height=(int)240,
> >         > >         > > > framerate=(fraction)30/1,
> >         > >         pixel-aspect-ratio=(fraction)1/1
> >         > >         > >
> >         > >
> >         > /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink:
> caps =
> >         > >         > > > video/x-raw-rgb, bpp=(int)32, depth=(int)24,
> >         > >         endianness=(int)4321,
> >         > >         > > > red_mask=(int)65280,
> >         green_mask=(int)16711680,
> >         > >         > > > blue_mask=(int)-16777216, width=(int)320,
> >         > >         height=(int)240,
> >         > >         > > > framerate=(fraction)30/1,
> >         > >         pixel-aspect-ratio=(fraction)1/1
> >         > >         > >
> >         > >
> >         > /GstPipeline:pipeline0/GstXImageSink:ximagesink0.GstPad:sink:
> caps =
> >         > >         > > > video/x-raw-rgb, bpp=(int)32, depth=(int)24,
> >         > >         endianness=(int)4321,
> >         > >         > > > red_mask=(int)65280,
> >         green_mask=(int)16711680,
> >         > >         > > > blue_mask=(int)-16777216, width=(int)320,
> >         > >         height=(int)240,
> >         > >         > > > framerate=(fraction)30/1,
> >         > >         pixel-aspect-ratio=(fraction)1/1
> >         > >         > > >
> >         > >         > > >
> >         > >         > > >
> >         > >         > > > 2010/3/13 Roberto Calvo
> >         <rocapal en libresoft.es>
> >         > >         > > >
> >         > >         > > >         Buenas,
> >         > >         > > >
> >         > >         > > >         Al arrancar el CameraServer contra
> >         la webcam
> >         > >         Philips V4l , me
> >         > >         > > >         da este error:
> >         > >         > > >
> >         > >         > > >         error: Error: Could not negotiate
> >         format
> >         > >         > > >
> >         > >         > > >         Y en el dmesg sale esto (parece que
> >         no consigue
> >         > >         poner los fps
> >         > >         > > >         adecuados).
> >         > >         > > >
> >         > >         > > >         [14566.456664] pwc: Failed to set
> >         video mode
> >         > >         SIF en 1 fps; return
> >         > >         > > >         code = -22
> >         > >         > > >         [14566.613554] pwc: Failed to set
> >         video mode
> >         > >         SIF en 2 fps; return
> >         > >         > > >         code = -22
> >         > >         > > >         [14566.766625] pwc: Failed to set
> >         video mode
> >         > >         SIF en 3 fps; return
> >         > >         > > >         code = -22
> >         > >         > > >         [14566.927300] pwc: Failed to set
> >         video mode
> >         > >         SIF en 4 fps; return
> >         > >         > > >         code = -22
> >         > >         > > >         [14571.280324] pwc: Failed to set
> >         video mode
> >         > >         SIF en 31 fps;
> >         > >         > > >         return code = -22
> >         > >         > > >
> >         > >         > > >         David, añadí la opción para v4l al
> >         cameraserver:
> >         > >         > > >
> >         > >         > > >          else if (config_.uri.find("v4l://")
> >         ==
> >         > >         0){/*handle v4l2
> >         > >         > > >         source*/
> >         > >         > > >              std::string dev =
> >         > >         config_.uri.substr(6);/*after v4l2://*/
> >         > >         > > >              source =
> >         > >         gst_element_factory_make("v4lsrc","source");
> >         > >         > > >
> >         > >
> >          g_object_set(G_OBJECT(source),"device",dev.c_str(),NULL);
> >         > >         > > >              sink =
> >         > >         gst_element_factory_make("appsink","sink");
> >         > >         > > >
> >          g_object_set(G_OBJECT(sink),"drop",1,NULL);
> >         > >         > > >
> >         > >
> >          g_object_set(G_OBJECT(sink),"max-buffers",16,NULL);
> >         > >         > > >
> >         > >         > > >              videocolor =
> >         > >         > > >
> >         > >
> >         gst_element_factory_make("ffmpegcolorspace","videocolor");
> >         > >         > > >
> >         > >         > > >
> >         > >
> >          gst_bin_add_many(GST_BIN(pipeline),source,videocolor,sink,NULL);
> >         > >         > > >
> >         > >
> >          gst_element_link_filtered(source,videocolor,v4l2caps);
> >         > >         > > >
> >         > >          gst_element_link_filtered(videocolor,sink,caps);
> >         > >         > > >            }
> >         > >         > > >
> >         > >         > > >         ¿Ves que puede estar pasando?
> >         > >         > > >
> >         > >         > > >         un saludete!
> >         > >         > > >
> >         > >         > > >         --
> >         > >         > > >         Roberto Calvo Palomino          |
> >         Libre
> >         > >         Software Engineering
> >         > >         > > >         Lab (GSyC)
> >         > >         > > >         Tel: (+34) 91 488 85 23         |
> >         Universidad
> >         > >         Rey Juan Carlos
> >         > >         > > >         rocapal en libresoft.es            |
> >         Edif.
> >         > >         Departamental II -
> >         > >         > > >         Despacho 116
> >         > >         > > >         http://libresoft.es/            |
> >         c/Tulipán s/n
> >         > >         28933 Móstoles
> >         > >         > > >         (Madrid)
> >         > >         > > >
> >         > >         > > >         GPG-KEY:
> >         http://gsyc.es/~rocapal/rocapal.gpg
> >         > >         > > >
> >         > >         > > >
> >         > >         > > >
> >         _______________________________________________
> >         > >         > > > Jde-developers mailing list
> >         > >         > > > Jde-developers en gsyc.es
> >         > >         > > >
> >         > >
> >
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> >         > >         > >
> >         > >         > >
> >         _______________________________________________
> >         > >         > > Jde-developers mailing list
> >         > >         > > Jde-developers en gsyc.es
> >         > >         > >
> >         > >
> >
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> >         > >         >
> >         > >         > _______________________________________________
> >         > >         > Jde-developers mailing list
> >         > >         > Jde-developers en gsyc.es
> >         > >         >
> >         > >
> >
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> >         > >
> >         > >
> >         > >
> >         > >
> >         > >         --
> >         > >         http://gsyc.es/jmplaza
> >         > >         Universidad Rey Juan Carlos
> >         > >
> >         > >
> >         > >
> >         > >
> >         > >
> >         > > _______________________________________________
> >         > > Jde-developers mailing list
> >         > > Jde-developers en gsyc.es
> >         > >
> >
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
> >         >
> >
> >
> >         --
> >         http://gsyc.es/jmplaza
> >         Universidad Rey Juan Carlos
> >
> >
> >
> >
> >
>
> --
> Roberto Calvo Palomino          | Libre Software Engineering Lab (GSyC)
> Tel: (+34) 91 488 85 23         | Universidad Rey Juan Carlos
> rocapal en libresoft.es            | Edif. Departamental II - Despacho 116
> http://libresoft.es/            | c/Tulipán s/n 28933 Móstoles (Madrid)
>
> GPG-KEY: http://gsyc.es/~rocapal/rocapal.gpg
>
------------ prxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20100320/f3e8e686/attachment-0001.htm 


More information about the Jde-developers mailing list