IConfigAsfWriter
COM公式ドキュメント
IConfigAsfWriter インターフェースは、WM ASF Writer フィルターを構成します。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ConfigureFilterUsingProfileId メソッドは、WM ASF Writer フィルターに Windows Media Format 4.0 プロファイルを設定します。このメソッドは非推奨です。プロファイルの設定には IConfigAsfWriter::ConfigureFilterUsingProfile メソッドを使用してください。
| dwProfileId | DWORD | in | Windows Media Format SDK バージョン 4.0 で定義されているプロファイル ID。 |
戻り値
次のいずれかの HRESULT 値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| プロファイルが無効です。 | |
| フィルターグラフが停止しています。 |
解説(Remarks)
このメソッドは、バージョン 4.0 の Windows Media Format SDK プロファイルを前提としているため、現在では廃止されています。
GetCurrentProfileId メソッドは、フィルターが Windows Media Format 4.0 プロファイルを使用している場合に限り、WM ASF Writer フィルターのプロファイルの識別子を取得します。(非推奨)
| pdwProfileId | DWORD* | out | 現在のプロファイル ID を受け取ります。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、バージョン 4.0 の Windows Media Format SDK プロファイルにのみ適用されるため、廃止されています。現在のプロファイルを取得するには、IConfigAsfWriter::GetCurrentProfile を呼び出してください。
ConfigureFilterUsingProfileGuid メソッドは、WM ASF Writer フィルターに定義済みのシステムプロファイルを設定します。このメソッドは非推奨です。プロファイルの設定には IConfigAsfWriter::ConfigureFilterUsingProfile メソッドを使用してください。
| guidProfile | GUID* | in | ヘッダーファイル Wmsysprf.h で定義されているプロファイル GUID。 |
戻り値
次のいずれかの HRESULT 値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| プロファイルが無効です。 | |
| フィルターグラフが停止しています。 |
解説(Remarks)
Windows Media Format 9 Series SDK 以降、新しいシステムプロファイルは定義されていません。このメソッドでは、バージョン 8(またはそれ以前)のシステムプロファイル GUID のみを使用できます。
GetCurrentProfileGuid メソッドは、WM ASF Writer フィルターの現在のシステムプロファイルが存在する場合、その GUID を取得します。(非推奨)
| pProfileGuid | GUID* | out | システムプロファイルの GUID を受け取ります。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、WM ASF Writer フィルターがシステムプロファイルで構成されている場合にのみ適用されます。アプリケーションがシステムプロファイルの代わりに独自の ASF プロファイルを指定した場合(こちらが推奨されます)、プロファイル GUID は GUID_NULL になります。現在のプロファイルを取得するには、IConfigAsfWriter::GetCurrentProfile を呼び出してください。
ConfigureFilterUsingProfile メソッドは、WM ASF Writer フィルターに ASF プロファイルを設定します。このメソッドは、WM ASF Writer フィルターにプロファイルを設定するための推奨される方法です。
| pProfile | IWMProfile* | in | プロファイルの IWMProfile インターフェースへのポインター。 |
戻り値
次のいずれかの HRESULT 値を返します。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| グラフが停止しています。 | |
| IWMProfile インターフェースポインターが無効です。 |
解説(Remarks)
IWMProfile インターフェースについては、Windows Media Format SDK で説明されています。
成功した場合、このメソッドはアプリケーションに EC_GRAPH_CHANGED イベントを送信します。
GetCurrentProfile メソッドは、WM ASF Writer フィルターから現在の ASF プロファイルを取得します。
| ppProfile | IWMProfile** | out | プロファイルの IWMProfile インターフェースへのポインターを受け取ります。呼び出し側はこのインターフェースを解放する必要があります。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は HRESULT エラーコードを返します。
SetIndexMode メソッドは、WM ASF Writer フィルターが時間インデックス付きのファイルを作成するかどうかを制御します。
| bIndexFile | BOOL | in | インデックスモードを指定します。TRUE の場合、ファイルはインデックス付きになります。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
既定では、WM ASF Writer フィルターは時間インデックス付きの ASF ファイルを作成します。インデックス処理はグラフが停止したときに実行されます。後処理として独自のフレームベースのインデックス作成を行いたい場合は、この動作を無効にできます。フレームインデックス付きのファイルを作成するには、SetIndexMode を値 FALSE で呼び出してファイルを作成し、その後 Windows Media Format SDK のメソッドを使用してファイルのフレームベースのインデックスを作成します。
GetIndexMode メソッドは、現在のインデックスモードを取得します。
| pbIndexFile | BOOL* | out | インデックスモードの設定を受け取ります。TRUE の値は、WM ASF Writer がインデックス付きファイルを書き込むように構成されていることを示します。 |
戻り値
成功した場合は S_OK を返し、それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
WM ASF Writer が現在インデックス付き ASF ファイルを書き込むように構成されているかどうかを判断するには、このメソッドを使用します。詳細については、IConfigAsfWriter::SetIndexMode を参照してください。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IConfigAsfWriter "{45086030-F7E4-486A-B504-826BB5792A3B}" #usecom global IConfigAsfWriter IID_IConfigAsfWriter "{}" #comfunc global IConfigAsfWriter_ConfigureFilterUsingProfileId 3 int #comfunc global IConfigAsfWriter_GetCurrentProfileId 4 var #comfunc global IConfigAsfWriter_ConfigureFilterUsingProfileGuid 5 var #comfunc global IConfigAsfWriter_GetCurrentProfileGuid 6 var #comfunc global IConfigAsfWriter_ConfigureFilterUsingProfile 7 sptr #comfunc global IConfigAsfWriter_GetCurrentProfile 8 sptr #comfunc global IConfigAsfWriter_SetIndexMode 9 int #comfunc global IConfigAsfWriter_GetIndexMode 10 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IConfigAsfWriter "{45086030-F7E4-486A-B504-826BB5792A3B}" #usecom global IConfigAsfWriter IID_IConfigAsfWriter "{}" #comfunc global IConfigAsfWriter_ConfigureFilterUsingProfileId 3 int #comfunc global IConfigAsfWriter_GetCurrentProfileId 4 sptr #comfunc global IConfigAsfWriter_ConfigureFilterUsingProfileGuid 5 sptr #comfunc global IConfigAsfWriter_GetCurrentProfileGuid 6 sptr #comfunc global IConfigAsfWriter_ConfigureFilterUsingProfile 7 sptr #comfunc global IConfigAsfWriter_GetCurrentProfile 8 sptr #comfunc global IConfigAsfWriter_SetIndexMode 9 int #comfunc global IConfigAsfWriter_GetIndexMode 10 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。