Hi all,
I am writing a program that aims to auto-discover the microphone device
that the user is speaking into. I started off by querying device hints
and collected all devices with the IO types of null, since I have not
found any devices with the type of Input. I am puzzled how it is
possible that there is no Input, where a microphone device should not be
able to emit sound. This is the list on my particular machine:
Name of device: sysdefault:CARD=SB
Description of device: HDA ATI SB, ALC892 Analog
Default Audio Device
I/O type of device: (null)
Name of device: front:CARD=SB,DEV=0
Description of device: HDA ATI SB, ALC892 Analog
Front speakers
I/O type of device: (null)
Name of device: surround21:CARD=SB,DEV=0
Description of device: HDA ATI SB, ALC892 Analog
2.1 Surround output to Front and Subwoofer speakers
I/O type of device: Output
Name of device: surround41:CARD=SB,DEV=0
Description of device: HDA ATI SB, ALC892 Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
I/O type of device: Output
Name of device: surround50:CARD=SB,DEV=0
Description of device: HDA ATI SB, ALC892 Analog
5.0 Surround output to Front, Center and Rear speakers
I/O type of device: Output
Name of device: surround71:CARD=SB,DEV=0
Description of device: HDA ATI SB, ALC892 Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
I/O type of device: Output
Name of device: sysdefault:CARD=SB
Description of device: HDA ATI SB, ALC892 Analog
Default Audio Device
I/O type of device: (null)
Name of device: front:CARD=SB,DEV=0
Description of device: HDA ATI SB, ALC892 Analog
Front speakers
I/O type of device: (null)
Now, I am more puzzled, because none of them is a microphone device
explicitly. How can my program determine which of them is actually a
microphone?
Also, why are devices are duplicated in the output from
snd_device_name_hint()? The very first device is also repeated as the
2nd last one...
Regards,
Alex