general
-------
- write script to check for:
  invalid // comments
  invalid %lld
  invalid LL for 64bit ints
  wrong whitespacing
  trailing space

gstreamer
---------
- reorganize tests and examples into
  - testsuite
    - check: unit tests
    - examples: example code
    - interactive: interactive tests
- move gst/base to libs/gst/base ?
  (but elements link against them)
- move elements out of gst/ dir ?
- check/gst/pipelines: currently disabled, random failures

gst-plugins-base
----------------
- gst-libs/gst/audio:
  - DONE: audiofilter folded in
- gst:
  - adder: needs docs, an example, and a test
  - audioconvert: ok
  - audiorate: needs docs and tests
  - audioresample: David needs to fix this
  - audioscale: needs to go
  - audiotestsrc: ok
  - ffmpegcolorspace: needs a test
  - playback: example
  - sine: removed, DONE
  - subparse:
    - works, but how do we link it so we can display it ?
    - example ?
    - test with different files/sources ? can be inlined
  - tags:
    - contained a very small code file that wasn't built, and a copy of a header
      that was in the tag lib; removed; DONE
  - tcp:
    - works
    - need tests
    - need docs
    - need possible porting to GNet (later)
  - typefind:
    - works
    - need tests - this definately could use it
    - is there any way they can be documented ?
    - should the plugin docs show a list of them ?
  - videorate:
    - needs tests, docs
  - videoscale:
    - needs tests
      - negotiation
      - par conversion
      - different scale algorithms
    - needs docs
      - negotation with five out of six free variables (src/sink w/h/par)
  - videotestsrc:
    - could use tests for all possible caps
  - volume: OK
- ext:
  - alsa:
    - needs docs; esp. params and common practices
    - needs interactive tests; depends on having such a setup available
  - cdparanoia:
    - needs docs, and interactive test
    - remains in -base until cdio is proven to be better on all counts
  - gnomevfs:
    - needs docs (how to use proxy, link to gnomevfs docs, explanation
	about need for homedir to create .gnome2 dir in, ...)
    - needs test; test could use local files and http urls
  - libvisual
    - needs docs (easy)
    - needs test
  - ogg, vorbis, theora
    - needs docs
    - needs test
- sys
  - v4l
    - needs interactive test
    - needs lots of docs
  - ximage
    - interactive test should go somewhere
    - docs ok
  - xvimage
    - interactive test should go somewhere
    - docs ok

gst-plugins-good
----------------

- gst:
  - alpha, alphacolor: document with example
  - auparse: crashes on e.g.
  gst-launch -v filesrc location=/usr/share/emacs/site-lisp/emacspeak/sounds/default-8k/ask-short-question.au ! auparse ! osssink
    -> will move to bad
  - autodetect: OK
  - videofilter:
    - is the lib still needed, given basetransform ?
      yes
    - currently installs a lib; should not install, or move to a dir, with pc
      file, possibly in -base
      DONE: moved to -base
- ext:
  - aasink: properties need looking at
    - width, height: why are they there ? caps don't match
    - frames-displayed: in base class ?
    - frame-time: what's this ?
  - cairo:
    - cairotimeoverlay works
    - cairotextoverlay ? pipeline ?
  - flac:
    - flacenc:
gst-launch -v audiotestsrc wave=white-noise ! flacenc ! filesink location=white-noise.flac does not produce a correct file
    - flacdec works, but
gst-launch gnomevfssrc location=http://gstreamer.freedesktop.org/media/small/dark.441-16-s.flac ! flacdec ! autoaudiosink
      does not
