Implementasi audio spasial dan pelacakan gerakan kepala berkualitas tinggi

Android 13 memperkenalkan dukungan untuk audio spasial dengan menyediakan API yang memungkinkan developer aplikasi mengetahui apakah kombinasi penerapan ponsel, headset yang terhubung, dan setelan pengguna saat ini memungkinkan pemutaran konten audio multisaluran secara imersif.

OEM dapat memberikan efek audio spatializer dengan dukungan untuk pelacakan kepala dengan tingkat performa dan latensi yang diperlukan, menggunakan arsitektur pipeline audio baru dan integrasi framework sensor. Protokol HID menentukan cara memasang perangkat pelacakan kepala melalui Bluetooth dan menyediakannya sebagai perangkat HID melalui framework sensor Android. Lihat Audio Spasial dan Pelacakan Kepala untuk mengetahui persyaratan dan validasi selengkapnya.

Panduan di halaman ini berlaku untuk solusi audio spasial yang mengadopsi API audio spasial dan arsitektur audio baru dengan ponsel Android yang menjalankan Android 13 dan yang lebih tinggi serta headset yang kompatibel dengan sensor pelacakan kepala.

Panduan untuk penerapan mode audio spasial dinamis dan statis

Audio spasial statis tidak memerlukan pelacakan gerakan kepala, sehingga fungsi tertentu tidak diperlukan di headset. Semua headset berkabel dan nirkabel dapat mendukung audio spasial statis.

Implementasi API

OEM HARUS menerapkan class Spatializer yang diperkenalkan di Android 12. Implementasi harus lulus pengujian CTS yang diperkenalkan untuk class Spatializer.

Implementasi API yang andal memastikan bahwa developer aplikasi, khususnya layanan streaming media, dapat mengandalkan perilaku yang konsisten di seluruh ekosistem dan memilih konten terbaik sesuai dengan kemampuan perangkat, konteks rendering saat ini, dan pilihan pengguna.

Antarmuka pengguna

Setelah menerapkan class Spatializer, validasi bahwa UI Anda memiliki perilaku berikut:

  • Saat headset yang kompatibel dengan audio spasial disambungkan, setelan perangkat Bluetooth untuk headset ini akan menampilkan tombol Audio Spasial:

    UI-audio-spasial

    Gambar 1. Setelan audio spasial.

  • Setelan ini tersedia saat headset terputus.

  • Status default untuk audio spasial setelah awalnya menyambungkan headset ditetapkan ke diaktifkan.

  • Status yang dipilih pengguna, baik diaktifkan maupun dinonaktifkan, akan mempertahankan reboot ponsel atau membatalkan penyambungan dan menyambungkan headset.

Perilaku fungsional

Format audio

Format audio berikut HARUS dirender oleh efek spatializer jika audio spasial diaktifkan dan perangkat rendering adalah headset berkabel atau Bluetooth:

  • AAC, 5.1 saluran
  • PCM mentah, 5.1 saluran

Untuk pengalaman pengguna yang lebih baik, sebaiknya dukung konfigurasi saluran/format berikut:

  • Dolby Digital Plus
  • Saluran 5.1.2, 7.1, 7.1.2, 7.1.4

Pemutaran konten stereo

Konten stereo tidak boleh dirender melalui mesin efek spatializer, meskipun audio spasial diaktifkan. Jika implementasi memungkinkan spasialisasi konten stereo, implementasi tersebut harus menampilkan UI kustom yang memungkinkan pengguna mengaktifkan atau menonaktifkan fitur ini dengan mudah. Saat audio spasial diaktifkan, transisi antara pemutaran konten multisaluran yang di-spasialisasi ke konten stereo yang tidak di-spasialisasi harus dapat dilakukan tanpa memerlukan perubahan apa pun pada setelan pengguna atau konfigurasi ulang atau penyambungan ulang headset. Transisi antara konten audio spasial dan konten stereo harus terjadi dengan gangguan audio minimal.

Transisi kasus penggunaan dan permintaan serentak

Tangani kasus penggunaan khusus sebagai berikut:

  • Notifikasi harus dicampur dengan konten audio spasial dengan cara yang sama seperti dengan konten audio non-spasial.
  • Nada dering harus diizinkan untuk dicampur dengan konten audio spasial. Namun, secara default, mekanisme fokus audio menjeda konten audio spasial saat ada nada dering.
  • Saat menjawab atau melakukan panggilan telepon atau konferensi video, pemutaran audio spasial harus dijeda. Pemutaran audio spasial harus dilanjutkan dengan setelan audio spasial yang sama saat panggilan berakhir. Konfigurasi ulang jalur audio untuk beralih dari mode audio spasial ke mode percakapan harus dilakukan dengan cepat dan cukup lancar sehingga tidak memengaruhi pengalaman panggilan.

Rendering melalui speaker

Dukungan untuk spasialisasi audio melalui speaker, atau mode transaural, tidak diperlukan.

Panduan untuk penerapan pelacakan gerakan kepala

Bagian ini berfokus pada audio spasial dinamis, yang memiliki persyaratan headset tertentu.

Antarmuka pengguna

Setelah mengimplementasikan dan menyambungkan headset yang kompatibel dengan audio spasial, validasikan bahwa UI Anda memiliki perilaku berikut:

  • Di setelan perangkat Bluetooth, saat setelan Audio Spasial untuk headset diaktifkan, setelan Pelacakan gerak kepala akan muncul di bagian Audio Spasial:

    HT-UI

    Gambar 2. Setelan audio spasial dan pelacakan gerakan kepala.

  • Setelan pelacakan gerak kepala TIDAK terlihat saat audio spasial dinonaktifkan.

  • Status default untuk pelacakan gerak kepala setelah awalnya menyambungkan headset ditetapkan ke diaktifkan.

  • Status yang dipilih pengguna, baik diaktifkan maupun dinonaktifkan, harus tetap ada saat ponsel dimulai ulang atau headset disambungkan dan diputuskan sambungannya.

Perilaku fungsional

Pelaporan pose kepala

  • Informasi pose kepala, dalam koordinat x, y, dan z, yang dikirim dari headset ke perangkat Android, harus mencerminkan gerakan kepala pengguna dengan cepat dan akurat.
  • Pelaporan pose kepala pada link Bluetooth harus mengikuti protokol yang ditentukan melalui HID.
  • Headset hanya boleh mengirim informasi pelacakan kepala ke ponsel Android saat pengguna mengaktifkan Pelacakan kepala di UI setelan perangkat Bluetooth.

Performa

Latensi

Latensi pelacakan kepala didefinisikan sebagai waktu yang diperlukan dari gerakan kepala yang ditangkap oleh unit pengukuran inersia (IMU) ke deteksi perubahan suara yang disebabkan oleh gerakan ini di transduser headphone. Latensi pelacakan gerak kepala tidak boleh melebihi 150 md.

Rasio pelaporan pose kepala

Saat pelacakan kepala aktif, headset harus melaporkan postur kepala secara berkala yang direkomendasikan sekitar 20 md. Untuk menghindari pemicuan logika deteksi input yang sudah tidak berlaku di ponsel selama jitter transmisi Bluetooth, waktu maksimum antara dua update tidak boleh melebihi 40 md.

Pengoptimalan daya

Untuk mengoptimalkan daya, sebaiknya penerapan tersebut menggunakan mekanisme pengalihan codec Bluetooth dan pemilihan mode latensi yang disediakan oleh antarmuka HAL audio dan HAL audio Bluetooth.

Implementasi AOSP dari framework audio dan stack Bluetooth sudah mendukung sinyal untuk mengontrol pengalihan codec. Jika implementasi OEM menggunakan HAL audio utama untuk audio Bluetooth, yang dikenal sebagai mode offload codec, OEM harus memastikan bahwa HAL audio meneruskan sinyal tersebut antara HAL audio dan stack Bluetooth.

Pengalihan codec

Saat audio spasial dinamis dan pelacakan gerakan kepala aktif, gunakan codec latensi rendah, seperti Opus. Saat memutar konten audio non-spasial, gunakan codec daya rendah, seperti Advanced Audio Coding (AAC).

Ikuti aturan berikut selama pengalihan codec:

  • Lacak hanya aktivitas di aliran output HAL audio berikut:
    • Output spatializer khusus
    • Streaming khusus media, seperti pemutaran deep buffer atau offload yang dikompresi
  • Setelah semua streaming yang relevan tidak ada aktivitas dan streaming spatializer dimulai, mulai streaming Bluetooth dengan isLowLatency disetel ke true untuk menentukan codec latensi rendah.

  • Saat semua streaming yang relevan tidak ada aktivitas dan streaming media dimulai, mulai streaming Bluetooth dengan isLowLatency ditetapkan ke false untuk menentukan codec berdaya rendah.

  • Jika streaming media aktif dan streaming spatializer dimulai, mulai ulang streaming Bluetooth dengan isLowLatency disetel ke true.

Di sisi headset, headset harus mendukung dekoder latensi rendah dan daya rendah serta menerapkan protokol pemilihan codec standar.

Penyesuaian mode latensi

Penyesuaian mode latensi terjadi saat codec latensi rendah dipilih.

Berdasarkan apakah pelacakan kepala aktif atau nonaktif, penyesuaian mode latensi menggunakan mekanisme yang tersedia untuk mengurangi atau meningkatkan latensi guna mencapai kompromi terbaik antara latensi, daya, dan kualitas audio. Saat audio spasial diaktifkan dan pelacakan gerakan kepala diaktifkan, mode latensi rendah akan dipilih. Saat audio spasial diaktifkan dan pelacakan gerak kepala dinonaktifkan, mode latensi bebas akan dipilih. Penyesuaian latensi memberikan penghematan daya yang signifikan dan meningkatkan keandalan link audio Bluetooth saat hanya audio spasial statis yang diminta. Mekanisme penyesuaian latensi yang paling umum adalah pengurangan atau perpanjangan ukuran buffer jitter di headset Bluetooth.

Lihat Pelacakan kepala melalui audio LE untuk penyesuaian mode latensi untuk audio LE.