Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Monografías / GStreamer - Estado de la tubería

GStreamer - Estado de la tubería

 ----- 
CopyLeft Monografía de Juan Carlos Inostroza - 02 de Marzo de 2006
Temas Relacionados: Animación multimedia
5. Estado de la tubería
Una vez que la tubería esta creada, hay que indicar de forma explícita el estado en que se encuentra. Por defecto, cuando una tubería se crea, su estado original es NULL. Es posible cambiar su estado a

  • READY : un elemento esta listo para hacer “algo”
  • PLAYING : un elemento esta haciendo “algo”
  • PAUSED : un elemento esta pausado

Recordar que este puede ser el el estado de la tubería, como tambien puede ser el estado de cualquier elemento de la tubería. Es decir, el origen puede estar en PLAYING, mientras que la salida puede estar en PAUSED. La gran diferencia es que al encapsular los elementos dentro de un “bin” y éste cambia de estado, todos los elementos del “bin” cambian de estado, haciendo más faciles las cosas a los programadores

Para cambiar de estado a un elemento

gst_element_set_state(elemento, GST_STATE_SOMETHING);

Pero no es todo. Es necesario además indicarle a la tubería que debe seguir trabajando:

gst_bin_iterate(bin);

Una vez que un elemento cambia de estado (por ejemplo, el origen termina de leer un archivo), los elementos enlazados a el cambian de estado.

Si necesitamos por ejemplo, tocar un archivo hasta que termine y cambie de estado la tubería automaticamente,

gst_element_set_state(tuberia, GST_STATE_PLAYING);while(gst_bin_iterate(GST_BIN(tuberia)));

Entonces nuestro programa podría ser:

GstElement *origen, *filtro, *destino;GstElement *tuberia;origen = gst_element_factory_make("filesrc", "origen");filtro = gst_element_factory_make("mad", "decodificador");destino = gst_element_factory_make("osssink","salida");gst_bin_add_many(GST_BIN(pipeline), origen, filtro, destino, NULL);gst_element_link_many(origen, filtro, destino, NULL);gst_element_set_state(tuberia, GST_STATE_PLAYING);while(gst_bin_iterate(GST_BIN(tuberia)));

No esta terminado aun. Debemos darle algunas propiedades a algunos elementos.

3.2 Terminando el código


Ahora hay que asignarle el archivo que se escuchará. Para esto se ocupa la propiedad “location” de filesrc.

Queda a ejercicio del lector el que soporte un playlist

GstElement * origen;g_object_set(G_OBJECT(origen), "location", "algunarchivo.mp3", NULL); ahora via gstreamergst_element_set(origen, "location", "algunarchivo.mp3", NULL);

Ahora, terminamos el programa. Este programa es similar al ejemplo que viene en la documentación de GStreamer (que se incluye a modo de ejemplo )

#include <gst/gst.h> int main (int argc, char * argv[]){       GstElement * origen, * filtro, * salida;       GstElement * tuberia;           inicializamos gstreamer       gst_init(&argc, &argv);               preguntamos si se ejecuto como programa archivo.mp3       if (argc != 2)       {             g_print("Uso : %s <archivo.mp3> \n", argv[0]);             return -1;       }         creamos los elementos       tuberia = gst_pipeline_new("foo");       origen = gst_element_factory_create("filesrc");       filtro = gst_element_factory_create("mad");       salida = gst_element_factory_create("osssink");          decimos a origen de donde leer el archivo       gst_element_set(origen, "location", argv[1],NULL);               encapsulamos en un bin (tuberia)       gst_bin_add_many(GST_BIN(tuberia), origen, filtro, salida, NULL);          enlazamos los elementos       gst_element_link_many(origen, filtro, salida, NULL);         cambiamos el estado de la tuberia y tocamos el archivo.        gst_element_set_state(tuberia, GST_STATE_PLAYING);       while (gst_bin_iterate(GST_BIN(tuberia)));        return 0; }
Autor y licencia de 'GStreamer - Estado de la tubería'
Juan Carlos Inostroza Extraído de: http://www.tux.cl/doku.php?id=articulos:multimedia:gstreamer CopyLeft
Copyleft 2000-2006 Tux.cl
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'GStreamer - Estado de la tubería'

Hoy parece evidente que las funciones-poderes del Estado están llamadas a una colaboración y a... Más »
Pese a la independencia del dominio colonial de Europa, en la mayoría de los países... Más »
La ocurrencia de profundas transformaciones en los enfoques, los contenidos y los procedimientos de trabajo... Más »
Género gramatical y sexo no son, como muchos ingenuos o espontáneos usuarios de la lengua... Más »
Prólogo de «USA: el Estado delincuente». Editorial El Viejo Topo (España, 2004).
¿Estás seguro de que deseas eliminar este capítulo?