Roadmap
As there are a lot of things to be done it is good to have well defined goals. The roadmap below tries to give an idea of the things still to be done. The order gives an idea of the priority of the tasks and the
Milestone 1: Design
Find a Design Pattern that allows changes to the frontend API without breaking binary compatibility. The frontend classes should not give access to the backend classes thereby allowing backend switching. The frontend classes should be easily usable to playback audio and video data, insert effects and set arbitrary outputs.
Milestone 2: Playback-API
Write a playback-API for arbitrary media data. This API can be used to playback all kinds of audio and video media files at arbitrary URLs supported by KDE.
Milestone 3: First Backend
Write a reference backend implementation that fakes the requested functionality. A program using the Phonon API should not see a difference to a real backend that produces sounds and videos. This backend is usefull for testing.
Milestone 4: (Unit) Tests
Write (unit) tests that use the frontend API. To be able to execute the tests a backend is needed (Milestone 3). As a lot of the classes are very interdependent writing real unit tests is not possible. The tests will become part of a suite of programs to help certifying backends.
Milestone 5: Effects API
Write frontend and backend API to insert effects into the audio and video paths. Decide what effects need a dedicated interface (for example VolumeFader, EQ, Panorama, Brightness, Contrast, Saturation). Write a widget class for Audio- and VideoEffects that either generates a user interface from meta data or loads a widget plugin (check whether this can be done using Qt Designer .ui files).
Write the according classes for the test backend and write unit tests for the frontend API.
Milestone 6: Capture API
API for capture, DVD, TV and other sources. Add to test backend and write unit tests for the frontend.
Milestone 7: Integrate Phonon in KDE
Make use of Phonon throughout KDE. Some old (disabled) code using aRts needs to be replaced.
Milestone 8: Network API
Network-/Streaming-API