аудио — Получить мастер громкости звука в C ++ в Windows XP

В Windows Vista и более поздних версиях возможно получить основной уровень звука с помощью MMDevice Api:

CoInitialize(NULL);
IMMDeviceEnumerator *pEnum = NULL;
IMMDevice *pDevice = NULL;
IAudioMeterInformation *pMeter = NULL;
float peak;

HRESULT hr;
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IMMDeviceEnumerator),
(void**)&pEnum);

hr = pEnum -> GetDefaultAudioEndpoint(eRender, eConsole, &pDevice);

pDevice -> Activate(__uuidof(IAudioMeterInformation),
CLSCTX_ALL,
NULL,
(void**)&pMeter);

pMeter -> GetPeakValue(&peak); // I need this value

Но как получить эту информацию в Windows XP?

0

Решение

Из MSDN, Пиковые метры:

Если конечное аудиоустройство реализует аппаратный измеритель пиков, интерфейс IAudioMeterInformation использует аппаратный измеритель пиков. В противном случае интерфейс реализует измеритель пиков в программном обеспечении.

До Vista не было аппаратного пикового измерения на устройствах или KMixer (предшественник WASAPI для внутреннего микширования звука). Не было никакой реализации программного обеспечения для предоставления данных измерений. Так что у вас просто нет данных, вы не можете их получить.

Если у вас есть данные, которые вы отправляете на воспроизведение, вы можете использовать программный замер по этому каналу.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]