On Wed, Sep 29, 2010 at 03:26:38PM +0100, Colin Guthrie wrote:
- Using the UCM system to indicate whether a mixer element is relevant
or not is a potential nice solution in the future, but it's not available now and it will also require that UCM metadata is available.
...
- Add an API to know whether a mixer element is active (IMO
is_writable() is insufficient. If the current value of PCM says it's set to e.g. -28dB then we need to believe what it says. Even if we decide not to write new values to PCM mixer, we have to believe what it says - we is_writable() does not solve the overall problem of knowing the ultimate product of the various attenuations in the pipeline).
I think a new API is called for here - the basic problem we've got is that while we do have a fairly good idea of how the controls are conected to audio routes inside the kernel for HDA and for embedded stuff we've no way of exposing this to the userspace applications. This is the root cause of a lot of the hassle here, we don't know which controls are involved in a given audio path reliably and we don't know if there are additional gain stages in the path. I see this as separate to the UCM thing with saying which control you should use for adjusting a particular use case - UCM says "use this as your master volume for headphone" or whatever which is separate to determining the total system gain through the audio path.
There's some time in the LPC audio track discussion set aside for doing some requirements gathering on this.