Funzione MFCreateTranscodeProfile (mfidl.h)
Crea un oggetto profilo di transcode vuoto.
Il profilo di transcode archivia le impostazioni di configurazione per il file di output. Queste impostazioni di configurazione vengono specificate dal chiamante e includono proprietà del flusso audio e video, impostazioni del codificatore e impostazioni del contenitore. Per impostare queste proprietà, il chiamante deve chiamare i metodi FMTranscodeProfile appropriati.
Il profilo transcode configurato viene passato alla funzione MFCreateTranscodeTopology . Il generatore di topologie sottostante usa queste impostazioni per compilare la topologia transcodifica.
Sintassi
HRESULT MFCreateTranscodeProfile(
[out] IMFTranscodeProfile **ppTranscodeProfile
);
Parametri
[out] ppTranscodeProfile
Riceve un puntatore all'interfaccia FMTranscodeProfile dell'oggetto profilo transcode. Il chiamante deve rilasciare l'interfaccia.
Valore restituito
Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Commenti
La funzione MFCreateTranscodeProfile crea un profilo transcode vuoto. È necessario configurare gli attributi dell'impostazione del profilo transcode che definiscono i tipi di supporto e le proprietà del contenitore. Usare i metodi seguenti per configurare il profilo:
- FMTranscodeProfile::SetAudioAttributes
- FMTranscodeProfile::SetVideoAttributes
- FMTranscodeProfile::SetContainerAttributes
Esempio
Nell'esempio seguente viene creato un profilo di transcode per 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;
}
Requisiti
Client minimo supportato | Windows 7 [solo app desktop] |
Server minimo supportato | Windows Server 2008 R2 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mfidl.h |
Libreria | Mf.lib |
DLL | Mf.dll |