Android 14 menyediakan API developer yang dapat digunakan aplikasi untuk mengkueri dan mengonfigurasi atribut mixer pilihan untuk USB pemutaran audio. Atribut pencampur pilihan ini meningkatkan pengalaman pemutaran audio USB dengan memungkinkan aplikasi menyetel format audio, {i>channel mask<i}, frekuensi sampel, dan perilaku pencampur. Dengan menggunakan metode mixer API di perangkat USB yang didukung, pengguna bisa mendapatkan pemutaran audio dengan latensi yang lebih rendah dan konten audio beresolusi lebih tinggi.
Fitur ini juga memberikan dukungan untuk mixer pemutaran bit-sempurna opsional untuk perangkat USB. Mode bit sempurna memungkinkan pemutaran master dengan format yang diautentikasi (MQA) dan Direct Stream Digital (DSD) konverter digital ke analog (DAC) yang kompatibel.
Antarmuka
Pengelola Kebijakan Audio menangani atribut mixer dalam framework. Tujuan
AudioMixerAttributes
mewakili atribut mixer. Class AudioMixerAttributes
menyertakan
AudioFormat
yang menjelaskan format data audio, channel mask, dan frekuensi sampel untuk
menggunakan pengaduk. Secara default, framework menentukan perilaku pencampur, yang mencampur
semua sumber audio dan menerapkan efek serta kontrol volume.
Jika perilaku mixer menggunakan mode BIT_PERFECT
, sistem akan mengirimkan audio
konten tanpa modifikasi melalui kerangka kerja audio, HAL, dan secara opsional
{i>digital signal processor <i}(DSP), dari API
hingga ke perangkat USB. Tujuan
Mode BIT_PERFECT
mendukung format yang dienkode, seperti MQA atau DSD, yang mana
penskalaan atau pencampuran volume dapat
menghancurkan arti data.
Saat aplikasi mengonfigurasi atribut mixer, framework akan membuka kembali streaming output dengan atribut baru, jika diperlukan. Gambar berikut menunjukkan antarmuka antara aplikasi, kerangka kerja, dan HAL ketika atribut mixer ditetapkan:
Gambar 1. Antarmuka antara aplikasi, framework, dan HAL.
Implementasi
Implementasi atribut mixer pilihan, selain BIT_PERFECT
, untuk audio USB bersifat wajib untuk Android 14.
Atribut mixer pilihan
Untuk mendukung atribut pencampur pilihan, vendor harus mendukung perutean perangkat USB ke port mix dinamis, seperti berikut:
Tentukan port mix dinamis di
usb_audio_policy_configuration.xml
.Mendeklarasikan kemampuan untuk merutekan perangkat USB ke port campuran dinamis dalam konfigurasi kebijakan audio atau dalam metode AIDL
getAudioPorts
dangetAudioRoutes
.
Lihat implementasi referensi untuk HAL audio USB di bagian hardware/libhardware/modules/usbaudio
.
Lihat contoh port mix dinamis di frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml
.
Atribut pemutaran yang bit-sempurna
Atribut pemutaran yang bit-sempurna bersifat opsional dan hanya didukung di AIDL
atau penerapan HAL Audio. Untuk mendukung pemutaran dengan sedikit
sempurna, vendor harus
tambahkan flag output yang hampir sempurna AUDIO_OUTPUT_FLAG_BIT_PERFECT
ke dinamis
porta campuran yang dapat
dialihkan ke perangkat USB.
Contoh kode berikut menunjukkan penggunaan AUDIO_OUTPUT_FLAG_BIT_PERFECT
flag 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, streaming audio tidak boleh memiliki penskalaan volume, konversi frekuensi sampel, atau audio efek pemrosesan dan tidak boleh dicampur dalam DSP. Dalam hal ini, hardware mengontrol volume karena framework tidak menyediakan kontrol volume software apa pun.
Validasi
Jalankan uji CTS di
PreferredMixerAttributesTestActivity.java
untuk memvalidasi dukungan atribut pencampur
yang diinginkan bagi perangkat USB.
Untuk memvalidasi implementasi atribut BIT_PERFECT
, gunakan DAC USB yang
mendukung MQA dan DSD melalui format audio modulasi kode pulsa (PCM).