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.
Topik ini menjelaskan offload A2DP sideband audio, yang tersedia mulai dari Windows 11, build 10.0.22000 untuk Bluetooth.
Tujuan utama offload A2DP sideband audio adalah untuk mengurangi konsumsi daya, misalnya selama contoh pemutaran musik.
Dokumen ini mengasumsikan beberapa keakraban dengan solusi sideband HF yang ada. Lihat Panduan Bypass Bluetooth untuk Driver Audio dan spesifikasi Bluetooth A2DP yang dirujuk di bagian lihat juga dari topik ini.
Desain arsitektur sideband
Audio sideband A2DP offload dibangun pada desain yang terbukti yang ada untuk mengurangi konsumsi daya selama pemutaran konten audio linier melalui speaker terintegrasi (bawaan) atau headphone analog yang terhubung. Singkatnya, desain ini meledak sejumlah besar data audio (pada urutan satu detik) ke dalam DSP audio melalui driver audio khusus vendor. Prosesor utama dan sebagian besar sirkuit lainnya memasuki status daya rendah sementara DSP audio mengalirkan data audio yang meledak melalui speaker bawaan. Ketika data audio hampir habis, DSP menimbulkan gangguan pada driver audio yang menandakan OS untuk meledakkan lebih banyak data audio melalui driver audio ke DSP.
Komponen abu-abu muda dalam diagram berikut disediakan oleh IHV.
Offload A2DP sideband audio juga dibangun pada desain umum untuk jalur audio Bluetooth SCO, di mana DSP audio yang sama terhubung langsung ke pengontrol Bluetooth.
Koneksi ini seringkali merupakan antarmuka I2S atau PCM, tetapi juga bisa menjadi bus yang lebih kaya dan lebih kompleks seperti SLIMbus. Microsoft menyebut arsitektur ini sebagai audio sideband, mencerminkan fakta bahwa audio ditransfer ke pengontrol Bluetooth (atau lainnya) melalui jalur alternatif daripada antarmuka pengontrol normal ("HCI"). Dalam hal ini, driver audio mentransfer data audio dari OS ke DSP audio, DSP audio mentransfer data melalui koneksi sideband ke pengontrol bus perangkat keras, dan pengontrol mengirimkan data audio ke perangkat yang terhubung. (Untuk audio dua arah, arah terbalik juga terjadi.) Meskipun lebih banyak komponen terlibat, ini mungkin memiliki keuntungan atas antarmuka pengontrol normal. Dalam beberapa kasus penggunaan (terutama panggilan seluler), seluruh jalur sinyal audio end-to-end ditangani oleh firmware, dilepas dari prosesor utama. Ini juga dapat menyediakan antarmuka yang lebih baik untuk transfer data audio real time/isochronous ke dan dari perangkat lunak host. Untuk koneksi sideband ini, Microsoft mendefinisikan DDI sideband yang digunakan oleh driver audio untuk mendukung titik akhir audio yang memiliki desain fisik ini.
Komponen
Driver audio IHV (driver DSP audio)
Driver ini mengontrol titik akhir audio terintegrasi, audio seluler, dan sideband/offload HFP/SCO. Fitur ini mengharuskan driver juga mendukung offload A2DP. Tanggung jawab pengemudi seperti untuk HFP/SCO.
Driver dan pengontrol transportasi Bluetooth IHV
Offload A2DP tidak didefinisikan dalam standar Bluetooth SIG apa pun. Fitur ini meningkatkan dan menambahkan perintah HCI Bluetooth yang ditentukan Microsoft. Untuk mendukung fitur ini, pengontrol Bluetooth IHV atau driver IHV akan mendukung perintah ini.
Driver profil A2DP
Pengandar ini disediakan oleh Windows. Fungsinya mencakup yang berikut.
- Menerapkan spesifikasi A2DP dan AVDTP
- Mengekspos instans antarmuka perangkat PnP (antarmuka sideband A2DP) agar driver audio IHV menemukan, membuka, dan mengirim permintaan
- Mendukung permintaan IOCTL sideband yang ditentukan dalam dokumen ini
- Mengirim perintah HCI Bluetooth yang ditentukan Microsoft untuk offload A2DP
Persyaratan driver audio IHV (driver DSP audio)
Jika driver audio pada sistem dikonfigurasi untuk streaming sideband A2DP, maka akan menerbitkan antarmuka perangkat dengan GUID kelas yang diatur ke GUID_SIDEBANDAUDIO_A2DP_SUPPORT_INTERFACE
{2BC51EE4-07AF-49CF-B04B-FB3F1C26AADC}. Antarmuka perangkat ini harus ada selambat-lambatnya daripada startup PnP driver audio.
Struktur data sideband
Perhatikan bahwa beberapa struktur dan konstanta data yang digunakan oleh driver audio ditentukan di header sidebandaudio.h .
Struktur data berikut digunakan untuk offload A2DP sideband audio.
Deskriptor Perangkat - SIDEBANDAUDIO_DEVICE_DESCRIPTOR
Elemen | Deskripsi |
---|---|
NumberOfEndpoints | Menunjukkan jumlah titik akhir pada perangkat yang tersambung |
Perangkat yang terhubung dapat menjadi perangkat komposit yang berisi beberapa titik akhir Audio (speaker, mikrofon, dll.). Driver audio dapat melakukan iterasi untuk setiap titik akhir dan mendapatkan detail lebih lanjut untuk membangun filter KS untuk setiap titik akhir.
Deskriptor Titik Akhir - SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR
SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR didefinisikan sebagai berikut.
Elemen | Deskripsi |
---|---|
Ukuran CbS | Ukuran total Deskriptor Titik Akhir. Ini termasuk buffer untuk menyimpan string. |
ContainerId | GUID untuk titik akhir. GUID umum untuk beberapa titik akhir menunjukkan bahwa titik akhir tersebut terkandung dalam kontainer fisik yang sama. OS dapat dengan mudah mengaitkan titik akhir tersebut untuk berbagai skenario. |
Golongan | KSPIN_DESCRIPTOR. Kategori untuk menunjukkan faktor formulir untuk setiap titik akhir. |
Arah | Menunjukkan arah aliran data Capture atau Render. |
Kemampuan | (Lihat tabel di bawah) |
FriendlyName | Nama yang mudah diingat agar titik akhir diterapkan ke DEVPKEY_DeviceInterface_FriendlyName pada antarmuka Filter KS Titik Akhir. |
VolumePropertyValuesSize | Ukuran struktur KSPROPERTY_DESCRIPTION yang menjelaskan langkah dan rentang volume untuk setiap saluran. |
SidetoneVolumePropertyValueSize | Ukuran struktur KSPROPERTY_DESCRIPTION yang menjelaskan langkah dan rentang volume untuk setiap saluran untuk Sidetone. |
Deskriptor Titik Akhir - SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR - Kemampuan
Kemampuan didefinisikan sebagai berikut.
Elemen | Deskripsi |
---|---|
Volume | Titik akhir mendukung kontrol Volume |
Matikan Suara | Titik akhir mendukung kontrol Matikan Suara |
Sidetone | Titik akhir mendukung kontrol Sidetone |
Tanggapan | Titik akhir memiliki saluran umpan balik terkait |
SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR2
Sideband A2DP menggunakan versi terbaru dari struktur SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR yang ada untuk memberikan informasi lebih lanjut yang diperlukan oleh sistem audio Windows untuk identifikasi titik akhir - SIDEBANDAUDIO_ENDPOINT_DESCRIPTOR2.
// Number of device properties that shall be added to the audio filter factory interface.
ULONG FilterInterfacePropertyCount;
DEVPROPERTY* FilterInterfaceProperties;
Driver audio memperoleh struktur data ini menggunakan permintaan IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2 baru. Setelah menyelesaikan permintaan, driver audio menambahkan properti perangkat ini ke antarmuka filter audio Topologi-nya.
Parameter antarmuka audio
Pilihan dan desain transportasi audio antara perangkat audio dan pengontrol Bluetooth khusus vendor. Transportasi audio ini sering kali merupakan antarmuka I2S atau PCM, tetapi juga bisa menjadi bus yang lebih kaya dan lebih kompleks seperti SLIMbus atau berpotensi SoundWire. Desain fitur ini tidak menempatkan persyaratan khusus pada transportasi audio. Namun, jika codec Bluetooth diimplementasikan dalam DSP audio, pengontrol Bluetooth akan dapat mengekstrak bingkai yang dikodekan dari data yang dikirimkan di seluruh transportasi audio untuk mengemas bingkai ini ke dalam paket media AVDTP untuk transmisi.
Penyiapan dan konfigurasi (jika ada) dari transportasi audio dianggap sebagai tugas khusus vendor. Ini difasilitasi oleh parameter antarmuka audio khusus vendor yang diteruskan antar komponen dalam fitur ini. Parameter khusus vendor didefinisikan secara umum oleh vendor driver audio dan pengontrol Bluetooth dan/atau vendor driver transportasi. Parameter digunakan oleh perangkat audio dan pengontrol Bluetooth untuk mengonfigurasi transportasi audio antara DSP audio dan pengontrol Bluetooth.
Misalnya, data ini mungkin menyertakan ID transportasi jika ada beberapa koneksi fisik atau logis, mengonfigurasi penggunaan sinyal antarmuka PCM, atau format data audio di seluruh transportasi.
Driver audio mengatur dan mendapatkan parameter antarmuka audio khusus vendor menggunakan SIOP, yang mengidentifikasi data menggunakan GUID dan bilangan bulat. Namun, untuk mempertahankan set perintah HCI Bluetooth yang lebih alami, perintah HCI yang ditentukan Microsoft meneruskan parameter antarmuka audio khusus vendor menggunakan struktur berikut.
Parameter Antarmuka Audio
Bidang | Oktet |
---|---|
Vendor ID | 0..3 |
ID Parameter Khusus Vendor | 4..5 |
Panjang Nilai Spesifik Vendor = (n-9) | 6 |
Nilai Spesifik Vendor | 7.. n |
ID Vendor seperti yang didefinisikan dalam Nomor yang Ditetapkan Bluetooth: https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers.
Driver A2DP melakukan konversi lurus ke depan antara vendor-SIOP, yang merupakan struktur data yang lebih alami untuk driver audio, dan parameter antarmuka audio yang lebih alami untuk HCI Bluetooth. VENDOR SIOP GUID dibangun dari GUID dasar ditambah ID Vendor Bluetooth 4 karakter. Hanya ID Vendor (bukan seluruh GUID) yang melewati HCI Bluetooth.
GUID dasar adalah SIDEBANDAUDIO_PARAMS_SET_A2DP
.
SIOP A2DP yang ditentukan Microsoft
Microsoft mendefinisikan dua SIOP untuk A2DP yang menyediakan informasi codec. Vendor dapat menentukan SIOP tambahan untuk mendukung implementasinya.
Codec (codecs-SIOP)
Driver audio mengekspresikan daftar codec A2DP yang didukung (jika ada) menggunakan SIOP ini. Bidang SIDEBANDAUDIO_IO_PARAM_HEADER untuk SIOP ini ditetapkan sebagai berikut.
Bidang | Nilai |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP ({8FE0297F-3AE6-4384-ACE3-87589E571B9C}) |
TypeId | SIDEBANDAUDIO_PARAM_A2DP_CODECS (1) |
Ukuran | Ukuran total daftar kemampuan codec yang mengikuti header ini |
Data yang mengikuti header ini adalah urutan struktur kemampuan codec (berukuran variabel) seperti yang dijelaskan dalam informasi kemampuan Codec di atas.
Untuk topik lainnya, parameter ini disebut sebagai codecs-SIOP.
Codec yang dikonfigurasi (configured-codec-SIOP)
Driver audio dapat mengambil codec A2DP yang saat ini dikonfigurasi menggunakan SIOP ini. Bidang SIDEBANDAUDIO_IO_PARAM_HEADER untuk SIOP ini ditetapkan sebagai berikut.
Bidang | Nilai |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP ({8FE0297F-3AE6-4384-ACE3-87589E571B9C}) |
TypeId | SIDEANDAUDIO_PARAM_A2DP_CONFIGURED_CODEC (2) |
Ukuran | Ukuran total kemampuan codec yang mengikuti header ini |
Data yang mengikuti header ini adalah struktur kemampuan codec tunggal (berukuran variabel) seperti yang dijelaskan dalam informasi kemampuan codec di atas.
SIOP ini dapat diperbarui, yang berarti driver audio harus menggunakan permintaan IOCTL_SBAUD_GET_SIOP_UPDATE untuk tetap mendapatkan informasi tentang perubahan dalam codec yang dikonfigurasi.
Untuk topik lainnya, parameter ini disebut sebagai configured-codec-SIOP.
Mode latensi aktif codec (codec-latency-mode-SIOP)
Driver audio dapat mengambil mode latensi aktif dari codec A2DP yang saat ini dikonfigurasi menggunakan SIOP ini. Bidang SIDEBANDAUDIO_IO_PARAM_HEADER untuk SIOP ini ditetapkan sebagai berikut.
Bidang | Nilai |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP |
TypeId | SIDEBANDAUDIO_PARAM_A2DP_CODEC_LATENCY_MODE |
Ukuran | 1 byte |
Data yang mengikuti header ini adalah byte tunggal yang ditafsirkan sebagai bilangan bulat 8-bit yang tidak ditandatangani. Nilai SIDEBANDAUDIO_CODEC_MODE_HIGH_QUALITY
menunjukkan bahwa codec yang saat ini dikonfigurasi beroperasi dalam mode berkualitas tinggi, sementara nilai SIDEBANDAUDIO_CODEC_MODE_LOW_LATENCY
menunjukkan bahwa codec beroperasi dalam mode latensi rendah.
SIOP ini dapat diperbarui, yang berarti driver audio harus menggunakan permintaan IOCTL_SBAUD_GET_SIOP_UPDATE untuk tetap mendapatkan informasi tentang perubahan dalam mode latensi.
Saat ini, SIOP ini hanya digunakan ketika codec Adaptif aptX aktif. Untuk informasi selengkapnya tentang aptX, lihat Audio Adaptif Qualcomm aptX.
Untuk topik lainnya, parameter ini disebut sebagai codec-latency-mode-SIOP.
Ukuran Codec L2CAP MTU (mtu-size-SIOP)
Driver audio dapat mengambil ukuran MTU L2CAP saat ini (dalam byte) dengan menggunakan SIOP ini. Bidang SIDEBANDAUDIO_IO_PARAM_HEADER untuk SIOP ini ditetapkan sebagai berikut.
Bidang | Nilai |
---|---|
ParamsSet | SIDEBANDAUDIO_PARAMS_SET_A2DP |
TypeId | SIDEBANDAUDIO_PARAM_A2DP_CODEC_MTU_SIZE |
Ukuran | 2 byte |
Data yang mengikuti header ini adalah 2 byte yang ditafsirkan sebagai bilangan bulat 16-bit yang tidak ditandatangani. SIOP ini dapat diperbarui, yang berarti driver audio harus menggunakan permintaan IOCTL_SBAUD_GET_SIOP_UPDATE untuk tetap mendapatkan informasi tentang perubahan ukuran MTU.
Saat ini, SIOP ini hanya digunakan ketika codec Adaptif aptX aktif. Untuk informasi selengkapnya tentang aptX, lihat Audio Adaptif Qualcomm aptX.
Untuk topik lainnya, parameter ini disebut sebagai mtu-size-SIOP.
Penggunaan SIOP yang ditentukan vendor
Driver audio dapat mengatur SIOP yang ditentukan vendor.
Vendor-SIOP diatur setelah membuka antarmuka sideband dan sebelum IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR
Driver A2DP menyimpan nilai SIOP dalam kumpulan SIOP vendor konfigurasi sistem. Driver A2DP mengirimkan koleksi ini ke pengontrol Bluetooth (menggunakan HCI_VS_MSFT_Avdtp_Capabilities_Configuration) saat menangani IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2. Parameter antarmuka audio apa pun yang dikembalikan oleh pengontrol Bluetooth juga disimpan dalam kumpulan SIOP vendor konfigurasi sistem. Driver audio bisa mendapatkan nilai-nilai ini kapan saja setelah IOCTL selesai.
SIOP Vendor diatur setelah IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2
Driver A2DP gagal pada SIOP yang dikirim oleh driver audio setelah IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR2.
SIOP Vendor diatur setelah IOCTL_SBAUD_GET_ENDPOINT_DESCRIPTOR dan sebelum IOCTL_SBAUD_STREAM_OPEN
Driver A2DP menyimpan nilai SIOP dalam kumpulan SIOP vendor konfigurasi aliran. Driver A2DP mengirimkan koleksi ini ke pengontrol Bluetooth (menggunakan HCI_VS_MSFT_Avdtp_Open) saat menangani IOCTL_SBAUD_STREAM_OPEN. Parameter antarmuka audio apa pun yang dikembalikan oleh pengontrol Bluetooth juga disimpan dalam kumpulan SIOP vendor konfigurasi aliran. Driver audio bisa mendapatkan nilai-nilai ini kapan saja setelah IOCTL selesai.
Driver A2DP menghapus kumpulan SIOP vendor konfigurasi aliran saat menangani IOCTL_SBAUD_STREAM_CLOSE. (Ini tidak menghapus kumpulan SIOP vendor konfigurasi sistem.)
Antarmuka sideband A2DP
Sideband A2DP menggunakan permintaan IOCTL_SBAUD_* generik. Lihat header sidebandaudio.h untuk daftar lengkap IOCTL. Bagian ini menyediakan informasi khusus untuk A2DP.
Kelas antarmuka PnP
Kelas antarmuka adalah GUID_DEVINTERFACE_A2DP_SIDEBAND_AUDIO
untuk audio Bluetooth sideband A2DP.
IOCTL yang digunakan untuk transisi status pin KS
Driver audio mengirimkan permintaan ini pada transisi status pin KS tertentu.
- Pada transisi pertama di atas KSSTATE_STOP (biasanya ke KSSTATE_ACQUIRE), kirim IOCTL_SBAUD_STREAM_OPEN.
- Pada transisi hingga KSSTATE_RUN, kirim IOCTL_SBAUD_STREAM_START.
- Pada transisi di bawah KSSTATE_RUN, kirim IOCTL_SBAUD_STREAM_SUSPEND.
- Pada penutupan pin KS, kirim IOCTL_SBAUD_STREAM_CLOSE.
Ekstensi HCI Bluetooth yang ditentukan Microsoft untuk offload A2DP
Lihat Ekstensi HCI Bluetooth yang ditentukan Microsoft untuk ekstensi yang saat ini ditentukan.
HCI_VS_MSFT_Read_Supported_Features
Offload A2DP sideband audio meningkatkan perintah HCI_VS_MSFT_Read_Supported_Features dengan menentukan bit lain dalam parameter pengembalian Supported_features untuk menunjukkan dukungan untuk perintah offload AVDTP. Ketika bit ini dikembalikan diatur, perintah yang tersisa di bagian ini akan didukung.
Untuk deskripsi parameter perintah dan pengembalian, lihat HCI_VS_MSFT_Read_Supported_Features.
Untuk nilai Supported_features (8 oktet), lihat juga HCI_VS_MSFT_Read_Supported_Features. Nilai tambahan digunakan untuk menunjukkan bahwa Pengontrol mendukung offload AVDTP dan perintah HCI_VS_MSFT_Avdtp_* yang dijelaskan dalam peristiwa HCI Bluetooth AVDTP yang ditentukan Microsoft.
Ekstensi HCI Bluetooth Terkait Audio yang ditentukan Microsoft
Bluetooth Host-Controller Interface (HCI) menentukan semua interaksi antara host dan pengontrol radio Bluetooth. Spesifikasi Bluetooth memungkinkan perintah dan peristiwa HCI yang ditentukan vendor untuk memungkinkan interaksi yang tidak standar antara host dan pengontrol. Microsoft mendefinisikan perintah dan peristiwa HCI khusus vendor yang dikonsumsi oleh Windows. Microsoft berikut mendefinisikan perintah HCI digunakan untuk offload sideband audio.
Perintah AVDTP HCI berikut dijelaskan dalam topik Bluetooth - Peristiwa HCI Bluetooth AVDTP yang ditentukan Microsoft.
HCI_VS_MSFT_Avdtp_Capabilities_Configuration
Nilai opcode sub-perintah: 7
Mengonfigurasi antarmuka transportasi audio dan mengembalikan kemampuan codec pengontrol Bluetooth, yang merupakan daftar blok informasi codec. Setiap blok informasi codec menjelaskan satu codec yang didukung. Untuk informasi selengkapnya, lihat HCI_VS_MSFT_Avdtp_Capabilities_Configuration.
HCI_VS_MSFT_Avdtp_Open
Nilai opcode sub-perintah: 8
Mengalokasikan dan mengonfigurasi sumber daya offload AVDTP dalam pengontrol. Untuk informasi selengkapnya, lihat HCI_VS_MSFT_Avdtp__Open.
HCI_VS_MSFT_Avdtp_Start
Nilai opcode sub-perintah: 9
Perintah ini memulai streaming audio dari transportasi audio ke paket media AVDTP yang ditransmisikan. Untuk informasi selengkapnya, lihat HCI_VS_MSFT_Avdtp_Start.
HCI_VS_MSFT_Avdtp_Suspend
Nilai opcode sub-perintah: 0xA
Menghentikan aktivitas streaming yang dimulai oleh HCI_VS_MSFT_Avdtp_Start. Untuk informasi selengkapnya, lihat HCI_VS_MSFT_Avdtp_Suspend.
HCI_VS_MSFT_Avdtp_Close
Nilai opcode sub-perintah: 0xB
Merilis sumber daya offload AVDTP yang dialokasikan oleh HCI_VS_MSFT_Avdtp_Open. Untuk informasi selengkapnya, lihat HCI_VS_MSFT_Avdtp_Close.
Codec Bluetooth dalam DSP audio atau pengontrol Bluetooth
Implementasi mengakomodasi codec Bluetooth yang dihosting di DSP audio dan/atau pengontrol Bluetooth. Codecs-SIOP menyediakan mekanisme bagi driver audio untuk menunjukkan daftar codec yang didukung. Demikian pula, perintah HCI_VS_MS_Avdtp_Capabilities_Configuration memungkinkan pengontrol Bluetooth untuk mengembalikan daftar codec yang didukung. Perhatikan, setidaknya salah satu driver A2DP dan pengontrol Bluetooth akan mengembalikan daftar codec yang didukung.
Driver A2DP tidak dapat dengan andal berpotongan atau menggabungkan daftar codec A2DP yang didukung oleh driver audio dan pengontrol Bluetooth. Jika keduanya mengembalikan codec yang didukung A2DP, Windows hanya menggunakan daftar yang dikembalikan oleh driver transportasi Bluetooth.
Jika solusi IHV memerlukan intersecting atau penggabungan kemampuan terkait codec dari kemampuan DSP audio dan pengontrol Bluetooth, maka driver audio dapat menunjukkan kemampuannya melalui codecs-SIOP (jika representasi standar cukup) atau vendor-SIOP. Driver A2DP meneruskan SIOP ke pengontrol Bluetooth yang kemudian dapat mengganggu kemampuan dan mengembalikan serangkaian codec yang didukung yang dihasilkan dari HCI_VS_MSFT_Avdtp_Capabilities_Configuration.
Lihat juga
Ekstensi HCI Bluetooth yang ditentukan Microsoft
Panduan Bypass Bluetooth untuk Driver Audio
Panduan Penanganan Transport Bus Bus untuk Bluetooth Power Control