Fonction MFCreateTranscodeProfile (mfidl.h)

Crée un objet de profil de transcode vide.

Le profil de transcode stocke les paramètres de configuration du fichier de sortie. Ces paramètres de configuration sont spécifiés par l’appelant et incluent les propriétés de flux audio et vidéo, les paramètres d’encodeur et les paramètres de conteneur. Pour définir ces propriétés, l’appelant doit appeler les méthodes IMFTranscodeProfile appropriées.

Le profil de transcode configuré est passé à la fonction MFCreateTranscodeTopology . Le générateur de topologie sous-jacent utilise ces paramètres pour générer la topologie de transcode.

Syntaxe

HRESULT MFCreateTranscodeProfile(
  [out] IMFTranscodeProfile **ppTranscodeProfile
);

Paramètres

[out] ppTranscodeProfile

Reçoit un pointeur vers l’interface IMFTranscodeProfile de l’objet de profil de transcode. L’appelant doit libérer l’interface.

Valeur retournée

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

Notes

La fonction MFCreateTranscodeProfile crée un profil de transcode vide. Vous devez configurer les attributs des paramètres de profil de transcode qui définissent les types de médias et les propriétés du conteneur. Utilisez les méthodes suivantes pour configurer le profil :

Pour obtenir un exemple de code qui utilise cette fonction, consultez les rubriques suivantes :

Exemples

L’exemple suivant crée un profil de transcode pour Windows Media Audio (WMA).

template <class Q>
HRESULT GetCollectionObject(IMFCollection *pCollection, DWORD index, Q **ppObj)
{
    IUnknown *pUnk;
    HRESULT hr = pCollection->GetElement(index, &pUnk);
    if (SUCCEEDED(hr))
    {
        hr = pUnk->QueryInterface(IID_PPV_ARGS(ppObj));
        pUnk->Release();
    }
    return hr;
}

HRESULT CreateTranscodeProfile(IMFTranscodeProfile **ppProfile)
{
    IMFTranscodeProfile *pProfile = NULL;     // Transcode profile.
    IMFCollection   *pAvailableTypes = NULL;  // List of audio media types.
    IMFMediaType    *pAudioType = NULL;       // Audio media type.
    IMFAttributes   *pAudioAttrs = NULL;      // Copy of the audio media type.
    IMFAttributes   *pContainer = NULL;       // Container attributes.

    DWORD dwMTCount = 0;
    
    // Create an empty transcode profile.
    HRESULT hr = MFCreateTranscodeProfile(&pProfile);
    if (FAILED(hr))
    {
        goto done;
    }

    // Get output media types for the Windows Media audio encoder.

    // Enumerate all codecs except for codecs with field-of-use restrictions.
    // Sort the results.

    DWORD dwFlags = 
        (MFT_ENUM_FLAG_ALL & (~MFT_ENUM_FLAG_FIELDOFUSE)) | 
        MFT_ENUM_FLAG_SORTANDFILTER;

    hr = MFTranscodeGetAudioOutputAvailableTypes(MFAudioFormat_WMAudioV9, 
        dwFlags, NULL, &pAvailableTypes);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pAvailableTypes->GetElementCount(&dwMTCount);
    if (FAILED(hr))
    {
        goto done;
    }
    if (dwMTCount == 0)
    {
        hr = E_FAIL;
        goto done;
    }

    // Get the first audio type in the collection and make a copy.
    hr = GetCollectionObject(pAvailableTypes, 0, &pAudioType);
    if (FAILED(hr))
    {
        goto done;
    }

    hr = MFCreateAttributes(&pAudioAttrs, 0);       
    if (FAILED(hr))
    {
        goto done;
    }

    hr = pAudioType->CopyAllItems(pAudioAttrs);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the audio attributes on the profile.
    hr = pProfile->SetAudioAttributes(pAudioAttrs);
    if (FAILED(hr))
    {
        goto done;
    }

    // Set the container attributes.
    hr = MFCreateAttributes(&pContainer, 1);
    if (FAILED(hr))
    {
        goto done;
    }

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

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

    *ppProfile = pProfile;
    (*ppProfile)->AddRef();

done:
    SafeRelease(&pProfile);
    SafeRelease(&pAvailableTypes);
    SafeRelease(&pAudioType);
    SafeRelease(&pAudioAttrs);
    SafeRelease(&pContainer);
    return hr;
}

Configuration requise

   
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
Bibliothèque Mf.lib
DLL Mf.dll

Voir aussi

IMFTranscodeProfile

MFTranscodeGetAudioOutputAvailableTypes

Fonctions Media Foundation

Transcode API