2013-11-28 4 views
0

WAVE API를 사용하여 작성한 psk 프로그램에 대한 오디오 데이터를 생성하고 수신합니다. 오디오 생성 및 재생 .exe는 Vis C++ v6에서 XP 및 Win 8 플랫폼 (XP 시스템의 컴파일)에서 컴파일 할 때 잘 작동합니다. 그러나 Win 8에서 VS2010으로 컴파일하면 오디오가 올바르게 버퍼링되지 않아 순수한 톤이 간헐적으로 들리며 수신 된 데이터의 연속성이 손상됩니다.vis C++ v6 및 VS2010 C++ 버퍼 문제에서 컴파일 WAVE 사운드

수신 버퍼와 MM_WM_DATA 메시지를 사용하여 올바른 비트 속도로 메서드를 호출하여 한 비트의 데이터 등을 디코딩하고 winmm.lib을 사용하여 타이밍을 설정합니다.

프로젝트 속성에서 v6의 기본 설정을 지정해야합니까? 컴파일 된 .exe는 VS2010을 사용하여 빌드 할 때 시스템을 다르게 사용하는 것으로 보입니다.

감사의 말. 오디오 드라이버가 버퍼에서 실행하는 경우

감사합니다, 연속성 결함과

그렉

+0

VC6에서 VS 2010까지 VC++ 컴파일러가 많이 변경되었습니다. 이 게시물은 VS2008과 VC6을 비교, 도움이 될 것입니다. http://stackoverflow.com/questions/62389/what-are-the-differences-between-visual-c-2008 – Matt

+0

한 프로젝트를 VC6에서 VC2005로 마이그레이션하면 메모리 문제가 발생하면 컴파일러 옵션을 변경하여 문제를 해결할 수 있을지 의심 스럽습니다. – Matt

답변

0

오디오 발생할 수 있습니다. 버퍼 (MM_W? M_DATA)로 끝났음을 알리면 다른 버퍼를 제공하기에는 너무 늦습니다. 재생 또는 녹음을 시작하기 전에 최소한 두 개 이상의 버퍼를 보내야합니다. 그런 다음 첫 번째 버퍼 완료 알림을 받으면 두 번째 버퍼에서 이미 작업 중이며 두 번째 버퍼가 재생/기록되는 동안 세 번째 버퍼를 제공합니다.

이것은 컴파일러를 바꾸는 것과 어떤 관련이 있을지 모르겠지만 여러 버퍼를 대기 행렬에 넣지 않은 경우라면 제대로 작동하면 운이 좋았을 것입니다.