GStreamer
Media library supporting arbitrary formats and filter graphs.
GStreamer is a framework for constructing graphs of various filters
(termed elements here) that will handle streaming media. Any discreet
(packetizable) media type is supported, with provisions for automatically
determining source type. Formatting/framing information is provided with
a powerful negotiation framework. Plugins are heavily used to provide for
all elements, allowing one to construct plugins outside of the GST
library, even released binary-only if license require (please don't).
GStreamer borrows heavily from both the OGI media pipeline and
Microsoft's DirectShow, hopefully taking the best of both and leaving the
cruft behind. Its interface is still very fluid and thus can be changed
to increase the sanity/noise ratio.
The GStreamer library should be initialized with gst_init() before
it can be used. You should pass a pointer to the main argc and argv variables so that GStreamer can
process its own command line options, as shown in the following example.
Initializing the gstreamer libarary
int
main (int argc, char *argv[])
{
/* initialize the GStreamer library */
gst_init (&argc, &argv);
...
}
It's allowed to pass two NULL pointers to gst_init() in case you don't want to pass the command
line args to GStreamer.
You can also use a popt table to initialize your own parameters as shown in the next code
fragment:
Initializing own parameters when initializing gstreamer
static gboolean stats = FALSE;
...
int
main (int argc, char *argv[])
{
struct poptOption options[] = {
{ "stats", 's', POPT_ARG_NONE|POPT_ARGFLAG_STRIP, &stats, 0,
"Show pad stats", NULL},
POPT_TABLEEND
};
/* initialize the GStreamer library */
gst_init_with_popt_table (&argc, &argv, options);
...
}
Use gst_version() to query the library version at runtime or use the GST_VERSION_* macros
to find the version at compile time.
gst_main() and gst_main_quit() enter and exit the main loop. GStreamer doesn't currently require
you to us a mainloop but can intergrate with it without problems.
Check out both OGI's
pipeline and Microsoft's DirectShow for some background.
@argc:
@argv:
@argc:
@argv:
@Returns:
@argc:
@argv:
@popt_options:
@Param3:
@Returns:
@argc:
@argv:
@popt_options:
@Returns:
@Param3:
@Returns:
@use_threads:
@Returns: