次の方法で共有


IMFTransform::SetOutputBounds メソッド (mftransform.h)

クライアントが出力に必要とするタイム スタンプの範囲を設定します。

構文

HRESULT SetOutputBounds(
  LONGLONG hnsLowerBound,
  LONGLONG hnsUpperBound
);

パラメーター

hnsLowerBound

最も古いタイム スタンプを指定します。 Media Foundation 変換 (MFT) は、この時点で開始される出力サンプルを生成できるようになるまで入力を受け入れます。または、この時点以降に終了するサンプルを生成できるようになるまで。 下限がない場合は 、MFT_OUTPUT_BOUND_LOWER_UNBOUNDED値を使用します。

hnsUpperBound

最新のタイム スタンプを指定します。 MFT では、この時刻より後にタイムスタンプを含む出力サンプルは生成されません。 上限がない場合は、 MFT_OUTPUT_BOUND_UPPER_UNBOUNDED値を使用します。

戻り値

このメソッドは HRESULT を返します。 有効な値を次の表に示しますが、これ以外にもあります。

リターン コード 説明
S_OK
メソッドが成功しました。
E_NOTIMPL
実装されていません。
MF_E_TRANSFORM_TYPE_NOT_SET
メディアの種類が 1 つ以上のストリームに設定されていません。

解説

このメソッドは、プリロールを最適化するために使用できます。特に、タイムスタンプ間にギャップがある形式や、データが同期ポイント (MPEG-2 など) で開始する必要がある形式で使用できます。 このメソッドの呼び出しは省略可能であり、MFT によるこのメソッドの実装は省略可能です。 MFT で メソッドが実装されていない場合、戻り値は E_NOTIMPL

MFT がこのメソッドを実装する場合は、出力データを hnsLowerBoundhnsUpperBound で指定された時間の範囲に制限する必要があります。 MFT は、この範囲内で出力を生成するために必要のない入力データを破棄します。 サンプル境界が範囲と完全に一致しない場合は、可能であれば、MFT で出力サンプルを分割する必要があります。 それ以外の場合、出力サンプルは範囲と重複する可能性があります。

たとえば、出力範囲が 100 ~ 150 ミリ秒 (ミリ秒) で、出力形式がビデオであり、各フレームが 33 ミリ秒続いているとします。 タイムスタンプが 67 ミリ秒のサンプルは、範囲 (67 + 33 = 100) と重なり、出力として生成されます。 タイム スタンプが 66 ミリ秒のサンプルは破棄されます (66 + 33 = 99)。 同様に、タイムスタンプが 150 ミリ秒のサンプルが出力として生成されますが、タイム スタンプが 151 のサンプルは破棄されます。

mftransform.h を含める前に MFT_UNIQUE_METHOD_NAMES が定義されている場合、このメソッドの名前は MFTSetOutputBounds に変更されます。 「ハイブリッド DMO/MFT オブジェクトの作成」を参照してください

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
対象プラットフォーム Windows
ヘッダー mftransform.h
Library Mfuuid.lib

関連項目

IMFTransform

Media Foundation の変換