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

IMFVideoProcessor

COM
IID6ab0000c-fece-4d1f-a2ac-a9573530656e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Enhanced Video Renderer (EVR) におけるビデオ処理を制御します。

解説(Remarks)

このインターフェイスは、グラフィックスドライバーが実装する機能へのアクセスを提供します。ドライバーは 1 つ以上のビデオプロセッサ モードを提供し、それぞれは GUID によって識別されます。各モードは独自の機能セットを持ちます。利用可能なモードの一覧は、ビデオのメディアタイプに応じて変化する場合があります。

このインターフェイスを使用するには、次の手順を実行します。

  1. EVR 入力ストリームのメディアタイプを初期化します。(Media Session を使用している場合、これはトポロジが解決された後に行われます。Media Session が MF_TOPOSTATUS_READY のステータス値を持つ MESessionTopologyStatus イベントを送信するまで待機してください。)
  2. IMFVideoProcessor::GetAvailableVideoProcessorModes を呼び出して、利用可能なビデオプロセッサモードの一覧を取得します。
  3. IMFVideoProcessor::GetVideoProcessorCaps を呼び出して、各ビデオプロセッサモードの機能を調べます。
  4. IMFVideoProcessor::SetVideoProcessorMode を呼び出してモードを選択します。この手順を省略した場合、ストリーミング開始時に EVR が自動的にビデオプロセッサモードを選択します。その場合は、手順 5 に進む前に再生が開始されるまで待機してください。
  5. IMFVideoProcessor::GetProcAmpRange および IMFVideoProcessor::GetFilteringRange を呼び出して、各種の ProcAmp 設定および画像フィルター設定の値の範囲を調べます。
  6. IMFVideoProcessor::SetProcAmpValues および IMFVideoProcessor::SetFilteringValue を呼び出して、ProcAmp 設定および画像フィルター設定を変更します。

メソッド 12

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

vtbl 3 HRESULT GetAvailableVideoProcessorModes(DWORD* lpdwNumProcessingModes, GUID** ppVideoProcessingModes)

ビデオドライバーがサポートするビデオプロセッサモードを取得します。

lpdwNumProcessingModesDWORD*inoutビデオプロセッサモードの数を受け取ります。
ppVideoProcessingModesGUID**outGUID の配列へのポインターを受け取ります。配列の要素数は lpdwNumProcessingModes パラメーターに返されます。呼び出し側は、CoTaskMemFree を呼び出して配列のメモリを解放する必要があります。このパラメーターは NULL にできます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

ビデオプロセッサモードは GUID によって識別されます。定義済み GUID の一覧については、IDirectXVideoProcessorService::GetVideoProcessorDeviceGuids を参照してください。ドライバーは、ベンダー固有の GUID を追加で定義できます。各モードの機能を取得するには、GUID を IMFVideoProcessor::GetVideoProcessorCaps メソッドに渡します。

このメソッドを呼び出す前に、参照ストリームのメディアタイプを設定する必要があります。利用可能なモードは、参照ストリームのメディアタイプに依存する場合があります。

vtbl 4 HRESULT GetVideoProcessorCaps(GUID* lpVideoProcessorMode, DXVA2_VideoProcessorCaps* lpVideoProcessorCaps)

ビデオプロセッサモードの機能を取得します。

lpVideoProcessorModeGUID*inビデオプロセッサモードを識別する GUID へのポインター。利用可能なモードの一覧を取得するには、IMFVideoProcessor::GetAvailableVideoProcessorModes を呼び出します。
lpVideoProcessorCapsDXVA2_VideoProcessorCaps*out機能を受け取る DXVA2_VideoProcessorCaps 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドを呼び出す前に、参照ストリームのメディアタイプを設定する必要があります。

vtbl 5 HRESULT GetVideoProcessorMode(GUID* lpMode)

アプリケーションが優先するビデオプロセッサモードを取得します。優先モードを設定するには、IMFVideoProcessor::SetVideoProcessorMode を呼び出します。

lpModeGUID*out優先するビデオプロセッサモードを識別する GUID を受け取ります。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。
S_FALSE
アプリケーションが優先するビデオプロセッサモードを指定していません。
vtbl 6 HRESULT SetVideoProcessorMode(GUID* lpMode)

優先するビデオプロセッサモードを設定します。EVR は、再生開始時にこのモードの使用を試みます。

lpModeGUID*inビデオプロセッサモードを識別する GUID へのポインター。利用可能なモードの一覧を取得するには、IMFVideoProcessor::GetAvailableVideoProcessorModes を呼び出します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
D3DERR_INVALIDCALL
要求されたモードは無効です。
MF_E_INVALIDREQUEST
ミキサーは既に Direct3D リソースを割り当てており、モードを変更できません。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドを呼び出す前に、次のように参照ストリームのメディアタイプを設定してください。

利用可能なモードは、参照ストリームのメディアタイプに依存する場合があります。

このメソッドは、ビデオ再生が開始される前に呼び出してください。

vtbl 7 HRESULT GetProcAmpRange(DWORD dwProperty, DXVA2_ValueRange* pPropRange)

色調整 (ProcAmp) 設定の値の範囲を取得します。

dwPropertyDWORDin照会する ProcAmp 設定。取り得る値の一覧については、ProcAmp Settings を参照してください。
pPropRangeDXVA2_ValueRange*out指定した ProcAmp 設定の値の範囲を受け取る DXVA2_ValueRange 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
dwProperty の値が無効です。
MF_E_INVALIDREQUEST
ビデオプロセッサモードが設定されていません。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドは、現在のビデオプロセッサモードが指定した ProcAmp 設定に対してサポートする値の範囲を返します。

ミキサーにビデオプロセッサモードが設定されていない場合、このメソッドは失敗します。ビデオプロセッサモードを選択するには、IMFVideoProcessor::SetVideoProcessorMode を呼び出します。設定しない場合、ストリーミング開始時に EVR が自動的にモードを選択します。

ドライバーがサポートする ProcAmp 設定を調べるには、IMFVideoProcessor::GetVideoProcessorCaps を呼び出します。

vtbl 8 HRESULT GetProcAmpValues(DWORD dwFlags, DXVA2_ProcAmpValues* Values)

1 つ以上の色調整 (ProcAmp) 設定の現在の設定を取得します。

dwFlagsDWORDin照会する操作を指定する、1 つ以上のフラグのビットごとの OR。フラグの一覧については、ProcAmp Settings を参照してください。
ValuesDXVA2_ProcAmpValues*outDXVA2_ProcAmpValues 構造体へのポインター。メソッドは、dwFlags で指定された各操作の現在の値でこの構造体を埋めます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドを呼び出す前に、参照ストリームのメディアタイプを設定する必要があります。

ミキサーのビデオプロセッサモードが設定されるまで、返される値はすべて 0 になります。プロセッサモードが設定された後は、返される値は現在のモードを反映します。ビデオプロセッサモードを選択するには、IMFVideoProcessor::SetVideoProcessorMode を呼び出します。設定しない場合、ストリーミング開始時に EVR が自動的にモードを選択します。

ドライバーがサポートする ProcAmp 設定を調べるには、IMFVideoProcessor::GetVideoProcessorCaps を呼び出します。

vtbl 9 HRESULT SetProcAmpValues(DWORD dwFlags, DXVA2_ProcAmpValues* pValues)

1 つ以上の色調整 (ProcAmp) 設定を設定します。

dwFlagsDWORDin設定する ProcAmp 値を指定する、1 つ以上のフラグのビットごとの OR。フラグの一覧については、ProcAmp Settings を参照してください。
pValuesDXVA2_ProcAmpValues*inDXVA2_ProcAmpValues 構造体へのポインター。dwFlags で設定した各フラグについて、対応する構造体メンバーに目的の値を設定します。各操作の有効な値の範囲を取得するには、IMFVideoProcessor::GetProcAmpRange を呼び出します。dwFlags に対応するフラグが設定されていない構造体メンバーは、メソッドによって無視されます。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
dwFlags パラメーターが無効であるか、pValues 内の 1 つ以上の値が正しい範囲内にありません。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドを呼び出す前に、ビデオプロセッサモードを設定してください。ビデオプロセッサモードを選択するには、IMFVideoProcessor::SetVideoProcessorMode を呼び出します。設定しない場合、ストリーミング開始時に EVR が自動的にモードを選択します。

ドライバーがサポートする ProcAmp 設定を調べるには、IMFVideoProcessor::GetVideoProcessorCaps を呼び出します。

vtbl 10 HRESULT GetFilteringRange(DWORD dwProperty, DXVA2_ValueRange* pPropRange)

指定した画像フィルター設定の値の範囲を取得します。

dwPropertyDWORDin照会する画像フィルタリングパラメーター。取り得る値の一覧については、DXVA Image Filter Settings を参照してください。
pPropRangeDXVA2_ValueRange*out指定した画像フィルタリングパラメーターの値の範囲を受け取る DXVA2_ValueRange 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
DDERR_UNSUPPORTED
ドライバーはこのフィルター設定をサポートしていません。
E_INVALIDARG
dwProperty の値が無効です。
MF_E_INVALIDREQUEST
ビデオプロセッサモードが設定されていません。
MF_E_NOT_AVAILABLE
指定した操作は利用できません。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドは、現在のビデオプロセッサモードが指定した画像フィルター設定に対してサポートする値の範囲を返します。

ミキサーにビデオプロセッサモードが設定されていない場合、このメソッドは失敗します。ビデオプロセッサモードを選択するには、IMFVideoProcessor::SetVideoProcessorMode を呼び出します。設定しない場合、ストリーミング開始時に EVR が自動的にモードを選択します。

ドライバーがサポートする画像フィルターを調べるには、IMFVideoProcessor::GetVideoProcessorCaps を呼び出します。

vtbl 11 HRESULT GetFilteringValue(DWORD dwProperty, DXVA2_Fixed32* pValue)

画像フィルターの現在の設定を取得します。

dwPropertyDWORDin照会するフィルター設定。取り得る値の一覧については、DXVA Image Filter Settings を参照してください。
pValueDXVA2_Fixed32*out現在の値を受け取る DXVA2_Fixed32 構造体へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
dwProperty の値が無効です。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドを呼び出す前に、参照ストリームのメディアタイプを設定する必要があります。

ミキサーのビデオプロセッサモードが設定されるまで、返される値はすべて 0 になります。プロセッサモードが設定された後は、返される値は現在のモードを反映します。ビデオプロセッサモードを選択するには、IMFVideoProcessor::SetVideoProcessorMode を呼び出します。設定しない場合、ストリーミング開始時に EVR が自動的にモードを選択します。

ドライバーがサポートする画像フィルターを調べるには、IMFVideoProcessor::GetVideoProcessorCaps を呼び出します。

vtbl 12 HRESULT SetFilteringValue(DWORD dwProperty, DXVA2_Fixed32* pValue)

画像フィルターのパラメーターを設定します。

dwPropertyDWORDin設定する画像フィルタリングパラメーター。取り得る値の一覧については、DXVA Image Filter Settings を参照してください。
pValueDXVA2_Fixed32*in新しい値を指定する DXVA2_Fixed32 構造体へのポインター。各パラメーターの有効な値の範囲を取得するには、IMFVideoProcessor::GetFilteringRange を呼び出します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
dwProperty の値が無効です。
MF_E_TRANSFORM_TYPE_NOT_SET
参照ストリームのメディアタイプが設定されていません。

解説(Remarks)

このメソッドを呼び出す前に、ビデオプロセッサモードを設定してください。ビデオプロセッサモードを選択するには、IMFVideoProcessor::SetVideoProcessorMode を呼び出します。設定しない場合、ストリーミング開始時に EVR が自動的にモードを選択します。

ドライバーがサポートする画像フィルターを調べるには、IMFVideoProcessor::GetVideoProcessorCaps を呼び出します。

vtbl 13 HRESULT GetBackgroundColor(COLORREF* lpClrBkg)

合成矩形の背景色を取得します。背景色は、ビデオ画像のレターボックス表示に使用されます。

lpClrBkgCOLORREF*out背景色を受け取る COLORREF 値へのポインター。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
vtbl 14 HRESULT SetBackgroundColor(COLORREF ClrBkg)

合成矩形の背景色を設定します。背景色は、ビデオ画像のレターボックス表示に使用されます。

ClrBkgCOLORREFin背景色。COLORREF 値として指定します。この値を作成するには、RGB マクロを使用します。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFVideoProcessor "{6AB0000C-FECE-4D1F-A2AC-A9573530656E}"
#usecom global IMFVideoProcessor IID_IMFVideoProcessor "{}"
#comfunc global IMFVideoProcessor_GetAvailableVideoProcessorModes  3 var,var
#comfunc global IMFVideoProcessor_GetVideoProcessorCaps            4 var,var
#comfunc global IMFVideoProcessor_GetVideoProcessorMode            5 var
#comfunc global IMFVideoProcessor_SetVideoProcessorMode            6 var
#comfunc global IMFVideoProcessor_GetProcAmpRange                  7 int,var
#comfunc global IMFVideoProcessor_GetProcAmpValues                 8 int,var
#comfunc global IMFVideoProcessor_SetProcAmpValues                 9 int,var
#comfunc global IMFVideoProcessor_GetFilteringRange                10 int,var
#comfunc global IMFVideoProcessor_GetFilteringValue                11 int,var
#comfunc global IMFVideoProcessor_SetFilteringValue                12 int,var
#comfunc global IMFVideoProcessor_GetBackgroundColor               13 var
#comfunc global IMFVideoProcessor_SetBackgroundColor               14 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。