Bagikan melalui


Membuat Profil ASF

Topik ini menjelaskan cara membuat sebagai profil ASF di Microsoft Media Foundation.

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:

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.

Profil ASF