Я хочу увеличить коэффициент усиления виртуального аудио устройства. Громкость полностью повернута, но я едва слышу звук. Для этого я думаю, что мы должны посмотреть на выигрыш IOAudioLevelControl::createVolumeControl
в IOAudioDevice. Это Soundflower кодУвеличение выходов аудиоустройства Gain
// Gain control for each channel
control = IOAudioLevelControl::createVolumeControl(SoundflowerDevice::kGainMax, // Initial value
0, // min value
SoundflowerDevice::kGainMax, // max value
0, // min 0.0 in IOFixed
(40 << 16) + (32768), // 72 in IOFixed (16.16)
channel, // kIOAudioControlChannelIDDefaultLeft,
channelNameMap[channel], // kIOAudioControlChannelNameLeft,
channel, // control ID - driver-defined
kIOAudioControlUsageInput);
addControl(control, (IOAudioControl::IntValueChangeHandler)gainChangeHandler);
Мне кажется, что я должен изменить 5-й аргумент, который делает некоторые черной магии немного смещается, но так как я не знаю, как это работает и как изменить его. Спасибо
Все еще не работает. Я понятия не имею, что происходит. У меня есть приложение эквалайзера (его виртуальный драйвер c также основан на Soundflower), и у него нет проблем с громкостью звука. просматривая IORegistry, мне удалось найти значения «IOAudioLevelControls'maxDB и minDB, которые равны 0x488000 ((72 << 16) + (32768)) и 0 соответственно для контроля усиления. Для тома maxDB: 0 и minDB: 0xffb88000. Я попытался скопировать значения усиления и использовать его в драйвере, но все тот же ... – BsD
btw Я использую SoundflowerBed для этого тестирования звука, возможно, ошибка в приложении – BsD