Microsoft DirectX 8.0

IMediaParams インターフェイス

オブジェクトのエンベロープ フォロー パラメータを取得する。

オーバーヘッドを減らすために、パラメータはインデックス値によって参照され、すべてのパラメータ値は MP_DATA 型として定義される 32 ビットである。指定されたパラメータが整数、浮動小数点値、ブール値、または列挙型のメンバのいずれであるかを確認するには、IMediaParamInfo インターフェイスを使用する。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterfaceサポートされているインターフェイスへのポインタを取得する。
AddRef参照カウントの値を増やす。
Release参照カウントの値を減らす。
IMediaParams メソッド説明
GetParam指定されたパラメータの最新の値を取得する。
SetParamパラメータの値を設定する。
AddEnvelopeパラメータにエンベロープを追加する。
FlushEnvelope指定されたパラメータのエンベロープ データを指定された時間の範囲でフラッシュする。
SetTimeFormatオブジェクトのタイム フォーマットを指定する。

IMediaParams::GetParam

IMediaParams インターフェイス

指定されたパラメータの現在の値を取得する。パラメータが現在エンベロープ セグメント内にある場合は、戻り値は最後に処理されたサンプルの値である。

構文

HRESULT GetParam(
    DWORD dwParamIndex,
    MP_DATA *pValue
);

パラメータ

dwParamIndex
[in] パラメータのゼロベースのインデックス。
pValue
[out] パラメータ値を受け取る MP_DATA 型の変数へのポインタ。

戻り値

HRESULT 値を返す。返される値は次のとおり。

S_OK成功。
E_INVALIDARG範囲外のインデックス。
E_POINTERNULL ポインタ引数。

注意

このオブジェクトによってサポートされるパラメータをインデックス値とともに列挙するには、IMediaParamInfo インターフェイスを使用すること。

IMediaParams::SetParam

IMediaParams インターフェイス

パラメータの値を設定する。

構文

HRESULT SetParam(
    DWORD dwParamIndex,
    MP_DATA value
);

パラメータ

dwParamIndex
[in] パラメータのゼロベースのインデックス、またはすべてのパラメータに値を適用する DWORD_ALLPARAMS。
value
[in] パラメータの新しい値。

戻り値

HRESULT 値を返す。返される値は次のとおり。

S_OK成功。
E_INVALIDARG範囲外のインデックス、またはパラメータ値が無効。

注意

パラメータが現在エンベロープ セグメント内にある場合、エンベロープ セグメントは新しい値をオーバーライドする。エンベロープ セグメントを削除するには、FlushEnvelope メソッドを呼び出すこと。

このオブジェクトによってサポートされるパラメータをインデックス値とともに列挙するには、IMediaParamInfo インターフェイスを使用すること。

IMediaParams::AddEnvelope

IMediaParams インターフェイス

パラメータにエンベロープを追加する。

構文

HRESULT AddEnvelope(
    DWORD dwParamIndex,
    DWORD cPoints,
    MP_ENVELOPE *pEnvelope,
);

パラメータ

dwParamIndex
[in] インデックスのゼロベースのインデックス、またはすべてのパラメータにエンベロープを追加する DWORD_ALLPARAMS。
cPoints
[in] エンベロープ内のセグメントの数。
pEnvelope
[in] エンベロープ セグメントを定義する MP_ENVELOPE 構造体の配列。配列のサイズは cPoints パラメータで指定する。

戻り値

HRESULT 値を返す。返される値は次のとおり。

S_OK成功。
E_INVALIDARG範囲外のインデックス。
E_OUTOFMEMEORYメモリ不足。
E_POINTERNULL ポインタ引数。

注意

エンベロープが既存のエンベロープとオーバーラップするときは、新しいエンベロープが優先される。

このオブジェクトによってサポートされるパラメータをインデックス値とともに列挙するには、IMediaParamInfo インターフェイスを使用すること。

IMediaParams::FlushEnvelope

IMediaParams インターフェイス

指定されたパラメータのエンベロープ データを指定された時間の範囲でフラッシュする。

構文

HRESULT FlushEnvelope(
    DWORD dwParamIndex,
    REFERENCE_TIME refTimeStart,
    REFERENCE_TIME refTimeEnd
);

パラメータ

dwParamIndex
[in] パラメータのゼロベースのインデックス、またはすべてのパラメータのエンベロープ データをフラッシュする DWORD_ALLPARAMS。
refTimeStart
[in] エンベロープ データのフラッシュを開始する時間。
refTimeEnd
[in] エンベロープ データのフラッシュを停止する時間。

戻り値

HRESULT 値を返す。返される値は次のとおり。

S_OK成功。
E_INVALIDARG範囲外のインデックス。

注意

refTimeStartrefTimeEnd によって指定された時間の範囲がエンベロープ セグメントでオーバーラップする場合は、セグメント全体がフラッシュされる。一方、エンベロープ セグメントの境界にあたる場合は、セグメント全体が保持される。つまり、次のようになる。

このオブジェクトによってサポートされるパラメータをインデックス値とともに列挙するには、IMediaParamInfo インターフェイスを使用すること。

IMediaParams::SetTimeFormat

IMediaParams インターフェイス

オブジェクトのタイム フォーマットを指定する。

構文

HRESULT SetTimeFormat(
    GUID guidTimeFormat,
    MP_TIMEDATA mpTimeData
);

パラメータ

guidTimeFormat
[in] タイム フォーマットを指定するタイム フォーマット GUID
mpTimeData
[in] 新しいフォーマットの単位を指定する MP_TIMEDATA 型の値。

戻り値

HRESULT 値を返す。返される値は次のとおり。

S_OK成功。
E_DMOTIMESTAMPFORMATオブジェクトはこのタイム フォーマットをサポートしていない。

注意

オブジェクトは複数のタイム フォーマットをサポートできる。すべてのオブジェクトは、100 ナノ秒 (ns) 単位の基準タイムをサポートする必要がある。その他のフォーマットはオプションである。アプリケーションは、入力バッファのタイム スタンプが、このメソッドを使用して設定されたタイム フォーマットに一致することを保証しなければならない。

mpTimeData パラメータの値は、guidTimeFormat パラメータの値によって異なる。

タイム フォーマットタイム データの意味
GUID_TIME_REFERENCE無視される。
GUID_TIME_MUSIC四分音符 1 個あたりのパート数。
GUID_TIME_SAMPLES1 秒あたりのサンプル数。

このメソッドを呼び出す場合は、FlushEnvelope メソッドも呼び出し、前のタイム フォーマットを使用して設定されたエンベロープをフラッシュする。

オブジェクトがどのタイム フォーマットをサポートしているかを確認するには、IMediaParamInfo::GetSupportedTimeFormat メソッドを呼び出す。現在のフォーマットを取得するには、IMediaParamInfo::GetCurrentTimeFormat メソッドを呼び出す。