MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES 属性

トポロジ ローダーで、メディア ソースによって提供されるメディアの種類を列挙するかどうかを指定します。

データ型

UINT32

次のいずれかの値を使用します。

意味
FALSE
ソース メディアの種類を列挙しません。
TRUE
ソース メディアの種類を列挙します。

 

取得/設定

この属性を取得するには、IMFAttributes::GetUINT32 を呼び出します。

この属性を設定するには、IMFAttributes::SetUINT32 を呼び出します。

適用対象

IMFTopology

解説

メディア ソース上の各ストリームで、複数のメディアの種類を提供できます。 種類の一覧は、ストリーム記述子の IMFMediaTypeHandler インターフェイスを使用して列挙されます。

トポロジ ローダーでメディア ソースのメディアの種類が試される順序は、次の 2 つの属性によって制御されます。

MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES 属性が FALSE であるか設定されていない場合、トポロジ ローダーではストリームの現在のメディアの種類を使用します。 この場合、候補の種類の一覧は列挙されません。 現在のメディアの種類がダウンストリームのトポロジ ノードと互換性がなく、デコーダー/コンバーターの組み合わせが見つからない場合、トポロジの解決は失敗します。

MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES 属性が TRUE の場合、トポロジ ローダーでは、互換性のある種類が見つかるまでソースのメディアの種類を列挙します。 その場合、操作の正確な順序は、ソース ノードのMF_TOPONODE_CONNECT_METHOD 属性に MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES フラグが含まれているかどうかによって異なります。

MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES が TRUE であり、MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES フラグが設定されている場合、トポロジ ローダーでは、次のように、各メディアの種類に対する処理をすべて終えてから次に進みます。

foreach media type T
    connect directly using T
    if failed, connect with converters using T
    if failed, connect with decoders using T

MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES が TRUE であり、MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES が設定されていない場合、トポロジ ローダーでは、各メディアの種類との直接接続を試み、次にコンバーターを使用して各メディアの種類を試し、最後にデコーダーを使用して各メディアの種類を試します。

foreach media type T
    connect directly using T
if failed,
    foreach media type T
        connect with converters using T
if failed
    foreach media type T
        connect with decoders using T

MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES が FALSE の場合、MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES フラグは無視されます。

既存のアプリケーションとの互換性を確保するために、MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES の既定値は FALSE です。

この属性の GUID 定数は mfuuid.lib からエクスポートされます。

MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES フラグを示す例を次に示します。 トポロジで MF_TOPOLOGY_ENUMERATE_SOURCE_TYPES 属性が TRUE に設定されているとします。

メディア ソースには、次の種類が用意されています。

  • T1、T2、T3

メディア シンクでは、次の種類を受け入れます。

  • T3、T4

ケース 1: MF_CONNECT_RESOLVE_INDEPENDENT_OUTPUTTYPES フラグが設定されている。

  1. トポロジ ローダーでは、T1 との直接接続を試みます。 T1 がシンクによって拒否されます。
  2. トポロジ ローダーでは、T1 を受け入れ、T4 を出力するデコーダーを挿入します。 T4 がシンクによって受け入れられます。
  3. 最終的なトポロジに含まれるのは、メディア ソース → デコーダー → メディア シンクです。

ケース 2: このフラグが設定されていない。

  1. トポロジ ローダーでは、T1 との直接接続を試みます。 T1 がシンクによって拒否されます。
  2. トポロジ ローダーでは、T2 との直接接続を試みます。 T2 がシンクによって拒否されます。
  3. トポロジ ローダーでは、T3 との直接接続を試みます。 T3 がシンクによって受け入れられます。
  4. 最終的なトポロジに含まれるのは、メディア ソース → メディア シンクです。

要件

要件 Value
サポートされている最小のクライアント
Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows Server 2008 R2 [デスクトップ アプリのみ]
Header
Mfidl.h

関連項目

Media Foundation 属性のアルファベット順の一覧

トポロジ属性