IDirectSoundBuffer8 ::setVolume не влияет на приложение микшера sndvol32

#windows #winapi #directx

#Windows #winapi #directx

Вопрос:

Microsoft может сказать следующее по поводу устаревших аудиоприложений:

В Windows Vista Sndvol немедленно отражает изменения громкости, которые приложение выполняет посредством вызовов метода IDirectSoundBuffer::setVolume или функции waveOutSetVolume.

Я обнаружил, что это, безусловно, верно для функции waveoutset volume, но не для IDirectSoundBuffer8::setVolume() . Похоже, что буфер прямого звука имеет свою собственную ступень усиления, которая умножается на громкость приложения, установленную в микшере SndVol.

Кто-нибудь может подтвердить, что это так, или я где-то что-то делаю не так? Может быть, отсутствует флаг или аналогичный?

Ответ №1:

Имейте в виду, что IDirectSoundBuffer::setVolume — это затухание в 100 дБ, а waveOutSetVolume — линейный масштаб. В зависимости от значений, которые вы вводите в оба, вы можете не получить ожидаемый результат.