Я использую API WAVE для генерации и получения аудиоданных для программы 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), вам уже слишком поздно предоставить другой буфер. Вы должны отправить его как минимум двумя или более буферами перед началом воспроизведения или записи. Затем, когда вы получите первое уведомление о завершении буфера, оно уже будет работать со вторым буфером, и вы предоставите третий буфер во время воспроизведения / записи второго буфера.
Я не знаю, что это может делать с переключением компиляторов, но, очевидно, если вы не ставили в очередь несколько буферов, вам повезло, если все работало нормально.
Других решений пока нет …