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.
Pengguna dapat menonaktifkan Default Ducking Experience yang disediakan oleh sistem dengan menggunakan opsi yang tersedia pada tab Komunikasi dari panel kontrol multimedia Windows, Mmsys.cpl.
Ketika ducking diterapkan, efek memudar keluar dan memudar masuk digunakan selama 1 detik. Aplikasi game mungkin tidak ingin aliran komunikasi mengganggu audio game. Beberapa aplikasi media mungkin menemukan bahwa pengalaman pemutaran menjadi mengganggu ketika musik kembali memudar. Jenis aplikasi ini dapat memilih untuk tidak berpartisipasi dalam pengalaman penyesuaian volume otomatis.
Dalam pengaturan terprogram, klien WASAPI langsung dapat memutuskan untuk tidak ikut serta dengan menggunakan manajer sesi untuk sesi audio yang menyediakan pengaturan volume bagi aliran non-komunikasi. Perhatikan bahwa bahkan jika klien memilih untuk tidak mengikuti pengaturan penurunan volume, klien masih menerima pemberitahuan terkait penurunan volume dari sistem.
Untuk keluar dari mode ducking, klien harus mendapatkan referensi ke antarmuka IAudioSessionControl2 pengelola sesi. Untuk menonaktifkan pengalaman "ducking", gunakan langkah-langkah berikut:
- Buat instans enumerator perangkat dan gunakan untuk mendapatkan referensi ke titik akhir perangkat yang digunakan aplikasi media untuk merender aliran non-komunikasi.
- Aktifkan manajer sesi dari titik akhir perangkat dan dapatkan referensi ke antarmuka IAudioSessionManager2 manajer sesi.
- Dengan menggunakan pointer IAudioSessionManager2, dapatkan referensi ke antarmuka IAudioSessionControl dari manajer sesi.
- Kueri untuk IAudioSessionControl2 dari antarmuka IAudioSessionControl.
- Panggil IAudioSessionControl2::SetDuckingPreference dan lewatkan TRUE atau FALSE untuk menentukan preferensi peredaman. Preferensi yang ditentukan dapat diubah secara dinamis selama sesi. Perhatikan bahwa perubahan penolakan tidak berlaku sampai aliran dihentikan dan dimulai lagi.
Kode berikut menunjukkan bagaimana suatu aplikasi dapat mengatur preferensi penurunan volume yang diinginkan. Pemanggil fungsi harus mengisi parameter DuckingOptOutChecked dengan TRUE atau FALSE. Bergantung pada nilai yang diteruskan, peredaman diaktifkan atau dinonaktifkan melalui IAudioSessionControl2::SetDuckingPreference.
////////////////////////////////////////////////////////////////////
//Description: Specifies the ducking options for the application.
//Parameters:
// If DuckingOptOutChecked is TRUE system ducking is disabled;
// FALSE, system ducking is enabled.
////////////////////////////////////////////////////////////////////
HRESULT DuckingOptOut(bool DuckingOptOutChecked)
{
HRESULT hr = S_OK;
IMMDeviceEnumerator* pDeviceEnumerator NULL;
IMMDevice* pEndpoint = NULL;
IAudioSessionManager2* pSessionManager2 = NULL;
IAudioSessionControl* pSessionControl = NULL;
IAudioSessionControl2* pSessionControl2 = NULL;
// Start with the default endpoint.
hr = CoCreateInstance(__uuidof(MMDeviceEnumerator),
NULL,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pDeviceEnumerator));
if (SUCCEEDED(hr))
{
hr = pDeviceEnumerator>GetDefaultAudioEndpoint(eRender, eConsole, &pEndpoint);
pDeviceEnumerator>Release();
pDeviceEnumerator = NULL;
}
// Activate session manager.
if (SUCCEEDED(hr))
{
hr = pEndpoint->Activate(__uuidof(IAudioSessionManager2),
CLSCTX_INPROC_SERVER,
NULL,
reinterpret_cast<void **>(&pSessionManager2));
pEndpoint->Release();
pEndpoint = NULL;
}
if (SUCCEEDED(hr))
{
hr = pSessionManager2->GetAudioSessionControl(NULL, 0, &pSessionControl);
pSessionManager2->Release();
pSessionManager2 = NULL;
}
if (SUCCEEDED(hr))
{
hr = pSessionControl->QueryInterface(
__uuidof(IAudioSessionControl2),
(void**)&pSessionControl2);
pSessionControl->Release();
pSessionControl = NULL;
}
// Sync the ducking state with the specified preference.
if (SUCCEEDED(hr))
{
if (DuckingOptOutChecked)
{
hr = pSessionControl2->SetDuckingPreference(TRUE);
}
else
{
hr = pSessionControl2->SetDuckingPreference(FALSE);
}
pSessionControl2->Release();
pSessionControl2 = NULL;
}
return hr;
}
Topik terkait
-
Menggunakan Perangkat Komunikasi
-
Pertimbangan Implementasi untuk Pemberitahuan Penurunan Suara