다음을 통해 공유


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 샘플을 빌드하려면 다음 단계를 사용합니다.

  1. Windows SDK에 대한 CMD 셸을 열고 RenderExclusiveTimerDriven 샘플 디렉터리로 변경합니다.
  2. RenderExclusiveTimerDriven 디렉터리에서 명령을 start WASAPIRenderExclusiveTimerDriven.sln 실행하여 Visual Studio 창에서 WASAPIRenderExclusiveTimerDriven 프로젝트를 엽니다.
  3. 창 내에서 디버그 또는 릴리스 솔루션 구성을 선택하고 메뉴 모음에서 빌드 메뉴를 선택하고 빌드 옵션을 선택합니다. 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 샘플에서 설명합니다.

스트림 렌더링에 대한 자세한 내용은 스트림 렌더링을 참조하세요.

핵심 오디오 API를 사용하는 SDK 샘플