waveoutopen 예제

  • 0

waveoutopen 예제

다음 Form 메서드는 메시지 처리기입니다. 첫 번째는 MM_WIM_DATA // 메시지 처리기입니다. 이 메시지는 StopButton을 클릭할 때 전송됩니다 // (녹화 종료) 또는 장치에 더 많은 데이터가 필요합니다. 예를 들어, 우리가 할당한 1 // meg가 채워진 경우 메시지 처리기가 발생합니다. 한 방에 충분한 메모리를 할당 할 수없는 경우이 // 처리기를 사용하여 드라이버에 더 많은 메모리를 공급할 수 있음을 볼 수 있습니다. 이 예제에서는 // 녹화를 종료한 다음 재생을 시작합니다. MM_WOM_DONE 메시지 처리기는 파형 재생이 완료되면 // 호출됩니다… C#을 통해 실제 장치로 인터페이싱하면 패러다임의 충돌이 발생할 수 있습니다. 이 이해의 변화를 통해 작업할 수 있는 실용적인 예제를 제공하는 것이 도움이 되었습니다. C#은 몇 가지 좌절을 부과합니다.

예를 들어 데이터가 원본에서 관리되지 않는 것으로 복사되는 경우 추가 복사본이 필요한 것으로 보입니다. 그렇다면 드라이버는 어떻게 프로그램을 “신호”합니까? 몇 가지 선택 사항이 있습니다. 예를 들어 드라이버가 지정된 버퍼 재생을 완료할 때마다 MM_WOM_DONE 메시지가 전송됩니다. 해당 메시지가 포함된 매개 변수에는 지정된 버퍼의 주소(실제로 버퍼를 포함하는 WAVEHDR 구조의 주소)와 장치의 핸들(예: 장치를 열 때 제공된 핸들)이 포함됩니다. 또는 드라이버가 이러한 매개 변수를 전달하는 프로그램(예: “콜백”)의 특정 함수를 자동으로 호출할 수 있습니다. 드라이버가 이벤트 신호를 사용하거나 프로그램에서 특정 스레드를 시작하는 것과 같은 몇 가지 다른 옵션이 있습니다. 재생은 또한 “데이터 블록”을 통해 수행됩니다. 여기서 응용 프로그램은 디스크의 WAVE 파일에서 데이터 블록을 읽습니다(예: 파일의 다음 16K를 16K 버퍼로 읽을 수 있음).

(웨이브아웃PrepareHeader()를 사용하여 버퍼를 읽기 전에 초기화해야 합니다. 이 블록을 드라이버로 전달하여 waveOutWrite()를 통해 재생합니다. 드라이버가 이 블록을 재생하는 동안 다른 데이터 블록에서 두 번째 버퍼로 읽습니다. 드라이버가 첫 번째 블록 재생을 완료하면 프로그램에 다른 블록이 필요하다는 신호를 보내고 드라이버는 waveOutWrite()를 통해 두 번째 버퍼를 전달합니다.


Recent Post

큐 스택 예제

마크업 예제

리눅스 qt 예제

Categories

  • No categories
Leave us a message if you have any question...
Powered by
Website is Protected by WordPress Protection from eDarpan.com.