Manajemen Aliran
Setelah menghitung perangkat titik akhir audio dalam sistem dan mengidentifikasi perangkat penyajian atau pengambilan yang sesuai, tugas berikutnya untuk aplikasi klien audio adalah membuka koneksi dengan perangkat titik akhir dan mengelola aliran data audio melalui koneksi tersebut. WASAPI memungkinkan klien untuk membuat dan mengelola aliran audio.
WASAPI mengimplementasikan beberapa antarmuka untuk menyediakan layanan manajemen aliran kepada klien audio. Antarmuka utamanya adalah IAudioClient. Klien mendapatkan antarmuka IAudioClient untuk perangkat titik akhir audio dengan memanggil metode IMMDevice::Activate (dengan parameter iid diatur ke REFIID IID_IAudioClient) pada objek titik akhir.
Klien memanggil metode di antarmuka IAudioClient untuk melakukan hal berikut:
- Temukan format audio mana yang didukung perangkat titik akhir.
- Dapatkan ukuran buffer titik akhir.
- Dapatkan format aliran dan latensi.
- Mulai, hentikan, dan reset aliran yang mengalir melalui perangkat titik akhir.
- Mengakses layanan audio tambahan.
Untuk membuat aliran, klien memanggil metode IAudioClient::Initialize . Melalui metode ini, klien menentukan format data untuk aliran, ukuran buffer titik akhir, dan apakah aliran beroperasi dalam mode bersama atau eksklusif.
Metode yang tersisa dalam antarmuka IAudioClient termasuk dalam dua grup:
- Metode yang dapat dipanggil hanya setelah aliran dibuka oleh IAudioClient::Initialize.
- Metode yang dapat dipanggil kapan saja sebelum atau sesudah panggilan Inisialisasi.
Metode berikut dapat dipanggil hanya setelah panggilan ke IAudioClient::Initialize:
- IAudioClient::GetBufferSize
- IAudioClient::GetCurrentPadding
- IAudioClient::GetService
- IAudioClient::GetStreamLatency
- IAudioClient::Reset
- IAudioClient::Start
- IAudioClient::Stop
Metode berikut dapat dipanggil sebelum atau sesudah panggilan IAudioClient::Initialize :
Untuk mengakses layanan klien audio tambahan, klien memanggil metode IAudioClient::GetService. Melalui metode ini, klien dapat memperoleh referensi ke antarmuka berikut:
-
Menulis data penyajian ke buffer titik akhir penyajian audio.
-
Membaca data yang diambil dari buffer titik akhir pengambilan audio.
-
Berkomunikasi dengan manajer sesi audio untuk mengonfigurasi dan mengelola sesi audio yang terkait dengan aliran.
-
Mengontrol tingkat volume sesi audio yang terkait dengan aliran.
-
Mengontrol tingkat volume saluran individual dalam sesi audio yang terkait dengan aliran.
-
Memantau laju data aliran dan posisi streaming.
Selain itu, klien WASAPI yang memerlukan pemberitahuan peristiwa terkait sesi harus menerapkan antarmuka berikut:
-
Untuk menerima pemberitahuan peristiwa, klien meneruskan penunjuk ke antarmuka IAudioSessionEvents ke metode IAudioSessionControl::RegisterAudioSessionNotification sebagai parameter panggilan.
Terakhir, klien mungkin menggunakan API tingkat yang lebih tinggi untuk membuat aliran audio, tetapi juga memerlukan akses ke kontrol sesi dan kontrol volume untuk sesi yang berisi aliran. API tingkat yang lebih tinggi biasanya tidak menyediakan akses ini. Klien dapat memperoleh kontrol untuk sesi tertentu melalui antarmuka IAudioSessionManager. Antarmuka ini memungkinkan klien untuk mendapatkan antarmuka IAudioSessionControl dan ISimpleAudioVolume untuk sesi tanpa mengharuskan klien menggunakan antarmuka IAudioClient untuk membuat aliran dan menetapkan aliran ke sesi. Klien mendapatkan antarmuka IAudioSessionManager untuk perangkat titik akhir audio dengan memanggil metode IMMDevice::Activate (dengan parameter iid diatur ke REFIID IID_IAudioSessionManager) pada objek titik akhir.
Antarmuka IAudioSessionControl, IAudioSessionEvents, dan IAudioSessionManager didefinisikan dalam file header Audiopolicy.h. Semua antarmuka WASAPI lainnya didefinisikan dalam file header Audioclient.h.
Bagian berikut menjelaskan cara menggunakan WASAPI untuk mengelola aliran audio:
- Tentang WASAPI
- Merender Aliran
- Menangkap Aliran
- Perekaman Loopback
- Aliran Mode Eksklusif
- Memulihkan dari Kesalahan Perangkat-Tidak Valid
- Menggunakan Perangkat Komunikasi
- Perutean Aliran
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk