Win32 API 日本語リファレンス
ホームMedia.DirectShow › IAMTimecodeGenerator

IAMTimecodeGenerator

COM
IID9b496ce0-811b-11cf-8c77-00aa006b6814継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAMTimecodeGenerator インターフェイスは、外部の SMPTE/MIDI タイムコードジェネレーターがフィルターグラフにデータを供給する方法を制御します。DirectShow は現在、このインターフェイスを実装するフィルターを提供していません。

メソッド 6

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetTCGMode(INT Param, INT* pValue)

GetTCGMode メソッドは、SMPTE タイムコードジェネレーターのプロパティを取得します。

ParamINTin

タイムコードジェネレーターのモード。設定を取得したい以下のモードのいずれかを指定します。

説明
ED_TCG_FRAMERATE フレームレート
ED_TCG_REFERENCE_SOURCE カウント値のソース
ED_TCG_SYNC_SOURCE ハードウェアクロック基準のソース
ED_TCG_TIMECODE_TYPE ジェネレーターの SMPTE タイムコード形式
pValueINT*out

Param で指定したモードの現在の設定へのポインター。

Param に ED_TCG_FRAMERATE を指定した場合、このパラメーターは次のいずれかを取得します。

説明
ED_FORMAT_SMPTE_24 毎秒 24 フレーム。
ED_FORMAT_SMPTE_25 毎秒 25 フレーム。
ED_FORMAT_SMPTE_30 毎秒 30 フレーム。ノンドロップフレーム。
ED_FORMAT_SMPTE_30DROP 毎秒 30 フレーム。ドロップフレーム(実際には 29.97 fps)。
 

Param に ED_TCG_REFERENCE_SOURCE を指定した場合、このパラメーターは次のいずれかを取得します。

説明
ED_TCG_FREE カウント基準ソースなし。
ED_TCG_READER リーダーの値に同期する(jamsync)。
 

Param に ED_TCG_SYNC_SOURCE を指定した場合、このパラメーターは次のいずれかを取得します。

説明
ED_TCG_FREE 何にもロックしない(フリーラン)。
ED_TCG_READER タイムコードリーダーにロックする。
ED_TCG_VIDEO 入力ビデオにロックする。
 

Param に ED_TCG_TIMECODE_TYPE を指定した場合、このパラメーターは次のいずれかを取得します。

説明
ED_TCG_MIDI_FULL MIDI フルフレームタイムコード
ED_TCG_MIDI_QF MIDI クォーターフレームタイムコード
ED_TCG_SMPTE_LTC リニアタイムコード
ED_TCG_SMPTE_VITC 垂直帰線区間タイムコード

戻り値

インターフェイスの実装に依存する HRESULT 値を返します。

解説(Remarks)

このメソッドは、タイムコードジェネレーターのさまざまな設定を返します。ED_TCG_TIMECODE_TYPE の詳細については、IAMTimecodeReader::SetTCRMode を参照してください。

vtbl 4 HRESULT SetTCGMode(INT Param, INT Value)

SetTCGMode メソッドは、SMPTE タイムコードジェネレーターのプロパティを設定します。

ParamINTin

タイムコードジェネレーターのモード。以下のモードのいずれかを指定します。

説明
ED_TCG_FRAMERATE フレームレート
ED_TCG_REFERENCE_SOURCE カウント値のソース
ED_TCG_SYNC_SOURCE ハードウェアクロック基準のソース
ED_TCG_TIMECODE_TYPE ジェネレーターの SMPTE タイムコード形式
ValueINTin

Param で指定したモードの設定。

Param に ED_TCG_FRAMERATE を指定した場合、このパラメーターは次のいずれかに設定します。

説明
ED_FORMAT_SMPTE_24 毎秒 24 フレーム。
ED_FORMAT_SMPTE_25 毎秒 25 フレーム。
ED_FORMAT_SMPTE_30 毎秒 30 フレーム。ノンドロップフレーム。
ED_FORMAT_SMPTE_30DROP 毎秒 30 フレーム。ドロップフレーム(実際には毎秒 29.97 フレーム)。
 

Param に ED_TCG_REFERENCE_SOURCE を指定した場合、次のいずれかを設定します。

説明
ED_TCG_FREE カウント基準ソースなし。
ED_TCG_READER リーダーの値に同期する(jamsync)。
 

Param に ED_TCG_SYNC_SOURCE を指定した場合、次のいずれかを設定します。

説明
ED_TCG_FREE 何にもロックしない(フリーラン)。
ED_TCG_READER タイムコードリーダーにロックする。
ED_TCG_VIDEO 入力ビデオにロックする。
 

Param に ED_TCG_TIMECODE_TYPE を指定した場合、次のいずれかを設定します。

説明
ED_TCG_MIDI_FULL MIDI フルフレームタイムコード
ED_TCG_MIDI_QF MIDI クォーターフレームタイムコード
ED_TCG_SMPTE_LTC リニアタイムコード
ED_TCG_SMPTE_VITC 垂直帰線区間タイムコード

戻り値

インターフェイスの実装に依存する HRESULT 値を返します。

解説(Remarks)

ED_TCG_TIMECODE_TYPE の詳細については、IAMTimecodeReader::SetTCRMode メソッドを参照してください。

vtbl 5 HRESULT put_VITCLine(INT Line)

put_VITCLine メソッドは、垂直帰線区間タイムコード情報を挿入するラインを指定します。

LineINTinタイムコード情報を格納する垂直ライン(有効なラインは 11〜20。0 は自動選択を意味します)。

戻り値

インターフェイスの実装に依存する HRESULT 値を返します。

解説(Remarks)

特定の複数のラインに VITC を生成するには、必要なライン数だけこのメソッドを繰り返し呼び出します。

以前に設定したラインにこのラインを追加するには、上位ビットを設定します。

vtbl 6 HRESULT get_VITCLine(INT* pLine)

get_VITCLine メソッドは、垂直帰線区間タイムコード情報が挿入されているラインを取得します。

pLineINT*outタイムコード情報を格納している垂直ラインへのポインター(有効なラインは 11〜20)。

戻り値

インターフェイスの実装に依存する HRESULT 値を返します。

解説(Remarks)

複数のラインから VITC 情報を取得するには、各ラインについて上位ビットを設定した状態で、必要なライン数だけこのメソッドを繰り返し呼び出します。

vtbl 7 HRESULT SetTimecode(TIMECODE_SAMPLE* pTimecodeSample)

SetTimecode メソッドは、タイムコード、ユーザービット値、またはその両方を設定します。

pTimecodeSampleTIMECODE_SAMPLE*inTIMECODE_SAMPLE 構造体へのポインター。

戻り値

インターフェイスの実装に依存する HRESULT 値を返します。

解説(Remarks)

タイムコードのみを設定するには、ユーザービット値を NULL に設定します。その逆も同様です。ジェネレーターが動作中の場合、これらの値はただちに反映されます。

vtbl 8 HRESULT GetTimecode(TIMECODE_SAMPLE* pTimecodeSample)

GetTimecode メソッドは、ストリームで利用可能な最新のタイムコードおよび/またはユーザービット値を取得します。

pTimecodeSampleTIMECODE_SAMPLE*outTIMECODE_SAMPLE 構造体へのポインター。

戻り値

インターフェイスの実装に依存する HRESULT 値を返します。

解説(Remarks)

このメソッドを使用して、ストリームで利用可能な最新のタイムコード値を取得します。アプリケーションはこれを使用して、タイムコードを監視し、ジェネレーターが正しく動作していることを確認できます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAMTimecodeGenerator "{9B496CE0-811B-11CF-8C77-00AA006B6814}"
#usecom global IAMTimecodeGenerator IID_IAMTimecodeGenerator "{}"
#comfunc global IAMTimecodeGenerator_GetTCGMode    3 int,var
#comfunc global IAMTimecodeGenerator_SetTCGMode    4 int,int
#comfunc global IAMTimecodeGenerator_put_VITCLine  5 int
#comfunc global IAMTimecodeGenerator_get_VITCLine  6 var
#comfunc global IAMTimecodeGenerator_SetTimecode   7 var
#comfunc global IAMTimecodeGenerator_GetTimecode   8 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。