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

IWMWriterAdvanced2

COM
IID962dc1ec-c046-4db8-9cc7-26ceae500817継承元IWMWriterAdvanced自前メソッド開始 vtbl14

公式ドキュメント

IWMWriterAdvanced2 インターフェースは、入力に対して名前付き設定を設定および取得する機能を提供します。IWMWriterAdvanced2 は、writer オブジェクトのすべてのインスタンスに対して存在します。このインターフェースへのポインターを取得するには、writer オブジェクトに対して QueryInterface を呼び出します。

メソッド 2

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

vtbl 14 HRESULT GetInputSetting(DWORD dwInputNum, LPWSTR pszName, WMT_ATTR_DATATYPE* pType, BYTE* pValue, WORD* pcbLength)

GetInputSetting メソッドは、特定の入力に対する設定を名前で取得します。

dwInputNumDWORDin入力番号を格納する DWORD
pszNameLPWSTRin設定名を格納するワイド文字の null 終端文字列へのポインター。有効な設定の一覧については、Input Settings を参照してください。
pTypeWMT_ATTR_DATATYPE*outWMT_ATTR_DATATYPE 列挙型の値へのポインター。
pValueBYTE*out設定を格納するバイト配列へのポインター。データの型は pType によって決まります。必要な配列のサイズを取得するには NULL を渡します。
pcbLengthWORD*inout入力時は pValue の長さへのポインター。出力時は、このメソッドによって pValue に格納されたバイト数へのポインター。

戻り値

このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
NS_E_NOT_CONFIGURED
入力プロファイルがまだ設定されていません。
E_INVALIDARG
dwInputNum が既存の入力の数より大きい

または

pTypepcbLength、または pszNameNULL です。

解説(Remarks)

取得したい設定ごとに GetInputSetting を 2 回呼び出す必要があります。1 回目の呼び出しでは、pValueNULL を渡します。呼び出しから戻ると、pcbLength が指す値に、設定値を保持するために必要なバッファーサイズが設定されます。その後、バッファー用に必要な量のメモリを割り当て、2 回目の呼び出しでそのポインターを pValue として渡します。

vtbl 15 HRESULT SetInputSetting(DWORD dwInputNum, LPWSTR pszName, WMT_ATTR_DATATYPE Type, BYTE* pValue, WORD cbLength)

SetInputSetting メソッドは、特定の入力に対する名前付き設定を指定します。

dwInputNumDWORDin入力番号を格納する DWORD
pszNameLPWSTRin設定名を格納するワイド文字の null 終端文字列へのポインター。有効な設定の一覧については、Input Settings を参照してください。
TypeWMT_ATTR_DATATYPEinWMT_ATTR_DATATYPE 列挙型の値へのポインター。
pValueBYTE*in設定を格納するバイト配列へのポインター。
cbLengthWORDinpValue のサイズ (バイト単位)。

戻り値

このメソッドは HRESULT を返します。指定できる値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値 説明
S_OK
メソッドは成功しました。
NS_E_NOT_CONFIGURED
入力プロファイルがまだ設定されていません。
E_INVALIDARG
dwInputNum が既存の入力の数より大きい

または

pValue または pszNameNULL です。

NS_E_INVALID_REQUEST
この設定は writer の実行中には変更できません。
E_UNEXPECTED
原因不明のエラーです。

解説(Remarks)

このメソッドで設定したエンコード設定は、出力ファイルには保存されません。カスタムプレーヤーからこの情報にアクセスできるようにするには、その値をファイルヘッダー内のカスタムメタデータ属性として保存する必要があります。

IWMWriter::BeginWriting が呼び出された後に設定できるのは、g_wszDeinterlaceMode、g_wszInitialPatternForInverseTelecine、g_wszInterlacedCoding、および g_wszJPEGCompressionQuality のみです。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IWMWriterAdvanced2 "{962DC1EC-C046-4DB8-9CC7-26CEAE500817}"
#usecom global IWMWriterAdvanced2 IID_IWMWriterAdvanced2 "{}"
#comfunc global IWMWriterAdvanced2_GetInputSetting  14 int,wstr,var,var,var
#comfunc global IWMWriterAdvanced2_SetInputSetting  15 int,wstr,int,var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。