IAMExtTransport
COM公式ドキュメント
IAMExtTransport インターフェイスは、ビデオテープレコーダー (VTR) やカムコーダーのトランスポートを制御します。
解説(Remarks)
DV デバイスドライバーは、ヘッダーファイル Xprtdefs.h で定義される追加の定数をいくつか必要とします。
Windows Driver Model (WDM) デバイスの場合、WDM ドライバーが PROPSETID_EXT_TRANSPORT プロパティセットをサポートしていれば、WDM Video Capture Filter がこのインターフェイスを自動的に公開します。詳細については、Windows Driver Kit (WDK) のドキュメントを参照してください。
ハードウェア要件
外部 VCR を制御するには、いくつかのハードウェア要件が推奨されます。RS-422 シリアルインターフェイスを備えた VCR では、専用のシリアルポートカードまたは外付けの RS-232-to-RS-422 アダプターが必要です。さらに、最良のパフォーマンスを得るには、38.4 ボーなどのより高いボーレートを維持できるよう、16550 高性能 UART を搭載したシリアルポートカードをコンピューターに用意することが推奨されます。フィルター開発者向け
VTR のようなトランスポートを備えた外部デバイスを制御するフィルターを作成する場合は、このインターフェイスを実装してください。このインターフェイスを実装する場合は、IAMExtDevice インターフェイスも実装する必要があります。メソッド 28
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetCapability メソッドは、トランスポートの一般的なケイパビリティを取得します。
| Capability | INT | in | 確認するケイパビリティを指定します。詳細については「解説」を参照してください。 |
| pValue | INT* | out | long 整数を受け取る変数へのポインター。詳細については「解説」を参照してください。 |
| pdblValue | DOUBLE* | out | double を受け取る変数へのポインター。詳細については「解説」を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Capability パラメーターは、どのケイパビリティを確認するかを指定するフラグです。ケイパビリティフラグに応じて、このメソッドは結果を pValue パラメーターまたは pdblValue パラメーターのいずれかで返します。
次のフラグの場合、このメソッドは pValue パラメーターに OATRUE または OAFALSE の値を返します。OATRUE はそのケイパビリティが存在することを示し、OAFALSE は存在しないことを示します。
| ケイパビリティフラグ | 説明 |
|---|---|
| ED_TRANSCAP_CAN_ASSEMBLE | トランスポートはアセンブル録画モードを使用できます (直前に録画したセグメントのコントロールトラックにシームレスにつながる新しいトラックを録画します)。 |
| ED_TRANSCAP_CAN_BUMP_PLAY | トランスポートは速度を変化させて同期できます。 |
| ED_TRANSCAP_CAN_DELAY_AUDIO_IN | トランスポートは遅延イン (delayed-in) のオーディオ編集を実行できます。 |
| ED_TRANSCAP_CAN_DELAY_AUDIO_OUT | トランスポートは遅延アウト (delayed-out) のオーディオ編集を実行できます。 |
| ED_TRANSCAP_CAN_DELAY_VIDEO_IN | トランスポートは遅延イン (delayed-in) のビデオ編集を実行できます。 |
| ED_TRANSCAP_CAN_DELAY_VIDEO_OUT | トランスポートは遅延アウト (delayed-out) のビデオ編集を実行できます。 |
| ED_TRANSCAP_CAN_DETECT_LENGTH | トランスポートはメディアの長さを検出できます。 |
| ED_TRANSCAP_CAN_EJECT | トランスポートはメディアを取り出せます。 |
| ED_TRANSCAP_CAN_FREEZE | トランスポートはフリーズ/一時停止できます。 |
| ED_TRANSCAP_CAN_INSERT | トランスポートはインサート録画モードを使用できます (あらかじめ録画されたコントロールトラックにロックしたまま、個々のトラックを録画します)。 |
| ED_TRANSCAP_CAN_PLAY_BACKWARDS | トランスポートは逆再生できます。 |
| ED_TRANSCAP_CAN_SET_EE | トランスポートはデバイスの入力を出力に表示できます。 |
| ED_TRANSCAP_CAN_SET_PB | トランスポートはメディアの再生を出力に表示できます。 |
| ED_TRANSCAP_FIELD_STEP | トランスポートはフレーム前進コマンドに対して 1 フィールド分だけ前進して応答します。 |
| ED_TRANSCAP_HAS_CLOCK | デバイスはクロックを備えています。 |
| ED_TRANSCAP_HAS_DT | デバイスはダイナミックトラッキングを備えています。 |
| ED_TRANSCAP_HAS_TIMER | デバイスはタイマーを備えています。 |
| ED_TRANSCAP_HAS_TUNER | デバイスはチューナーを備えています。 |
| ED_TRANSCAP_IS_MASTER | デバイスは同期用のマスタークロックです。 |
| ED_TRANSCAP_MULTIPLE_EDITS | デバイスは複数の編集イベントをサポートします。 |
| ED_TRANSCAP_NEEDS_CUEING | デバイスは編集を実行する前にキューイングが必要です。 |
| ED_TRANSCAP_NEEDS_TBC | デバイスはキャリブレーションが必要です。 |
次のフラグの場合、このメソッドは pValue パラメーターに数値を返します。
| ケイパビリティフラグ | 戻り値 |
| ED_TRANSCAP_LTC_TRACK | LTC タイムコードトラックのトラック番号を返します。専用のタイムコードトラックがない場合は ED_ALL を返します。 |
| ED_TRANSCAP_NUM_AUDIO_TRACKS | オーディオトラックの数を返します。 |
次のフラグの場合、このメソッドは pdblValue パラメーターに値を返します。
| ケイパビリティフラグ | 戻り値 |
| ED_TRANSCAP_FWD_SHUTTLE_MAX | シャトルモードでの最大順方向速度 (再生速度の倍数)。 |
| ED_TRANSCAP_FWD_SHUTTLE_MIN | シャトルモードでの最小順方向速度 (再生速度の倍数)。 |
| ED_TRANSCAP_FWD_VARIABLE_MAX | 最大順方向速度 (再生速度の倍数)。 |
| ED_TRANSCAP_FWD_VARIABLE_MIN | 最小順方向速度 (再生速度の倍数)。 |
| ED_TRANSCAP_REV_SHUTTLE_MAX | シャトルモードでの最大逆方向速度 (再生速度の倍数)。 |
| ED_TRANSCAP_REV_SHUTTLE_MIN | シャトルモードでの最小逆方向速度 (再生速度の倍数)。 |
| ED_TRANSCAP_REV_VARIABLE_MAX | 最大逆方向速度 (再生速度の倍数)。 |
| ED_TRANSCAP_REV_VARIABLE_MIN | 最小逆方向速度 (再生速度の倍数)。 |
DV での実装
put_MediaState メソッドは、メディアの現在の状態を設定します。
| State | INT | in | メディアの状態を long 整数として指定します。次のいずれかを使用します。
これらの定数はディスクメディアおよびテープメディア用です。他のデバイスでは新しい定数を定義する必要がある場合があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_MediaState メソッドは、メディアの現在の状態を取得します。
| pState | INT* | out | 次のいずれかの値を受け取る long 整数へのポインター。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_LocalControl メソッドは、デバイスをローカル制御とリモート制御の間で切り替えます。
| State | INT | in | デバイスの状態を指定します。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_LocalControl メソッドは、トランスポートがローカル制御下にあるかリモート制御下にあるかを判定します。
| pState | INT* | out | 次のいずれかの値を受け取る long 整数へのポインター。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
GetStatus メソッドは、トランスポートの状態に関する情報を返します。
| StatusItem | INT | in | 取得する状態情報を指定します。詳細については「解説」を参照してください。 |
| pValue | INT* | out | long 整数を指定または受け取る変数へのポインター。その意味は StatusItem の値によって異なります。詳細については「解説」を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
StatusItem パラメーターは、どの状態情報を取得するかを指定するフラグです。このメソッドは情報を pValue パラメーターで返します。すべてのデバイスがすべての状態フラグをサポートしているわけではありません。次のフラグが定義されています。
- ED_MODE: 一時停止や再生など、現在のトランスポートモードを返します。トランスポートモードを定義する定数の一覧については、IAMExtTransport::put_Mode を参照してください。代わりに、StatusItem にこれらの定数のいずれかを設定することもでき、その場合はトランスポートが現在そのモードであれば pValue に OATRUE、そうでなければ OAFALSE が返されます。
- ED_MEDIA_TYPE: このトランスポートのメディアの形式を示します。次のいずれかの定数を返します。
定数 説明 ED_MEDIA_VHS VHS ED_MEDIA_SVHS S-VHS ED_MEDIA_HI8 Hi-8 ED_MEDIA_UMATIC Umatic ED_MEDIA_DVC DV テープ (DVC) ED_MEDIA_1_INCH 1 インチテープ ED_MEDIA_D1 D1 フォーマット ED_MEDIA_D2 D2 フォーマット ED_MEDIA_D3 D3 フォーマット ED_MEDIA_D5 D5 フォーマット ED_MEDIA_DBETA Digital Betacam ED_MEDIA_BETA Betacam ED_MEDIA_8MM 8 ミリ ED_MEDIA_DDR デジタルディスクレコーダー ED_MEDIA_SX Betacam SX ED_MEDIA_OTHER その他 ED_MEDIA_CLV CLV (線速度一定、いわゆる「標準再生」) レーザーディスク ED_MEDIA_CAV CAV (角速度一定、いわゆる「拡張再生」) レーザーディスク - ED_LINK_MODE: トランスポートの制御がフィルターグラフの Run、Stop、Pause メソッドにリンクされている場合は OATRUE を、そうでない場合は OAFALSE を返します。詳細については IAMExtTransport::put_Mode を参照してください。
- ED_MEDIA_PRESENT: トランスポートのメディアが存在する場合は OATRUE を、そうでない場合は OAFALSE を返します。
- ED_MEDIA_LENGTH: 現在の時刻形式の単位でメディアの長さを返します (IAMExtTransport::SetTransportBasicParameters を参照)。
- ED_MEDIA_TRACK_COUNT: トラック数を返します。
- ED_MEDIA_TRACK_LENGTH: 現在の時刻形式の単位でトラックの長さを返します。
- ED_MEDIA_SIDE: メディアのどちらの面がアクティブかを示します。
| 定数 | 説明 |
|---|---|
| ED_MODE_PLAY_SLOW_FWD_X | 低速順方向再生 (速度は不定)。(ベンダー固有の速度での低速順方向再生。) |
| ED_MODE_PLAY_FAST_FWD_X | 高速順方向再生 (速度は不定)。(ベンダー固有の速度での高速順方向再生。) |
| ED_MODE_PLAY_SLOW_REV_X | 低速逆方向再生 (速度は不定)。(ベンダー固有の速度での低速逆方向再生。) |
| ED_MODE_PLAY_FAST_REV_X | 高速逆方向再生 (速度は不定)。(ベンダー固有の速度での高速逆方向再生。) |
| ED_MODE_STOP_START | トランスポートがテープ (またはその他のトランスポートメディア) の先頭で停止しています。 |
| ED_MODE_STOP_END | トランスポートがテープ (またはその他のトランスポートメディア) の末尾で停止しています。 |
| ED_MODE_STOP_EMERGENCY | 予期しない状況が発生したため、またはトランスポートの損傷を防ぐために、トランスポートが停止しました。 |
これらの定数を使用するには、Windows SDK のヘッダーファイル Xprtdefs.h をインクルードします。
DV での実装
MSDV は次の状態フラグをサポートします。
- ED_MODE: 前述の解説を参照してください。
- ED_MEDIA_TYPE: 次のいずれかの値を返します。
定数 説明 ED_MEDIA_VHS VHS テープ。 ED_MEDIA_DVC DV テープ。 ED_MEDIA_UNKNOWN 不明な種類。 ED_MEDIA_NOT_PRESENT トランスポートが空です。 - ED_DEV_REMOVED_HEVENT_GET。イベントへのハンドルを返します。デバイスがシステムから物理的に取り外されると、ドライバーがこのイベントをシグナル状態にします。
- ED_DEV_REMOVED_HEVENT_RELEASE。ED_DEV_REMOVED_HEVENT_GET フラグで取得したイベントハンドルを解放します。ハンドルのアドレスを pValue パラメーターに指定します。
- ED_MODE_CHANGE_NOTIFY。デバイスの状態を pValue で返します。このメソッドが E_PENDING を返した場合は、状態変化が保留中です。状態変化が完了したときに通知を受け取るには、ED_NOTIFY_HEVENT_GET フラグを使用できます。
- ED_NOTIFY_HEVENT_GET。イベントへのハンドルを返します。デバイスがモード変更を完了すると、ドライバーがこのイベントをシグナル状態にします。
- ED_NOTIFY_HEVENT_RELEASE。ED_NOTIFY_HEVENT_GET フラグで取得したイベントハンドルを解放します。ハンドルのアドレスを pValue パラメーターに指定します。
MPEG カムコーダーでの実装
MSTape は ED_MEDIA_TYPE フラグ用に追加のメディア形式をサポートします。
| 定数 | 説明 |
|---|---|
| ED_MEDIA_NEO | MPEG-2 トランスポートストリーム用のミニデジタルテープ (D-VHS)。 |
これらのフラグの一部は、ヘッダーファイル Xptrdefs.h で定義されています。
GetTransportBasicParameters メソッドは、外部トランスポートの一般的なプロパティを取得します。
| Param | INT | in | 取得するプロパティを指定します。 |
| pValue | INT* | inout | long 整数値を受け取る変数へのポインター。詳細については「解説」を参照してください。 |
| ppszData | LPWSTR* | inout | 文字列を受け取る LPOLESTR 型の変数へのポインター。詳細については「解説」を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Param パラメーターは、どのプロパティを取得するかを指定するフラグです。一部のプロパティは数値であり、これらは pValue パラメーターで返されます。その他のプロパティは文字列値であり、これらは ppszData パラメーターで返されます。フラグと想定される値の一覧については、IAMExtTransport::SetTransportBasicParameters を参照してください。
このメソッドが文字列を返した場合、呼び出し側は CoTaskMemFree 関数を使用してその文字列を解放する必要があります。
DV および MPEG カムコーダーでの実装
MSDV は次の追加フラグをサポートします。
-
ED_RAW_EXT_DEV_CMD: 生の AV/C コマンドを発行します。AV/C コマンドをバイト配列として ppszData パラメーターに指定します。コマンドのサイズ (バイト単位) を pValue パラメーターに指定します。このメソッドが返ると、ppszData にはデバイスからの応答が格納され、pValue には応答のサイズ (バイト単位) が格納されます。AV/C コマンドは、検証やエラーチェックを行わずにデバイスへ直接渡されます。
応答のペイロードはコマンドよりも大きくなる場合があります。応答用にバッファーに十分な領域を確保するのは呼び出し側の責任です。ペイロードの最大サイズは 512 バイトです。
詳細については、Issuing Raw AV/C Commands を参照してください。
-
ED_TRANSBASIC_INPUT_SIGNAL: DV カムコーダーが受け入れるよう設計された信号形式を取得します。次のいずれかの定数を pValue で返します。
定数 説明 ED_TRANSBASIC_SIGNAL_525_60_SD NTSC SD 信号。 ED_TRANSBASIC_SIGNAL_525_60_SDL NTSC SDL (ロングプレイ) 信号。 ED_TRANSBASIC_SIGNAL_625_50_SD PAL SD 信号。 ED_TRANSBASIC_SIGNAL_625_50_SDL PAL SDL (ロングプレイ) 信号。 ED_TRANSBASIC_SIGNAL_MPEG2TS D-VHS 信号。 - ED_TRANSBASIC_OUTPUT_SIGNAL: DV カムコーダーが送信するよう設計された信号形式を取得します。ED_TRANSBASIC_INPUT_SIGNAL フラグで挙げた定数のいずれかを返します。
MSTape は ED_TRANSBASIC_INPUT_SIGNAL および ED_TRANSBASIC_OUTPUT_SIGNAL に対して追加の値をサポートします。
| 定数 | 説明 |
|---|---|
| ED_TRANSBASIC_SIGNAL_2500_60_MPEG | 25 Mbps/60 MPEG ストリーム。 |
| ED_TRANSBASIC_SIGNAL_1250_60_MPEG | 12.5 Mbps/60 MPEG ストリーム。 |
| ED_TRANSBASIC_SIGNAL_0625_60_MPEG | 6.25 Mbps/60 MPEG ストリーム。 |
| ED_TRANSBASIC_SIGNAL_2500_50_MPEG | 25 Mbps/50 MPEG ストリーム。 |
| ED_TRANSBASIC_SIGNAL_1250_50_MPEG | 12.5 Mbps/50 MPEG ストリーム。 |
| ED_TRANSBASIC_SIGNAL_0625_50_MPEG | 6.25 Mbps/50 MPEG ストリーム。 |
| ED_TRANSBASIC_SIGNAL_UNKNOWN | 不明な信号形式。 |
これらのフラグは、ヘッダーファイル Xprtdefs.h で定義されています。
Windows XP Service Pack 2 以降では、ED_TRANSBASIC_INPUT_SIGNAL および ED_TRANSBASIC_OUTPUT_SIGNAL フラグ用に次の追加の信号種別が定義されています。
| 定数 | 説明 |
|---|---|
| ED_TRANSBASIC_SIGNAL_525_60_DV25 | DVCPRO 25、525-60。 |
| ED_TRANSBASIC_SIGNAL_625_50_DV25 | DVCPRO 25、625-50。 |
| ED_TRANSBASIC_SIGNAL_525_60_DV50 | DVCPRO 50、525-60。 |
| ED_TRANSBASIC_SIGNAL_625_50_DV50 | DVCPRO 50、625-50。 |
| ED_TRANSBASIC_SIGNAL_HD_60_DVH1 | DVCPRO 100、1080i または 720p |
| ED_TRANSBASIC_SIGNAL_HD_50_DVH1 | DVCPRO 100、1080i のみ |
これらの定数を使用するには、Windows SDK のヘッダーファイル Xprtdefs.h をインクルードします。
SetTransportBasicParameters メソッドは、トランスポートの一般的なプロパティを設定します。
| Param | INT | in | 設定するプロパティを指定します。詳細については「解説」を参照してください。 |
| Value | INT | in | プロパティの値を long 整数として指定します。詳細については「解説」を参照してください。 |
| pszData | LPWSTR | in | プロパティの値を LPOLESTR として指定します。詳細については「解説」を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。考えられるエラーコードには次のものがあります。
| 戻り値 | 説明 |
|---|---|
| デバイスがこのプロパティの設定をサポートしていません。 | |
| デバイスが取り外されました。 |
解説(Remarks)
Param パラメーターは、どのプロパティを設定するかを指定するフラグです。一部のフラグではプロパティは数値であり、その値は Value パラメーターで指定します。その他のフラグではプロパティは文字列であり、その値は pszData パラメーターで指定します。いずれの場合も、このメソッドはもう一方のパラメーターを無視します。
次のフラグでは、Value パラメーターに定義済みの定数を指定します。
- ED_TRANSBASIC_TIME_FORMAT: 時刻形式を指定します。
定数 説明 ED_FORMAT_MILLISECONDS ミリ秒。 ED_FORMAT_FRAMES フレーム。 ED_FORMAT_REFERENCE_TIME 基準時間 (reference time)。 ED_FORMAT_HMSF 時、分、秒、フレームを表す 2 進化 10 進数 (BCD)。 ED_FORMAT_TMSF トラック、分、秒、フレームを表す 2 進化 10 進数 (BCD)。 - ED_TRANSBASIC_TIME_REFERENCE: デバイスが使用する基準時間を指定します。
定数 説明 ED_TIMEREF_TIMECODE タイムコード。 ED_TIMEREF_CONTROL_TRACK コントロールトラック。 ED_TIMEREF_INDEX インデックス。 ED_TIMEREF_ATN 絶対トラック番号 (ATN)。この定数はヘッダーファイル Xprtdefs.h で定義されています。 - ED_TRANSBASIC_END_STOP_ACTION: トランスポートメディアの末尾に達したときにデバイスが実行する動作を指定します。
定数 説明 ED_MODE_STOP 停止。 ED_MODE_REWIND 巻き戻し。 ED_MODE_FREEZE フリーズ/一時停止。 - ED_TRANSBASIC_RECORD_FORMAT: 録画速度を指定します。
定数 説明 ED_RECORD_FORMAT_SP 標準再生 (SP)。 ED_RECORD_FORMAT_LP ロングプレイ (LP)。 ED_RECORD_FORMAT_EP 拡張再生 (EP)。 - ED_TRANSBASIC_SUPERIMPOSE: オンスクリーンディスプレイを有効にするか無効にするかを指定します。
定数 説明 OATRUE オンスクリーンディスプレイが有効です。 OAFALSE オンスクリーンディスプレイが無効です。 - ED_TRANSBASIC_STEP_UNIT: ステップ単位を指定します。
定数 説明 ED_STEP_FIELD フィールド。 ED_STEP_FRAME フレーム。 ED_STEP_3_2 3/2 プルダウン。 - ED_TRANSBASIC_SET_COUNTER_FORMAT: カウンターの時刻形式を設定します。指定できる値については ED_TRANSBASIC_TIME_FORMAT フラグを参照してください。
| フラグ | 説明 |
|---|---|
| ED_TRANSBASIC_STEP_COUNT | ED_TRANSBASIC_STEP_UNIT フラグで定義された単位でステップ数を指定します。 |
| ED_TRANSBASIC_SET_FREEZE_TIMEOUT | 現在の時刻形式の単位でフリーズモードのタイムアウトを指定します。 |
| ED_TRANSBASIC_SETCLOCK | クロック時刻を設定します。 |
| ED_TRANSBASIC_SET_COUNTER_VALUE | カウンターの値を設定します。 |
次のフラグでは、pszData パラメーターに文字列を使用します。
| フラグ | 説明 |
|---|---|
| ED_TRANSBASIC_VOLUME_NAME | ボリューム名を指定します。 |
DV での実装
GetTransportVideoParameters は、外部トランスポートのビデオパラメーター設定を取得します。
| Param | INT | in | 取得するビデオパラメーターを指定します。次のいずれかの値を指定する必要があります。
| ||||||
| pValue | INT* | out | ビデオパラメーターを受け取る long 整数へのポインターを指定します。詳細については「解説」を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Param が ED_TRANSVIDEO_SET_OUTPUT の場合、pValue は次のいずれかの定数を受け取ります。
| 値 | 説明 |
|---|---|
| ED_E2E | トランスポートモードに関係なく、入力ビデオがデバイスの出力に表示されます。 |
| ED_OFF | ビデオ出力が無効です。 |
| ED_PLAYBACK | メディアから再生されるビデオがデバイスの出力に表示されます。 |
Param が ED_TRANSVIDEO_SET_SOURCE の場合、pValue はビデオ入力に使用される入力ピンのインデックスを受け取ります。ピンのインデックスは 0 から始まります。
DV での実装
SetTransportVideoParameters メソッドは、外部トランスポートのビデオパラメーターを設定します。
| Param | INT | in | 設定するビデオパラメーターを指定します。次のいずれかの値を指定する必要があります。
| ||||||
| Value | INT | in | ビデオパラメーターの値を指定します。詳細については「解説」を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Param が ED_TRANSVIDEO_SET_OUTPUT の場合、Value は次のいずれかの定数である必要があります。
| 定数 | 説明 |
|---|---|
| ED_E2E | トランスポートモードに関係なく、入力ビデオがデバイスの出力に表示されます。 |
| ED_OFF | ビデオ出力が無効です。 |
| ED_PLAYBACK | メディアから再生されるビデオがデバイスの出力に表示されます。 |
Param が ED_TRANSVIDEO_SET_SOURCE の場合、Value はビデオ入力に使用する入力ピンのインデックスを指定します。ピンのインデックスは 0 から始まります。
DV での実装
GetTransportAudioParameters メソッドは、外部トランスポートのオーディオパラメーター設定を取得します。
| Param | INT | in | 値を取得したいオーディオパラメーターを、次のいずれかの値を格納した long 整数として指定します。
| ||||||||||||
| pValue | INT* | out | IAMExtTransport::SetTransportAudioParameters メソッドで設定されたチャネルを受け取る long 整数へのポインターを指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
SetTransportAudioParameters は、外部トランスポートのオーディオパラメーター設定を割り当てます。
| Param | INT | in | 設定したいオーディオパラメーターを long 整数として指定します。
| ||||||||||||
| Value | INT | in | どのオーディオチャネルにこのパラメーターを割り当てるかを long 整数として指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
特定のチャネルを指定するには、Value で ED_AUDIO_1 から ED_AUDIO_24 を選択します (組み合わせるにはビット単位の OR を使用します)。すべてのチャネルを指定するには ED_AUDIO_ALL を選択します。
DV での実装
put_Mode メソッドは、トランスポートモード (再生、停止、録画など) を設定します。
| Mode | INT | in | トランスポートモードを指定します。次のいずれかの値を使用します。
|
戻り値
HRESULT を返します。考えられるエラーには次のものがあります。
| 戻り値 | 説明 |
|---|---|
|
デバイスがコマンドを受け付けませんでした。 |
| 成功。 |
get_Mode メソッドは、現在のトランスポートモード (再生、停止、録画など) を取得します。
| pMode | INT* | out | 現在のトランスポートモードを受け取る long 整数へのポインター。指定できる値については、IAMExtTransport::put_Mode を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_Rate メソッドは、可変速の外部デバイスの再生レートを設定します。
| dblRate | DOUBLE | in | レートを通常の再生レートの倍数として指定します。たとえば、0.5 は半分の速度、2.0 は 2 倍の速度を指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
get_Rate メソッドは、可変速の外部デバイスの再生レートを取得します。
| pdblRate | DOUBLE* | out | IAMExtTransport::put_Rate を使用して設定された再生レートを受け取る double へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
GetChase メソッドは、チェイスモードの状態を取得します。
| pEnabled | INT* | out | 次のいずれかの値を受け取る long 整数へのポインター。
| ||||||
| pOffset | INT* | out | 現在時刻からのオフセットを受け取る long 整数へのポインター。これは、再生中にトランスポートが維持するオフセットを示します。オフセットは現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。 | ||||||
| phEvent | UINT_PTR* | out | イベントハンドルを受け取る変数へのポインター。チェイスオフセットが確立されると、このイベントがシグナル状態になります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
SetChase メソッドは、チェイスモードを有効または無効にします。
| Enable | INT | in | チェイスを有効にするかどうかを long 整数として指定します。
| ||||||
| Offset | INT | in | トランスポートが基準時間から維持するオフセットを指定します。オフセットは現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。 | ||||||
| hEvent | UINT_PTR | in | イベントへのハンドルを指定します。デバイスは信号オフセットを確立した後、このイベントをシグナル状態にします。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
外部トランスポートにタイムコード信号を一定のオフセットで追従させたい場合に、このメソッドを使用します。たとえば、VCR がチェイスをサポートしている場合、再生モードに切り替えて、基準タイムコードから一定のオフセットを保ったままテープを維持できます。
チェイスモードは、完了するかキャンセルされるまで有効なままです。フィルターは、トランスポートのタイムコードを定期的に読み取ることで、トランスポートが一定のオフセットを維持していることを確認する必要があります。
DV での実装
GetBump メソッドは、バンプモードの状態を取得します。
| pSpeed | INT* | out | 一時的なバンプ速度を通常速度の倍数として受け取る long 整数へのポインター。 |
| pDuration | INT* | out | バンプの継続時間を受け取る long 整数へのポインター。継続時間は現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
SetBump メソッドは、複数の外部デバイスを同期させるために、再生を一時的に変更します。
| Speed | INT | in | 一時的な速度 (通常速度の倍数) を long 整数として指定します。 |
| Duration | INT | in | バンプの継続時間を long 整数として指定します。継続時間は現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。 |
戻り値
インターフェイスの実装に依存する HRESULT 値を返します。
解説(Remarks)
get_AntiClogControl メソッドは、アンチヘッドクロッグ制御が有効か無効かを判定します。
| pEnabled | INT* | out | 次のいずれかの値を受け取る long 整数へのポインター。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_AntiClogControl メソッドは、トランスポートのアンチヘッドクロッグ制御を有効または無効にします。
| Enable | INT | in | アンチヘッドクロッグ制御を有効にするかどうかを指定します。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
GetEditPropertySet メソッドは、編集イベントの状態を取得します。
| EditID | INT | in | 編集プロパティセットを指定します。IAMExtTransport::SetEditPropertySet メソッドが返した識別子を使用します。 | ||||||||
| pState | INT* | out | 編集プロパティセットの状態を受け取る long 整数へのポインター。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
SetEditPropertySet メソッドは、編集プロパティのグループを記述する編集プロパティセットを登録します。
| pEditID | INT* | inout | 編集プロパティセットの識別子を指定または受け取る long 整数へのポインター。 | ||||||||||
| State | INT | in | 編集プロパティセットの状態を指定します。
値が ED_REGISTER の場合、pEditID パラメーターは編集プロパティセットの識別子を受け取ります。その他のフラグの場合は、pEditID パラメーターで識別子を指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
編集イベントとは、録画シーケンスを定義するパラメーターの集合です。たとえば、これらのパラメーターは編集モード、インポイントとアウトポイント、シーク位置などを指定できます。各編集イベントは、編集プロパティと呼ばれる 1 つ以上のパラメーターで構成されます。プロパティの集合は編集プロパティセットと呼ばれます。各編集プロパティセットは、デバイスフィルターによって割り当てられる long 整数で識別されます。
編集イベントを作成して実行するには、アプリケーションで次の操作を行う必要があります。
- 編集プロパティセットを登録します。State パラメーターに値 ED_REGISTER を指定して
SetEditPropertySetメソッドを呼び出します。このメソッドが返ると、pEditID パラメーターに編集プロパティセットの識別子が格納されます。以降のメソッド呼び出しでは、この番号を使用して編集プロパティセットを識別します。 - IAMExtTransport::SetEditProperty メソッドを使用して編集プロパティを指定します。
- 値 ED_ACTIVE を指定して
SetEditPropertySetを呼び出し、編集イベントをアクティブにします。 - 値 ED_EDIT_SEEK を指定して
SetEditPropertyを呼び出し、トランスポートをキューイングします。 - フィルターグラフを実行します。
| C++ |
|---|
// 編集プロパティセット ID を登録します。(メモリが割り当てられます。) long EditId; SetEditPropertySet(&EditId, ED_REGISTER); |
DV での実装
GetEditProperty メソッドは、編集イベントに関連付けられたパラメーターと値を取得します。
| EditID | INT | in | 編集プロパティセットを指定します。IAMExtTransport::SetEditPropertySet メソッドが返した識別子を使用します。 |
| Param | INT | in | 取得する編集イベントパラメーターを指定します。 |
| pValue | INT* | out | パラメーター値を受け取る変数へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
編集イベントパラメーターとその指定可能な値の一覧については、IAMExtTransport::SetEditProperty を参照してください。さらに、このメソッドは ED_EDIT_TEST をサポートしており、これはデバイスがその編集を実行できるかどうかを判定します。デバイスフィルターがデバイスは編集を実行できると推定した場合は、pValue パラメーターに値 OATRUE を返します。そうでない場合は値 OAFALSE を返します。
DV での実装
SetEditProperty メソッドは、編集イベントに関連付けるパラメーターと値を定義します。
| EditID | INT | in | 編集プロパティセットを指定します。IAMExtTransport::SetEditPropertySet メソッドが返した識別子を使用します。 |
| Param | INT | in | 編集イベントパラメーターを指定します。詳細については「解説」を参照してください。 |
| Value | INT | in | パラメーターの値を指定します。詳細については「解説」を参照してください。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
編集イベントは、1 つ以上の編集イベントパラメーターで構成されます。SetEditPropertySet メソッドを使用して編集イベントを作成し、次にこのメソッドを使用してその編集イベントの編集イベントパラメーターを指定します。
Param パラメーターは、編集イベントパラメーターを指定するフラグです。Value パラメーターは、そのパラメーターの値を指定します。Value の意味は、Param で使用するフラグによって異なります。
- ED_EDIT_HEVENT: イベントへのハンドル。編集イベントが完了すると、デバイスがこのイベントをシグナル状態にします。
- ED_EDIT_IMMEDIATE: 値が OATRUE の場合、アプリケーションは値 ED_MODE_EDIT_CUE を指定して IAMExtTransport::put_Mode を呼び出すことで、デバイスを編集モードに切り替えることができます。
- ED_EDIT_MODE: 編集モードを指定します。次のいずれかの定数を使用します。
定数 説明 ED_EDIT_MODE_ASSEMBLE アセンブル編集モード。 ED_EDIT_MODE_INSERT インサート編集モード。 ED_EDIT_MODE_CRASH_RECORD クラッシュ録画モード。 - ED_EDIT_TRACK: 編集するトラックを指定します。次の定数の 1 つ以上を使用します。定数はビット単位の OR で組み合わせることができます。
定数 説明 ED_VIDEO ビデオトラック ED_AUDIO_1 から ED_AUDIO_24 オーディオトラック 1 から 24 ED_AUDIO_ALL すべてのオーディオトラック - ED_EDIT_SRC_INPOINT: 現在の時刻形式の単位で、ソースのインポイントを指定します。
- ED_EDIT_SRC_OUTPOINT: 現在の時刻形式の単位で、ソースのアウトポイントを指定します。
- ED_EDIT_REC_INPOINT: 現在の時刻形式の単位で、録画デバイスのインポイントを指定します。
- ED_EDIT_REC_OUTPOINT: 現在の時刻形式の単位で、録画デバイスのアウトポイントを指定します。
- ED_EDIT_REHEARSE_MODE: プレビューモードを指定します。次のいずれかの定数を使用します。
定数 説明 ED_EDIT_BVB ブラック-ビデオ-ブラック (BVB)。黒画面、挿入したビデオ、黒画面の順に表示します。 ED_EDIT_VBV ビデオ-ブラック-ビデオ (VBV)。録画済みのビデオ、黒画面、録画済みのビデオの順に表示します。 ED_EDIT_VVV ビデオ-ビデオ-ビデオ (VVV)。録画済みのビデオ、挿入したビデオ、録画済みのビデオの順に表示します。 ED_EDIT_PERFORM プレビューを行いません。 - ED_EDIT_ABORT: 値 OATRUE を指定すると、編集が現在進行中の場合にこのメソッドが編集を停止します。
- ED_EDIT_TIMEOUT: タイムアウトするまでに、デバイスが編集の完了を待機する時間を指定します。
- ED_EDIT_SEEK: 値 OATRUE を指定すると、このメソッドは指定した位置へシークします。まず ED_EDIT_SEEK_MODE フラグを指定してこのメソッドを呼び出し、シーク位置を指定します。
- ED_EDIT_SEEK_MODE: シーク位置を指定します。次のいずれかの定数を使用します。
定数 説明 ED_EDIT_SEEK_EDIT_IN インポイントへシークします。 ED_EDIT_SEEK_EDIT_OUT アウトポイントへシークします。 ED_EDIT_SEEK_PREROLL インポイントのプリロール位置へシークします。 ED_EDIT_SEEK_PREROLL_CT タイムコードを使用してインポイントへシークし、その後コントロールトラックを使用してプリロール位置まで戻ります。 ED_EDIT_SEEK_BOOKMARK 次のブックマークへシークします。
DV での実装
get_EditStart メソッドは、外部トランスポートの編集制御がアクティブかどうかを判定します。
| pValue | INT* | out | 外部トランスポートの編集制御がアクティブかどうかを示す値を受け取る long 整数へのポインターを指定します。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
put_EditStart メソッドは、対応するトランスポートで編集制御をアクティブにします。
| Value | INT | in | 編集制御をアクティブにするかどうかを指定します。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
編集制御を手動で有効にするには、このメソッドを使用します。編集制御とは、VCR 上の個々の、または一連の録画トラックを正確に有効にすることと定義されます。たとえば、ビデオのみのインサート編集では、ビデオ録画ヘッドだけが有効になって新しいビデオ信号が録画され、オーディオ信号はそのまま残されます。この機能を備えたマシンで「オンザフライ」編集を制御するには、このメソッドを使用します。
DV での実装
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAMExtTransport "{A03CD5F0-3045-11CF-8C44-00AA006B6814}" #usecom global IAMExtTransport IID_IAMExtTransport "{}" #comfunc global IAMExtTransport_GetCapability 3 int,var,var #comfunc global IAMExtTransport_put_MediaState 4 int #comfunc global IAMExtTransport_get_MediaState 5 var #comfunc global IAMExtTransport_put_LocalControl 6 int #comfunc global IAMExtTransport_get_LocalControl 7 var #comfunc global IAMExtTransport_GetStatus 8 int,var #comfunc global IAMExtTransport_GetTransportBasicParameters 9 int,var,var #comfunc global IAMExtTransport_SetTransportBasicParameters 10 int,int,wstr #comfunc global IAMExtTransport_GetTransportVideoParameters 11 int,var #comfunc global IAMExtTransport_SetTransportVideoParameters 12 int,int #comfunc global IAMExtTransport_GetTransportAudioParameters 13 int,var #comfunc global IAMExtTransport_SetTransportAudioParameters 14 int,int #comfunc global IAMExtTransport_put_Mode 15 int #comfunc global IAMExtTransport_get_Mode 16 var #comfunc global IAMExtTransport_put_Rate 17 double #comfunc global IAMExtTransport_get_Rate 18 var #comfunc global IAMExtTransport_GetChase 19 var,var,var #comfunc global IAMExtTransport_SetChase 20 int,int,sptr #comfunc global IAMExtTransport_GetBump 21 var,var #comfunc global IAMExtTransport_SetBump 22 int,int #comfunc global IAMExtTransport_get_AntiClogControl 23 var #comfunc global IAMExtTransport_put_AntiClogControl 24 int #comfunc global IAMExtTransport_GetEditPropertySet 25 int,var #comfunc global IAMExtTransport_SetEditPropertySet 26 var,int #comfunc global IAMExtTransport_GetEditProperty 27 int,int,var #comfunc global IAMExtTransport_SetEditProperty 28 int,int,int #comfunc global IAMExtTransport_get_EditStart 29 var #comfunc global IAMExtTransport_put_EditStart 30 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IAMExtTransport "{A03CD5F0-3045-11CF-8C44-00AA006B6814}" #usecom global IAMExtTransport IID_IAMExtTransport "{}" #comfunc global IAMExtTransport_GetCapability 3 int,sptr,sptr #comfunc global IAMExtTransport_put_MediaState 4 int #comfunc global IAMExtTransport_get_MediaState 5 sptr #comfunc global IAMExtTransport_put_LocalControl 6 int #comfunc global IAMExtTransport_get_LocalControl 7 sptr #comfunc global IAMExtTransport_GetStatus 8 int,sptr #comfunc global IAMExtTransport_GetTransportBasicParameters 9 int,sptr,sptr #comfunc global IAMExtTransport_SetTransportBasicParameters 10 int,int,wstr #comfunc global IAMExtTransport_GetTransportVideoParameters 11 int,sptr #comfunc global IAMExtTransport_SetTransportVideoParameters 12 int,int #comfunc global IAMExtTransport_GetTransportAudioParameters 13 int,sptr #comfunc global IAMExtTransport_SetTransportAudioParameters 14 int,int #comfunc global IAMExtTransport_put_Mode 15 int #comfunc global IAMExtTransport_get_Mode 16 sptr #comfunc global IAMExtTransport_put_Rate 17 double #comfunc global IAMExtTransport_get_Rate 18 sptr #comfunc global IAMExtTransport_GetChase 19 sptr,sptr,sptr #comfunc global IAMExtTransport_SetChase 20 int,int,sptr #comfunc global IAMExtTransport_GetBump 21 sptr,sptr #comfunc global IAMExtTransport_SetBump 22 int,int #comfunc global IAMExtTransport_get_AntiClogControl 23 sptr #comfunc global IAMExtTransport_put_AntiClogControl 24 int #comfunc global IAMExtTransport_GetEditPropertySet 25 int,sptr #comfunc global IAMExtTransport_SetEditPropertySet 26 sptr,int #comfunc global IAMExtTransport_GetEditProperty 27 int,int,sptr #comfunc global IAMExtTransport_SetEditProperty 28 int,int,int #comfunc global IAMExtTransport_get_EditStart 29 sptr #comfunc global IAMExtTransport_put_EditStart 30 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。