Я использую WAVE api для генерации и получения аудиоданных для программы psk, которую я написал. Генерация звука и воспроизведение.exe отлично работают при компиляции в Vis C++ v6 на платформах XP и Win 8 (компиляция на компьютере XP). Однако при компиляции в VS2010 на Win 8 звук, кажется, неправильно буферизирован, так что чистый тон теперь звучит прерывистым, и полученные данные имеют сбои в непрерывности.
Я устанавливаю синхронизацию с использованием буфера приема и сообщения MM_WM_DATA для вызова метода с правильной скоростью передачи в бодах для декодирования одного бита данных и т.д. И winmm.lib.
Должен ли я настраивать что-либо конкретное в свойствах проекта, которое было по умолчанию в v6? Похоже, что скомпилированный.exe использует систему по-разному при построении с использованием VS2010.
Любые советы приветствуются.
Благодаря,
Greg
Звук с ошибками в непрерывности может произойти, если в аудио драйвере заканчиваются буферы. Когда он уведомит вас, что он закончил с буфером (MM_W? M_DATA), вам слишком поздно предоставлять другой буфер. Перед началом воспроизведения или записи вы должны отправить по крайней мере два или более буфера. Затем, когда вы получаете первое уведомление с буфером, он уже будет работать со вторым буфером, и вы предоставляете третий буфер, в то время как второй буфер воспроизводится/записывается.
Я не знаю, что это могло бы сделать с переключением компиляторов, но, очевидно, если вы не ставили в очередь несколько буферов, вам повезло, если бы он работал нормально.