<chapter id="chapter-programs">
  <title>Programs</title>
  <para> 
  </para>

  <sect1 id="section-programs-gst-launch">
    <title><command>gst-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>
gst-launch filesrc location=hello.mp3 ! mad ! audioresample ! osssink
    </screen>

      A more complex pipeline looks like:

    <screen>
gst-launch filesrc location=redpill.vob ! dvddemux name=demux \
 demux.audio_00 ! queue ! a52dec ! audioconvert ! audioresample ! osssink \
 demux.video_00 ! queue ! mpeg2dec ! videoconvert ! xvimagesink
    </screen>

    </para>
    <para>
      You can also use the parser in you own
      code. <application>GStreamer</application> provides a function
      gst_parse_launch () that you can use to construct a pipeline.
      The following program lets you create an MP3 pipeline using the
      gst_parse_launch () function:
    </para>
    <programlisting>
#include &lt;gst/gst.h&gt;

int
main (int argc, char *argv[])
{
  GstElement *pipeline;
  GstElement *filesrc;
  GstMessage *msg;
  GstBus *bus;
  GError *error = NULL;

  gst_init (&amp;argc, &amp;argv);

  if (argc != 2) {
    g_print ("usage: %s &lt;filename&gt;\n", argv[0]);
    return -1;
  }

  pipeline = gst_parse_launch ("filesrc name=my_filesrc ! mad ! osssink", &amp;error);
  if (!pipeline) {
    g_print ("Parse error: %s\n", error->message);
    exit (1);
  }
  
  filesrc = gst_bin_get_by_name (GST_BIN (pipeline), "my_filesrc");
  g_object_set (filesrc, "location", argv[1], NULL);

  gst_element_set_state (pipeline, GST_STATE_PLAYING);

  bus = gst_element_get_bus (pipeline);

  /* wait until we either get an EOS or an ERROR message. Note that in a real
   * program you would probably not use gst_bus_poll(), but rather set up an
   * async signal watch on the bus and run a main loop and connect to the
   * bus's signals to catch certain messages or all messages */
  msg = gst_bus_poll (bus, GST_MESSAGE_EOS | GST_MESSAGE_ERROR, -1);

  switch (GST_MESSAGE_TYPE (msg)) {
    case GST_MESSAGE_EOS: {
      g_print ("EOS\n");
      break;
    }
    case GST_MESSAGE_ERROR: {
      GError *err = NULL; /* error to show to users                 */
      gchar *dbg = NULL;  /* additional debug string for developers */

      gst_message_parse_error (msg, &err, &dbg);
      if (err) {
        g_printerr ("ERROR: %s\n", err-&gt;message);
        g_error_free (err);
      }
      if (dbg) {
        g_printerr ("[Debug details: %s]\n", dbg);
        g_free (dbg);
      }
    }
    default:
      g_printerr ("Unexpected message of type %d", GST_MESSAGE_TYPE (msg));
      break;
  }
  gst_message_unref (msg);

  gst_element_set_state (pipeline, GST_STATE_NULL);
  gst_object_unref (pipeline);
  gst_object_unref (bus);

  return 0;
}
    </programlisting>
    <para>
      Note how we can retrieve the filesrc element from the constructed bin using the
      element name.
    </para>
    <sect2>
      <title>Grammar Reference</title>
      <para>
        The <command>gst-launch</command> syntax is processed by a flex/bison parser. This section
        is intended to provide a full specification of the grammar; any deviations from this
        specification is considered a bug.
      </para>
      <sect3>
        <title>Elements</title>
        <screen>
          ... mad ...
        </screen>
        <para>
          A bare identifier (a string beginning with a letter and containing
          only letters, numbers, dashes, underscores, percent signs, or colons)
          will create an element from a given element factory. In this example,
          an instance of the "mad" MP3 decoding plugin will be created.
        </para>
      </sect3>          
      <sect3>
        <title>Links</title>
        <screen>
          ... !sink ...
        </screen>
        <para>
          An exclamation point, optionally having a qualified pad name (an the name of the pad,
          optionally preceded by the name of the element) on both sides, will link two pads. If
          the source pad is not specified, a source pad from the immediately preceding element
          will be automatically chosen. If the sink pad is not specified, a sink pad from the next
          element to be constructed will be chosen. An attempt will be made to find compatible
          pads. Pad names may be preceded by an element name, as in
          <computeroutput>my_element_name.sink_pad</computeroutput>.
        </para>
      </sect3>          
      <sect3>
        <title>Properties</title>
        <screen>
          ... location="http://gstreamer.net" ...
        </screen>
        <para>
          The name of a property, optionally qualified with an element name, and a value,
          separated by an equals sign, will set a property on an element. If the element is not
          specified, the previous element is assumed. Strings can optionally be enclosed in
          quotation marks. Characters in strings may be escaped with the backtick
          (<literal>\</literal>). If the right-hand side is all digits, it is considered to be an
          integer. If it is all digits and a decimal point, it is a double. If it is "true",
          "false", "TRUE", or "FALSE" it is considered to be boolean. Otherwise, it is parsed as a
          string. The type of the property is determined later on in the parsing, and the value is
          converted to the target type. This conversion is not guaranteed to work, it relies on
          the g_value_convert routines. No error message will be displayed on an invalid
          conversion, due to limitations in the value convert API.
        </para>
      </sect3>          
      <sect3>
        <title>Bins, Threads, and Pipelines</title>
        <screen>
          ( ... )
        </screen>
        <para>
          A pipeline description between parentheses is placed into a bin. The open paren may be
          preceded by a type name, as in <computeroutput>jackbin.( ... )</computeroutput> to make
          a bin of a specified type. Square brackets make pipelines, and curly braces make
          threads. The default toplevel bin type is a pipeline, although putting the whole
          description within parentheses or braces can override this default.
        </para>
      </sect3>          
    </sect2>
  </sect1>

  <sect1 id="section-programs-gst-inspect">
    <title><command>gst-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 mad, you would specify:
    </para> 

    <screen>
gst-inspect mad
    </screen>

    <para> 
      Below is the output of a query for the osssink element:
    </para> 

    <screen>
Factory Details:
  Long name:	Audio Sink (OSS)
  Class:	Sink/Audio
  Description:	Output to a sound card via OSS
  Version:	0.3.3.1
  Author(s):	Erik Walthinsen &lt;omega@cse.ogi.edu&gt;, Wim Taymans &lt;wim.taymans@chello.be&gt;
  Copyright:	(C) 1999

GObject
 +----GstObject
       +----GstElement
             +----GstOssSink

Pad Templates:
  SINK template: 'sink'
    Availability: Always
    Capabilities:
      'osssink_sink':
        MIME type: 'audio/raw':
        format: String: int
        endianness: Integer: 1234
        width: List:
          Integer: 8
          Integer: 16
        depth: List:
          Integer: 8
          Integer: 16
        channels: Integer range: 1 - 2
        law: Integer: 0
        signed: List:
          Boolean: FALSE
          Boolean: TRUE
        rate: Integer range: 1000 - 48000


Element Flags:
  GST_ELEMENT_THREADSUGGESTED

Element Implementation:
  No loopfunc(), must be chain-based or not configured yet
  Has change_state() function: gst_osssink_change_state
  Has custom save_thyself() function: gst_element_save_thyself
  Has custom restore_thyself() function: gst_element_restore_thyself

Clocking Interaction:
  element requires a clock
  element provides a clock: GstOssClock

Pads:
  SINK: 'sink'
    Implementation:
      Has chainfunc(): 0x40056fc0
    Pad Template: 'sink'

Element Arguments:
  name                                    : String (Default "element")
  device                                  : String (Default "/dev/dsp")
  mute                                    : Boolean (Default false)
  format                                  : Integer (Default 16)
  channels                                : Enum "GstAudiosinkChannels" (default 1)
    (0): 	Silence
    (1): 	Mono
    (2): 	Stereo
  frequency                               : Integer (Default 11025)
  fragment                                : Integer (Default 6)
  buffer-size                             : Integer (Default 4096)

Element Signals:
  "handoff" :	 void user_function (GstOssSink* object, 
    				gpointer user_data);
    </screen>

    <para> 
      To query the information about a plugin, you would do:
    </para> 

    <screen>
gst-inspect gstelements
    </screen>
  </sect1>

</chapter>
