Atribut mixer pilihan di perangkat USB

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:

preferensi-mixer-attr

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:

  1. Tentukan port mix dinamis di usb_audio_policy_configuration.xml.

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

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