Настройка источника мультимедиа

При использовании сопоставителя источников для создания источника мультимедиа можно указать хранилище свойств, содержащее свойства конфигурации. Эти свойства будут использоваться для инициализации источника мультимедиа. Набор поддерживаемых свойств зависит от реализации источника мультимедиа. Не каждый источник мультимедиа определяет свойства конфигурации.

В следующей таблице перечислены свойства конфигурации для источников мультимедиа, предоставляемых в Media Foundation. Сторонние источники мультимедиа могут определять собственные настраиваемые свойства.

Источник мультимедиа Свойства
Источник сети См. статью Функции источника сети.
Источник мультимедиа ASF

 

Чтобы настроить источник, выполните следующие действия.

  1. Вызовите PSCreateMemoryPropertyStore , чтобы создать новое хранилище свойств. Эта функция возвращает указатель IPropertyStore .
  2. Вызовите IPropertyStore::SetValue , чтобы задать одно или несколько свойств конфигурации.
  3. Вызовите одну из функций создания сопоставителя источника, например IMFSourceResolver::CreateObjectFromURL, и передайте указатель IPropertyStore в параметре 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;
}

Сопоставитель источника передает указатель IPropertyStore непосредственно обработчику схемы или обработчику потока байтов, который создает источник. Сопоставитель источника не пытается проверить свойства.

Как правило, эти свойства используются для дополнительных параметров. Если вы не предоставляете хранилище свойств, источник мультимедиа по-прежнему должен правильно работать с параметрами по умолчанию.

Сопоставитель источника