About this file
---------------

Here we list taks to be done. Once they are done, they should go in the RELEASE notes. 

Once the tag is done for the version number in the RELEASE notes, they are moved to the NEWS file, (most recent first) and we update the version number in the RELEASE notes and the configure.ac file, and we remove all the task that are done from the RELEASE notes. We often put the tasks that are done in the doc/DONE document.


Things to do in priority
------------------------

Right now, here is the list of tasks to prioritize: 

 * BUG: Auto-record video sometimes doesn't work
 * BUG: Auto-record video sometimes keeps recording and is impossible to stop!
 * BUG: Sometimes, in one-image clips, the playhead tries to change to 1. Clip::get_image: Got exception vector::_M_range_check \n Controller::update_playback_image: The image is NULL
 * BUG: check for runtime dep (mencoder) in the executable.
 * BUG: the first live input image is white (hence the first recorded one if using timelapse)
 * BUG: use dashes, not minus in man pages
 * architecture: create the ToonLooper and ToonGrabber classes. (take those from gui and pipeline)
 * controls: Add direct controls for playback direction.
 * doc: Make sure the keystroke instructions are in only one place.
 * editing: Paging could allow more than ten clips. Use <>
 * editing: The first image that is grabbed with the intervalometer is black.
 * editing: make onionskin and ripple/fade effect one-per-clip-based
 * effect: Rippling effect (strobing) effect (like in _Pas de deux_) Variable delay between each former frame. Variable number of former frames displayed
 * effects: additive blending mode
 * effects: adjust delay on the live input.
 * effects: effect on the live input. 
 * effects: one effect per clip
 * gui: Create a simpler HUD with position of writehead and playhead.
 * gui: Support a separate window for the playback.
 * onionskin: allow to change its opacity
 * onionskin: avoid a white image when none has been taken
 * onionskin: load the image just before writehead's position
 * osc: When saving a movie, we should send the name of the saved file via OSC
 * packaging: add AM_MAINTAINER_MODE to configure.ac
 * packaging: install completion/toonloop /etc/bash_completion.d/toonloop
 * video: Support DV: gst-launch dv1394src ! queue ! dvdemux name=d ! queue ! dvdec ! xvimagesink
 * video: Support HDV (hdvdec)
 * video: Use an inputswitcher element. The video capture element in the Gstreamer pipeline must be dynamic. It means that the user could choose v4l2src, or an other source, depending on the hardware available. Ideally, some detection could be done. See ekiga.
 * video: Use the default GStreamer-properties camera when none is given



To be done later
----------------

 * controls: Joystick input.
 * controls: Press 'p' to pause playback.
 * controls: plug with community vision, or opencv.
 * edit: add an option to delete JPEG images when deleted from a clip
 * edit: mirror
 * edit: support playing back a single clip or all of them
 * editing: Load a movie file to a clip.
 * editing: Load images to a clip.
 * effects: Color improvements (brightness, contrast, saturation)
 * effects: Min/max values for effects attributes.
 * effects: Port the shaders from 1.x (See doc/effects.txt)
 * effects: Support for video mapping. (needs a matte + separating the rectangle in a grid of rectangles, with coordinates that are interpolated linearily)
 * effects: contour
 * effects: diff
 * effects: invert
 * effects: masks (matte)
 * effects: threshold
 * gui: Advanced GUI for controlling clips and sequences
 * gui: Clutter Mx GUI (buttons, sliders, etc.) 
 * gui: dialog which allows the user to choose the name of the saved clip.
 * gui: display square to represent frames in timeline
 * midi: MIDI learn for controls
 * onionskin: multiple onion skin layers
 * optimization: Optimize the pixbuf saving either #1: Write the pixbuf to a memory stream and then splice_async() it to the file, or #2: fork(), then call gdk_pixbuf_save() in the child process. Use a pipe to handle the return value in the parent. Probably that the glib mainloop should shut itself down with pthread_atfork(). Look for screenshot_save_start() in gnome-utils/gnome-screenshot/screenshot-save.c
 * optimization: Read a few bytes from an image to trigger the kernel's read-ahead. (?)
 * optimization: Use boost::any for the message args. See http://www.boost.org/doc/libs/1_43_0/doc/html/any/s02.html
 * osc: choose the best OSC API
 * osc: receive  /toon/clip/save
 * osc: receive  /toon/clip/select <i>
 * osc: receive  /toon/playhead/goto <i>
 * osc: receive /toon/playhead/iterate
 * osc: send  /sampler/play/start <i>
 * osc: send  /sampler/play/stop <i>
 * osc: send  /sampler/record/start <i>
 * osc: send  /sampler/record/stop <i>
 * osc: send  /toon/writehead <i>
 * packaging: Improve STK packaging
 * packaging: Re-add previous tests, including headers from src.
 * packaging: Remove dependency to GTK. (GUI controls should use Clutter)
 * playback: Allow to move playhead to the beginning of a clip when we switch to it.
 * playback: Basic sequences of clips.
 * playback: Multi layers (multi clips at a time)
 * playback: Multi-layers sequences with blending mode
 * playback: Variable frame duration in a shot (freeze frame) and speed tweening.
 * playback: allow to play all clips from 0 to 9
 * playback: multiple sequences at a time
 * playback: playing two clips at a time
 * playback: translation *paths* 
 * saving: Add PNG and TGA saving image formats.
 * saving: Create a done_saving signal and make the moviesaver call it with the movie file name and the clip id
 * saving: Load projects from XML
 * saving: Load/save a whole project (many clips)
 * saving: Save all clips (all 10 from 0 to 9) with modifier (shift?)
 * saving: Save projects to XML (statesaving.cpp doesn't work currently)
 * saving: Support saving in AVI
 * saving: create a subdir for each clip in images and movies dirs
 * video: do not crash if the v4l2 device is busy
