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