[Jde-dev] CameraServer y WebCam Philips

Roberto Calvo rocapal en libresoft.es
Sab Mar 20 12:36:05 CET 2010


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 mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 198 bytes
Descripción: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada
 digitalmente
Url        : http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20100320/2e54b623/attachment-0001.pgp 


More information about the Jde-developers mailing list