Metode IAudioClient::GetDevicePeriod (audioclient.h)

Metode GetDevicePeriod mengambil panjang interval berkala yang memisahkan pemrosesan berturut-turut yang dilewati oleh mesin audio pada data di buffer titik akhir.

Sintaks

HRESULT GetDevicePeriod(
  [out] REFERENCE_TIME *phnsDefaultDevicePeriod,
  [out] REFERENCE_TIME *phnsMinimumDevicePeriod
);

Parameter

[out] phnsDefaultDevicePeriod

Penunjuk ke variabel REFERENCE_TIME tempat metode menulis nilai waktu yang menentukan interval default antara pemrosesan berkala yang dilewati oleh mesin audio. Waktu dinyatakan dalam 100 unit nanodetik. Untuk informasi tentang REFERENCE_TIME, lihat dokumentasi Windows SDK.

[out] phnsMinimumDevicePeriod

Penunjuk ke variabel REFERENCE_TIME tempat metode menulis nilai waktu yang menentukan interval minimum antara pemrosesan berkala yang dilewati oleh perangkat titik akhir audio. Waktu dinyatakan dalam 100 unit nanodetik.

Nilai kembali

Jika metode berhasil, metode akan mengembalikan S_OK. Jika gagal, kemungkinan kode pengembalian menyertakan, tetapi tidak terbatas pada, nilai yang diperlihatkan dalam tabel berikut.

Menampilkan kode Deskripsi
AUDCLNT_E_DEVICE_INVALIDATED
Perangkat titik akhir audio telah dicabut, atau perangkat keras audio atau sumber daya perangkat keras terkait telah dikonfigurasi ulang, dinonaktifkan, dihapus, atau dibuat tidak tersedia untuk digunakan.
AUDCLNT_E_SERVICE_NOT_RUNNING
Layanan audio Windows tidak berjalan.
E_POINTER
Parameter phnsDefaultDevicePeriod dan phnsMinimumDevicePeriod keduanya NULL.

Keterangan

Klien dapat memanggil metode ini sebelum memanggil metode IAudioClient::Initialize .

Parameter phnsDefaultDevicePeriod menentukan periode penjadwalan default untuk aliran mode bersama. Parameter phnsMinimumDevicePeriod menentukan periode penjadwalan minimum untuk aliran mode eksklusif.

Setidaknya salah satu dari dua parameter, phnsDefaultDevicePeriod dan phnsMinimumDevicePeriod, harus non-NULL atau metode segera kembali dengan kode kesalahan E_POINTER. Jika kedua parameter non-NULL, maka metode menghasilkan periode default dan minimum.

Untuk aliran mode bersama, mesin audio secara berkala memproses data di buffer titik akhir, yang dibagikan mesin dengan aplikasi klien. Mesin menjadwalkan dirinya sendiri untuk melakukan pemrosesan ini lolos secara berkala.

Periode antara pemrosesan yang dilewati oleh mesin audio diperbaiki untuk perangkat titik akhir audio tertentu dan mewakili kuantum pemrosesan terkecil untuk mesin audio. Periode ini ditambah latensi aliran antara buffer dan perangkat titik akhir mewakili latensi minimum yang dapat dicapai aplikasi audio.

Klien memiliki opsi untuk menjadwalkan utas pemrosesan berkalanya untuk berjalan pada interval waktu yang sama dengan mesin audio. Dengan cara ini, klien dapat mencapai latensi sekecil mungkin untuk aliran mode bersama. Namun, dalam aplikasi yang latensinya kurang penting, klien dapat mengurangi overhead pengalihan proses pada CPU dengan menjadwalkan pass pemrosesannya agar lebih jarang terjadi. Dalam hal ini, buffer titik akhir harus secara proporsional lebih besar untuk mengimbangi periode yang lebih lama antara proses berlalu.

Klien menentukan ukuran buffer selama panggilannya ke metode IAudioClient::Initialize . Untuk aliran mode bersama, jika klien melewati metode ini nilai parameter hnsBufferDuration 0, metode ini mengasumsikan bahwa periode untuk klien dan mesin audio dijamin sama, dan metode akan mengalokasikan buffer yang cukup kecil untuk mencapai latensi minimum yang mungkin. (Bahkan, nilai hnsBufferDuration apa pun antara 0 dan jumlah periode mesin audio dan latensi perangkat akan memiliki hasil yang sama.) Demikian pula, untuk aliran mode eksklusif, jika klien mengatur hnsBufferDuration ke 0, metode ini mengasumsikan bahwa periode klien diatur ke periode minimum perangkat titik akhir audio, dan metode akan mengalokasikan buffer yang cukup kecil untuk mencapai latensi minimum yang mungkin.

Jika klien memilih untuk menjalankan utas pemrosesan berkala lebih jarang, dengan biaya peningkatan latensi, klien dapat melakukannya selama membuat buffer titik akhir selama panggilan IAudioClient::Initialize yang cukup besar.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2008 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header audioclient.h

Lihat juga

Antarmuka IAudioClient

IAudioClient::Initialize