Bagikan melalui


Metode IAudioCaptureClient::ReleaseBuffer (audioclient.h)

Metode ReleaseBuffer merilis buffer.

Sintaks

HRESULT ReleaseBuffer(
  [in] UINT32 NumFramesRead
);

Parameter

[in] NumFramesRead

Jumlah bingkai audio yang dibaca klien dari buffer pengambilan. Parameter ini harus sama dengan jumlah bingkai dalam paket data yang diperoleh sebelumnya atau 0.

Nilai kembali

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

Menampilkan kode Deskripsi
AUDCLNT_E_INVALID_SIZE
Parameter NumFramesRead diatur ke nilai selain ukuran paket data atau 0.
AUDCLNT_E_OUT_OF_ORDER
Panggilan ini tidak didahului oleh panggilan IAudioCaptureClient::GetBuffer yang sesuai.
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 tidak tersedia untuk digunakan.
AUDCLNT_E_SERVICE_NOT_RUNNING
Layanan audio Windows tidak berjalan.

Keterangan

Klien harus memanggil metode ini ketika selesai membaca paket data yang diperoleh sebelumnya dengan memanggil metode IAudioCaptureClient::GetBuffer .

Data dalam paket yang diperoleh klien dari panggilan GetBuffer dijamin tetap valid sampai klien memanggil ReleaseBuffer untuk merilis paket.

Antara setiap panggilan GetBuffer dan panggilan ReleaseBuffer yang sesuai, klien harus membaca seluruh paket data atau tidak sama sekali. Jika klien membaca seluruh paket setelah panggilan GetBuffer , maka klien harus memanggil ReleaseBuffer dengan NumFramesRead yang diatur ke jumlah total bingkai dalam paket data. Dalam hal ini, panggilan berikutnya ke GetBuffer akan menghasilkan paket data baru. Jika klien tidak membaca data dari paket setelah panggilan ke GetBuffer, maka klien harus memanggil ReleaseBuffer dengan NumFramesRead diatur ke 0. Dalam hal ini, panggilan GetBuffer berikutnya akan menghasilkan paket data yang sama seperti dalam panggilan GetBuffer sebelumnya.

Jika klien memanggil ReleaseBuffer dengan NumFramesRead diatur ke nilai apa pun selain ukuran paket atau 0, panggilan gagal dan mengembalikan kode kesalahan AUDCLNT_E_INVALID_SIZE.

Klien harus menghindari penundaan berlebihan antara panggilan GetBuffer yang memperoleh buffer dan panggilan ReleaseBuffer yang merilis buffer. Implementasi mesin audio mengasumsikan bahwa panggilan GetBuffer dan panggilan ReleaseBuffer yang sesuai terjadi dalam periode pemrosesan buffer yang sama. Klien yang menunda merilis buffer untuk lebih dari satu periode berisiko kehilangan data sampel.

Untuk contoh kode yang memanggil metode ReleaseBuffer, lihat Menangkap Stream.

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 IAudioCaptureClient

IAudioCaptureClient::GetBuffer