Atribut mixer pilihan pada perangkat USB

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:

preferred-mixer-attr

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:

  1. Tentukan port campuran dinamis di usb_audio_policy_configuration.xml .

  2. Deklarasikan kemampuan untuk merutekan perangkat USB ke port campuran dinamis baik dalam konfigurasi kebijakan audio atau dalam metode AIDL getAudioPorts dan getAudioRoutes .

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).