2000-08-22 21:18:18 +00:00
|
|
|
<chapter id="cha-programs">
|
|
|
|
<title>Programs</title>
|
|
|
|
<para>
|
|
|
|
</para>
|
|
|
|
|
2000-09-09 16:36:10 +00:00
|
|
|
<sect1>
|
|
|
|
<title><command>gstreamer-config</command></title>
|
|
|
|
<para>
|
|
|
|
<command>gstreamer-config</command> is a script to get information about the installed
|
|
|
|
version of <application>GStreamer</application>.
|
|
|
|
This program "knows" what compiler switches are needed to compile programs that use
|
|
|
|
<application>GStreamer</application>.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
<command>gstreamer-config</command> accepts the following options:
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<option>--version</option> Print the currently installed version of
|
|
|
|
<application>GStreamer</application> on the standard output.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<option>--libs</option> Print the linker flags that are necessary to link a
|
|
|
|
<application>GStreamer</application> program.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<option>--cflags</option> Print the compiler flags that are necessary to compile a
|
|
|
|
<application>GStreamer</application> program.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<option>--prefix=<replaceable>PREFIX</replaceable></option>
|
|
|
|
If specified, use <replaceable>PREFIX</replaceable> instead of the installation
|
|
|
|
prefix that <application>GStreamer</application> was built with when computing the
|
|
|
|
output for the <option>--cflags</option> and <option>--libs</option> options.
|
|
|
|
This option is also used for the exec prefix if
|
|
|
|
<option>--exec-prefix</option> was not specified. This option must be specified before any
|
|
|
|
<option>--libs</option> or <option>--cflags</option> options.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
<option>--exec-prefix=<replaceable>PREFIX</replaceable></option>
|
|
|
|
If specified, use <replaceable>PREFIX</replaceable> instead of the installation exec
|
|
|
|
prefix that <application>GStreamer</application> was built with when computing the
|
|
|
|
output for the <option>--cflags</option> and <option>--libs</option> options. This option must be
|
|
|
|
specified before any <option>--libs</option> or <option>--cflags</option>
|
|
|
|
options.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
A simple <filename>Makefile</filename> will contain something like:
|
|
|
|
<programlisting>
|
|
|
|
CC = gcc
|
|
|
|
|
|
|
|
helloworld2: helloworld2.c
|
|
|
|
$(CC) -Wall `gstreamer-config --cflags --libs` helloworld2.c -o helloworld2
|
|
|
|
|
|
|
|
clean:
|
|
|
|
rm -f *.o helloworld2
|
|
|
|
</programlisting>
|
|
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1>
|
|
|
|
<title><command>gstreamer-register</command></title>
|
|
|
|
<para>
|
|
|
|
<command>gstreamer-register</command> is used to rebuild the database of plugins.
|
|
|
|
It is used after a new plugin has been added to the system. The plugin database
|
|
|
|
can be found in <filename>/etc/gstreamer/reg.xml</filename>.
|
|
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
|
|
|
<sect1>
|
|
|
|
<title><command>gstreamer-launch</command></title>
|
|
|
|
<para>
|
|
|
|
This is a tool that will construct pipelines based on a command-line
|
|
|
|
syntax.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
A simple commandline looks like:
|
|
|
|
|
|
|
|
<screen>
|
2001-01-10 21:28:49 +00:00
|
|
|
gstreamer-launch disksrc location=hello.mp3 ! mp3parse ! mpg123 ! audiosink
|
2000-09-09 16:36:10 +00:00
|
|
|
</screen>
|
|
|
|
|
|
|
|
A more complex pipeline looks like:
|
|
|
|
|
|
|
|
<screen>
|
2001-01-10 21:28:49 +00:00
|
|
|
gstreamer-launch disksrc redpill.vob audio_00! (ac3parse ! ac3dec ! audiosink) \
|
|
|
|
video_00! (mpeg2dec ! videosink)
|
2000-09-09 16:36:10 +00:00
|
|
|
</screen>
|
|
|
|
|
|
|
|
</para>
|
2001-01-10 21:28:49 +00:00
|
|
|
|
2001-01-16 23:35:22 +00:00
|
|
|
<para>
|
|
|
|
Note that the parser isn't capable of more complex pipelines yet, including
|
|
|
|
the VOB player above. The minor tweaks will be made post 0.1.0.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
You can also use the the parser in you own code. <application>GStreamer</application>
|
|
|
|
provides a function gst_parse_launch () that you can use to construt a pipeline.
|
|
|
|
The code of gstreamer-launch actually looks like:
|
|
|
|
</para>
|
|
|
|
<programlisting>
|
|
|
|
#include <gst/gst.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
int
|
2001-07-07 11:34:54 +00:00
|
|
|
main (int argc, char *argv[])
|
2001-01-16 23:35:22 +00:00
|
|
|
{
|
|
|
|
GstElement *pipeline;
|
|
|
|
char **argvn;
|
|
|
|
gchar *cmdline;
|
|
|
|
int i;
|
|
|
|
|
2001-07-07 11:34:54 +00:00
|
|
|
gst_init (&argc, &argv);
|
2001-01-16 23:35:22 +00:00
|
|
|
|
2001-07-07 11:34:54 +00:00
|
|
|
pipeline = gst_pipeline_new ("launch");
|
2001-01-16 23:35:22 +00:00
|
|
|
|
|
|
|
// make a null-terminated version of argv
|
2001-07-07 11:34:54 +00:00
|
|
|
argvn = g_new0 (char *,argc);
|
|
|
|
memcpy (argvn, argv+1, sizeof (char*) * (argc-1));
|
2001-01-16 23:35:22 +00:00
|
|
|
// join the argvs together
|
2001-07-07 11:34:54 +00:00
|
|
|
cmdline = g_strjoinv (" ", argvn);
|
2001-01-16 23:35:22 +00:00
|
|
|
// free the null-terminated argv
|
2001-07-07 11:34:54 +00:00
|
|
|
g_free (argvn);
|
2001-01-16 23:35:22 +00:00
|
|
|
|
2001-07-07 11:34:54 +00:00
|
|
|
gst_parse_launch (cmdline, pipeline);
|
2001-01-16 23:35:22 +00:00
|
|
|
|
|
|
|
fprintf(stderr,"RUNNING pipeline\n");
|
2001-07-07 11:34:54 +00:00
|
|
|
gst_element_set_state (pipeline, GST_STATE_PLAYING);
|
2001-01-16 23:35:22 +00:00
|
|
|
|
|
|
|
while (1)
|
|
|
|
gst_bin_iterate (GST_BIN (pipeline));
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
</programlisting>
|
2000-09-09 16:36:10 +00:00
|
|
|
</sect1>
|
|
|
|
|
2001-01-05 18:50:41 +00:00
|
|
|
<sect1>
|
|
|
|
<title><command>gstreamer-inspect</command></title>
|
|
|
|
<para>
|
|
|
|
This is a tool to query a plugin or an element about its properties.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
To query the information about the element mpg123, you would specify:
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
gstreamer-inspect mpg123
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Below is the output of a query for the audiosink element:
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
Factory Details:
|
|
|
|
Long name: Audio Sink (OSS)
|
|
|
|
Class: Sink/Audio
|
|
|
|
Description: Output to a sound card via OSS
|
|
|
|
Version: 0.1.0
|
|
|
|
Author(s): Erik Walthinsen <omega@cse.ogi.edu>
|
|
|
|
Copyright: (C) 1999
|
|
|
|
|
|
|
|
Pad Templates:
|
|
|
|
SINK template: 'sink'
|
|
|
|
Exists: Always
|
|
|
|
Capabilities:
|
|
|
|
'audiosink_sink':
|
|
|
|
MIME type: 'audio/raw':
|
|
|
|
format: Integer: 16
|
|
|
|
depth: List:
|
|
|
|
Integer: 8
|
|
|
|
Integer: 16
|
|
|
|
rate: Integer range: 8000 - 48000
|
|
|
|
channels: Integer range: 1 - 2
|
|
|
|
|
|
|
|
Element Flags:
|
|
|
|
GST_ELEMENT_THREADSUGGESTED
|
|
|
|
no flags set
|
|
|
|
|
|
|
|
Element Implementation:
|
|
|
|
No loopfunc(), must be chain-based or not configured yet
|
|
|
|
Has change_state() function
|
|
|
|
|
|
|
|
Pads:
|
|
|
|
SINK: 'sink'
|
|
|
|
Implementation:
|
|
|
|
Has chainfunc(): 0x4001cde8
|
|
|
|
Has default eosfunc() gst_pad_eos_func()
|
|
|
|
Pad Template: 'sink'
|
|
|
|
Capabilities:
|
|
|
|
'audiosink_sink':
|
|
|
|
MIME type: 'audio/raw':
|
|
|
|
format: Integer: 16
|
|
|
|
depth: List:
|
|
|
|
Integer: 8
|
|
|
|
Integer: 16
|
|
|
|
rate: Integer range: 8000 - 48000
|
|
|
|
channels: Integer range: 1 - 2
|
|
|
|
|
|
|
|
Element Arguments:
|
|
|
|
GstAudioSink::mute: Boolean
|
|
|
|
GstAudioSink::format: Enum (default 16)
|
|
|
|
(8): 8 Bits
|
|
|
|
(16): 16 Bits
|
|
|
|
GstAudioSink::channels: Enum (default 2)
|
|
|
|
(1): Mono
|
|
|
|
(2): Stereo
|
|
|
|
GstAudioSink::frequency: Integer
|
|
|
|
</screen>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
To query the information about a plugin, you would do:
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
gstreamer-inspect gstelements
|
|
|
|
</screen>
|
|
|
|
</sect1>
|
2000-11-11 15:13:50 +00:00
|
|
|
<sect1>
|
|
|
|
<title><command>gstmediaplay</command></title>
|
|
|
|
<para>
|
|
|
|
A sample media player.
|
|
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
|
2000-08-22 21:18:18 +00:00
|
|
|
</chapter>
|