Fungsi MFCreateTranscodeProfile (mfidl.h)
Membuat objek profil transkode kosong.
Profil transkode menyimpan pengaturan konfigurasi untuk file output. Pengaturan konfigurasi ini ditentukan oleh pemanggil, dan menyertakan properti aliran audio dan video, pengaturan encoder, dan pengaturan kontainer. Untuk mengatur properti ini, pemanggil harus memanggil metode IMFTranscodeProfile yang sesuai.
Profil transcode yang dikonfigurasi diteruskan ke fungsi MFCreateTranscodeTopology . Penyusun topologi yang mendasar menggunakan pengaturan ini untuk membangun topologi transkode.
Sintaks
HRESULT MFCreateTranscodeProfile(
[out] IMFTranscodeProfile **ppTranscodeProfile
);
Parameter
[out] ppTranscodeProfile
Menerima penunjuk ke antarmuka IMFTranscodeProfile dari objek profil transkode. Penelepon harus merilis antarmuka.
Menampilkan nilai
Jika fungsi ini berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.
Keterangan
Fungsi MFCreateTranscodeProfile membuat profil transkode kosong. Anda harus mengonfigurasi atribut pengaturan profil transkode yang menentukan jenis media dan properti kontainer. Gunakan metode berikut untuk mengonfigurasi profil:
- IMFTranscodeProfile::SetAudioAttributes
- IMFTranscodeProfile::SetVideoAttributes
- IMFTranscodeProfile::SetContainerAttributes
Contoh
Contoh berikut membuat profil transkode untuk 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;
}
Persyaratan
Klien minimum yang didukung | Windows 7 [hanya aplikasi desktop] |
Server minimum yang didukung | Windows Server 2008 R2 [hanya aplikasi desktop] |
Target Platform | Windows |
Header | mfidl.h |
Pustaka | Mf.lib |
DLL | Mf.dll |