In Section 5.3, you have learned how
to use GObject
properties as a simple way to do
interaction between applications and elements. This method suffices for
the simple'n'straight settings, but fails for anything more complicated
than a getter and setter. For the more complicated use cases, GStreamer
uses interfaces based on the GObject GTypeInterface
type.
Most of the interfaces handled here will not contain any example code. See the API references for details. Here, we will just describe the scope and purpose of each interface.
In all examples so far, we have only supported local files through the "filesrc" element. GStreamer, obviously, supports many more location sources. However, we don't want applications to need to know any particular element implementation details, such as element names for particular network source types and so on. Therefore, there is a URI interface, which can be used to get the source element that supports a particular URI type. There is no strict rule for URI naming, but in general we follow naming conventions that others use, too. For example, assuming you have the correct plugins installed, GStreamer supports "file:///<path>/<file>", "http://<host>/<path>/<file>", "mms://<host>/<path>/<file>", and so on.
In order to get the source or sink element supporting a particular URI,
use gst_element_make_from_uri ()
, with the URI
type being either GST_URI_SRC
for a source
element, or GST_URI_SINK
for a sink element.
You can convert filenames to and from URIs using GLib's
g_filename_to_uri ()
and
g_uri_to_filename ()
.