Phonons in Solids - Internals and Usage Explained
Speakers: Matthias Kretz, Kevin Ottens
KDE 4 will reuse well known frameworks coming from previous versions, but it'll also introduce brand new technologies like Phonon and Solid. We decided to present them together since a few interesting similarities and interactions have been identified between them.
The talk will be structured in three parts described below. It aims at explaining to developers Phonon and Solid internals, how they can develop similar systems, but also how they can use both of them for their needs.
1. Frontend/Backend Architecture
Phonon and Solid both make use of a frontend/backend architecture to bring a rich high level API to KDE developers while at the same time reusing existing projects to implement the functionality. Since KDE 4 raises the bar regarding portability and binary compatibility, a loose coupling with the underlying system is required for such low level frameworks. It led us to develop new architecture patterns to address those concerns.
In the first part of the talk we will explain the architectures used in Solid and Phonon. It is interesting to see two different approaches to the problem. We will explain the approaches and compare the pros and cons. We'll particularly emphasize on how those architectures have an impact on testability and release management.
During aKademy '05, the basics of what is currently named Solid were written. It was of course far from being featureful. Since then it evolved a lot, and discussions with the HAL crew during last year Gnome Boston Summit paved the way to the current architecture. In a few months, many features were added and a few backends have been implemented.
During this part of the talk we'll give an overview of the features covered by the Solid library. We'll also show how it can be used by application developers for hardware discovery and power management - network management would require a talk by itself. Finally, we'll give a broader picture on how the library and a few policy applications will enable the user to interact with his hardware in an efficient way.
At aKademy '05 a KDEMM version was presented that was able to play back audio (and 30 minutes after the talk also video). Since then the name has changed, many features have been added and backend implementations have been started. Also the internals have been reworked a few times (the result is presented in the first part of the talk).
This part of the talk will give an as complete as possible overview on the usage of the Phonon API. Having learned about the architecture before, a short look at backends will give you the complete picture on Phonon.
There are challenges that go beyond audio and video playback. We'll give special attention to the listing of audio and video devices which is a cooperation of Solid and Phonon.
Matthias Kretz has been an active KDE developer since 2000. To get started with KDE development he worked in the KDE graphics module as the maintainer of KView as well as contributing to KDE core components from time to time. In the last few years he has shifted his focus towards aRts and KDE multimedia and is one of the chief architects of the upcoming KDE 4 multimedia framework. He has just finished his fourth year as a physics and computer science student at the University of Heidelberg.
Kevin Ottens has been involved in the KDE project for a few years. He started with hardware interaction and kept improving the situation in this area since then. He also brought a few Konqueror improvements and contributes regularly to kdelibs. PhD student in computer science by day, and KDE developer by night, he tries to keep is sanity while driving the Solid effort.
Slides (PDF) (872k)
Video (Ogg) (370M)