[Jde-dev] CameraServer y WebCam Philips

David Lobato dav.lobato en gmail.com
Mar Mar 23 14:45:11 CET 2010


Hola,

Acabo de subir cambios en cameraserver para implementar las ideas que
comentabamos en este hilo.

Concretamente, he añadido un parametro SrcPipeline que permite indicar un
pipeline en el formato de gstreamer (ver gst-launch para ejemplos). De modo
que si necesitamos optimizar algo con relación al origen del flujo de video
(camara, video, ...) pues simplemente ponemos el pipeline optimo y andando.

Dicho parametro es prioritario con respecto al parametro Uri, es decir, si
se encuentran ambos se usa SrcPipeline.

El aspecto del pipeline que tenemos en cameraserver es el que se muestra en
el gráfico adjunto.

Pondré todo esto en le wiki.

Rober, he añadido el manejo de v4l:// que no estaba subido. Pruebalo cuando
tengas un momento, yo no tengo cámara v4l.

También me gustaría probar las cámaras fierwire. En teoria el protocolo
dv:// está soportado, pero no tengo ni idea de que hay que poner a
continuación y si permite seleccionar la cámara. Se supone que es una uri
estandar en gnome, pero no he encontrado mucha información al respecto. Otra
opción es especificar un pipeline usando dv1394src como fuente. Si alguien
se anima a probar que comente el resultado.

David.

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

>
> No hago causa, mientras esté el parámetro me vale :-) Ya tendremos
> tiempo de cambiarlo si no nos gusta donde lo pongamos.
>
> Así que como tu veas David.
>
> El sáb, 20-03-2010 a las 09:22 -0400, David Lobato escribió:
> > 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
> >
> >
> >
> > _______________________________________________
> > Jde-developers mailing list
> > Jde-developers en gsyc.es
> > http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers
>
> --
> 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/20100323/97d5129c/attachment-0001.htm 
------------ prxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : pipeline_cameraserver.png
Tipo       : image/png
Tamaño     : 25636 bytes
Descripción: no disponible
Url        : http://gsyc.escet.urjc.es/pipermail/jde-developers/attachments/20100323/97d5129c/attachment-0001.png 


More information about the Jde-developers mailing list