UPDATE: Globally raising "TX_DEC0 Volume"
is not a good fix, because it badly affects normal phone calls (where we’re typically much closer to the mic).
During a Signal Messenger audio recording, the audio HAL selects input device "handset-mic"
for use case “audio-record”, where "handset-mic"
is defined as
<path name="handset-mic">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="One" />
<path name="amic1" />
</path>
During a normal phone call (non-hands-free), the audio HAL selects input device "dmic-endfire"
for use case "audio-record-voip"
, where "dmic-endfire"
means dual mic (amic1 for bulk input, amic3 feed into noise cancellation)
<path name="handset-dmic-endfire">
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
<path name="amic1" />
<path name="amic3" />
</path>
And during hands free calls (and probably video calls, haven’ t tested) we have use case "audio-record-voip"
with input device "speaker-mic"
, which solely uses "amic3"
for bulk input.
I.e., for both Signal recordings and non-handsfree phone calls we use "amic1"
for the bulk input, which is controlled by "TX_DEC0 Volume"
.
I wonder why "handset-mic"
is selected for Signal recordings at all, and which software component does this decision. Wouldn’t be "speaker-mic"
(as in hands-free calls) more appropriate?
EDIT: The decision taking code is select_devices()
and platform_get_input_snd_device()
.