Mengonfigurasi Sumber Media

Saat Anda menggunakan Pemecah Masalah Sumber untuk membuat sumber media, Anda bisa menentukan penyimpanan properti yang berisi properti konfigurasi. Properti ini akan digunakan untuk menginisialisasi sumber media. Kumpulan properti yang didukung tergantung pada implementasi sumber media. Tidak setiap sumber media mendefinisikan properti konfigurasi.

Tabel berikut mencantumkan properti konfigurasi untuk sumber media yang disediakan di Media Foundation. Sumber media pihak ketiga dapat menentukan properti kustom mereka sendiri.

Sumber media Properti
Sumber jaringan Lihat Fitur Sumber Jaringan.
Sumber media ASF

 

Untuk mengonfigurasi sumber, lakukan langkah-langkah berikut.

  1. Panggil PSCreateMemoryPropertyStore untuk membuat penyimpanan properti baru. Fungsi ini mengembalikan pointer IPropertyStore .
  2. Panggil IPropertyStore::SetValue untuk mengatur satu atau beberapa properti konfigurasi.
  3. Panggil salah satu fungsi pembuatan pemecah masalah sumber, seperti IMFSourceResolver::CreateObjectFromURL, dan lewati pointer IPropertyStore di parameter pProps .
// 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;
}

Pemecah masalah sumber meneruskan penunjuk IPropertyStore langsung ke handler skema atau handler byte-stream yang membuat sumber. Pemecah masalah sumber tidak berupaya memvalidasi properti.

Umumnya, properti ini digunakan untuk pengaturan tingkat lanjut. Jika Anda tidak menyediakan penyimpanan properti, sumber media masih harus berfungsi dengan benar dengan pengaturan default.

Pemecah Masalah Sumber