Android 14 menyediakan developer API 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 memungkinkan aplikasi menyetel format audio, mask channel, kecepatan sampel, dan perilaku mixer. Dengan penggunaan API mixer pilihan pada perangkat USB yang didukung, pengguna dapat memperoleh pemutaran audio dengan latensi yang 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 sempurna memungkinkan pemutaran untuk format digital aliran langsung (DSD) dan kualitas master yang diautentikasi (MQA) pada konverter digital ke analog (DAC) yang kompatibel.
Antarmuka
Pengelola Kebijakan Audio menangani atribut mixer dalam framework. Class
AudioMixerAttributes
mewakili atribut mixer. Class AudioMixerAttributes
mencakup objek
AudioFormat
yang menjelaskan format data audio, mask saluran, dan frekuensi sampling untuk
mixer. Secara default, framework menentukan perilaku mixer, yang mencampur semua sumber audio dan menerapkan kontrol volume dan efek.
Jika perilaku mixer menggunakan mode BIT_PERFECT
, sistem mengirimkan konten audio tanpa modifikasi melalui framework audio, HAL, dan secara 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 aliran 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 wajib dilakukan untuk 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
.Nyatakan kemampuan untuk merutekan perangkat USB ke port campuran dinamis baik dalam konfigurasi kebijakan audio atau dalam metode AIDL
getAudioPorts
dangetAudioRoutes
.
Lihat implementasi referensi untuk HAL audio USB di hardware/libhardware/modules/usbaudio
.
Lihat contoh port campuran dinamis di frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
.
Atribut pemutaran sempurna bit
Atribut pemutaran bit sempurna bersifat opsional dan hanya didukung dalam penerapan AIDL
dari HAL Audio. 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 tanda 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 efek penskalaan volume, konversi kecepatan sampel, atau 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 atribut mixer pilihan untuk perangkat USB.
Untuk memvalidasi penerapan atribut BIT_PERFECT
, gunakan DAC USB yang mendukung format audio MQA dan DSD melalui modulasi kode pulsa (PCM).