Android 14 menyediakan API developer yang dapat digunakan aplikasi untuk membuat kueri dan mengonfigurasi atribut mixer pilihan untuk pemutaran audio USB. Atribut mixer yang disukai ini meningkatkan pengalaman pemutaran audio USB dengan memungkinkan aplikasi menyetel format audio, channel mask, frekuensi sampel, dan perilaku mixer. Dengan penggunaan API mixer yang dipilih di perangkat USB yang didukung, pengguna bisa mendapatkan pemutaran audio dengan latensi lebih rendah dan konten audio beresolusi lebih tinggi.
Fitur ini juga memberikan dukungan untuk perilaku mixer pemutaran bit-perfect opsional untuk perangkat USB. Mode bit-perfect memungkinkan pemutaran untuk format master quality authenticated (MQA) dan direct stream digital (DSD) di konverter digital ke analog (DAC) yang kompatibel.
Antarmuka
Pengelola Kebijakan Audio menangani atribut mixer dalam framework. Class
AudioMixerAttributes
mewakili atribut mixer. Class AudioMixerAttributes
menyertakan objek
AudioFormat
yang menjelaskan format data audio, mask saluran, dan frekuensi sampel untuk
mixer. Secara default, framework menentukan perilaku mixer, yang mencampur
semua sumber audio dan menerapkan efek dan kontrol volume.
Jika perilaku mixer menggunakan mode BIT_PERFECT
, sistem akan mengirim konten
audio tanpa modifikasi melalui framework audio, HAL, dan opsional
digital signal processor (DSP), dari API hingga perangkat USB. Mode
BIT_PERFECT
mendukung format yang dienkode, seperti MQA atau DSD, yang mana
penskalaan atau pencampuran volume dapat merusak arti data.
Saat aplikasi mengonfigurasi atribut mixer, framework akan membuka kembali streaming output dengan atribut baru, jika diperlukan. Gambar berikut menunjukkan antarmuka antara aplikasi, framework, dan HAL saat atribut mixer ditetapkan:
Gambar 1. Antarmuka antara aplikasi, framework, dan HAL.
Implementasi
Penerapan atribut mixer pilihan, selain atribut BIT_PERFECT
, untuk audio USB bersifat wajib untuk Android 14.
Atribut mixer pilihan
Untuk mendukung atribut mixer pilihan, vendor harus mendukung pemilihan rute perangkat USB ke port mixer dinamis, sebagai berikut:
Tentukan port mix dinamis di
usb_audio_policy_configuration.xml
.Deklarasikan kemampuan untuk merutekan perangkat USB ke port mix dinamis baik dalam konfigurasi kebijakan audio maupun dalam metode AIDL
getAudioPorts
dangetAudioRoutes
.
Lihat implementasi referensi untuk HAL audio USB di bagian hardware/libhardware/modules/usbaudio
.
Lihat contoh port campuran dinamis di frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
.
Atribut pemutaran bit-perfect
Atribut pemutaran bit-perfect bersifat opsional dan hanya didukung dalam penerapan
AIDL Audio HAL. Untuk mendukung pemutaran yang bit-sempurna, vendor harus
menambahkan flag output yang sangat sempurna AUDIO_OUTPUT_FLAG_BIT_PERFECT
ke port
mix dinamis yang dapat dirutekan ke perangkat USB.
Contoh kode berikut menunjukkan penggunaan tanda AUDIO_OUTPUT_FLAG_BIT_PERFECT
dalam usb_audio_policy_configuration.xml
:
<module name="usb" halVersion="2.0">
<mixPorts>
<mixPort name="hifi_output"
role="source" flags="AUDIO_OUTPUT_FLAG_BIT_PERFECT">
</mixPort>
</mixPorts>
<devicePorts>
<devicePort tagName="USB Device Out"
type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
</devicePort>
</devicePorts>
<routes>
<route type="mix" sink="USB Device Out"
sources="hifi_output"/>
</routes>
</module>
Jika atribut pemutaran bit-perfect ditentukan, HAL harus memastikan bahwa streaming audio dikirim ke perangkat USB tanpa modifikasi apa pun, yaitu, streaming audio tidak boleh memiliki penskalaan volume, konversi frekuensi sampel, atau efek pemrosesan audio dan tidak boleh dicampur di DSP. Dalam hal ini, hardware mengontrol volume karena framework tidak menyediakan kontrol volume software apa pun.
Validasi
Jalankan pengujian CTS di
PreferredMixerAttributesTestActivity.java
untuk memvalidasi dukungan untuk atribut mixer pilihan untuk perangkat USB.
Untuk memvalidasi penerapan atribut BIT_PERFECT
, gunakan DAC USB yang
mendukung MQA dan DSD melalui format audio modulasi kode pulsa (PCM).