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

IAMExtTransport

COM
IIDa03cd5f0-3045-11cf-8c44-00aa006b6814継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

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。

vtbl 3 HRESULT GetCapability(INT Capability, INT* pValue, DOUBLE* pdblValue)

GetCapability メソッドは、トランスポートの一般的なケイパビリティを取得します。

CapabilityINTin確認するケイパビリティを指定します。詳細については「解説」を参照してください。
pValueINT*outlong 整数を受け取る変数へのポインター。詳細については「解説」を参照してください。
pdblValueDOUBLE*outdouble を受け取る変数へのポインター。詳細については「解説」を参照してください。

戻り値

このメソッドが成功した場合は 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 での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 4 HRESULT put_MediaState(INT State)

put_MediaState メソッドは、メディアの現在の状態を設定します。

StateINTin

メディアの状態を long 整数として指定します。次のいずれかを使用します。

説明
ED_MEDIA_SPIN_DOWN ディスクメディアの場合: 回転を停止します。テープメディアの場合: テープのローディングを解除します。
ED_MEDIA_SPIN_UP ディスクメディアの場合: 回転を開始します。テープメディアの場合: テープをローディングします。
ED_MEDIA_UNLOAD ドライブからメディアを取り出します。

これらの定数はディスクメディアおよびテープメディア用です。他のデバイスでは新しい定数を定義する必要がある場合があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT get_MediaState(INT* pState)

get_MediaState メソッドは、メディアの現在の状態を取得します。

pStateINT*out

次のいずれかの値を受け取る long 整数へのポインター。

説明
ED_MEDIA_SPIN_DOWN ディスクメディアの場合: 回転が停止しています。テープメディアの場合: テープのローディングが解除されています。
ED_MEDIA_SPIN_UP ディスクメディアの場合: 回転を開始しましたが、まだ最高速度には達していません。テープメディアの場合: テープをローディング中です。
ED_MEDIA_UNLOAD メディアがドライブから取り出されています。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 6 HRESULT put_LocalControl(INT State)

put_LocalControl メソッドは、デバイスをローカル制御とリモート制御の間で切り替えます。

StateINTin

デバイスの状態を指定します。

説明
OATRUE ローカル制御
OAFALSE リモート制御

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 7 HRESULT get_LocalControl(INT* pState)

get_LocalControl メソッドは、トランスポートがローカル制御下にあるかリモート制御下にあるかを判定します。

pStateINT*out

次のいずれかの値を受け取る long 整数へのポインター。

説明
OATRUE ローカル制御。
OAFALSE リモート制御。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

アプリケーションから外部デバイスを制御するには、デバイスがリモートモードになっている必要があります。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 8 HRESULT GetStatus(INT StatusItem, INT* pValue)

GetStatus メソッドは、トランスポートの状態に関する情報を返します。

StatusItemINTin取得する状態情報を指定します。詳細については「解説」を参照してください。
pValueINT*outlong 整数を指定または受け取る変数へのポインター。その意味は StatusItem の値によって異なります。詳細については「解説」を参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

StatusItem パラメーターは、どの状態情報を取得するかを指定するフラグです。このメソッドは情報を pValue パラメーターで返します。すべてのデバイスがすべての状態フラグをサポートしているわけではありません。次のフラグが定義されています。

Windows XP Service Pack 2 以降では、ED_MODE 用に次の追加の再生モードが定義されています。
定数 説明
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 は次の状態フラグをサポートします。

MPEG カムコーダーでの実装

MSTape は ED_MEDIA_TYPE フラグ用に追加のメディア形式をサポートします。

定数 説明
ED_MEDIA_NEO MPEG-2 トランスポートストリーム用のミニデジタルテープ (D-VHS)。

これらのフラグの一部は、ヘッダーファイル Xptrdefs.h で定義されています。

vtbl 9 HRESULT GetTransportBasicParameters(INT Param, INT* pValue, LPWSTR* ppszData)

GetTransportBasicParameters メソッドは、外部トランスポートの一般的なプロパティを取得します。

ParamINTin取得するプロパティを指定します。
pValueINT*inoutlong 整数値を受け取る変数へのポインター。詳細については「解説」を参照してください。
ppszDataLPWSTR*inout文字列を受け取る LPOLESTR 型の変数へのポインター。詳細については「解説」を参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

Param パラメーターは、どのプロパティを取得するかを指定するフラグです。一部のプロパティは数値であり、これらは pValue パラメーターで返されます。その他のプロパティは文字列値であり、これらは ppszData パラメーターで返されます。フラグと想定される値の一覧については、IAMExtTransport::SetTransportBasicParameters を参照してください。

このメソッドが文字列を返した場合、呼び出し側は CoTaskMemFree 関数を使用してその文字列を解放する必要があります。

DV および MPEG カムコーダーでの実装

MSDV は次の追加フラグをサポートします。

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 をインクルードします。

vtbl 10 HRESULT SetTransportBasicParameters(INT Param, INT Value, LPWSTR pszData)

SetTransportBasicParameters メソッドは、トランスポートの一般的なプロパティを設定します。

ParamINTin設定するプロパティを指定します。詳細については「解説」を参照してください。
ValueINTinプロパティの値を long 整数として指定します。詳細については「解説」を参照してください。
pszDataLPWSTRinプロパティの値を LPOLESTR として指定します。詳細については「解説」を参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。考えられるエラーコードには次のものがあります。

戻り値 説明
E_NOTIMPL
デバイスがこのプロパティの設定をサポートしていません。
ERROR_DEVICE_REMOVED
デバイスが取り外されました。

解説(Remarks)

Param パラメーターは、どのプロパティを設定するかを指定するフラグです。一部のフラグではプロパティは数値であり、その値は Value パラメーターで指定します。その他のフラグではプロパティは文字列であり、その値は pszData パラメーターで指定します。いずれの場合も、このメソッドはもう一方のパラメーターを無視します。

次のフラグでは、Value パラメーターに定義済みの定数を指定します。

次のフラグでは、Value パラメーターに数値を使用します。
フラグ 説明
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 での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 11 HRESULT GetTransportVideoParameters(INT Param, INT* pValue)

GetTransportVideoParameters は、外部トランスポートのビデオパラメーター設定を取得します。

ParamINTin

取得するビデオパラメーターを指定します。次のいずれかの値を指定する必要があります。

説明
ED_TRANSVIDEO_SET_OUTPUT 出力モードを取得します。
ED_TRANSVIDEO_SET_SOURCE 入力ピンを取得します。
pValueINT*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 での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 12 HRESULT SetTransportVideoParameters(INT Param, INT Value)

SetTransportVideoParameters メソッドは、外部トランスポートのビデオパラメーターを設定します。

ParamINTin

設定するビデオパラメーターを指定します。次のいずれかの値を指定する必要があります。

説明
ED_TRANSVIDEO_SET_OUTPUT 出力モードを設定します。
ED_TRANSVIDEO_SET_SOURCE 入力ピンを設定します。
ValueINTinビデオパラメーターの値を指定します。詳細については「解説」を参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

Param が ED_TRANSVIDEO_SET_OUTPUT の場合、Value は次のいずれかの定数である必要があります。

定数 説明
ED_E2E トランスポートモードに関係なく、入力ビデオがデバイスの出力に表示されます。
ED_OFF ビデオ出力が無効です。
ED_PLAYBACK メディアから再生されるビデオがデバイスの出力に表示されます。

Param が ED_TRANSVIDEO_SET_SOURCE の場合、Value はビデオ入力に使用する入力ピンのインデックスを指定します。ピンのインデックスは 0 から始まります。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 13 HRESULT GetTransportAudioParameters(INT Param, INT* pValue)

GetTransportAudioParameters メソッドは、外部トランスポートのオーディオパラメーター設定を取得します。

ParamINTin

値を取得したいオーディオパラメーターを、次のいずれかの値を格納した long 整数として指定します。

説明
ED_TRANSAUDIO_ENABLE_OUTPUT オーディオ出力チャネル
ED_TRANSAUDIO_ENABLE_RECORD オーディオ録音チャネル
ED_TRANSAUDIO_ENABLE_SELSYNC オーディオ selsync 録音チャネル
ED_TRANSAUDIO_SET_MONITOR モニター出力オーディオチャネル
ED_TRANSAUDIO_SET_SOURCE オーディオソースチャネル
pValueINT*outIAMExtTransport::SetTransportAudioParameters メソッドで設定されたチャネルを受け取る long 整数へのポインターを指定します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 14 HRESULT SetTransportAudioParameters(INT Param, INT Value)

SetTransportAudioParameters は、外部トランスポートのオーディオパラメーター設定を割り当てます。

ParamINTin

設定したいオーディオパラメーターを long 整数として指定します。

説明
ED_TRANSAUDIO_ENABLE_OUTPUT オーディオチャネルを出力用に有効にします。
ED_TRANSAUDIO_ENABLE_RECORD オーディオチャネルを録音用に有効にします。
ED_TRANSAUDIO_ENABLE_SELSYNC オーディオチャネルを selsync 録音用に有効にします。
ED_TRANSAUDIO_SET_MONITOR モニター出力ソースを設定します。
ED_TRANSAUDIO_SET_SOURCE アクティブなオーディオ入力を設定します。
ValueINTinどのオーディオチャネルにこのパラメーターを割り当てるかを long 整数として指定します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

特定のチャネルを指定するには、ValueED_AUDIO_1 から ED_AUDIO_24 を選択します (組み合わせるにはビット単位の OR を使用します)。すべてのチャネルを指定するには ED_AUDIO_ALL を選択します。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 15 HRESULT put_Mode(INT Mode)

put_Mode メソッドは、トランスポートモード (再生、停止、録画など) を設定します。

ModeINTin

トランスポートモードを指定します。次のいずれかの値を使用します。

説明
ED_MODE_PLAY 再生。
ED_MODE_STOP 停止。
ED_MODE_FREEZE 一時停止。
ED_MODE_THAW 再開。
ED_MODE_FF 早送り。
ED_MODE_REW 巻き戻し。
ED_MODE_RECORD 録画。
ED_MODE_RECORD_FREEZE 録画の一時停止。
ED_MODE_RECORD_STROBE 1 フレームだけ録画。
ED_MODE_STEP_FWD 1 ステップ順方向に進む。
ED_MODE_STEP_REV 1 ステップ逆方向に戻る。
ED_MODE_SHUTTLE シャトル (映像を表示したままの高速移動)。トランスポート速度を設定するには IAMExtTransport::put_Rate と併用します。
ED_MODE_EDIT_CUE アクティブな編集イベントのキューポイントにトランスポートを位置付けます。
ED_MODE_LINK_ON このメソッドをグラフの IMediaControl::RunIMediaControl::StopIMediaControl::Pause メソッドにリンクします。
ED_MODE_LINK_OFF このメソッドをグラフの IMediaControl メソッドから切り離します。

戻り値

HRESULT を返します。考えられるエラーには次のものがあります。

戻り値 説明
HRESULT_FROM_WIN32(ERROR_REQ_NOT_ACCEP)
デバイスがコマンドを受け付けませんでした。
S_OK
成功。
vtbl 16 HRESULT get_Mode(INT* pMode)

get_Mode メソッドは、現在のトランスポートモード (再生、停止、録画など) を取得します。

pModeINT*out現在のトランスポートモードを受け取る long 整数へのポインター。指定できる値については、IAMExtTransport::put_Mode を参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 17 HRESULT put_Rate(DOUBLE dblRate)

put_Rate メソッドは、可変速の外部デバイスの再生レートを設定します。

dblRateDOUBLEinレートを通常の再生レートの倍数として指定します。たとえば、0.5 は半分の速度、2.0 は 2 倍の速度を指定します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 18 HRESULT get_Rate(DOUBLE* pdblRate)

get_Rate メソッドは、可変速の外部デバイスの再生レートを取得します。

pdblRateDOUBLE*outIAMExtTransport::put_Rate を使用して設定された再生レートを受け取る double へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 19 HRESULT GetChase(INT* pEnabled, INT* pOffset, UINT_PTR* phEvent)

GetChase メソッドは、チェイスモードの状態を取得します。

pEnabledINT*out

次のいずれかの値を受け取る long 整数へのポインター。

説明
OATRUE チェイスが有効です。
OAFALSE チェイスが無効です。
pOffsetINT*out現在時刻からのオフセットを受け取る long 整数へのポインター。これは、再生中にトランスポートが維持するオフセットを示します。オフセットは現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。
phEventUINT_PTR*outイベントハンドルを受け取る変数へのポインター。チェイスオフセットが確立されると、このイベントがシグナル状態になります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 20 HRESULT SetChase(INT Enable, INT Offset, UINT_PTR hEvent)

SetChase メソッドは、チェイスモードを有効または無効にします。

EnableINTin

チェイスを有効にするかどうかを long 整数として指定します。

説明
OATRUE チェイスを有効にします。
OAFALSE チェイスを無効にします。
OffsetINTinトランスポートが基準時間から維持するオフセットを指定します。オフセットは現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。
hEventUINT_PTRinイベントへのハンドルを指定します。デバイスは信号オフセットを確立した後、このイベントをシグナル状態にします。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

外部トランスポートにタイムコード信号を一定のオフセットで追従させたい場合に、このメソッドを使用します。たとえば、VCR がチェイスをサポートしている場合、再生モードに切り替えて、基準タイムコードから一定のオフセットを保ったままテープを維持できます。

チェイスモードは、完了するかキャンセルされるまで有効なままです。フィルターは、トランスポートのタイムコードを定期的に読み取ることで、トランスポートが一定のオフセットを維持していることを確認する必要があります。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 21 HRESULT GetBump(INT* pSpeed, INT* pDuration)

GetBump メソッドは、バンプモードの状態を取得します。

pSpeedINT*out一時的なバンプ速度を通常速度の倍数として受け取る long 整数へのポインター。
pDurationINT*outバンプの継続時間を受け取る long 整数へのポインター。継続時間は現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、アクティブな「バンプ」の一時的な速度と残りの継続時間を返します。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 22 HRESULT SetBump(INT Speed, INT Duration)

SetBump メソッドは、複数の外部デバイスを同期させるために、再生を一時的に変更します。

SpeedINTin一時的な速度 (通常速度の倍数) を long 整数として指定します。
DurationINTinバンプの継続時間を long 整数として指定します。継続時間は現在の時刻形式で表されます。詳細については IAMExtTransport::SetTransportBasicParameters を参照してください。

戻り値

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

解説(Remarks)

このメソッドは、トランスポートの速度を一時的に変化させます。トランスポートは、指定された継続時間が経過するまで新しい速度で動作します。その後、元の速度に戻ります。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 23 HRESULT get_AntiClogControl(INT* pEnabled)

get_AntiClogControl メソッドは、アンチヘッドクロッグ制御が有効か無効かを判定します。

pEnabledINT*out

次のいずれかの値を受け取る long 整数へのポインター。

説明
OATRUE アンチヘッドクロッグが有効です。
OAFALSE アンチヘッドクロッグが無効です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 24 HRESULT put_AntiClogControl(INT Enable)

put_AntiClogControl メソッドは、トランスポートのアンチヘッドクロッグ制御を有効または無効にします。

EnableINTin

アンチヘッドクロッグ制御を有効にするかどうかを指定します。

説明
OATRUE トランスポートのアンチヘッドクロッグ制御を有効にします。
OAFALSE トランスポートのアンチヘッドクロッグ制御を無効にします。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

自動ヘッドクリーニング機能を備えた VCR でビデオヘッドの目詰まりを解消するには、このメソッドを使用します。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 25 HRESULT GetEditPropertySet(INT EditID, INT* pState)

GetEditPropertySet メソッドは、編集イベントの状態を取得します。

EditIDINTin編集プロパティセットを指定します。IAMExtTransport::SetEditPropertySet メソッドが返した識別子を使用します。
pStateINT*out

編集プロパティセットの状態を受け取る long 整数へのポインター。

説明
ED_ACTIVE 編集プロパティセットがアクティブです。
ED_DELETE 編集プロパティセットが削除されました。
ED_INACTIVE 編集プロパティセットが非アクティブです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 26 HRESULT SetEditPropertySet(INT* pEditID, INT State)

SetEditPropertySet メソッドは、編集プロパティのグループを記述する編集プロパティセットを登録します。

pEditIDINT*inout編集プロパティセットの識別子を指定または受け取る long 整数へのポインター。
StateINTin

編集プロパティセットの状態を指定します。

説明
ED_ACTIVE 編集プロパティセットをアクティブにします。
ED_DELETE 編集プロパティセットを削除します。
ED_INACTIVE 編集プロパティセットを非アクティブにします。
ED_REGISTER 編集プロパティセットを登録します。

値が ED_REGISTER の場合、pEditID パラメーターは編集プロパティセットの識別子を受け取ります。その他のフラグの場合は、pEditID パラメーターで識別子を指定します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

編集イベントとは、録画シーケンスを定義するパラメーターの集合です。たとえば、これらのパラメーターは編集モード、インポイントとアウトポイント、シーク位置などを指定できます。各編集イベントは、編集プロパティと呼ばれる 1 つ以上のパラメーターで構成されます。プロパティの集合は編集プロパティセットと呼ばれます。各編集プロパティセットは、デバイスフィルターによって割り当てられる long 整数で識別されます。

編集イベントを作成して実行するには、アプリケーションで次の操作を行う必要があります。

たとえば、次のコードはすべてのトラックに対するインサート編集を構成します。
C++
// 編集プロパティセット ID を登録します。(メモリが割り当てられます。)
long EditId;
SetEditPropertySet(&EditId, ED_REGISTER);  

// 編集モードを設定します。 SetEditProperty(EditId, ED_EDIT_MODE, ED_EDIT_MODE_INSERT); // イベントの詳細を設定します。 SetEditProperty(EditId, ED_EDIT_TRACK, ED_VIDEO | ED_AUDIO_ALL); SetEditProperty(EditId, ED_REHEARSE_MODE, ED_EDIT_PERFORM);

// ソースと録画の時間を設定します。 SetEditProperty(EditId, ED_EDIT_SRC_INPOINT, 200) SetEditProperty(EditId, ED_EDIT_SRC_OUTPOINT, 500) SetEditProperty(EditId, ED_EDIT_REC_INPOINT, 100) SetEditProperty(EditId, ED_EDIT_REC_OUTPOINT, 400)

// 編集イベントをアクティブにします。 SetEditPropertySet(&EditId, ED_ACTIVE); // マシンをキューアップします。 SetEditProperty(EditId, ED_EDIT_SEEK, OATRUE);

// グラフを実行します。(ここには示していません。)

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 27 HRESULT GetEditProperty(INT EditID, INT Param, INT* pValue)

GetEditProperty メソッドは、編集イベントに関連付けられたパラメーターと値を取得します。

EditIDINTin編集プロパティセットを指定します。IAMExtTransport::SetEditPropertySet メソッドが返した識別子を使用します。
ParamINTin取得する編集イベントパラメーターを指定します。
pValueINT*outパラメーター値を受け取る変数へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

編集イベントパラメーターとその指定可能な値の一覧については、IAMExtTransport::SetEditProperty を参照してください。さらに、このメソッドは ED_EDIT_TEST をサポートしており、これはデバイスがその編集を実行できるかどうかを判定します。デバイスフィルターがデバイスは編集を実行できると推定した場合は、pValue パラメーターに値 OATRUE を返します。そうでない場合は値 OAFALSE を返します。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 28 HRESULT SetEditProperty(INT EditID, INT Param, INT Value)

SetEditProperty メソッドは、編集イベントに関連付けるパラメーターと値を定義します。

EditIDINTin編集プロパティセットを指定します。IAMExtTransport::SetEditPropertySet メソッドが返した識別子を使用します。
ParamINTin編集イベントパラメーターを指定します。詳細については「解説」を参照してください。
ValueINTinパラメーターの値を指定します。詳細については「解説」を参照してください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

編集イベントは、1 つ以上の編集イベントパラメーターで構成されます。SetEditPropertySet メソッドを使用して編集イベントを作成し、次にこのメソッドを使用してその編集イベントの編集イベントパラメーターを指定します。

Param パラメーターは、編集イベントパラメーターを指定するフラグです。Value パラメーターは、そのパラメーターの値を指定します。Value の意味は、Param で使用するフラグによって異なります。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

vtbl 29 HRESULT get_EditStart(INT* pValue)

get_EditStart メソッドは、外部トランスポートの編集制御がアクティブかどうかを判定します。

pValueINT*out

外部トランスポートの編集制御がアクティブかどうかを示す値を受け取る long 整数へのポインターを指定します。

説明
OATRUE 編集制御がアクティブです。
OAFALSE 編集制御が非アクティブです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 30 HRESULT put_EditStart(INT Value)

put_EditStart メソッドは、対応するトランスポートで編集制御をアクティブにします。

ValueINTin

編集制御をアクティブにするかどうかを指定します。

説明
OATRUE 編集制御をアクティブにします。
OAFALSE 編集制御を非アクティブにします。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

編集制御を手動で有効にするには、このメソッドを使用します。編集制御とは、VCR 上の個々の、または一連の録画トラックを正確に有効にすることと定義されます。たとえば、ビデオのみのインサート編集では、ビデオ録画ヘッドだけが有効になって新しいビデオ信号が録画され、オーディオ信号はそのまま残されます。この機能を備えたマシンで「オンザフライ」編集を制御するには、このメソッドを使用します。

DV での実装

MSDV はこのメソッドをサポートしていません。E_NOTIMPL を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。