On Tue, Sep 07, 2010 at 09:02:35PM +0100, Liam Girdwood wrote:
On Tue, 2010-09-07 at 20:17 +0200, Jaroslav Kysela wrote:
Also, the possibility to generate the alsa-lib's configuration files at run-time might be a nice feature for future.
Fwiw, UCM is _needed_ now and I really can't emphasise this strongly enough atm. Some embedded ODMs are even now using and shipping closed source proprietary software for audio hardware UCM.
Now you mention this I feel remiss for not pointing it out before. I'm also working with many system manufacturers including smartphone vendors (they're the people who are *really* suffering here) and a lot of them have a use case problem to some degree. There's two key issues I see people having problems with:
- Coming up with an abstraction for an audio use case which can be used to think about the possbilities for configuring ALSA and implementing the mechanics of it. UCM pretty much deals with this.
- Generating and maintaining use cases. UCM provides a good start on this in itself - simply having the suggested way of thinking about things is a win, never mind the tools - and having the standard format is pretty much a requirement for doing any more tools work.
A procedural approach is a common solution but it makes both problems harder, especially the second one since it means that every time you think about a use case you must think about the mechanics of moving into and out of it rather than just thinking about the configuration you want to achieve.
The UCM configuration files for embedded system will likely be very specific to the hardware and not really suited to run time generation. However, there is nothing stopping runtime generation with the original file format.
For an example of the sort of system complexity one is dealing with in the smartphone use case the WM8994 is an example of the sort of feature set you can see in the audio CODEC alone:
http://www.wolfsonmicro.com/products/WM8994
Trying to autogenerate the configuration for a system like this is likely at best give a first pass result since the actual configurations end up depending on not only your current use case but also the other use cases you might want to use in the future.