Интерфейс Win32 Audio API endpointVolume, возвращающий неверное количество каналов - PullRequest
2 голосов
/ 25 ноября 2011

У меня есть звуковое приложение, использующее win32 Audio API . Проблема в том, что когда я звоню:

  endpointVolume->getChannelCount(&count);

возвращает 2 канала (но в Windows включено 6 каналов). Я знаю, что все они работают, потому что я получаю вывод из динамиков, и я также проверяю пиковые значения с помощью:

  IAudioMeterInformation->getMeteringChannelCount()

и я получаю 6 каналов, и пиковые значения больше 0. Так что есть выход .. Кто-нибудь знает, почему это происходит? Это ошибка или плохо закодированный драйвер? Могу ли я получить значения громкости другим способом?

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Я нашел ссылку на MSDN с человеком, описывающим аналогичную проблему, и в заключение, вот что вы должны сделать:

  1. Проверьте, чтобы убедиться, что объем устройстваисходит от драйвера или APO с помощью QueryHardwareSupport.
  2. Сообщите Microsoft об ошибке (даже если они, вероятно, ничего с этим не сделают).
  3. Поэкспериментируйте с API, который вы используете, чтобы увидетьесли вы можете это исправить (случайные вызовы функций и т. д.).
  4. Предполагая, что это не работает, используйте альтернативный API для получения количества каналов.
  5. Если все остальное не удается, купите другую звуковую карту, потому что она явно не работает.
0 голосов
/ 02 декабря 2011

Если вы подготовите свои собственные буферы для воспроизведения звука, вы можете получить громкость самостоятельно.Если хочешь, я вставлю код для этого ...

...