Microsoft DirectX 8.0

IPersistMediaPropertyBag インターフェイス

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 メディア ファイルのプロパティを保存する。

IPersistMediaPropertyBag::InitNew

IPersistMediaPropertyBag インターフェイス

新しいプロパティを受け取るオブジェクトを初期化する。

構文

HRESULT InitNew(void);

戻り値

S_OK を返す。

注意

AVI Mux フィルタのこのメソッドを呼び出すと、Load メソッドを使用して直前に設定されたプロパティがすべて消去される。

AVI スプリッタ フィルタまたは WAV パーサーのこのメソッドは、呼び出しても効果がない。

IPersistMediaPropertyBag::Load

IPersistMediaPropertyBag インターフェイス

メディア プロパティ バッグからフィルタにプロパティをロードする。

構文

HRESULT Load(
    IMediaPropertyBag *pPropBag
    IErrorLog *pErrorLog
);

パラメータ

pPropBag
[in] 呼び出し元で作成したメディア プロパティ バッグの IMediaPropertyBag インターフェイスへのポインタ。
pErrorLog
[in] 予約済み。値に NULL を設定する。

戻り値

HRESULT 値を返す。設定される値は次のとおりである。

S_OK成功。
E_POINTERNULL ポインタ引数。
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);

AVI スプリッタ フィルタおよび WAV パーサーは、このメソッドをサポートしない。

IPersistMediaPropertyBag::Save

IPersistMediaPropertyBag インターフェイス

フィルタからのプロパティをメディア プロパティ バッグに保存する。

構文

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 フィルタはこのメソッドを実装しない。