Format Perangkat

Untuk aplikasi audio, manfaat menggunakan API audio tingkat lebih tinggi, seperti directSound atau fungsi Windows multimedia waveOutXxx , adalah bahwa API secara otomatis mengonversi antara format aliran yang digunakan oleh aplikasi dan format yang digunakan oleh perangkat audio. Sebaliknya, API audio inti lebih ketat karena memerlukan aliran aplikasi untuk menggunakan format yang sama dengan, atau terkait erat dengan, format yang digunakan oleh perangkat. Dengan demikian, aplikasi yang menggunakan API audio inti untuk memutar atau merekam aliran audio mungkin diperlukan untuk melakukan beberapa atau semua konversi antar format aliran.

Aplikasi yang menggunakan WASAPI untuk mengelola aliran mode bersama dapat mengandalkan mesin audio untuk hanya melakukan konversi format terbatas. Mesin audio dapat mengonversi antara ukuran sampel PCM standar yang digunakan oleh aplikasi dan sampel floating-point yang digunakan mesin untuk pemrosesan internalnya. Namun, format untuk aliran aplikasi biasanya harus memiliki jumlah saluran yang sama dan laju sampel yang sama dengan format aliran yang digunakan oleh perangkat.

Jika aplikasi menggunakan perangkat dalam mode eksklusif, aplikasi harus menggunakan format streaming yang didukung perangkat keras audio secara eksplisit. Dalam mode eksklusif, aplikasi dan perangkat bertukar data audio secara langsung, tanpa intervensi oleh mesin audio.

Banyak perangkat audio mendukung format aliran PCM dan non-PCM. Namun, mesin audio hanya dapat mencampur aliran PCM. Dengan demikian, hanya aliran mode eksklusif yang dapat memiliki format non-PCM. Selain itu, hanya format non-PCM dengan tarif data tetap yang didukung dalam mode eksklusif. Contoh format non-PCM laju tetap adalah aliran audio Windows Media Audio Professional (WMA Pro) 48 kHz yang melewati tautan antarmuka digital Sony/Philips (S/PDIF) dalam bentuk digital tanpa didekodekan. Untuk informasi selengkapnya tentang menggunakan aliran WMA Pro melalui S/PDIF, lihat Menentukan Rentang Data WMA Pro.

WASAPI menggunakan struktur WAVEFORMATEX atau WAVEFORMATEXTENSIBLE untuk menentukan format aliran. Struktur WAVEFORMATEXTENSIBLE secara efektif merupakan struktur WAVEFORMATEX yang telah diperluas untuk menggambarkan berbagai format yang lebih besar. Format apa pun yang dapat dijelaskan oleh struktur WAVEFORMATEX yang berdiri sendiri juga dapat dijelaskan oleh struktur WAVEFORMATEXTENSIBLE.

Anggota pertama dari struktur WAVEFORMATEXTENSIBLE adalah struktur WAVEFORMATEX . Konten struktur WAVEFORMATEX menunjukkan apakah itu struktur WAVEFORMATEX yang berdiri sendiri atau bagian dari struktur WAVEFORMATEXTENSIBLE.

Struktur WAVEFORMATEX yang berdiri sendiri dapat secara memadai menggambarkan format dengan satu atau dua saluran dan ukuran sampel yang merupakan kelipatan 8 bit. Dengan sendirinya, struktur WAVEFORMATEX tidak dapat menentukan pemetaan saluran ke posisi pembicara. Selain itu, meskipun WAVEFORMATEX menentukan ukuran kontainer untuk setiap sampel audio, ia tidak dapat menentukan jumlah bit presisi dalam sampel (misalnya, presisi 20 bit dalam kontainer 24-bit). Sebaliknya, struktur WAVEFORMATEXTENSIBLE dapat menentukan pemetaan saluran ke speaker dan jumlah bit presisi dalam setiap sampel.

Untuk informasi selengkapnya tentang WAVEFORMATEX dan WAVEFORMATEXTENSIBLE, lihat dokumentasi Windows DDK.

Dimulai dengan Windows 7, WAVEFORMATEXTENSIBLE telah diperluas untuk mewakili format perangkat untuk mengirimkan audio yang dikodekan melalui antarmuka yang kompatibel dengan IEC 61937. Untuk informasi tentang struktur baru, lihat Mewakili Format untuk Transmisi IEC 61937.

Menentukan Format Perangkat

Metode WASAPI berikut menggunakan struktur WAVEFORMATEX dan WAVEFORMATEXTENSIBLE untuk menjelaskan format aliran:

Metode GetMixFormat mengambil format aliran yang digunakan mesin audio untuk pemrosesan internal aliran mode bersama. Metode ini selalu menggunakan struktur WAVEFORMATEXTENSIBLE, alih-alih struktur WAVEFORMATEX yang berdiri sendiri, untuk menentukan format.

Metode IsFormatSupported menunjukkan apakah perangkat titik akhir audio mendukung format aliran tertentu. Pemanggil harus menentukan apakah format aliran dimaksudkan untuk digunakan dalam mode bersama atau dalam mode eksklusif. Untuk format mode bersama, metode meminta mesin audio untuk menentukan apakah mendukung format yang ditentukan. Untuk format mode eksklusif, metode ini meminta driver perangkat. Beberapa driver perangkat akan melaporkan bahwa mereka mendukung format PCM 1 saluran atau 2 saluran jika format ditentukan oleh struktur WAVEFORMATEX yang berdiri sendiri, tetapi akan menolak format yang sama jika ditentukan oleh struktur WAVEFORMATEXTENSIBLE. Untuk mendapatkan hasil yang andal dari driver ini, aplikasi mode eksklusif harus memanggil IsFormatSupported dua kali untuk setiap format PCM 1 saluran atau 2 saluran—satu panggilan harus menggunakan struktur WAVEFORMATEX yang berdiri sendiri untuk menentukan format, dan panggilan lainnya harus menggunakan struktur WAVEFORMATEXTENSIBLE untuk menentukan format yang sama.

Setelah aplikasi menggunakan GetMixFormat atau IsFormatSupported untuk menemukan format yang sesuai untuk aliran mode bersama atau mode eksklusif, aplikasi dapat memanggil metode Inisialisasi untuk menginisialisasi aliran dengan format tersebut. Aplikasi yang mencoba menginisialisasi aliran mode bersama dengan format yang tidak identik dengan format campuran yang diperoleh dari metode GetMixFormat , tetapi memiliki jumlah saluran yang sama dan laju sampel yang sama dengan format campuran, kemungkinan akan berhasil. Sebelum memanggil Inisialisasi, aplikasi dapat memanggil IsFormatSupported untuk memverifikasi bahwa Inisialisasi akan menerima format.

Format campuran yang digunakan mesin audio untuk pemrosesan internal aliran mode bersama terkait erat, tetapi belum tentu identik dengan, format aliran yang digunakan perangkat titik akhir audio dalam mode bersama. Melalui panel kontrol multimedia Windows, Mmsys.cpl, pengguna dapat memilih format aliran yang akan digunakan perangkat titik akhir audio saat beroperasi dalam mode bersama. Langkah langkahnya adalah sebagai berikut:

  1. Untuk menjalankan Mmsys.cpl, buka jendela Prompt Perintah dan masukkan perintah berikut:

    mmsys.cpl kontrol

    Atau, Anda dapat menjalankan Mmsys.cpl dengan mengklik kanan ikon speaker di area pemberitahuan, yang terletak di sisi kanan taskbar, dan memilih Perangkat Pemutaran atau Perangkat Rekaman.

  2. Setelah jendela Mmsys.cpl terbuka, pilih perangkat dari daftar perangkat pemutaran atau daftar perangkat perekaman, dan klik Properti.

  3. Saat jendela properti terbuka, klik Tingkat Lanjut, dan pilih format dari daftar format yang tersedia dalam kotak berlabel Format Default.

Misalnya, asumsikan bahwa pengguna memilih format default berikut dari daftar format yang tersedia untuk perangkat pemutaran:

2 saluran, 16 bit, 44100 Hz (Kualitas CD)

Ini adalah format yang kemudian akan digunakan perangkat saat beroperasi dalam mode bersama. Di Windows Vista, mesin audio akan menggunakan versi format ini yang sedikit dimodifikasi untuk pemrosesan internal aliran mode bersama. Mesin audio akan menggunakan format dengan jumlah saluran yang sama (dua) dan laju sampel yang sama (44100 Hz), tetapi akan mengonversi sampel menjadi angka floating-point sebelum memprosesnya. Mesin audio akan mengonversi sampel floating-point dalam campuran output menjadi bilangan bulat 16-bit sebelum memutarnya melalui perangkat.

Aplikasi dapat mengkueri properti PKEY_AudioEngine_DeviceFormat perangkat titik akhir audio untuk mendapatkan format mode bersama yang telah dipilih pengguna untuk perangkat. Untuk informasi tentang mengkueri properti perangkat, lihat Properti Perangkat.

Beberapa aplikasi mungkin menemukan format yang ditentukan oleh properti PKEY_AudioEngine_DeviceFormat perangkat menjadi format yang sesuai untuk membuka aliran mode eksklusif pada perangkat. Aplikasi lain yang mengelola aliran mode eksklusif mungkin memiliki persyaratan tambahan yang mengamanatkan negosiasi format kompleks dengan perangkat. Biasanya, salah satu aplikasi ini membuat daftar format yang sesuai, dengan format pilihan di awal daftar. Aplikasi kemudian secara berulang memanggil IsFormatSupported dengan setiap format berturut-turut dalam daftar, dimulai di awal daftar, sampai menemukan format yang didukung perangkat.

Perangkat Titik Akhir Audio