On 2011-08-03 15:05, Himanshu Chug wrote:
Hi Colin, David

I can see David posts on the group recently and assuming David is back
from vacations :)

Your assumption is correct :-) Btw I don't mind being cc:ed if you need to reach me in person as I don't read all of pulseaudio-discuss normally.

unfortunately we don't access to IRC chat due to some security
restriction (thou we are working to get this sorted, if possible) so
currently I can discuss only over group emails.

On Fri, Jul 22, 2011 at 1:42 AM, Colin Guthrie <[email protected]
<mailto:[email protected]>> wrote:

    'Twas brillig, and Himanshu Chug at 21/07/11 08:24 did gyre and gimble:
     > Thanks Colin and Spidey for making this clarification.
     >
     > So regarding JACK detection and routing:
     >
     > 1. module-udev-detect currently can detect JACK physical hot-plugging
     > but it can't decode the information about what type of JACK device (
     > input or output ) is connected to the sound-card, and for that
    one need
     > to write an JACK detection module to handle that.
     > is my understanding correct ?

    Not quite. Udev detect does absolutely nothing with JACKs. It detects
    totally new devices in a hotplug way. These devices are e.g. USB
    speakers or headsets.

Although as of now, and the preliminary implementation the UCM folks did, the jack input devices are being detected by udev.

one colleague of mine from ALSA /kernel team have wrote the Jack
detection app using udev API from libudev,
so the Jack plug in/plug Out state can be read at
sys/devices/virtual/switch/h2w/state
State   Meaning
                    0    No Headset Connected
                    1    Headset with MIC connected
                    2    Headset without MIC connected

This is a non-standard way of doing it, so once we have the infrastructure in place you'd still have to write your own module for that.

here we are monitoring in a loop using udev monitor fd and based on the
"state" we are calling kcontrols for loudspeaker and headset
something like here...

fd = udev_monitor_get_fd(mon);

while (1) {
............
r = select(fd, ...);

dev = udev_monitor_receive_device(mon);
if (dev) {
     // Jack Inserted/Removed
    Jack_Report(state); // this function will call kcontrols for
headset/loudspeaker based on "state"
}
............
}

I am trying to understand if this approach of Jack detection is fine?
at-least I need to know if I am going in right direction?

If you do your own program as listed above and nothing inside PulseAudio, Jack_Report could call "pacmd set-sink-port", at least if you got your PulseAudio profiles and paths set up correctly (see WritingProfiles on the wiki).

    The actual HP Jack detection stuff is not present at all in PA as the
    underlying layers in ALSA are in flux. These need to settle before we
    can write anything to deal with them.


As Colin comments about ALSA layers are in flux, I need to understand
this bit more some brief information about this problem with ALSA ?
if you can point to some link or so is also fine :)

http://comments.gmane.org/gmane.linux.alsa.devel/86315

    There are active discussions on this topic just now on the alsa-devel
    mailing list.

None that I have missed I hope? :-)

     > 2 Currently our Kernel/ALSA team support for providing seperate
    kcontrol
     > (amixer scripts) for enabling/disabling loudspeaker and headset
    to PA,
     > so it might be an good idea to handle Jack detection and routing
    in one
     > of the existing module or write up an new jack detection module for
     > this, as Colin suggested, provided that we are able to recognize Jack
     > device type  (input/mic or output/headset or both)  from point 1, ( i
     > will take further help from kernel team here about detecting jack
    device
     > type, but any suggestions are welcome :-) )

    Kinda. PA should be able to display to you the different "ports" for
    each sink. These ports represent the Speakers or the Headphones
    kcontrols that are on your device and you can change ports at runtime
    (just run pavucontrol and if your sinks actually have ports, there will
    be a drop downo n the "Output Devices" pane).


I am not able to get pavucontrol installed and working on my rootstrap,
due to some other issues, but I need to test this out also soon.

"pacmd list" should - among many other things - give you a list of ports and profiles for a card.

but I tried on UBUNTU 10.10 desktop, pavucontrol app showing me the
dropdown for Output Devices,

    At present you have to
    change ports manually but the plan is to hook this up to jack detection,
    such that the port is simply flipped accordingly.


I need to know where (or how) in code we can do "flipping of ports from
headphones to loudspeaker"
if I use our udev API for jack detection from above ?


    Multifunction jacks (i.e. those that can be input or output, analog or
    digital) are even more interesting :)


    I very strongly suggest you discuss this with David Henningsson. He's on
    this list but is away on vacation for (I think) another week. He's is
    actively working on JACK support for ALSA and PA layers so it will
    likely be the most productive for you if you wait and speak with him.
    He's employed by Canonical and is diwic on IRC.

Nitpick: JACK with all caps usually refers to "Jack Audio Connection Kit", which is a low-latency (rather than low-power) sound server, i e something completely different.

--
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