Configuration d’une source multimédia

Lorsque vous utilisez le programme de résolution de source pour créer une source multimédia, vous pouvez spécifier un magasin de propriétés qui contient des propriétés de configuration. Ces propriétés seront utilisées pour initialiser la source du média. L’ensemble des propriétés prises en charge dépend de l’implémentation de la source de média. Toutes les sources de média ne définissent pas les propriétés de configuration.

Le tableau suivant répertorie les propriétés de configuration des sources multimédias fournies dans Media Foundation. Les sources multimédias tierces peuvent définir leurs propres propriétés personnalisées.

Source du média Propriétés
Source réseau Consultez Fonctionnalités de la source réseau.
Source de média ASF

 

Pour configurer une source, procédez comme suit.

  1. Appelez PSCreateMemoryPropertyStore pour créer un magasin de propriétés. Cette fonction retourne un pointeur IPropertyStore .
  2. Appelez IPropertyStore::SetValue pour définir une ou plusieurs propriétés de configuration.
  3. Appelez l’une des fonctions de création du programme de résolution source, telles que IMFSourceResolver::CreateObjectFromURL, puis transmettez le pointeur IPropertyStore dans le paramètre 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;
}

Le programme de résolution de la source transmet le pointeur IPropertyStore directement au gestionnaire de schéma ou au gestionnaire de flux d’octets qui crée la source. Le programme de résolution source ne tente pas de valider les propriétés.

En règle générale, ces propriétés sont utilisées pour les paramètres avancés. Si vous ne fournissez pas de magasin de propriétés, la source de média doit toujours fonctionner correctement avec les paramètres par défaut.

Programme de résolution de source