封筒セグメント
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
パラメーター曲線は、MP_ENVELOPE_SEGMENT構造を使用して定義された 1 つ以上のエンベロープ セグメントで構成されます。 この構造体には、次の情報が含まれています。
- 開始時刻と終了時刻。
- 開始値と終了値。
- 曲線の種類 (線形、四角形など)。
- 省略可能なフラグ。簡単に説明します。
クライアントは、 IMediaParams::AddEnvelope メソッドを呼び出し、MP_ENVELOPE_SEGMENT構造体の配列を渡すことによって、エンベロープ セグメント をパラメーターに 追加します。 クライアントは、 メソッドを呼び出す前に、セグメントを昇順で並べ替える必要があります。 DMO がデータを処理する際に、一連の丘を走行する車のように、各エンベロープ セグメント上を移動するパラメーターを想像できます。 IMediaParams::GetParam メソッドは、最新の値を返します。
隣接する 2 つのセグメントの間にギャップがある場合があります。 ギャップの間、パラメーターは次のように以前の値を保持します。
- 最初のセグメントの前の値はニュートラル値です。
- セグメント間の値は、前のセグメントの終了値です。
- 最後のセグメントの後の値は、そのセグメントの終了値のままです。
- クライアントが DMO をフラッシュすると、値はニュートラル値に戻ります。
セグメントを変更するには、次のいずれかのフラグを設定します。
- MPF_ENVLP_BEGIN_CURRENTVAL。 DMO は、 パラメーターの最新の値をセグメントの開始値として使用します。 これは、ニュートラル値、または前のセグメントの終了値である可能性があります。 DMO は、MP_ENVELOPE_SEGMENT構造体の valStart メンバーを無視します。
- MPF_ENVLP_BEGIN_NEUTRALVAL。 DMO は、パラメーターのニュートラル値をセグメントの開始値として使用します。 valStart は無視されます。
これらのフラグは、セグメントの開始点をつかんで上または下に移動すると考えることができますが、終了値は固定されたままです。 セグメントはそれに応じて "ストレッチ" されます。
関連トピック