alsa: Make profiles' availability dynamic

Submitted by Bob Ham on Feb. 18, 2016, 9:08 a.m.

Details

Reviewer None
Submitted Feb. 18, 2016, 9:08 a.m.
Last Updated Feb. 18, 2016, 9:38 a.m.
Revision 1

Cover Letter(s)

Revision 1
      Make ALSA profiles stick around and update their availability if the
HDMI ELD changes.  This alters the presence of card profiles quite
dramatically.  Specifically, the existing autogeneration of profiles
generates a large set of input/output mapping combinations and all of
these combinations are reported by the API, marked as unavailable. To
give an idea of the consequences, here is what pavucontrol looks like
with this patch:

  https://people.collabora.com/~rah/pavucontrol-unavailable-profiles.png

Similarly, here is the output of "pactl list cards":

  https://people.collabora.com/~rah/pactl-list-cards-output.txt

The patch could be reworked to add another layer so that only
available profiles are exposed through the existing mechanisms but
this would presumably require new API events for the addition and
removal of profiles.

Bob Ham (1):
  alsa: Make profiles' availability dynamic

 src/modules/alsa/alsa-mixer.c       | 349 +++++++++++++++---------------------
 src/modules/alsa/alsa-mixer.h       |  19 +-
 src/modules/alsa/alsa-sink.c        |  13 +-
 src/modules/alsa/alsa-source.c      |  13 +-
 src/modules/alsa/alsa-ucm.c         | 118 ++++--------
 src/modules/alsa/alsa-ucm.h         |   1 +
 src/modules/alsa/alsa-util.c        | 112 ++++++++++--
 src/modules/alsa/alsa-util.h        |  17 ++
 src/modules/alsa/module-alsa-card.c |  93 +++++++++-
 src/pulsecore/card.c                |  54 ++++--
 src/pulsecore/card.h                |   2 +
 11 files changed, 432 insertions(+), 359 deletions(-)
    

Revisions