Microsoft DirectX 8.0

DVApp サンプル

説明

デジタル ビデオ (DV) キャプチャ アプリケーション。

このサンプルはDV カムコーダを制御する様々なタイプのフィルタ グラフを構築する方法をデモンストレーションする。DV カムコーダを使ったキャプチャ、プレビュー、転送、デバイス制御の方法をも示す。

パス

ソース: (SDK ルート)\Samples\Multimedia\DirectShow\Capture\DVApp

実行可能ファイル : (SDK ルート)\Samples\Multimedia\DirectShow\Bin\DVApp.exe

ユーザー ガイド

DVApp アプリケーションは以下のモードをサポートする :

キャプチャ モードと転送モードではプレビューも行われる。これらの各モードはプレビューを不可にする No Preview オプションも同様に持っている。 プレビューなしでのキャプチャリングはより効率的で、ドロップ フレームを減らすことができる。Type-1 ファイルと Type-2 ファイルについての情報は、「DirectShow でのデジタル ビデオ」を参照すること。

アプリケーションはプレビュー モードで開始する。別のモードを選択するには、Graph Mode メニューから選択すること。各モードに対して、DVApp はそのモードの機能をサポートするフィルタ グラフを構築する。GraphEdit (.grf) ファイルとしてそのグラフを保存するには、File メニューから Save Graph to File を選ぶこと。GraphEdit でファイルを開く前に、DVApp を終了させること。

ファイルにキャプチャするには :

  1. Graph Mode メニューから、(type 1 か type 2、with preview か without preview で) DV to File モードを選択する。
  2. File メニューから、Set Output File を選び、ファイル名を入力する。
  3. Record をクリックする。
  4. カムコーダが VTR なら、Play をクリックする。
  5. キャプチャを停止するには、Stop をクリックする。

ファイルからカムコーダに転送するには :

  1. Graph Mode メニューから、(type 1 か type 2、with preview か without preview で) File to DV モードを選択する。
  2. File メニューから、Set Input File をクリックし DV ファイルを選択する。ファイルは選択されたモード (Type-1 か Type-2) と一致しなければならない。
  3. Play をクリック。
  4. データをテープに録画するには、Record をクリックする。
  5. 転送を停止するには、Stop をクリックする。

カムコーダが VTR モードなら、ユーザーはアプリケーションの VCR-style ボタンを通して転送メカニズムを制御できる。テープをシークするには、ターゲット タイムコードを入力してシークボタンを押す。

アプリケーションがキャプチャするデータ量を制限するには、File メニューから Capture Size を選択する。

テープ フォーマット (NTSC か PAL) をチェックするには、Options メニューから Check Tape を選択する。

プレビュー ウィンドウのサイズを変更するには、Options メニューから Change Decode Size を選択する。

プログラミングの注意

このアプリケーションの主目的は様々な DV キャプチャと DV 転送 グラフの構築方法を示すことである。アプリケーションは ICaptureGraphBuilder2 インターフェイスを使ってプレビュー グラフと Type-1 キャプチャ グラフを構築することができる。他のタイプの DV グラフは一度に1つのフィルタしか構築できない。DVApp サンプルはプレビュー グラフの構築に ICaptureGraphBuilder2 だけを使っている。

次のダイアグラムは Type-1 ファイルをキャプチャするフィルタ グラフを示す :

Type-1 DV ファイル キャプチャ グラフ

インターリーブされたオーディオ ビデオ データは MSDV から スマート ティー フィルタに送られる。スマート ティー フィルタのキャプチャ ピンからのデータはファイルに書き込まれる、一方プレビュー ピンからのデータはビデオ レンダラとオーディオ レンダラに送られる。

次のダイアグラムは Type-2 ファイルからカムコーダへの転送をするフィルタ グラフを示す :

Type-2 DV ファイル転送グラフ

AVI スプリッタ フィルタは AVI ファイルをパースし、DV Muxer フィルタは 2 つのストリームをマルチプレックスし、インターリーブ オーディオ ビデオ ストリームを作成する。インフィニット ピン ティー フィルタはそのストリームを 2 つの同じストリームに分割する。1 つのストリームは MSDV に行き、一方もう 1 つは DV スプリッタ フィルタを通してプレビューに行く。これと等価な別のグラフ構成も可能である。

デバイスの着脱

アプリケーションは 2 つの異なるテクニックを使ってデバイスの着脱を処理する。デバイスが装着されたとき、アプリケーションのメッセージ ループは WM_DEVICECHANGE メッセージに対応する。デバイスが外されたとき、アプリケーションはフィルタ グラフマネージャからの EC_DEVICE_LOST イベントを処理する。どちらのアプローチも動作する、しかし EC_DEVICE_LOST イベントはフィルタ グラフにデバイスの存在することが必要である。

アプリケーションは 1 度に 1 つのデバイスだけを処理する。現在のデバイスが外されると、アプリケーションはシステム上の別の DV デバイスを探す。

いくつかの DV カムコーダでは、カメラ モードと VTR モード間でスイッチしたときデバイス ロスト メッセージを発生するため、ユーザーがデバイスをシャットオフしなければならない。アプリケーションは適切なメニューコマンドを利用可、利用不可にすることでこれに対応する。しかし、ユーザーがモード間をすばやく切り替えると、カムコーダはデバイス ロスト メッセージを生成しない場合がある。Options メニューから Refresh Mode を選ぶことによってメニューをアップデートさせることができる。シャットオプなしでモードを切り替えることができるが、VTR モードにスイッチされたときだけデバイス ロスト メッセージを送る DV カムコーダもある。

  Microsoft® Windows® 95 and Microsoft® Windows NT® 4.0 以前ではデバイス装着に用いられるデバイスタイプをサポートしない。これらのプラットフォームに対して、アプリケーションをコンパイルするために、WINVER が 0x500 より小さい場合データタイプは条件的にインクルードされる。しかし、アプリケーションはこれらのプラットフォームでデバイス検知をサポートしない。

デバイス制御

アプリケーションの PlayRecord ボタンは現在のモードに依存する :

サンプル アプリケーションはフレーム精度のキャプチャは行わない。いくつかのポイントで、アプリケーションは Sleep 関数を呼び出しデバイスの反応を待つ。デバイス変更の状態時には DV カムコーダは絶対に通知を送らない。以前のデバイスは通知をサポートしていない場合がある、サンプルの目的からは、Sleep 呼び出しがシンプルな解決方法である。詳細は「DV カムコーダの制御」を参照すること。