Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Jenis media input dan output yang diterima oleh encoder audio sangat terstruktur. Anda harus mendapatkan jenis output yang didukung dengan memanggil IMediaObject::GetOutputType metode atau IMFTransform::GetOutputType. Setelah Anda mendapatkan jenis output, Anda tidak boleh mengubahnya.
Jika Anda ingin menggunakan mode pengodean selain CBR satu-pass, Anda harus menentukan mode tersebut dan kemudian menguraikan jenis-jenis output untuk mode tersebut; encoder mengubah jenis-jenis output yang didukung tergantung pada mode yang ditetapkan. Properti yang mengontrol mode pengodean adalah MFPKEY_VBRENABLED dan MFPKEY_PASSESUSED. Saat mode diatur dalam encoder, Anda harus menghitung dan memilih jenis output, menggunakannya tanpa perubahan, sama seperti CBR.
Mengidentifikasi Jenis VBR Berbasis Kualitas
Prosedur untuk mengidentifikasi jenis VBR yang berbasis pada kualitas tergantung pada apakah encoder bertindak sebagai DirectX Media Object (DMO) atau bertindak sebagai Transformasi Media Foundation (MFT). Untuk informasi tentang kapan encoder bertindak sebagai DMO atau MFT, lihat halaman referensi codec individual di bawah Objek Codec.
Ketika sebuah encoder audio berfungsi sebagai DMO dan Anda mengonfigurasinya untuk menggunakan satu-pass VBR, encoder tersebut mengenumerasi semua jenis keluaran yang didukung. Namun, Anda biasanya ingin memilih jenis VBR satu-pass berdasarkan parameter kualitas. Encoder menempatkan nilai kualitas untuk jenis output VBR satu pass di nAvgBytesPerSec anggota struktur WAVEFORMATEX yang ditujukkan oleh DMO_MEDIA_TYPE.pbFormat.
Nilai ini disimpan dalam format berikut: 0x7FFFFFXX, di mana XX adalah nilai kualitas (dari 0 hingga 100). Misalnya, nilai nAvgBytesPerSec 0x7FFFFF62 menentukan tingkat kualitas 98 (0x62 = 98).
Contoh berikut menunjukkan cara memeriksa tingkat kualitas format saat encoder bertindak sebagai DMO.
void ShowQuality(WAVEFORMATEX* pWave)
{
// Store the average bytes per second in a local variable
// with a more manageable name.
DWORD dwBps = pWave->nAvgBytesPerSec;
// Verify that the value is a VBR quality level by using
// a bitmask to check for the bit pattern 0x7FFFFFXX.
if(dwBps & 0x7FFFFF00 == 0x7FFFFF00)
printf("VBR Quality: %d%%\n",(dwBps & 0x000000FF));
else // Not a valid VBR quality value.
printf("Not a valid one-pass VBR audio format.\n");
}
Ketika encoder bertindak sebagai MFT dan menentukan jenis keluaran dalam panggilan ke GetAvailableOutputType, Anda dapat mencari informasi di MFT mengenai properti MFPKEY_MOST_RECENTLY_ENUMERATED_VBRQUALITY. Nilai yang dikembalikan menunjukkan kualitas VBR dari jenis media output yang terakhir dikembalikan. Kemudian Anda dapat menggunakan nilai tersebut untuk menetapkan properti MFPKEY_DESIRED_VBRQUALITY pada encoder.
Mengatur Batas Maksimum
Untuk VBR berbasis kualitas (satu lintasan) dan VBR dua lintasan yang tidak dibatasi, tidak ada pengaturan tambahan yang diperlukan setelah mengambil tipe keluaran. Untuk menggunakan VBR yang dibatasi puncak, ambil jenis keluaran dengan VBR diaktifkan dan dua lintasan diatur. Jenis ini, tanpa perubahan, menjelaskan pengaturan VBR yang tidak dibatasi. Untuk mengatur batasan puncak, atur properti MFPKEY_RMAX dan MFPKEY_BMAX.
Topik terkait
-
Menggunakan Pengodean VBR