Share via


Fonction MFCreateASFStreamingMediaSink (wmcontainer.h)

Crée un objet d’activation pour le récepteur de streaming ASF.

Le récepteur de diffusion en continu ASF permet à une application d’écrire des paquets ASF (Advanced Systems Format) dans un flux d’octets HTTP.

Syntaxe

HRESULT MFCreateASFStreamingMediaSink(
  IMFByteStream *pIByteStream,
  IMFMediaSink  **ppIMediaSink
);

Paramètres

pIByteStream

Pointeur vers un objet de flux d’octets dans lequel le récepteur de média ASF écrit le contenu diffusé en continu.

ppIMediaSink

Reçoit un pointeur vers l’interface IMFMediaSink de l’objet récepteur multimédia de streaming ASF. Pour créer le récepteur multimédia, l’application doit appeler IMFActivate ::ActivateObject sur le pointeur reçu. L’appelant doit libérer le pointeur d’interface.

Valeur retournée

Si cette fonction réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Pour créer le récepteur de streaming ASF dans un autre processus, appelez MFCreateASFStreamingMediaSinkActivate.

Une application peut obtenir un pointeur vers l’objet AsF ContentInfo en appelant IUnknown ::QueryInterface sur l’objet récepteur multimédia reçu dans le paramètre ppIMediaSink . L’objet ContentInfo est utilisé pour définir les paramètres de configuration de l’encodeur, fournir les propriétés de flux fournies par un profil ASF et ajouter des informations de métadonnées. Ces paramètres de configuration remplissent les différents objets d’en-tête ASF du fichier ASF encodé. Pour plus d'informations, consultez la rubrique
Définition des propriétés dans l’objet ContentInfo.

Exemples

L’exemple de code suivant montre comment créer un récepteur de média pour une source ASF. Cet exemple copie les paramètres de configuration de flux de la source vers l’objet ContentInfo qui représente l’objet d’en-tête ASF du fichier de sortie.

//  Creates an an instance of the ASF streaming sink.

HRESULT CreateASFStreamingSink(
    IMFMediaSource *pSource, 
    IMFByteStream  *pOutputByteStream, 
    IMFMediaSink   **ppMediaSink
    )
{
    IMFPresentationDescriptor* pSourcePD = NULL;
    IMFASFProfile* pASFProfile = NULL;;
    IMFMediaSink* pMediaSink = NULL;
    IMFASFContentInfo* pASFContentInfo = NULL;

    // Create the streaming media sink for the ASF file
    HRESULT hr = MFCreateASFStreamingMediaSink(pOutputByteStream, &pMediaSink);
    if (FAILED(hr))
    {
        goto done;
    }

    //
    // Transfer the ASF profile from the media source to the sink.
    //

    // Get the presentation descriptor from the source.
    hr = pSource->CreatePresentationDescriptor(&pSourcePD);
    if (FAILED(hr))
    {
        goto done;
    }

    // Convert the presentation descriptor to an ASF profile.
    hr = MFCreateASFProfileFromPresentationDescriptor(pSourcePD, &pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pMediaSink->QueryInterface(IID_PPV_ARGS(&pASFContentInfo));
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile on the sink.
    hr = pASFContentInfo->SetProfile(pASFProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    *ppMediaSink = pMediaSink;
    (*ppMediaSink)->AddRef();

done:
    SafeRelease(&pSourcePD);
    SafeRelease(&pASFProfile);
    SafeRelease(&pASFContentInfo);
    SafeRelease(&pMediaSink);
    return hr;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête wmcontainer.h
Bibliothèque Mf.lib
DLL Mf.dll

Voir aussi

MFCreateASFStreamingMediaSinkActivate

Fonctions Media Foundation