2010-03-04 9 views
11

¿Cuál es la sintaxis de las mayúsculas y las capacidades de medios especificadas en gstreamer? Los topes son cadenas que especifican el tipo de medio permitido y se parecen a "audio/x-raw-int, ..." pero no he podido encontrar una buena documentación sobre exactamente lo que está permitido en una cadena de mayúsculas.¿Qué es la sintaxis de gstreamer caps?

+0

tiene muchas respuestas para elegir. ¿Considerarías aceptar uno de esos? –

Respuesta

4

Así es como lo uso en Python ... HTH

caps = gst.Caps("video/x-raw-yuv,format=(fourcc)AYUV,width=704,height=480") 
capsFilter = gst.element_factory_make("capsfilter") 
capsFilter.props.caps = caps 
+0

Estoy buscando la sintaxis de la cadena que especifica los límites. "video/x-raw-yuv, ..." – joeforker

1

una respuesta parcial, que estoy seguro de que ya se haya elaborado:

"MIMETYPE,PROPERTY1=VALUE1,PROPERTY2=VALUE2,..." 

formalmente, son las tapas no representado por cadenas sino por un objeto GstCaps que contiene una matriz de GstStructures. ver la documentación here.

quizá si trabajamos a cabo una respuesta definitiva Aquí podríamos enviar un parche documentación de la función gst_caps_from_string()

1

En Java, por gstreamer-java

final Element videofilter = ElementFactory.make("capsfilter", "flt"); 
videofilter.setCaps(Caps.fromString("video/x-raw-yuv, width=720, height=576" 
+ ", bpp=32, depth=32, framerate=25/1")); 

En C, supongamos que desea tapas videoscale filtran

GstElement *videoscale_capsfilter; 
GstCaps* videoscalecaps; 
... 
... 
videoscale = gst_element_factory_make ("videoscale", "videoscale"); 
g_assert (videoscale); 
videoscale_capsfilter = gst_element_factory_make ("capsfilter", "videoscale_capsfilter"); 
g_assert (videoscale_capsfilter); 
... 
... 

propiedades a continuación, establecer

g_object_set(G_OBJECT (videoscale_capsfilter), "caps", videoscalecaps, NULL); 

entonces se podría añadir estos a bin y vincularlos de la misma forma que ha creado la canalización de medios utilizando gst-launch

/* Add Elements to the Bin */ 
gst_bin_add_many (GST_BIN (pipeline),source ,demux ,decoder ,videoscale ,videoscale_capsfilter ,ffmpegcolorspace ,ffmpegcolorspace_capsfilter,autovideosink,NULL); 

/* Link confirmation */ 
if (!gst_element_link_many (demux, decoder,videoscale, videoscale_capsfilter ,ffmpegcolorspace, ffmpegcolorspace_capsfilter, autovideosink, NULL)){ 
g_warning ("Main pipeline link Fail..."); 
} 

/* Dynamic Pad Creation */ 
if(! g_signal_connect (source, "pad-added", G_CALLBACK (on_pad_added),demux)) 
{ 
g_warning ("Linking Fail..."); 
} 
9

La sintaxis es la siguiente:

<type>[,<property>=<value>]... 

Tenga en cuenta que el tipo es no un tipo MIME, por mucho que pueda parecer una.

Puede averiguar qué elementos de propiedades de mayúsculas admiten utilizando gst-inspect. Proporcionará "plantillas de almohadilla" para las almohadillas del elemento, que especificarán los rangos de límites admitidos.

La guía del plugin GStreamer también contiene un list of defined types que describe propiedades para formatos comunes de audio, video e imagen.

4

Aquí es el formato por lo que yo entiendo:

caps = <caps_name>, <field_name>=<field_value>[; <caps>] 
<caps_name> = image/jpeg etc 
<field_name> = width etc 
<field_value> = <fixed_field_value>|<ranged_field_value>|<multi_field_value> 
<fixed_field_value> = 800 etc 
<ranged_field_value> = [<lower_value>, <upper_value>] 
<multi_field_value> = {<fixed_field_value>, <fixed_field_value>, <fixed_field_value>, ...} 
+0

Esto es muy bueno, pero deja de lado las nuevas Funciones de capacidad. – swestrup

6

veo que está después de audio.

Le daré la versión larga, puede colocar o cambiar las piezas que no necesita. Sin embargo, cambia entre GStreamer 0.10 y GStreamer 1.0. Voy a dar tanto:

para GStreamer 0.10:

audio/x-raw-int,rate=44100,channels=2,width=16,depth=16,endianness=1234,signed=true 

para GStreamer 1.0:

audio/x-raw,format=S16LE,channels=2,layout=interleaved 

Como puede ver, con 1.0, deberá combinar el formato de audio. S16LE significa firmado + int + 16 ancho + pequeño endian (= 1234).

Cuestiones relacionadas