Скомпилируйте звук WAVE в vis C ++ v6 и VS2010 C ++ проблема с буфером

0

Я использую WAVE api для генерации и получения аудиоданных для программы psk, которую я написал. Генерация звука и воспроизведение.exe отлично работают при компиляции в Vis C++ v6 на платформах XP и Win 8 (компиляция на компьютере XP). Однако при компиляции в VS2010 на Win 8 звук, кажется, неправильно буферизирован, так что чистый тон теперь звучит прерывистым, и полученные данные имеют сбои в непрерывности.

Я устанавливаю синхронизацию с использованием буфера приема и сообщения MM_WM_DATA для вызова метода с правильной скоростью передачи в бодах для декодирования одного бита данных и т.д. И winmm.lib.

Должен ли я настраивать что-либо конкретное в свойствах проекта, которое было по умолчанию в v6? Похоже, что скомпилированный.exe использует систему по-разному при построении с использованием VS2010.

Любые советы приветствуются.

Благодаря,

Greg

  • 0
    От VC6 до VS 2010 компилятор VC ++ сильно меняется. Этот пост сравнивает VC6 с VS2008, это должно быть полезно. stackoverflow.com/questions/62389/...
  • 0
    После переноса одного проекта из VC6 в VC2005 я также сталкиваюсь с проблемами с памятью, сомневаюсь, что вы можете решить эту проблему, изменив параметры компилятора.
Теги:
audio
visual-studio-2010
wave

1 ответ

0

Звук с ошибками в непрерывности может произойти, если в аудио драйвере заканчиваются буферы. Когда он уведомит вас, что он закончил с буфером (MM_W? M_DATA), вам слишком поздно предоставлять другой буфер. Перед началом воспроизведения или записи вы должны отправить по крайней мере два или более буфера. Затем, когда вы получаете первое уведомление с буфером, он уже будет работать со вторым буфером, и вы предоставляете третий буфер, в то время как второй буфер воспроизводится/записывается.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню