IMFSAMIStyle
COM公式ドキュメント
SAMI メディアソース上で Synchronized Accessible Media Interchange (SAMI) スタイルを設定および取得します。
解説(Remarks)
このインターフェイスへのポインターを取得するには、IMFGetService::GetService を呼び出します。サービス識別子は MF_SAMI_SERVICE です。GetService は、SAMI メディアソースに対して直接呼び出すか、(SAMI ソースを Media Session と併用している場合は) Media Session に対して呼び出します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
SAMI ファイルで定義されているスタイルの数を取得します。
| pdwCount | DWORD* | out | ファイル内の SAMI スタイルの数を受け取ります。 |
戻り値
このメソッドが成功すると S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
SAMI ファイルで定義されているスタイル名の一覧を取得します。
| pPropVarStyleArray | PROPVARIANT* | out | null 終端されたワイド文字列の配列を受け取る PROPVARIANT へのポインター。PROPVARIANT の型は VT_VECTOR | VT_LPWSTR です。呼び出し側は PropVariantClear を呼び出して PROPVARIANT をクリアする必要があります。 |
戻り値
このメソッドが成功すると S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
SAMI メディアソースに現在のスタイルを設定します。
| pwszStyle | LPWSTR | in | スタイルの名前を格納した null 終端文字列へのポインター。現在のスタイルをクリアするには、空の文字列 ("") を渡します。スタイル名の一覧を取得するには、IMFSAMIStyle::GetStyles を呼び出します。 |
戻り値
このメソッドが成功すると S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
SAMI メディアソースから現在のスタイルを取得します。
| ppwszStyle | LPWSTR* | out | スタイルの名前を格納した null 終端文字列へのポインターを受け取ります。現在スタイルが設定されていない場合、このメソッドは空の文字列を返します。呼び出し側は CoTaskMemFree を呼び出して文字列のメモリを解放する必要があります。 |
戻り値
このメソッドが成功すると S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFSAMIStyle "{A7E025DD-5303-4A62-89D6-E747E1EFAC73}" #usecom global IMFSAMIStyle IID_IMFSAMIStyle "{}" #comfunc global IMFSAMIStyle_GetStyleCount 3 var #comfunc global IMFSAMIStyle_GetStyles 4 var #comfunc global IMFSAMIStyle_SetSelectedStyle 5 wstr #comfunc global IMFSAMIStyle_GetSelectedStyle 6 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IMFSAMIStyle "{A7E025DD-5303-4A62-89D6-E747E1EFAC73}" #usecom global IMFSAMIStyle IID_IMFSAMIStyle "{}" #comfunc global IMFSAMIStyle_GetStyleCount 3 sptr #comfunc global IMFSAMIStyle_GetStyles 4 sptr #comfunc global IMFSAMIStyle_SetSelectedStyle 5 wstr #comfunc global IMFSAMIStyle_GetSelectedStyle 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。