CHECKLIST
---------
- The plug-in's code:
  - should descend from an applicable base class if possible
    * Descended from BaseAudioSrc and BaseAudioSink respectively.
  - make use of GST_BOILERPLATE macros
    * Present in jackaudiosrc and jackaudiosink
  - conform to the GStreamer coding style
    * validated by gst-indent and similar in style to other existing plugins.
  - use a custom debug category
    * Present in jackaudiosrc, jackaudioclient and jackaudiosink
  - use GST_(DEBUG/*)_OBJECT
    * Present in jackaudiosrc, jackaudioclient and jackaudiosin
  - use dashes in object property names to separate words
    * Property names are separated by dashes (or one word).
  - use correct value, name, nick for enums
    * PROP_SERVER, PROP_CONNECT, etc. match the property names
  - use underscores in macros/function names/structs
    e.g.: GST_BASE_SINK, GstBaseSink, gst_base_sink_
    * yes
  - use g_assert(), g_return_if_fail(), g_return_val_if_fail() for pre/post
    condition checks
    * yes
  - must not have any functional code within g_assert(), g_return_if_fail() or
    g_return_val_if_fail() statements, since those would be turned into NO-OPS
    if the code is compiled with -DG_DISABLE_CHECKS (as is often done on
    embedded systems).
    * yes

- The plug-in's build:
  - should be correctly integrated with configure.ac
    * yes
  - files implementing elements should be named according to their class name,
    e.g GstBaseSink -> gstbasesink.c
    * GstJackAudioSrc -> gstjackaudiosrc.c*
    * GstJackAudioSink ->gstjackaudiosink.c
  - should list libs and cflags in stack order, with lowest in the stack first
    (so one can link against highest in the stack somewhere else without
    picking up everything from the somewhere else)
    * $(GST_PLUGINS_BASE_CFLAGS) \
         $(GST_CFLAGS) $(JACK_CFLAGS)

- The compiled plug-in:
  - should show up correct in gst-inspect output; no warnings, no unknown
    types, ...
  * yes

- The plug-in should be put in the correct location inside the module:
  * located in /ext/jack since it has an external dependency (JACK).

- The plug-in is documented:
  - the compiled-in descriptions (element details) should be correct
  * yes
  - every element in the plug-in should have gtk-doc documentation:
    - longer description of element
    - why you would use this element
    - example launch line OR example source code
      * has explanations and launch lines for each.
    - if the element has custom messages, they should be documented
      * no custom messages
    - signals and properties should be documented
      * they are

- The plug-in should come with tests:
  - if a unit test is not appropriate (for example, device elements),
    a test application should be written that can be run manually
    * has tests/examples/jack to demonstrate use of a user created jack-client.

- The tests should be leak-free, tested with valgrind
  * the test app has been tested with valgrind.
  - leaks in the supporting library (and verified to be in the supporting
    library !) can be added to suppression files
    * jack doesn't leak

- The elements should not segfault under any circumstance.  This includes:
  - wrong pipelines
  - bad data

- The element must not rely on a running GLib main loop, meaning it can't
  use g_idle_add(), g_timeout_add(), g_io_add_watch(), etc.
  * they don't

- The plugins need to be marked correctly for translations.
- All error conditions should be correctly handled using GST_ELEMENT_ERROR
  and following practice outlined in
  http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gstreamer-GstGError.html
  - this includes:
    - message strings need to be marked for translation
    - should be short, well-written, clear
    - in particular, should *not* contain debug info, strerror, errno, ...
      No, really ! NO STRERROR, NO ERRNO.  If you are too lazy to provide
      the user of your library with a nice experience, put your crap in
      the debug string
      * done for "jack server not found" errors, the rest don't have 
        user-visible text.

- Decision should be made if it should go into good (LGPL license,
  LGPL dependencies, no patent issues) or ugly
  * no patent issues here

- plugin documentation needs to be added:
  - see gstreamer/docs/README; section on adding plugins and elements
  - "make update" in docs/plugins and commit the new file
  - edit -docs.sgml and add an include for the file
  * done
