IAMTimecodeGenerator
COM公式ドキュメント
IAMTimecodeGenerator インターフェイスは、外部の SMPTE/MIDI タイムコードジェネレーターがフィルターグラフにデータを供給する方法を制御します。DirectShow は現在、このインターフェイスを実装するフィルターを提供していません。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetTCGMode メソッドは、SMPTE タイムコードジェネレーターのプロパティを取得します。
| Param | INT | in | タイムコードジェネレーターのモード。設定を取得したい以下のモードのいずれかを指定します。
| ||||||||||||||||||||||||||||||||||
| pValue | INT* | out | Param で指定したモードの現在の設定へのポインター。 Param に ED_TCG_FRAMERATE を指定した場合、このパラメーターは次のいずれかを取得します。
Param に ED_TCG_REFERENCE_SOURCE を指定した場合、このパラメーターは次のいずれかを取得します。
Param に ED_TCG_SYNC_SOURCE を指定した場合、このパラメーターは次のいずれかを取得します。
Param に ED_TCG_TIMECODE_TYPE を指定した場合、このパラメーターは次のいずれかを取得します。
|
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
このメソッドは、タイムコードジェネレーターのさまざまな設定を返します。ED_TCG_TIMECODE_TYPE の詳細については、IAMTimecodeReader::SetTCRMode を参照してください。
SetTCGMode メソッドは、SMPTE タイムコードジェネレーターのプロパティを設定します。
| Param | INT | in | タイムコードジェネレーターのモード。以下のモードのいずれかを指定します。
| ||||||||||||||||||||||||||||||||||
| Value | INT | in | Param で指定したモードの設定。 Param に ED_TCG_FRAMERATE を指定した場合、このパラメーターは次のいずれかに設定します。
Param に ED_TCG_REFERENCE_SOURCE を指定した場合、次のいずれかを設定します。
Param に ED_TCG_SYNC_SOURCE を指定した場合、次のいずれかを設定します。
Param に ED_TCG_TIMECODE_TYPE を指定した場合、次のいずれかを設定します。
|
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
ED_TCG_TIMECODE_TYPE の詳細については、IAMTimecodeReader::SetTCRMode メソッドを参照してください。
put_VITCLine メソッドは、垂直帰線区間タイムコード情報を挿入するラインを指定します。
| Line | INT | in | タイムコード情報を格納する垂直ライン(有効なラインは 11〜20。0 は自動選択を意味します)。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
特定の複数のラインに VITC を生成するには、必要なライン数だけこのメソッドを繰り返し呼び出します。
以前に設定したラインにこのラインを追加するには、上位ビットを設定します。
get_VITCLine メソッドは、垂直帰線区間タイムコード情報が挿入されているラインを取得します。
| pLine | INT* | out | タイムコード情報を格納している垂直ラインへのポインター(有効なラインは 11〜20)。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
複数のラインから VITC 情報を取得するには、各ラインについて上位ビットを設定した状態で、必要なライン数だけこのメソッドを繰り返し呼び出します。
SetTimecode メソッドは、タイムコード、ユーザービット値、またはその両方を設定します。
| pTimecodeSample | TIMECODE_SAMPLE* | in | TIMECODE_SAMPLE 構造体へのポインター。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
タイムコードのみを設定するには、ユーザービット値を NULL に設定します。その逆も同様です。ジェネレーターが動作中の場合、これらの値はただちに反映されます。
GetTimecode メソッドは、ストリームで利用可能な最新のタイムコードおよび/またはユーザービット値を取得します。
| pTimecodeSample | TIMECODE_SAMPLE* | out | TIMECODE_SAMPLE 構造体へのポインター。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
このメソッドを使用して、ストリームで利用可能な最新のタイムコード値を取得します。アプリケーションはこれを使用して、タイムコードを監視し、ジェネレーターが正しく動作していることを確認できます。
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 方式にも切替可。#define global IID_IAMTimecodeGenerator "{9B496CE0-811B-11CF-8C77-00AA006B6814}" #usecom global IAMTimecodeGenerator IID_IAMTimecodeGenerator "{}" #comfunc global IAMTimecodeGenerator_GetTCGMode 3 int,sptr #comfunc global IAMTimecodeGenerator_SetTCGMode 4 int,int #comfunc global IAMTimecodeGenerator_put_VITCLine 5 int #comfunc global IAMTimecodeGenerator_get_VITCLine 6 sptr #comfunc global IAMTimecodeGenerator_SetTimecode 7 sptr #comfunc global IAMTimecodeGenerator_GetTimecode 8 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。