Android 14 menyediakan API developer yang dapat digunakan aplikasi untuk mengkueri dan mengonfigurasi atribut mixer pilihan untuk pemutaran audio USB. Atribut mixer pilihan ini meningkatkan pengalaman pemutaran audio USB dengan membiarkan aplikasi mengatur format audio, mask saluran, laju sampel, dan perilaku mixer. Dengan penggunaan API mixer pilihan pada perangkat USB yang didukung, pengguna bisa mendapatkan pemutaran audio dengan latensi lebih rendah dan konten audio dengan resolusi lebih tinggi.
Fitur ini juga memberikan dukungan untuk perilaku mixer pemutaran bit-perfect opsional untuk perangkat USB. Mode bit-perfect memungkinkan pemutaran untuk format autentikasi kualitas master (MQA) dan streaming langsung digital (DSD) pada konverter digital ke analog (DAC) yang kompatibel.
Antarmuka
Audio Policy Manager menangani atribut mixer dalam kerangka kerja. Kelas AudioMixerAttributes
mewakili atribut mixer. Kelas AudioMixerAttributes
menyertakan objek AudioFormat
yang menjelaskan format data audio, masker saluran, dan laju sampel untuk mixer. Secara default, kerangka kerja menentukan perilaku mixer, yang menggabungkan semua sumber audio dan menerapkan kontrol volume dan efek.
Jika perilaku mixer menggunakan mode BIT_PERFECT
, sistem mengirimkan konten audio tanpa modifikasi melalui kerangka audio, HAL dan opsional prosesor sinyal digital (DSP), dari API ke perangkat USB. Mode BIT_PERFECT
mendukung format yang dikodekan, seperti MQA atau DSD, di mana penskalaan atau pencampuran volume apa pun dapat merusak makna data.
Saat aplikasi mengonfigurasi atribut mixer, kerangka kerja akan membuka kembali aliran output dengan atribut baru, jika diperlukan. Gambar berikut menunjukkan antarmuka antara aplikasi, framework, dan HAL ketika atribut mixer disetel:
Gambar 1. Antarmuka antara aplikasi, framework, dan HAL.
Penerapan
Penerapan atribut mixer pilihan, selain atribut BIT_PERFECT
, untuk audio USB bersifat wajib di Android 14.
Atribut mixer pilihan
Untuk mendukung atribut mixer pilihan, vendor harus mendukung perutean perangkat USB ke port campuran dinamis, sebagai berikut:
Tentukan port campuran dinamis di
usb_audio_policy_configuration.xml
.Deklarasikan kemampuan untuk merutekan perangkat USB ke port campuran dinamis baik dalam konfigurasi kebijakan audio atau dalam metode AIDL
getAudioPorts
dangetAudioRoutes
.
Lihat implementasi referensi untuk audio USB HAL di bawah hardware/libhardware/modules/usbaudio
. Lihat contoh port campuran dinamis di frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
.
Atribut pemutaran yang sedikit sempurna
Atribut pemutaran bit-perfect bersifat opsional dan hanya didukung dalam implementasi AIDL pada Audio HAL. Untuk mendukung pemutaran bit-perfect, vendor harus menambahkan flag output bit-perfect AUDIO_OUTPUT_FLAG_BIT_PERFECT
ke port campuran dinamis yang dapat dirutekan ke perangkat USB.
Contoh kode berikut menunjukkan penggunaan flag AUDIO_OUTPUT_FLAG_BIT_PERFECT
di 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 aliran audio dikirim ke perangkat USB tanpa modifikasi apa pun, yaitu aliran audio tidak boleh memiliki penskalaan volume, konversi laju sampel, atau efek pemrosesan audio dan tidak boleh dicampur dalam DSP. Dalam hal ini, perangkat keras mengontrol volume karena kerangka kerja tidak menyediakan kontrol volume perangkat lunak apa pun.
Validasi
Jalankan pengujian CTS di PreferredMixerAttributesTestActivity.java
untuk memvalidasi dukungan 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).