Negosiasi Jenis Media pada Encoder
Di Microsoft Media Foundation, encoder diimplementasikan sebagai transformasi Media Foundation (MFTs) dengan satu input dan satu output. Sebelum sesi pengodean, encoder perlu mengetahui karakteristik aliran yang akan diterimanya sebagai input dan format aliran yang akan dihasilkannya sebagai output. Anda harus mengatur jenis media input dan output serta karakteristik terkait sebelum meneruskan data melalui encoder. Anda harus menyediakan format input dan output dengan menentukan GUID Jenis Media yang sesuai dan mengatur karakteristik aliran output dengan mengatur Atribut Jenis Media yang relevan pada jenis media output. Encoder yang baru dibuat tidak memiliki jenis media yang ditetapkan.
Jenis media input adalah format yang tidak dikompresi, seperti audio PCM atau video RGB. Jenis format yang digunakan oleh encoder terbatas pada yang dijelaskan oleh struktur VIDEOINFOHEADER dan WAVEFORMATEX . Untuk informasi selengkapnya tentang struktur ini, lihat dokumentasi Windows SDK. Fondasi media menyediakan fungsi pembantu untuk membuat jenis media dari struktur format. Misalnya, fungsi MFInitMediaTypeFromVideoInfoHeader menginisialisasi jenis video dari struktur VIDEOINFOHEADER , dan fungsi MFInitMediaTypeFromWaveFormatEx menginisialisasi jenis video dari struktur WAVEFORMATEX atau WAVEFORMATEXTENSIBLE . Untuk informasi selengkapnya, lihat Konversi Jenis Media. Anda harus mengatur jenis media input pada encoder dengan memanggil IMFTransform::SetInputType.
Jenis media output adalah format kompresi yang digunakan dalam aliran sumber akhir atau file. Anda dapat mengatur jenis media output yang tersedia hanya setelah mengatur jenis media input. Anda dapat mengambil jenis output yang didukung dengan memanggil IMFTransform::GetOutputAvailableType dalam perulangan hingga encoder kembali MF_E_NO_MORE_TYPES. Tingkatkan indeks jenis dengan setiap perulangan. Saat Anda menemukan jenis media yang sesuai, atur jenis media output dengan memanggil IMFTransform::SetOutputType.
Faktor penentu dalam memilih jenis media output tergantung pada jenis pengodean dan persyaratan pengodean Anda. Misalnya, untuk aliran audio yang dikodekan CBR, Anda ingin menemukan jenis media yang cocok dengan input Anda dan memiliki laju bit yang sedekat mungkin dengan nilai target.
Jika Anda ingin menggunakan mode pengodean selain CBR, Anda harus mengatur mode lalu menghitung jenis output untuk mode tersebut, karena encoder mengubah jenis output yang didukung tergantung pada set mode. Properti yang mengontrol mode pengodean MFPKEY_VBRENABLED dan MFPKEY_PASSESUSED. Misalnya, jika Anda menghitung jenis output untuk pengodean kualitas VBR, jenis media tergantung pada nilai kualitas yang Anda putuskan untuk digunakan. Untuk informasi tentang pengaturan properti ini, lihat Properti Pengodean.
Topik terkait