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

IMSVidPlayback

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID37b03538-a4c8-11d2-b634-00c04f79498e継承元IMSVidInputDevice呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl18

公式ドキュメント

IMSVidPlayback インターフェイスは、Video Control の再生デバイスを制御します。

解説(Remarks)

このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IMSVidPlayback)

メソッド 14

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 18 HRESULT get_EnableResetOnStop(VARIANT_BOOL* pVal)

get_EnableResetOnStop メソッドは、グラフが再構築された場合に再生をどのように再開するかを示します。

pValVARIANT_BOOL*out

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

説明
VARIANT_FALSE Video Control はメディアの先頭にシークしません。
VARIANT_TRUE Video Control はメディアの先頭にシークします。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_POINTER
NULL ポインター引数です。
S_OK
メソッドは成功しました。

解説(Remarks)

詳細については、IMSVidPlayback::put_EnableResetOnStop を参照してください。

vtbl 19 HRESULT put_EnableResetOnStop(VARIANT_BOOL newVal)

put_EnableResetOnStop メソッドは、グラフが再構築された場合に再生をどのように再開するかを示します。

newValVARIANT_BOOLin

次のいずれかの値を指定します。

説明
VARIANT_FALSE Video Control は再生が中断された位置から開始しようとします。(既定値)
VARIANT_TRUE Video Control は再生を再開する前に先頭に戻ってシークします。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

状況によっては、再生中にフィルターグラフが破棄されて再構築されることがあります。たとえば、モニターの解像度が変更されたときや、スクリーンセーバーが開始されたときにこれが発生する場合があります。put_EnableResetOnStop プロパティは、Video Control が中断された位置から再生を再開するか、ソースの先頭から再開するかを指定します。

既定では、再生は中断された位置から再開されます。ただし、newValVARIANT_TRUE の場合、Video Control は時刻ゼロへ戻るシークコマンドを発行します。このパラメーターを VARIANT_TRUE に設定しても、シークコマンドが成功することは保証されない点に注意してください。ソースによっては、シークコマンドが失敗することがあります。

vtbl 20 HRESULT Run()

Run メソッドは、再生デバイスを実行します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_NOTIMPL
実装されていません。
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドを使用すると、ソースを直接制御できます。ただし、基盤となるソースフィルターが標準の DirectShow IMediaControl インターフェイスを使用して制御されている場合、このメソッドは E_NOTIMPL を返します。

vtbl 21 HRESULT Pause()

Pause メソッドは、再生デバイスを一時停止します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_NOTIMPL
実装されていません。
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドを使用すると、ソースを直接制御できます。ただし、基盤となるソースフィルターが標準の DirectShow IMediaControl インターフェイスを使用して制御されている場合、このメソッドは E_NOTIMPL を返します。

vtbl 22 HRESULT Stop()

Stop メソッドは、再生デバイスを停止します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_NOTIMPL
実装されていません。
S_OK
メソッドは成功しました。

解説(Remarks)

このメソッドを使用すると、ソースを直接制御できます。ただし、基盤となるソースフィルターが標準の DirectShow IMediaControl インターフェイスを使用して制御されている場合、このメソッドは E_NOTIMPL を返します。

vtbl 23 HRESULT get_CanStep(VARIANT_BOOL fBackwards, VARIANT_BOOL* pfCan)

get_CanStep メソッドは、入力ソースがフレーム単位でステップ実行できるかどうかを照会します。

fBackwardsVARIANT_BOOLin

次のいずれかの値を使用します。

説明
VARIANT_FALSE 入力が前方にステップできるかどうかを照会します
VARIANT_TRUE 入力が後方にステップできるかどうかを照会します。
pfCanVARIANT_BOOL*out

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

説明
VARIANT_FALSE ソースは指定された方向にステップできません。
VARIANT_TRUE ソースは指定された方向にステップできます。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_POINTER
NULL ポインター引数です。
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。


VARIANT_BOOL fCan = VARIANT_FALSE;
hr = m_pPlayback->get_CanStep(VARIANT_FALSE, &fCan);
vtbl 24 HRESULT Step(INT lStep)

Step メソッドは、指定されたフレーム数だけビデオストリームをステップ実行します。

lStepINTinステップするフレーム数を指定します。lStep が 1 の場合、Video Control は 1 フレーム前方にステップします。lStep が 1 より大きい数 N の場合、Video Control は N - 1 フレームをスキップし、N 番目のフレームを表示します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_NOTIMPL
実装されていません。
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

lStep の負の値は後方へのステップとして定義されていますが、その機能は現在実装されておらず、メソッドは E_NOTIMPL を返します。

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。

vtbl 25 HRESULT put_Rate(DOUBLE plRate)

put_Rate メソッドは、再生レートを設定します。

plRateDOUBLEin再生レートを、オーサリング時のレートに対する比率として指定します。たとえば、0.5 は通常の速度の半分、1.0 は通常の速度、2.0 は通常の速度の 2 倍を意味します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_INVALIDARG
ソースフィルターは指定されたレートをサポートしていません。
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。

vtbl 26 HRESULT get_Rate(DOUBLE* plRate)

get_Rate メソッドは、再生レートを取得します。

plRateDOUBLE*out再生レートを、オーサリング時のレートに対する比率として受け取る変数へのポインター。たとえば、0.5 は通常の速度の半分、1.0 は通常の速度、2.0 は通常の速度の 2 倍を意味します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_POINTER
NULL ポインター引数です。
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。
vtbl 27 HRESULT put_CurrentPosition(INT lPosition)

put_CurrentPosition メソッドは、ソース内の指定された位置にシークします。

lPositionINTin

新しい位置を指定します。このパラメーターの単位は、現在の位置モードによって決まります。

位置モード 戻り値
FrameMode フレーム番号
TenthsSecondsMode 100 分の 1 秒

位置モードを設定するには、IMSVidPlayback::put_PositionMode を呼び出します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
E_INVALIDARG
無効な引数です。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

新しい位置が現在の位置より前で、ソースが後方にシークできない場合、メソッドは E_INVALIDARG を返します。

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。

vtbl 28 HRESULT get_CurrentPosition(INT* lPosition)

get_CurrentPosition メソッドは、ソースの現在の再生位置を返します。

lPositionINT*out

再生位置を受け取る変数へのポインター。戻り値の単位は、現在の位置モードによって決まります。

位置モード 戻り値
FrameMode フレーム番号
TenthsSecondsMode 100 分の 1 秒

位置モードを設定するには、IMSVidPlayback::put_PositionMode を呼び出します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_POINTER
NULL ポインター引数です。
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。

vtbl 29 HRESULT put_PositionMode(PositionModeList lPositionMode)

put_PositionMode メソッドは、このインターフェイスによって位置の値がどのように解釈されるかを指定します。

lPositionModePositionModeListin

次のいずれかの値を指定します。

説明
FrameMode 位置の値はフレーム番号として指定されます。
TenthsSecondsMode 位置の値は 100 分の 1 秒として指定されます。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
E_FAIL
失敗しました。ソースがこのモードをサポートしていない可能性があります。
E_INVALIDARG
無効な引数です。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

位置モードは、次のメソッドでパラメーターがどのように解釈されるかを決定します。

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。


hr = m_pPlayback->put_PositionMode(TenthsSecondsMode);
vtbl 30 HRESULT get_PositionMode(PositionModeList* lPositionMode)

get_PositionMode メソッドは、このインターフェイスによって位置の値がどのように解釈されるかを示します。

lPositionModePositionModeList*out

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

説明
FrameMode 位置の値はフレーム番号として指定されます。
TenthsSecondsMode 位置の値は 100 分の 1 秒として指定されます。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_FAIL
失敗しました。
E_POINTER
NULL ポインター引数です。
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

このメソッドが返す値は、次のメソッドでパラメーターがどのように解釈されるかを決定します。

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。
vtbl 31 HRESULT get_Length(INT* lLength)

get_Length メソッドは、再生ソースの長さを取得します。

lLengthINT*out

長さを受け取る変数へのポインター。戻り値の単位は、現在の位置モードによって決まります。

位置モード 戻り値
FrameMode フレーム番号
TenthsSecondsMode 100 分の 1 秒

位置モードを設定するには、IMSVidPlayback::put_PositionMode を呼び出します。

戻り値

このメソッドは HRESULT を返します。指定できる値には次のものがあります。

リターンコード 説明
E_NOINTERFACE
ソースは長さの取得をサポートしていません。
E_POINTER
NULL ポインター引数です。
ERROR_INVALID_STATE
グラフが構築されていません。Video Control で Build または View メソッドを呼び出してください。
S_OK
メソッドは成功しました。
ERROR_INVALID_STATE は、HRESULT_FROM_WIN32 マクロによって HRESULT に変換されます。

解説(Remarks)

このメソッドを呼び出す前に、IMSVidCtl::Build または IMSVidCtl::View メソッドを呼び出してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMSVidPlayback "{37B03538-A4C8-11D2-B634-00C04F79498E}"
#usecom global IMSVidPlayback IID_IMSVidPlayback "{}"
#comfunc global IMSVidPlayback_get_EnableResetOnStop  18 var
#comfunc global IMSVidPlayback_put_EnableResetOnStop  19 int
#comfunc global IMSVidPlayback_Run                    20
#comfunc global IMSVidPlayback_Pause                  21
#comfunc global IMSVidPlayback_Stop                   22
#comfunc global IMSVidPlayback_get_CanStep            23 int,var
#comfunc global IMSVidPlayback_Step                   24 int
#comfunc global IMSVidPlayback_put_Rate               25 double
#comfunc global IMSVidPlayback_get_Rate               26 var
#comfunc global IMSVidPlayback_put_CurrentPosition    27 int
#comfunc global IMSVidPlayback_get_CurrentPosition    28 var
#comfunc global IMSVidPlayback_put_PositionMode       29 int
#comfunc global IMSVidPlayback_get_PositionMode       30 var
#comfunc global IMSVidPlayback_get_Length             31 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。