<chapter id="chapter-checklist-element">
  <title>Things to check when writing an application</title>
  <para>
    This chapter contains a fairly random selection of things that can be
    useful to keep in mind when writing &GStreamer;-based applications. It's
    up to you how much you're going to use the information provided here.
    We will shortly discuss how to debug pipeline problems using &GStreamer;
    applications. Also, we will touch upon how to acquire knowledge about
    plugins and elements and how to test simple pipelines before building
    applications around them.
  </para>

  <sect1 id="section-checklist-programming">
    <title>Good programming habits</title>
    <itemizedlist>
      <listitem>
        <para>
          Always add a <classname>GstBus</classname> handler to your
          pipeline. Always report errors in your application, and try
          to do something with warnings and information messages, too.
        </para>
      </listitem>
      <listitem>
        <para>
          Always check return values of &GStreamer; functions. Especially,
          check return values of <function>gst_element_link ()</function>
          and <function>gst_element_set_state ()</function>.
        </para>
      </listitem>
      <listitem>
        <para>
          Dereference return values of all functions returning a non-base
          type, such as <function>gst_element_get_pad ()</function>. Also,
          always free non-const string returns, such as
          <function>gst_object_get_name ()</function>.
        </para>
      </listitem>
      <listitem>
        <para>
          Always use your pipeline object to keep track of the current state
          of your pipeline. Don't keep private variables in your application.
          Also, don't update your user interface if a user presses the
          <quote>play</quote> button. Instead, listen for the
          <quote>state-changed</quote> message on the
          <classname>GstBus</classname> and only update the user interface
          whenever this message is received.
        </para>
      </listitem>
      <listitem>
        <para>
          Report all bugs that you find in &GStreamer; bugzilla at
          <ulink type="http"
          url="http://bugzilla.gnome.org">http://bugzilla.gnome.org/</ulink>.
        </para>
      </listitem>
    </itemizedlist>
  </sect1>

  <sect1 id="section-checklist-debug">
    <title>Debugging</title>
    <para>
      Applications can make use of the extensive &GStreamer; debugging system
      to debug pipeline problems. Elements will write output to this system
      to log what they're doing. It's not used for error reporting, but it
      is very useful for tracking what an element is doing exactly, which
      can come in handy when debugging application issues (such as failing
      seeks, out-of-sync media, etc.).
    </para>
    <para>
      Most &GStreamer;-based applications accept the commandline option
      <option>--gst-debug=LIST</option> and related family members. The
      list consists of a comma-separated list of category/level pairs,
      which can set the debugging level for a specific debugging category.
      For example, <option>--gst-debug=oggdemux:5</option> would turn
      on debugging for the Ogg demuxer element. You can use wildcards as
      well. A debugging level of 0 will turn off all debugging, and a level
      of 9 will turn on all debugging. Intermediate values only turn on
      some debugging (based on message severity; 2, for example, will only
      display errors and warnings). Here's a list of all available options:
    </para>
    <para>
     <itemizedlist>
       <listitem>
         <para>
          <option>--gst-debug-help</option> will print available debug
          categories and exit.
         </para>
       </listitem>
       <listitem>
         <para>
          <option>--gst-debug-level=<replaceable>LEVEL</replaceable></option> 
	  will set the default debug level (which can range from 0 (no
          output) to 9 (everything)).
         </para>
       </listitem>
       <listitem>
         <para>
          <option>--gst-debug=<replaceable>LIST</replaceable></option> 
	  takes a comma-separated list of category_name:level pairs to
          set specific levels for the individual categories. Example:
          <option>GST_AUTOPLUG:5,avidemux:3</option>. Alternatively, you
          can also set the <classname>GST_DEBUG</classname> environment
          variable, which has the same effect.
         </para>
       </listitem>
       <listitem>
         <para>
          <option>--gst-debug-no-color</option> will disable color debugging.
          You can also set the GST_DEBUG_NO_COLOR environment variable to 1
          if you want to disable colored debug output permanently. Note that
          if you are disabling color purely to avoid messing up your pager
          output, try using <command>less -R</command>.
         </para>
       </listitem>
       <listitem>
         <para>
          <option>--gst-debug-color-mode=<replaceable>MODE</replaceable></option>
          will change debug log coloring mode. <replaceable>MODE</replaceable>
          can be one of the following: <option>on</option>,
          <option>off</option>, <option>auto</option>,
          <option>disable</option>, <option>unix</option>.
          You can also set the GST_DEBUG_COLOR_MODE environment variable
          if you want to change colored debug output permanently. Note that
          if you are disabling color purely to avoid messing up your pager
          output, try using <command>less -R</command>.
         </para>
       </listitem>
       <listitem>
         <para>
          <option>--gst-debug-disable</option> disables debugging altogether.
         </para>
       </listitem>
       <listitem>
         <para>
          <option>--gst-plugin-spew</option> enables printout of errors while
          loading &GStreamer; plugins.
         </para>
       </listitem>
     </itemizedlist>
    </para>
  </sect1>

  <sect1 id="section-checklist-conversion">
    <title>Conversion plugins</title>
    <para>
      &GStreamer; contains a bunch of conversion plugins that most
      applications will find useful. Specifically, those are videoscalers
      (videoscale), colorspace convertors (videoconvert), audio format
      convertors and channel resamplers (audioconvert) and audio samplerate
      convertors (audioresample). Those convertors don't do anything when not
      required, they will act in passthrough mode. They will activate when
      the hardware doesn't support a specific request, though. All
      applications are recommended to use those elements.
    </para>
  </sect1>

  <sect1 id="section-checklist-applications">
    <title>Utility applications provided with &GStreamer;</title>
    <para>
      &GStreamer; comes with a default set of command-line utilities that
      can help in application development. We will discuss only
      <command>gst-launch</command> and <command>gst-inspect</command> here.
    </para>

    <sect2 id="section-applications-launch">
      <title><command>gst-launch</command></title>
      <para>
        <command>gst-launch</command> is a simple script-like commandline
        application that can be used to test pipelines. For example, the
        command <command>gst-launch audiotestsrc ! audioconvert ! 
        audio/x-raw,channels=2 ! alsasink</command> will run
        a pipeline which generates a sine-wave audio stream and plays it
        to your ALSA audio card. <command>gst-launch</command> also allows
        the use of threads (will be used automatically as required or as queue
        elements are inserted in the pipeline) and bins (using brackets, so 
        <quote>(</quote> and <quote>)</quote>). You can use dots to imply
        padnames on elements,
        or even omit the padname to automatically select a pad. Using
        all this, the pipeline
        <command>gst-launch filesrc location=file.ogg ! oggdemux name=d
         d. ! queue ! theoradec ! videoconvert ! xvimagesink
         d. ! queue ! vorbisdec ! audioconvert ! audioresample ! alsasink
        </command> will play an Ogg file
        containing a Theora video-stream and a Vorbis audio-stream. You can
        also use autopluggers such as decodebin on the commandline. See the
        manual page of <command>gst-launch</command> for more information.
      </para>
    </sect2>

    <sect2 id="section-applications-inspect">
      <title><command>gst-inspect</command></title>
      <para>
        <command>gst-inspect</command> can be used to inspect all properties,
        signals, dynamic parameters and the object hierarchy of an element.
        This can be very useful to see which <classname>GObject</classname>
        properties or which signals (and using what arguments) an element
        supports. Run <command>gst-inspect fakesrc</command> to get an idea
        of what it does. See the manual page of <command>gst-inspect</command>
        for more information.
      </para>
    </sect2>

  </sect1>
</chapter>
