'Twas brillig, and Kim Therkelsen at 14/09/10 10:48 did gyre and gimble: > Based on the advice from Colin Guthrie I am now trying to modify the > module-ladspa-sink module so that it takes a "master_port" argument and > only creates the virtual sink when the master sink's port matches the > argument value (and unload it when it changes). I think it should be > possible to leave the master_port argument out and let the functionality > fall back to the original functionality to ensure backward compatibility. Yes, backwards compatibility is a good plan. > Furthermore I have updated module-ladspa-sink to support multiple audio > channels based on: > http://www.pulseaudio.org/attachment/ticket/410/pulseaudio-0.9.12-multichannel-ladspa.patch Oh dear, that's been there an awful long time :( I guess it's been missed due to general Trac weirdness :( > Unfortunately I can not find much information about how to handle these > "ports" in the source code. > I can see that pavucontrol can switch between the ports and from the > "info" command in pulseaudio I get: > > 1 sink(s) available. > * index: 0 > name: <alsa_output.pci-0000_00_1b.0.analog-stereo> > driver: <module-alsa-card.c> > flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY > DYNAMIC_LATENCY > ... > ports: > analog-output: Analog Output (priority 9900) > analog-output-speaker: Analog Speakers (priority 10000) > analog-output-headphones: Analog Headphones (priority 9000) > active port: <analog-output-headphones> > ... > > But how do I update int pa__init(pa_module*m) to perform the port check? > Which command should I use to ask PA which port is active? In the pa__init() function, you'll need to read and store the master_port argument first of all. In the userdata struct there is a pa_sink* sink element. When this is populated, you'll see from looking at pulsecore/sink.h that it is just a struct. In that struct you will see "pa_device_port *active_port" member. This is where you can find the active port of the sink you are attaching to. Hope that's the info you need. Col -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mandriva Linux Contributor [http://www.mandriva.com/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/]