次の方法で共有


RenderExclusiveTimerDriven

このサンプル アプリケーションでは、コア オーディオ API を使用して、ユーザーが指定した出力デバイスにオーディオ データをレンダリングします。 このサンプルでは、排他的モードでのレンダリング クライアントのタイマー駆動型バッファリングを示します。 排他モード ストリームの場合、クライアントはエンドポイント バッファーをオーディオ デバイスと共有します。

このトピックは、次のセクションで構成されています。

説明

このサンプルでは、次の機能について説明します。

  • マルチメディア デバイスの列挙と選択のための MMDevice API
  • ストリームの管理操作用の WASAPI。

要件

Product バージョン
Windows SDK Windows 7
Visual Studio 2008

 

サンプルのダウンロード

このサンプルは、次の場所にあります。

場所 パス/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 の使用を無効にします。
-console 既定のコンソール デバイスを使用します。
-communications 既定の通信デバイスを使用します。
-multimedia 既定のマルチメディア デバイスを使用します。
-endpoint スイッチ値で指定されたエンドポイント識別子を使用します。

 

アプリケーションを引数なしで実行すると、使用可能なデバイスが列挙され、レンダリング セッション用のデバイスを選択するようにユーザーに求めます。 ユーザーがデバイスを指定すると、アプリケーションは 440 Hz で 10 秒間正弦波をレンダリングします。 これらの値は、-f スイッチ値と -d スイッチ値を指定することで変更できます。

RenderExclusiveTimerDriven は、タイマー駆動型のバッファリングを示しています。 このモードでは、クライアントは一定期間 (-d スイッチ値で指定された待機時間の半分 (ミリ秒単位)) 待機する必要があります。 クライアントが起動すると、処理期間の途中で、エンジンから次のサンプル セットがプルされます。 各処理がバッファリング ループに入る前に、クライアントは、データがバッファーをオーバーランしないように、レンダリングするデータの量を確認する必要があります。

指定されたデバイスで再生されるオーディオ データは、イベント ドリブン バッファリングを有効にすることで処理できます。 このモードは、RenderExclusiveTimerDriven サンプルで示されています。

ストリームのレンダリングの詳細については、「ストリーム のレンダリング」を参照してください。

コア オーディオ API を使用する SDK サンプル