[pulseaudio-discuss] [V4 PATCH] module-switch-on-connect: add an argument for conditionally connecting

Hui Wang hui.wang at canonical.com
Sun Sep 28 03:31:24 PDT 2014


On 09/28/2014 05:50 PM, Tanu Kaskinen wrote:
> On Sun, 2014-09-28 at 12:41 +0300, Tanu Kaskinen wrote:
>> On Mon, 2014-09-22 at 11:50 +0800, Hui Wang wrote:
>>> On a machine without fixed connecting audio devices like internal
>>> microphone or internal speaker, and when there is no external audio
>>> devices plugging in, the default source/sink is alsa_input/alsa_output
>>> and there is no input devices/output devices listed in the gnome
>>> sound-setting.
>> How can the default source/sink be alsa_input/alsa_output if there are
>> no alsa devices?
> Answering myself: probably you meant that there are alsa devices, but
> they are currently all unavailable.

Yes, and below is an example:

   * index: 2
     name: <alsa_input.pci-0000_00_14.2.analog-stereo>
     driver: <module-alsa-card.c>
     flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY 
DYNAMIC_LATENCY
     state: SUSPENDED
     suspend cause: IDLE
     priority: 9959
     volume: 0:  21% 1:  21%
             0: -40.50 dB 1: -40.50 dB
             balance 0.00
     base volume:  13%
                  -52.50 dB
     volume steps: 65537
     muted: no
     current latency: 0.00 ms
     max rewind: 0 KiB
     sample spec: s16le 2ch 44100Hz
     channel map: front-left,front-right
                  Stereo
     used by: 0
     linked by: 0
     configured latency: 0.00 ms; range is 0.50 .. 371.52 ms
     card: 1 <alsa_card.pci-0000_00_14.2>
     module: 6
     properties:
         alsa.resolution_bits = "16"
         device.api = "alsa"
         device.class = "sound"
         alsa.class = "generic"
         alsa.subclass = "generic-mix"
         alsa.name = "92HD89E2 Analog"
         alsa.id = "92HD89E2 Analog"
         alsa.subdevice = "0"
         alsa.subdevice_name = "subdevice #0"
         alsa.device = "0"
         alsa.card = "1"
         alsa.card_name = "HD-Audio Generic"
         alsa.long_card_name = "HD-Audio Generic at 0xfeb40000 irq 16"
         alsa.driver_name = "snd_hda_intel"
         device.bus_path = "pci-0000:00:14.2"
         sysfs.path = "/devices/pci0000:00/0000:00:14.2/sound/card1"
         device.bus = "pci"
         device.vendor.id = "1022"
         device.vendor.name = "Advanced Micro Devices, Inc. [AMD]"
         device.product.id = "780d"
         device.product.name = "FCH Azalia Controller"
         device.form_factor = "internal"
         device.string = "front:1"
         device.buffering.buffer_size = "65536"
         device.buffering.fragment_size = "32768"
         device.access_mode = "mmap+timer"
         device.profile.name = "analog-stereo"
         device.profile.description = "Analog Stereo"
         device.description = "Built-in Audio Analog Stereo"
         alsa.mixer_name = "IDT 92HD89E2"
         alsa.components = "HDA:111d76c7,103c2b17,00100102"
         module-udev-detect.discovered = "1"
         device.icon_name = "audio-card-pci"
     ports:
         analog-input-microphone-front: Front Microphone (priority 8500, 
latency offset 0 usec, available: no)
             properties:
                 device.icon_name = "audio-input-microphone"
         analog-input-microphone-rear: Rear Microphone (priority 8200, 
latency offset 0 usec, available: no)
             properties:
                 device.icon_name = "audio-input-microphone"
         analog-input-linein: Line In (priority 8100, latency offset 0 
usec, available: no)
             properties:

     active port: <analog-input-linein>



>
>>> Under this situation, if we connect a bluetooth headset, the gnome
>>> sound-setting will list bluez input/output devices, but they are not
>>> active devices by default. This looks very weird that sound-setting
>>> lists only one input device and one output device, but they are not
>>> active. To change this situation, we add an argument, the policy is
>>> if a new source/sink is connected and current default source/sink's
>>> active_port is AVAILABLE_NO, we let the new added one switch to
>>> default one.
>> Surely it doesn't make any sense to have the default sink/source point
>> to non-existing devices if there are other devices available. To me this
>> seems like something to fix in the core than working around in modules.
>>
>> I happen to have some code that improves the core default device
>> tracking. I can submit a patch next week. It might fix your issue too.
> My code doesn't take the port availability into account (perhaps it
> should, I'm not sure), so probably it won't fix your problem.
>



More information about the pulseaudio-discuss mailing list