GStreamer Application Development Manual (0.8.1) | ||
---|---|---|
<<< Previous | Bins | Next >>> |
Elements are added to a bin with the following code sample:
GstElement *element; GstElement *bin; bin = gst_bin_new ("mybin"); element = gst_element_factory_make ("mpg123", "decoder"); gst_bin_add (GST_BIN (bin), element); ... |
Bins and threads can be added to other bins too. This allows you to create nested bins. Pipelines shouldn't be added to any other element, though. They are toplevel bins and they are directly linked to the scheduler.
To get an element from the bin you can use:
GstElement *element; element = gst_bin_get_by_name (GST_BIN (bin), "decoder"); ... |
You can see that the name of the element becomes very handy for retrieving the element from a bin by using the element's name. gst_bin_get_by_name () will recursively search nested bins.
To get a list of elements in a bin, use:
GList *elements; elements = gst_bin_get_list (GST_BIN (bin)); while (elements) { GstElement *element = GST_ELEMENT (elements->data); g_print ("element in bin: %s\n", GST_OBJECT_NAME (GST_OBJECT (element))); elements = g_list_next (elements); } ... |
To remove an element from a bin, use:
GstElement *element; gst_bin_remove (GST_BIN (bin), element); ... |
To add many elements to a bin at the same time, use the gst_bin_add_many () function. Remember to pass NULL as the last argument.
GstElement *filesrc, *decoder, *audiosink; GstBin *bin; /* instantiate the elements and the bins... */ gst_bin_add_many (bin, filesrc, decoder, audiosink, NULL); |
<<< Previous | Home | Next >>> |
Bins | Up | Custom bins |