メディア ソースの構成

Source Resolver を使用してメディア ソースを作成する場合は、構成プロパティを含むプロパティ ストアを指定できます。 これらのプロパティは、メディア ソースの初期化に使用されます。 サポートされるプロパティのセットは、メディア ソースの実装によって異なります。 すべてのメディア ソースで構成プロパティが定義されているわけではありません。

次の表に、Media Foundation で提供されるメディア ソースの構成プロパティを示します。 サードパーティのメディア ソースは、独自のカスタム プロパティを定義できます。

メディア ソース プロパティ
ネットワーク ソース ネットワーク ソース機能に関するページを参照してください。
ASF メディア ソース

 

ソースを構成するには、次の手順を実行します。

  1. PSCreateMemoryPropertyStore を呼び出して、新しいプロパティ ストアを作成します。 この関数は 、IPropertyStore ポインターを返します。
  2. IPropertyStore::SetValue を呼び出して、1 つ以上の構成プロパティを設定します。
  3. IMFSourceResolver::CreateObjectFromURL などのソース リゾルバーの作成関数のいずれかを呼び出し、pProps パラメーターに IPropertyStore ポインターを渡します。
// Creates a media source from a URL.

HRESULT CreateMediaSource(
    PCWSTR pszURL, 
    IPropertyStore *pConfig,    // Optional, can be NULL
    IMFMediaSource **ppSource
    )
{
    IMFSourceResolver* pSourceResolver = NULL;
    IUnknown* pSource = NULL;

    // Create the source resolver.
    HRESULT hr = MFCreateSourceResolver(&pSourceResolver);

    // Use the source resolver to create the media source.
    if (SUCCEEDED(hr))
    {
        MF_OBJECT_TYPE ObjectType;

        DbgLog(L"CreateObjectFromURL");

        hr = pSourceResolver->CreateObjectFromURL(
            pszURL,                     
            MF_RESOLUTION_MEDIASOURCE,  // Create a media source.
            pConfig,                    // Configuration properties.
            &ObjectType,                // Receives the object type. 
            &pSource            
            );

        DbgLog(L"CreateObjectFromURL - FINISHED");

    }

    if (SUCCEEDED(hr))
    {
        hr = pSource->QueryInterface(IID_PPV_ARGS(ppSource));
    }

    SafeRelease(&pSourceResolver);
    SafeRelease(&pSource);
    return hr;
}

ソース リゾルバーは、 IPropertyStore ポインターを、ソースを作成するスキーム ハンドラーまたはバイト ストリーム ハンドラーに直接渡します。 ソース リゾルバーは、プロパティの検証を試みない。

一般に、これらのプロパティは詳細設定に使用されます。 プロパティ ストアを指定しない場合でも、メディア ソースは既定の設定で正しく機能するはずです。

ソース リゾルバー