On 01/18/2012 06:35 PM, Tanu Kaskinen wrote:
On Wed, 2012-01-11 at 17:03 +0100, David Henningsson wrote:
With 3.3 merge window opened, and the new jack detection interface
scheduled to go in, maybe it's time to talk about the implementation as
well.

My draft patch is here:
http://kernel.ubuntu.com/git?p=diwic/pulseaudio.git;a=commit;h=1f239a9966fe7e43d3c9cb37fedabf31ff7d706e

Fetching the jack state is done through the alsa-lib hctl interface,
whereas the existing mixer stuff uses the alsa-lib smixer interface,
which layers on top of the hctl interface. Right now I've tried to reuse
the existing mixer code, which leads to stuff such as:

      if (fdl->hctl)
          err = snd_hctl_poll_descriptors_revents(fdl->hctl,
fdl->work_fds, fdl->num_fds,&revents);
      else
          err = snd_mixer_poll_descriptors_revents(fdl->mixer,
fdl->work_fds, fdl->num_fds,&revents);

Looks a bit copy-pasted, but I think it is the easiest solution at the
moment. It's just five or so places anyway.
The other option would be to try to port the entire mixer stuff to use
the hctl interface instead of the smixer interface, but I'm not sure I
can foresee how much trouble that actually would be, and if we would run
in to any regressions.

Thoughts?

The current approach of using hctl and smixer side by side looks ok to
me. A couple of questions:

Supposedly the simple mixer interface is significantly simpler in some
way. If we moved to hctl entirely, do you know roughly how much there
would be extra complexity? A lot, a little or are the two interfaces
about the same? Do you know in what ways the simple interface is
simpler? If there's no explosion of unnecessary code resulting from
moving to hctl, I'd file a wishlist bug. Otherwise we can just forget
about it.

I'm not completely sure but after a short look I think we should remain at using smixer for the mixers. They got stuff like reading tlv and turning it into dB information; and by doing that manually, we would have to adapt if ALSA ever wanted to change that stuff.

I'll see if I can clean up my patch a bit, to make it ready for merging upstream.

Have the alsa developers said anything about adding the jack stuff to
the smixer interface?

No, this stuff is quite new and nobody's been requesting it anyway. But I'd say probably not - the jacks are not mixers.

@Colin, I just had a quick look at libsalsa at seems to implement the hctl interface. So that should be okay.

--
David Henningsson, Canonical Ltd.
http://launchpad.net/~diwic
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to