Bagikan melalui


Metode IAudioClient::GetMixFormat (audioclient.h)

Metode GetMixFormat mengambil format aliran yang digunakan mesin audio untuk pemrosesan internal aliran mode bersama.

Sintaks

HRESULT GetMixFormat(
  [out] WAVEFORMATEX **ppDeviceFormat
);

Parameter

[out] ppDeviceFormat

Penunjuk ke variabel penunjuk tempat metode menulis alamat format campuran. Parameter ini harus berupa penunjuk non-NULL yang valid ke variabel penunjuk. Metode menulis alamat struktur WAVEFORMATEX (atau WAVEFORMATEXTENSIBLE) ke variabel ini. Metode ini mengalokasikan penyimpanan untuk struktur. Pemanggil bertanggung jawab untuk membebaskan penyimpanan, ketika tidak lagi diperlukan, dengan memanggil fungsi CoTaskMemFree . Jika panggilan GetMixFormat gagal, *ppDeviceFormat adalah NULL. Untuk informasi tentang WAVEFORMATEX, WAVEFORMATEXTENSIBLE, dan CoTaskMemFree, lihat dokumentasi Windows SDK.

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 ppDeviceFormat adalah NULL.
E_OUTOFMEMORY
Kehabisan memori.

Keterangan

Klien dapat memanggil metode ini sebelum memanggil metode IAudioClient::Initialize . Saat membuat aliran mode bersama untuk perangkat titik akhir audio, metode Inisialisasi selalu menerima format aliran yang diperoleh dari panggilan GetMixFormat pada perangkat yang sama.

Format campuran adalah format yang digunakan mesin audio secara internal untuk pemrosesan digital aliran mode bersama. Format ini belum tentu merupakan format yang didukung perangkat titik akhir audio. Dengan demikian, penelepon mungkin tidak berhasil membuat aliran mode eksklusif dengan format yang diperoleh dengan memanggil GetMixFormat.

Misalnya, untuk memfasilitasi pemrosesan audio digital, mesin audio mungkin menggunakan format campuran yang mewakili sampel sebagai nilai floating-point. Jika perangkat hanya mendukung sampel PCM bilangan bulat, maka mesin mengonversi sampel ke atau dari nilai PCM bilangan bulat pada koneksi antara perangkat dan mesin. Namun, untuk menghindari pengambilan sampel ulang, mesin mungkin menggunakan format campuran dengan laju sampel yang didukung perangkat.

Untuk menentukan apakah metode Inisialisasi dapat membuat aliran mode bersama atau mode eksklusif dengan format tertentu, panggil metode IAudioClient::IsFormatSupported .

Dengan sendirinya, struktur WAVEFORMATEX tidak dapat menentukan pemetaan saluran ke posisi pembicara. Selain itu, meskipun WAVEFORMATEX menentukan ukuran kontainer untuk setiap sampel audio, ia tidak dapat menentukan jumlah bit presisi dalam sampel (misalnya, presisi 20 bit dalam kontainer 24-bit). Namun, struktur WAVEFORMATEXTENSIBLE dapat menentukan pemetaan saluran ke speaker dan jumlah bit presisi di setiap sampel. Untuk alasan ini, metode GetMixFormat mengambil deskriptor format yang dalam bentuk struktur WAVEFORMATEXTENSIBLE alih-alih struktur WAVEFORMATEX mandiri. Melalui parameter ppDeviceFormat , metode menghasilkan pointer ke struktur WAVEFORMATEX yang disematkan pada awal struktur WAVEFORMATEXTENSIBLE ini. Untuk informasi selengkapnya tentang WAVEFORMATEX dan WAVEFORMATEXTENSIBLE, lihat dokumentasi Windows DDK.

Untuk informasi selengkapnya tentang metode GetMixFormat , lihat Format Perangkat. Untuk contoh kode yang memanggil GetMixFormat, lihat topik berikut:

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

IAudioClient::IsFormatSupported