Share via


Interface IMFTranscodeSinkInfoProvider (mfidl.h)

Implémenté par l’objet d’activation du récepteur de transcode.

L’objet d’activation du récepteur de transcode peut être utilisé pour créer l’un des récepteurs de fichiers suivants :

  • Récepteur de fichiers 3GP
  • Récepteur de fichiers MP3
  • Récepteur de fichiers MP4

Héritage

L’interface IMFTranscodeSinkInfoProvider hérite de l’interface IUnknown. IMFTranscodeSinkInfoProvider a également les types de membres suivants :

Méthodes

L’interface IMFTranscodeSinkInfoProvider possède ces méthodes.

 
IMFTranscodeSinkInfoProvider ::GetSinkInfo

Obtient les types de médias pour les flux audio et vidéo spécifiés dans le profil de transcode.
IMFTranscodeSinkInfoProvider ::SetOutputByteStream

Définit un flux d’octets de sortie pour le récepteur multimédia de transcode.
IMFTranscodeSinkInfoProvider ::SetOutputFile

Définit le nom du fichier de sortie encodé.
IMFTranscodeSinkInfoProvider ::SetProfile

Définit le profil de transcodage sur l’objet d’activation du récepteur de transcode.

Remarques

Pour utiliser cette interface, procédez comme suit :

  1. Appelez MFCreateTranscodeSinkActivate pour créer l’objet d’activation du récepteur de transcode.
  2. Interrogez l’objet d’activation pour l’interface IMFTranscodeSinkInfoProvider .
  3. Appelez MFCreateTranscodeProfile pour créer un profil de transcode.
  4. Définissez l’attribut MF_TRANSCODE_CONTAINERTYPE sur le profil de transcode. L’attribut doit avoir l’une des valeurs suivantes :
    • MFTranscodeContainerType_3GP
    • MFTranscodeContainerType_MP3
    • MFTranscodeContainerType_MPEG4
  5. Appelez IMFTranscodeProfile ::SetVideoAttributes et IMFTranscodeProfile ::SetAudioAttributes pour spécifier les formats vidéo et audio.
  6. Appelez IMFTranscodeSinkInfoProvider ::SetProfile pour définir le profil de transcode.
  7. Appelez l’une des méthodes suivantes (mais pas les deux) pour spécifier le fichier de sortie :
  8. Appelez IMFActivate ::ActivateObject sur l’objet d’activation pour créer le récepteur multimédia.

Exemples

// Creates an activation object for the generic transcode sink.

HRESULT CreateTranscodeSinkActivate(
    REFGUID         guidContainerType,
    IMFAttributes   *pVideoAttributes,
    IMFAttributes   *pAudioAttributes,
    IMFActivate     *pByteStreamActivate, 
    IMFActivate     **ppSinkActivate
    )
{
    IMFActivate* pSinkActivate = NULL;
    IMFTranscodeSinkInfoProvider* pSinkInfoProvider = NULL;
    IMFTranscodeProfile* pProfile = NULL;
    IMFAttributes* pContainerAttributes = NULL;

    HRESULT hr = MFCreateAttributes(&pContainerAttributes, 1);
    if (FAILED(hr))
    {
        goto done;
    }

    // Create the transcode profile.
    hr = MFCreateTranscodeProfile(&pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the profile attributes.

    hr = pContainerAttributes->SetGUID(MF_TRANSCODE_CONTAINERTYPE, guidContainerType);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pProfile->SetContainerAttributes(pContainerAttributes);
    if (FAILED(hr))
    {
        goto done;
    }

    if (pVideoAttributes)
    {
        hr = pProfile->SetVideoAttributes(pVideoAttributes);
        if (FAILED(hr))
        {
            goto done;
        }
    }

    if (pAudioAttributes)
    {
        hr = pProfile->SetAudioAttributes(pAudioAttributes);
        if (FAILED(hr))
        {
            goto done;
        }
    }

    // Create the transcode sink activation object.
    hr = MFCreateTranscodeSinkActivate(&pSinkActivate);
    if (FAILED(hr))
    {
        goto done;
    }

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

    // Set the output byte stream.
    hr = pSinkInfoProvider->SetOutputByteStream(pByteStreamActivate);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the transcode profile.
    hr = pSinkInfoProvider->SetProfile(pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Return the activation object to the caller.
    *ppSinkActivate = pSinkActivate;
    (*ppSinkActivate)->AddRef();

done:
    SafeRelease(&pProfile);
    SafeRelease(&pSinkInfoProvider);
    SafeRelease(&pSinkActivate);
    SafeRelease(&pContainerAttributes);
    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 mfidl.h

Voir aussi

MFCreateTranscodeSinkActivate

Interfaces Media Foundation