Monday, September 04, 2006

Phonon-NMM Status after SoC.

Wow. After months of coding together with Marco and Matthias, I could finally see the results of my efforts.
The code is on the KDE4 svn.
I could not add many new features: my main goal has been to make the backend usable in everyday use. I proof tested it to work on corner case events (short media file, multiple files played at the same time, file played to multiple AudioOutput, user pressing commands at random...) and made sure it works in a predictable manner without crashing.
I also added to the backend the ability to play files from protocols NMM does not understand (like smb:// tar:// media:// fish:// and all the ones KIO can read). I did that implementing the Phonon ByteStream protocol as an NMM plugin. That plugin is not Phonon specific: developers can use the NMM::ByteStreamNode plugin to push theyr own data into an NMM flow graph.
Apart from that I did a complete refactor of GraphHnadler, which now has almost the same API (just some bits added) but is internally coded following the Object Oriented paradigm. The immediate benefit of the refactoring is the ability of adding multiple sinks to a a branch. The code is also more readable.
Talking to my mentors has been very instructive: I have learnt theyr code so deeply that I could suggest modification in both Phonon (stop/buffering functionality) and NMM (GraphHandler, progress update).

It has been fun working with NMM and Phonon (kde) developers. NMM and Phonon are both implementations of a very smart idea: I have no doubt those ideas will have success even is the projects are still in a quite early stage of adoption. I plan to go on coding with them.