Microsoft DirectX 8.0 |
IPersistMediaPropertyBag インターフェイスは、AVI (Audio-Video Interleaved) ストリームの INFO チャンクおよび DISP チャンクを設定および取得する。このインターフェイスは、IMediaPropertyBag インターフェイスを使用して、チャンクを名前/値ペアとして格納する。
AVI スプリッタ フィルタおよび WAV パーサー フィルタは、AVI ファイルまたは WAV ファイルから INFO チャンクおよび DISP チャンクを読み取るため、このインターフェイスをサポートする。AVI Mux フィルタは、これらのチャンクをファイルに書き込むため、このインターフェイスをサポートする。
IPersistMediaPropertyBag は、IPersistPropertyBag インターフェイスを原型にしているが、継承はしていない。詳細については、Platform SDK を参照すること。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IPersistMediaPropertyBag メソッド 説明 InitNew メディア ファイルのヘッダー情報を保持する新しいプロパティ バッグを初期化する。 Load メディア ファイルからプロパティを取得し、それをプロパティ バッグに格納する。 Save メディア ファイルのプロパティを保存する。
新しいプロパティを受け取るオブジェクトを初期化する。
構文
HRESULT InitNew(void);
戻り値
S_OK を返す。
注意
AVI Mux フィルタのこのメソッドを呼び出すと、Load メソッドを使用して直前に設定されたプロパティがすべて消去される。
メディア プロパティ バッグからフィルタにプロパティをロードする。
構文
HRESULT Load( IMediaPropertyBag *pPropBag IErrorLog *pErrorLog );
パラメータ
- pPropBag
- [in] 呼び出し元で作成したメディア プロパティ バッグの IMediaPropertyBag インターフェイスへのポインタ。
- pErrorLog
- [in] 予約済み。値に NULL を設定する。
戻り値
HRESULT 値を返す。設定される値は次のとおりである。
S_OK 成功。 E_POINTER NULL ポインタ引数。 STG_E_ACCESSDENIED アクセスが拒否された。 VFW_E_WRONG_STATE フィルタ グラフが停止状態にない。
注意
AVI ストリームにプロパティを書き込むには、AVI Mux フィルタのこのメソッドを呼び出す。次のサンプル コードは、ストリームに IART (作者名) INFO チャンクを書き込む方法を示す。
IPersistMediaPropertyBag *pPersist = NULL; IMediaPropertyBag *pBag = NULL; VARIANT val; // AVI Mux フィルタに IPersistMediaPropertyBag (非表示) を照会する。 CoCreateInstance(CLSID_MediaPropertyBag, NULL, CLSCTX_INPROC, IID_IMediaPropertyBag, (LPVOID *)&pBag); val.vt = VT_BSTR; val.bstrVal = SysAllocString(L"Author Name"); pBag->Write(L"INFO/IART", &val); pPersist->Load(pBag, NULL); VariantClear(&val);
フィルタからのプロパティをメディア プロパティ バッグに保存する。
構文
HRESULT Save( IMediaPropertyBag *pPropBag BOOL fClearDirty BOOL fSaveAllProperties );
パラメータ
- pPropBag
- [in] 呼び出し元で作成したメディア プロパティ バッグの IMediaPropertyBag インターフェイスへのポインタ。
- fClearDirty
- [in] 予約済み。任意の値。
- fSaveAllProperties
- [in] 予約済み。任意の値。
戻り値
HRESULT 値を返す。設定される値は次のとおりである。
S_OK 成功。 E_NOTIMPL 実装されていない。 E_OUTOFMEMORY メモリ不足。 HRESULT_FROM_WIN32(ERROR_INVALID_DATA) 無効なデータ。
注意
AVI スプリッタ フィルタまたは WAV パーサーのこのメソッドを呼び出すと、フィルタはファイルから INFO チャンクおよび DISP チャンクを読み取り、それをメディア プロパティ バッグに格納する。これらのチャンクを取得するには、IMediaPropertyBag::Read メソッドまたは IMediaPropertyBag::EnumProperty メソッドを使用する。
AVI Mux フィルタはこのメソッドを実装しない。