Обработка звука: я должен использовать DirectSound или напрямую Win32 API? - PullRequest
4 голосов
/ 11 февраля 2009

Я подаю заявку, где я буду:

  • Запись с микрофона и некоторая обработка в реальном времени на входе
  • Воспроизведение файла MP3 (обычная песня), но управление выводом в реальном времени
  • Время от времени мне нужно будет проигрывать дополнительные звуки и над этой песней, но, думаю, я могу сделать это, просто добавив буферы.

Короче говоря, у меня должны быть циклические буферы для записи и воспроизведения, и мне нужно «заполнять» выходной буфер каждые 20 мсек или около того новыми данными, которые вот-вот будут воспроизводиться.

Я смотрю на DirectSound, и, похоже, он мало помогает. Чтение и запись в выходные буферы, похоже, очень похожи на Win32, единственное место, где, как мне кажется, это поможет, это воспроизведение «дополнительных звуков» над основной песней.

Должен ли я использовать DirectSound или перейти непосредственно к необработанным API Windows?
DirectSound что-нибудь сделает для меня?

Заранее спасибо!

Ответы [ 4 ]

5 голосов
/ 11 февраля 2009

Ни? :)

История в том, что DirectSound является заменой waveOut, но DirectSound присоединился к DirectInput как устаревшие API в Vista и заменен WASAPI . DirectSound и waveOut реализованы поверх пользовательского пространства WASAPI в Vista. В XP, waveOut и DirectSound подают на тот же API-интерфейс Mixer уровня ядра.

Чтобы объединить все эти интерфейсы, взгляните на что-то вроде OpenAL, это хорошо поддерживаемый стандарт аудио по тем же направлениям, что и OpenGL.

5 голосов
/ 11 февраля 2009

API Directsound дают вам лучший контроль в реальном времени. Они также являются поддерживаемым способом использования звука в Windows. У меня сложилось впечатление, что API Win32 были испорчены, но я могу ошибаться.

Этот вопрос близок к вашему

https://stackoverflow.com/questions/314522/what-is-the-best-c-sound-api-for-windows

также

Является ли DirectSound лучшим звуковым уровнем абстракции для Windows?

И последнее, но не менее важное, это то, что Microsoft должна сказать http://msdn.microsoft.com/en-us/library/dd370784(VS.85).aspx

3 голосов
/ 11 февраля 2009

Похоже, вы будете очень чувствительны к задержке. Это может стоить посмотреть на ASIO

2 голосов
/ 11 февраля 2009

Я нашел Harmony Central - Программирование звука . Также читайте w: DirectSound .

Windows Vista имеет полностью переписанный стек аудио на основе Универсальная Аудио Архитектура. Так как архитектурных изменений в переработан стек аудио, прямой путь от DirectSound до аудио драйверов не существует.

Из-за Xbox 360 и Microsoft Интеграция с Windows, Microsoft активно подталкивает разработчиков к миграции новые приложения в эквивалент Xbox аудио API, такие как XAudio и XACT.

OpenAL выглядит многообещающе.

...