Microsoft DirectX 8.0 |
IAMTimecodeGenerator インターフェイスは、外部 SMPTE/MIDI タイムコード ジェネレータがフィルタ グラフにデータを提供する方法と、タイムコードが提供されるフォーマットを指定するプロパティとメソッドを備えている。このインターフェイスは、IAMExtDevice インターフェイスおよび IAMExtTransport インターフェイスと共に実装し、VCR などの外部デバイスを制御する。このインターフェイスが備えているメソッドによって、アプリケーションは、外部デバイスがタイムコードの生成時に使用する各種の SMPTE/MIDI タイムコード モードまたはフォーマットを指定できる。また、ジェネレータが正しく動作していることを確認するメソッドも用意されている。
SMPTE タイムコードはフレーム アドレッシング システムで、ビデオ ソースとオーディオ ソースを識別し、自動トラック同期を実現し、さらに結果に関する付加データのコンテナとしての役割を果たす。SMPTE タイムコードの一番の目的は、ビデオとオーディオ用の、マシンで読み取り可能なアドレスを提供することである。これは hh:mm:ss:ff フォーマットで表示され、ANSI/SMPTE 12-1986 で定義されている。
SMPTE タイムコードの詳細については、「SMPTE タイムコード」を参照すること。
外部タイムコード リーダーにアクセスするメソッドの詳細については、「IAMTimecodeReader インターフェイス」を参照すること。
外部タイムコード ジェネレータが SMPTE/MIDI タイムコード情報を生成する方法を制御する場合は、外部デバイス フィルタにおいてこのインターフェイスを実装する。
フィルタ上で IMediaSeeking インターフェイスを公開することによって、アプリケーションはその IMediaSeeking::ConvertTimeFormat を使用して、タイムコードを Microsoft® DirectShow® 基準タイムに変換できる。
外部デバイスは、タイムコードを読み取り、そのコントロール インターフェイスを介してこれをコンピュータに送信できる必要がある (「ハードウェアの要件」を参照すること)。外部デバイスがこの機能を備えていない場合は、コンピュータにタイムコード リーダー カードを装着するか、キャプチャされたビデオ フレームに埋め込まれている VITC、またはオーディオ信号としてキャプチャされた LTC を、DirectShow タイムコード サンプルに変換するソフトウェア デコーダを作成する必要がある。
外部デバイスの中で SMPTE タイムコードを生成する場合は、このインターフェイスを使用する。
ハードウェアの要件については、「IAMExtTransport インターフェイス」を参照すること。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMTimecodeGenerator メソッド 説明 GetTCGMode SMPTE タイムコード ジェネレータ プロパティを取得する。 SetTCGMode SMPTE タイムコード ジェネレータ プロパティを設定する。 put_VITCLine VITC (Vertical Interval Timecode) 情報を挿入するラインを指定する。 get_VITCLine VITC 情報が挿入されたラインを取得する。 SetTimecode タイムコード、ユーザービット、または両方を設定する。 GetTimecode ストリーム内で有効な最新のタイムコードまたはユーザービット値を取得する。
SMPTE タイムコード ジェネレータ プロパティを取得する。
構文
HRESULT GetTCGMode(
long Param,
long *pValue
);
パラメータ
- Param
- [in] タイムコード ジェネレータ モード。設定値を取得する元となる、次のいずれかのモードを指定する。
ED_TCG_FRAMERATE フレーム レート。 ED_TCG_REFERENCE_SOURCE カウント値のソース。 ED_TCG_SYNC_SOURCE ハードウェア クロック基準のソース。 ED_TCG_TIMECODE_TYPE ジェネレータの SMPTE タイムコード フォーマット。 - pValue
- [out] Param で指定されるモードの現在の設定値へのポインタ。
ED_TCG_FRAMERATE が Param に指定されている場合、このパラメータは次のいずれかを取得する。
ED_FORMAT_SMPTE_24 24 フレーム/秒。 ED_FORMAT_SMPTE_25 25 フレーム/秒。 ED_FORMAT_SMPTE_30 30 フレーム/秒。フレームの欠落なし。 ED_FORMAT_SMPTE_30DROP 30 フレーム/秒。フレームの欠落あり (実際には 29.97 フレーム/秒)。 ED_TCG_REFERENCE_SOURCE が Param に指定されている場合、このパラメータは次のいずれかを取得する。
ED_TCG_FREE カウントの基準となるソースはない。 ED_TCG_READER リーダーの値に同期する (jamsync)。 ED_TCG_SYNC_SOURCE が Param に指定されている場合、このパラメータは次のいずれかを取得する。
ED_TCG_FREE ロックされない (freerun)。 ED_TCG_READER タイムコード リーダーにロックする。 ED_TCG_VIDEO 受信ビデオにロックする。 ED_TCG_TIMECODE_TYPE が Param に指定されている場合、このパラメータは次のいずれかを取得する。
ED_TCG_MIDI_FULL MIDI フル フレーム タイムコード。 ED_TCG_MIDI_QF MIDI クォーター フレーム タイムコード。 ED_TCG_SMPTE_LTC LTC (Liner Timecode)。 ED_TCG_SMPTE_VITC VITC (Vertical Interval Timecode)。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
このメソッドは、タイムコード ジェネレータの各種設定値を返す。ED_TCG_TIMECODE_TYPE の詳細については、「IAMTimecodeReader::SetTCRMode」を参照すること。
ストリーム内で有効な最新のタイムコードまたはユーザービット値を取得する。
構文
HRESULT GetTimecode(
PTIMECODE_SAMPLE pTimecodeSample
);
パラメータ
- pTimecodeSample
- [out] TIMECODE_SAMPLE タイムコード構造体へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
このメソッドを使用すると、ストリーム内で有効な最新のタイムコード値を取得できる。これによってアプリケーションはタイムコードを監視し、ジェネレータが正しく動作していることを確認できる。
参照
VITC (Vertical Interval Timecode) 情報が挿入されたラインを取得する。
構文
HRESULT get_VITCLine(
long *pLine );
パラメータ
- pLine
- [out] タイムコード情報を格納しているラインへのポインタ。有効なラインは 11 から 20 の範囲である。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
複数のラインから VITC 情報を取得するには、ハイ ビットがセットされている目的のラインごとにこのメソッドを連続して呼び出す。
参照
VITC (Vertical Interval Timecode) 情報を挿入するラインを指定する。
構文
HRESULT put_VITCLine( long Line );
パラメータ
- Line
- [in] タイムコード情報を格納するライン。有効なラインは 11 から 20 の範囲である。0 は自動選択を表す。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
特定の複数のライン上に VITC 情報を設定するには、目的のラインごとにこのメソッドを連続して呼び出す。
以前に設定されたラインにこのラインを追加するには、ハイ ビットを設定する。
参照
SMPTE タイムコード ジェネレータ プロパティを設定する。
構文
HRESULT SetTCGMode(
long Param,
long Value
);
パラメータ
- Param
- [in] タイムコード ジェネレータ モード。次のいずれかのモードを指定する。
ED_TCG_FRAMERATE フレーム レート。 ED_TCG_REFERENCE_SOURCE カウント値のソース。 ED_TCG_SYNC_SOURCE ハードウェア クロック基準のソース。 ED_TCG_TIMECODE_TYPE ジェネレータの SMPTE タイムコード フォーマット。 - Value
- [in] Param に指定されるモードの設定値。
ED_TCG_FRAMERATE が Param に指定されている場合は、次のいずれかを設定する。
ED_FORMAT_SMPTE_24 24 フレーム/秒。 ED_FORMAT_SMPTE_25 25 フレーム/秒。 ED_FORMAT_SMPTE_30 30 フレーム/秒。フレームの欠落なし。 ED_FORMAT_SMPTE_30DROP 30 フレーム/秒。フレームの欠落あり (実際には 29.97 フレーム/秒)。 ED_TCG_REFERENCE_SOURCE が Param に指定されている場合は、次のいずれかを設定する。
ED_TCG_FREE カウントの基準となるソースはない。 ED_TCG_READER リーダー値に同期する (jamsync)。 ED_TCG_SYNC_SOURCE が Param に指定されている場合は、次のいずれかを設定する。
ED_TCG_FREE ロックされない (freerun)。 ED_TCG_READER タイムコード リーダーにロックする。 ED_TCG_VIDEO 受信ビデオにロックする。 ED_TCG_TIMECODE_TYPE が Param に指定されている場合は、次のいずれかを設定する。
ED_TCG_MIDI_FULL MIDI フル フレーム タイムコード。 ED_TCG_MIDI_QF MIDI クォーター フレーム タイムコード。 ED_TCG_SMPTE_LTC LTC (Liner Timecode)。 ED_TCG_SMPTE_VITC VITC (Vertical Interval Timecode)。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
ED_TCG_TIMECODE_TYPE の詳細については、「IAMTimecodeReader::SetTCRMode メソッド」を参照すること。
参照
タイムコード、ユーザービット値、または両方を設定する。
構文
HRESULT SetTimecode(
PTIMECODE_SAMPLE pTimecodeSample
);
パラメータ
- pTimecodeSample
- [in] TIMECODE_SAMPLE タイムコード構造体へのポインタ。
戻り値
インターフェイスの実装に応じた HRESULT 値を返す。
注意
タイムコードだけを設定する場合は、ユーザービット値に NULL を設定する。逆についても同様である。ジェネレータが実行している場合は、これらの値は即座に反映される。
参照