Menggunakan Perangkat Komunikasi

Di Windows 7, panel kontrol multimedia Windows, Mmsys.cpl, menyediakan tab Komunikasi baru. Tab ini berisi opsi yang memungkinkan pengguna mengatur opsi yang menentukan bagaimana sistem mengelola perangkat komunikasi. Perangkat komunikasi digunakan terutama untuk menempatkan atau menerima panggilan telepon di komputer. Untuk komputer yang hanya memiliki satu perangkat penyajian (speaker) dan satu perangkat pengambilan (mikrofon), perangkat audio ini juga bertindak sebagai perangkat komunikasi default. Saat pengguna menghubungkan perangkat baru, seperti headset USB, sistem melakukan deteksi peran perangkat otomatis dengan mencari pengaturan konfigurasi yang diisi oleh OEM. Jika sistem menentukan perangkat yang paling cocok untuk tujuan komunikasi, sistem menetapkan peran eKomunikasi ke perangkat. Untuk perangkat ini, Mmsys.cpl Windows 7 menyediakan opsi Perangkat Komunikasi Default yang memungkinkan pengguna untuk memilih perangkat komunikasi masing-masing untuk penyajian audio (tab Pemutaran) dan pengambilan audio (tab Perekaman). Sistem melakukan deteksi peran otomatis tetapi tidak mengatur perangkat tertentu yang akan digunakan untuk komunikasi. Ini harus dilakukan oleh pengguna. Peran eCommunications baru memungkinkan aplikasi membedakan antara perangkat yang dipilih oleh pengguna untuk menangani panggilan telepon dan perangkat yang akan digunakan sebagai perangkat multimedia (pemutaran musik). Misalnya, jika pengguna memiliki headset dan speaker yang terhubung ke komputer, sistem menetapkan peran eConsole ke speaker dan peran eCommunications ke headset. Setelah pengguna memilih headset yang akan digunakan sebagai perangkat komunikasi, untuk mengembangkan aplikasi komunikasi, Anda dapat menargetkan headset khusus untuk merender aliran audio. Aplikasi yang pengguna tidak dapat mengubah peran perangkat yang ditetapkan oleh sistem. Untuk informasi selengkapnya tentang peran perangkat, lihat Peran Perangkat.

Aplikasi komunikasi, seperti aplikasi VoIP dan Unified Communication, melakukan dan menerima panggilan telepon melalui komputer. Misalnya, aplikasi VoIP mungkin menetapkan aliran yang berisi pemberitahuan ring-in ke titik akhir perangkat komunikasi yang ditetapkan untuk merender aliran audio. Selain itu, aplikasi mungkin membuka aliran input dan output suara pada perangkat titik akhir pengambilan dan penyajian yang ditetapkan sebagai perangkat komunikasi.

Untuk mengintegrasikan kemampuan komunikasi ke dalam aplikasi, Anda dapat menggunakan:

  • MMDevice API—untuk mendapatkan referensi ke titik akhir perangkat komunikasi.
  • WASAPI—untuk merender dan mengambil aliran audio melalui perangkat komunikasi. Sistem operasi menganggap aliran yang dibuka pada perangkat komunikasi sebagai aliran komunikasi.

Aplikasi komunikasi menghitung perangkat dan menyediakan manajemen aliran untuk aliran komunikasi (penyajian atau pengambilan) aliran dengan cara yang sama seperti akan mengelola aliran non-komunikasi dengan menggunakan API Core Audio.

Salah satu fitur yang dapat Anda integrasikan dalam aplikasi komunikasi Anda adalah merunduk atau mengalirkan redaman. Perilaku ini mendefinisikan apa yang harus terjadi pada suara lain ketika aliran komunikasi dibuka, seperti ketika panggilan telepon diterima pada perangkat komunikasi. Sistem mungkin mematikan suara atau menurunkan volume audio aliran non-komunikasi tergantung pada pilihan pengguna. Sistem audio menghasilkan peristiwa bebek saat aliran komunikasi dibuka atau ditutup untuk merender atau menangkap aliran. Secara default, sistem operasi memberikan pengalaman bebek default. Aplikasi media dapat menggantikan perilaku default dan menangani peristiwa ini sendiri untuk memberikan pengalaman bebek yang disesuaikan.

Bagian berikut menjelaskan cara menggunakan API Audio Inti untuk memberikan pengalaman bebek kustom.

Mendapatkan Referensi ke Titik Akhir Perangkat Komunikasi

Untuk menggunakan perangkat komunikasi, klien WASAPI langsung harus menghitung perangkat dengan menggunakan enumerator perangkat. Dapatkan referensi ke titik akhir perangkat komunikasi default dengan memanggil IMMDeviceEnumerator::GetDefaultAudioEndpoint. Dalam panggilan ini, aplikasi harus menentukan eKomunikasi dalam parameter Peran untuk membatasi enumerasi perangkat ke perangkat komunikasi. Setelah Anda mendapatkan referensi ke titik akhir perangkat untuk perangkat, Anda dapat mengaktifkan layanan yang terlingkup untuk titik akhir dengan memanggil IMMDevice::Activate. Misalnya, Anda dapat meneruskan pengidentifikasi layanan IID_IAudioClient untuk mengaktifkan objek klien audio dan menggunakannya untuk manajemen aliran, pengidentifikasi IID_IAudioEndpointVolume untuk mendapatkan akses ke kontrol volume titik akhir perangkat komunikasi, atau pengidentifikasi IID_IAudioSessionManager untuk mengaktifkan manajer sesi yang memungkinkan Anda berinteraksi dengan mesin kebijakan titik akhir. Untuk informasi tentang operasi streaming, lihat Manajemen Aliran.

Dengan menggunakan referensi IMMDevice , Anda juga dapat mengakses penyimpanan properti untuk titik akhir perangkat. Nilai properti ini, seperti nama perangkat yang mudah diingat dan nama produsen, diisi oleh OEM dan memungkinkan aplikasi untuk menentukan karakteristik perangkat komunikasi. Untuk informasi selengkapnya, lihat Properti Perangkat.

Contoh kode berikut mendapatkan referensi ke titik akhir perangkat komunikasi default untuk merender aliran audio.

IMMDevice *defaultDevice = NULL;

hr = CoCreateInstance(__uuidof(MMDeviceEnumerator), NULL,
            CLSCTX_INPROC_SERVER, 
            __uuidof(IMMDeviceEnumerator), 
            (LPVOID *)&deviceEnumerator);

hr = deviceEnumerator->GetDefaultAudioEndpoint(eRender, 
            eCommunications, &defaultDevice);

Manajemen Aliran