The project was never planned ahead much. All versions of this program have some major refactoring somewhere. Looking at its current state, what is noticeable is that there are multiple small programs that do the actual playing out of the browser process and it has playlist data in memory using custom DOM trees.
The former of course increases stability of the hosting application and also follows the UNIX philosophy of single task programs well. The latter makes KMPlayer playlist formats support easily extendable for new XML formats like the latest addition of XSPF, but also a more in-depth support for SMIL.
The SMIL support had a big boost by moving the rendering code to a visitor and by replacing the ad-hoc painting code with Cairo, a cross-desktop graphics library.
Image and text mediatypes are rendered on off-screen Cairo surfaces, making transitions like fading possible. Also, using Cairo pixmap surfaces as little as possible and heavy caching of these should make any improvements of the Cairo backends (like XRender or OpenGL) improve the rendering speed of SMIL movies.
My longer term goals for the work include replacing the whole GUI with a SMIL file. Whether this will ever happen is yet to seen. For example, when comparing with the Flash media player of YouTube, SMIL has no support for mouse drag for the volume slider, nor for creating editors or clipboard access. Nevertheless, it's KMPlayer's holy grail :-)