Membuat Profil ASF
Topik ini menjelaskan cara membuat sebagai profil ASF di Microsoft Media Foundation.
- Buat Profil Baru
- Mendapatkan Profil dari Objek AsF ContentInfo
- Mendapatkan Profil dari Deskriptor Presentasi
- Topik terkait
Buat Profil Baru
Untuk membuat profil ASF kosong, panggil fungsi MFCreateASFProfile . Fungsi ini mengembalikan penunjuk ke antarmuka IMFASFProfile . Aplikasi dapat menggunakan antarmuka ini untuk menambahkan aliran ke profil, dan untuk mengonfigurasi setiap aliran. Untuk informasi selengkapnya, lihat Membuat dan Mengonfigurasi Aliran ASF.
Secara opsional, aplikasi dapat menambahkan objek saling pengecualian ke dua aliran atau lebih. Lihat Menggunakan Pengecualian Bersama untuk Aliran ASF.
Mendapatkan Profil dari Objek AsF ContentInfo
Aplikasi bisa mendapatkan profil ASF dari file ASF yang ada dari Objek ContentInfo ASF. Profil sudah dikonfigurasi dan berisi pengaturan untuk semua aliran dalam file.
Inisialisasi objek ContentInfo dengan mengurai Objek Header ASF dari file. Ini dilakukan melalui metode IMFASFContentInfo::P arseHeader . Setelah semua Objek Header dibaca dan pustaka ASF diisi, profil untuk file ini dibuat. Aplikasi bisa mendapatkan pointer ke profil yang diinisialisasi ini dengan memanggil IMFASFContentInfo::GetProfile.
Mendapatkan Profil dari Deskriptor Presentasi
Anda bisa mendapatkan objek profil file ASF yang ada dari deskriptor presentasi untuk file, atau dari objek ASF ContentInfo . Dalam hal ini, profil sudah dikonfigurasi dan berisi pengaturan untuk semua aliran dalam file. Ini dapat berguna jika Anda ingin memodifikasi profil ASF yang ada. Misalnya, Anda mungkin ingin mengodekan ulang file Windows Media Video pada laju bit yang lebih rendah.
Untuk mendapatkan profil dari deskriptor presentasi, panggil MFCreateASFProfileFromPresentationDescriptor. Fungsi ini mengurai deskriptor presentasi, dan mengisi profil ASF dengan informasi tentang file media. Fungsi mengembalikan penunjuk ke antarmuka IMFASFProfile. Anda kemudian dapat menggunakan antarmuka ini untuk mengubah profil.
Untuk mendapatkan pendeskripsi presentasi, panggil salah satu metode berikut:
- Dari sumber media ASF, panggil IMFMediaSource::CreatePresentationDescriptor.
- Dari objek ContentInfo ASF , panggil IMFASFContentInfo::GeneratePresentationDescriptor. Sebelum memanggil metode ini, pastikan objek ContentInfo diinisialisasi untuk dibaca. Untuk informasi selengkapnya, lihat "Menginisialisasi Objek ContentInfo dari File ASF yang Ada" di Membaca Objek Header ASF dari File yang Ada. Namun, jika Anda sudah memiliki objek ContentInfo yang diinisialisasi, Anda bisa mendapatkan profil langsung darinya. Ini dijelaskan dalam "Mendapatkan Profil dari Objek ContentInfo " nanti dalam topik ini.
Contoh berikut menunjukkan cara membuat profil dari deskriptor presentasi. Fungsi ini membuat sumber media untuk file, mendapatkan deskriptor presentasi dari sumber media, dan membuat profil. Contoh ini mengasumsikan bahwa pszFileName menentukan URL file ASF.
HRESULT GetASFProfile(PCWSTR pszFileName, IMFASFProfile** ppProfile)
{
*ppProfile = NULL;
IMFSourceResolver* pResolver = NULL;
IUnknown* pSourceUnk = NULL;
IMFMediaSource* pSource = NULL;
IMFPresentationDescriptor* pPD = NULL;
// Create the source resolver.
HRESULT hr = MFCreateSourceResolver(&pResolver);
// Use the source resolver to create the media source.
if (SUCCEEDED(hr))
{
MF_OBJECT_TYPE ObjectType;
hr = pResolver->CreateObjectFromURL(
pszFileName,
MF_RESOLUTION_MEDIASOURCE,
NULL,
&ObjectType,
&pSourceUnk
);
}
// Get the IMFMediaSource interface from the media source.
if (SUCCEEDED(hr))
{
hr = pSourceUnk->QueryInterface(IID_PPV_ARGS(&pSource));
}
// Get the presentation descriptor.
if (SUCCEEDED(hr))
{
hr = pSource->CreatePresentationDescriptor(&pPD);
}
// Get the profile from the presentation descriptor.
if (SUCCEEDED(hr))
{
hr = MFCreateASFProfileFromPresentationDescriptor(pPD, ppProfile);
}
SafeRelease(&pResolver);
SafeRelease(&pSourceUnk);
SafeRelease(&pSource);
SafeRelease(&pPD);
return hr;
}
Contoh ini menggunakan SafeRelease untuk merilis penunjuk antarmuka.
Topik terkait