Some ideas for a big refactoring of code.


Input
=========
        handle MLT connection ((re-)move from renderer.cpp (hacks, special cases))
        handle project document entry
        draw layer on clip instances in timeline (thumbnails)
        settings management (available through project tree items)
        proxy creation
        input method (register mimetype in file dialog, custom widget)
        effect support (a, v, av, special effects (freeze, speed))
	support for multi-channel sound (5.1, ...)

        => modules for avformat, qimage/gtk_image(?), generators (slideshow, color, f0r)


Timeline
=========
        provides basic operations (resize, move, add, remove) (GUI + XML + MLT) to be applied on any item

        => modules for input modes (drag & drop, 3/4-point editing, cut, resize by dragging end), spacer, ripple edit, push/pull edit, ...)

Clip instances
-------
        connection to input module
        manage project document entry
        information about support for timeline operations
        owns an effect device
        per instance settings (functionality provided by input module)
        graphical timeline item (modules can register layers they want to draw (thumbnails, effect names, keyframes))

Clip groups
------
        manage project document entry
        pass on operations to items


Effect system
=========
Keyframe manager
------
        pipe information from/to timeline effect device, effect stack, effect parameter

Effect parameter
------
        custom widget
        function to handle keyframes -> connect to keyframe manager
        written in QScript/QML ?

Effect device
------
        manages list of effects attached to clip, track, timeline, group, the world
        passes info from/to timeline items and effect stack
        manage project document entry


Project
=========
        read/write
        project settings management
        provide functionality to manage settings (remove hardcoded stuff (slideshow, proxy, ...))


Interface
=========
        provide functions to add menu items, global actions (for shortcut management)
        layout management
        styles management (see digikam)
        ...
