RenderExclusiveTimerDriven
이 샘플 애플리케이션은 Core Audio API를 사용하여 사용자가 지정한 출력 디바이스에 오디오 데이터를 렌더링합니다. 이 샘플에서는 단독 모드의 렌더링 클라이언트에 대한 타이머 기반 버퍼링을 보여 줍니다. 단독 모드 스트림의 경우 클라이언트는 엔드포인트 버퍼를 오디오 디바이스와 공유합니다.
이 항목에는 다음과 같은 섹션이 포함되어 있습니다.
설명
이 샘플에서는 다음 기능을 보여 줍니다.
- 멀티미디어 디바이스 열거 및 선택용 MMDevice API.
- 스트림 관리 작업을 위한 WASAPI입니다.
요구 사항
제품 | 버전 |
---|---|
Windows SDK | Windows 7 |
Visual Studio | 2008 |
샘플 다운로드
이 샘플은 다음 위치에서 사용할 수 있습니다.
위치 | Path/URL |
---|---|
Windows SDK | \Program Files\Microsoft SDKs\Windows\v7.0\Samples\Multimedia\Audio\RenderExclusiveTimerDriven\... |
예제 빌드
RenderExclusiveTimerDriven 샘플을 빌드하려면 다음 단계를 사용합니다.
- Windows SDK에 대한 CMD 셸을 열고 RenderExclusiveTimerDriven 샘플 디렉터리로 변경합니다.
- RenderExclusiveTimerDriven 디렉터리에서 명령을
start WASAPIRenderExclusiveTimerDriven.sln
실행하여 Visual Studio 창에서 WASAPIRenderExclusiveTimerDriven 프로젝트를 엽니다. - 창 내에서 디버그 또는 릴리스 솔루션 구성을 선택하고 메뉴 모음에서 빌드 메뉴를 선택하고 빌드 옵션을 선택합니다. SDK용 CMD 셸에서 Visual Studio를 열지 않으면 Visual Studio는 SDK 빌드 환경에 액세스할 수 없습니다. 이 경우 프로젝트 파일 WASAPIRenderExclusiveTimerDriven.vcproj에 사용되는 환경 변수 MSSdk를 명시적으로 설정하지 않으면 샘플이 빌드되지 않습니다.
샘플 파일 보기
데모 애플리케이션을 성공적으로 빌드하면 실행 파일 WASAPIRenderExclusiveTimerDriven.exe 생성됩니다. 실행하려면 명령 창에 를 입력한 다음 필수 또는 선택적 인수를 입력 WASAPIRenderExclusiveTimerDriven
합니다. 다음 예제에서는 기본 콘솔 디바이스에서 재생 기간을 지정하여 샘플을 실행하는 방법을 보여줍니다.
WASAPIRenderExclusiveTimerDriven.exe -d 20 -console
다음 표에는 인수가 표시됩니다.
인수 | 설명 |
---|---|
-? | 도움말을 표시합니다. |
-H | 도움말을 표시합니다. |
-f | Hz의 사인파 주파수입니다. |
-l | 오디오 렌더링 대기 시간(밀리초)입니다. |
-d | 사인 파동 지속 시간(초)입니다. |
-M | MMCSS 사용을 사용하지 않도록 설정합니다. |
-콘솔 | 기본 콘솔 디바이스를 사용합니다. |
-통신 | 기본 통신 디바이스를 사용합니다. |
-멀티미디어 | 기본 멀티미디어 디바이스를 사용합니다. |
-끝점 | 스위치 값에 지정된 엔드포인트 식별자를 사용합니다. |
애플리케이션이 인수 없이 실행되는 경우 사용 가능한 디바이스를 열거하고 사용자에게 렌더링 세션에 대한 디바이스를 선택하라는 메시지를 표시합니다. 사용자가 디바이스를 지정한 후 애플리케이션은 10초 동안 440Hz에서 사인파를 렌더링합니다. 이러한 값은 -f 및 -d 스위치 값을 지정하여 수정할 수 있습니다.
RenderExclusiveTimerDriven은 타이머 기반 버퍼링을 보여 줍니다. 이 모드에서 클라이언트는 일정 기간(-d 스위치 값으로 지정된 대기 시간의 절반(밀리초)을 기다려야 합니다. 클라이언트가 절전 모드에서 해제되면 처리 기간의 절반 정도가 되면 엔진에서 다음 샘플 집합을 가져옵니다. 버퍼링 루프에서 각 처리가 전달되기 전에 클라이언트는 데이터가 버퍼를 오버런하지 않도록 렌더링할 데이터의 양을 찾아야 합니다.
지정된 디바이스에서 재생할 오디오 데이터는 이벤트 기반 버퍼링을 사용하도록 설정하여 처리할 수 있습니다. 이 모드는 RenderExclusiveTimerDriven 샘플에서 설명합니다.
스트림 렌더링에 대한 자세한 내용은 스트림 렌더링을 참조하세요.
관련 항목