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