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 implementasi 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 melampirkan perangkat pelacakan kepala melalui Bluetooth dan membuatnya tersedia sebagai perangkat HID melalui framework sensor Android. Lihat Audio Spasial dan Pelacakan Kepala untuk persyaratan dan validasi lainnya.

Pedoman 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 spesifik 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.

Penerapan 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:

    spatial-audio-ui

    Gambar 1. Setelan audio spasial.

  • Setelan tersedia saat headset tidak terhubung.

  • Status default untuk audio spasial setelah headset dipasangkan pertama kali adalah disetel ke diaktifkan.

  • Status yang dipilih pengguna, baik diaktifkan atau dinonaktifkan, tetap ada saat ponsel di-reboot atau headset dibatalkan dan disambungkan kembali.

Perilaku fungsional

Format audio

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

  • AAC, 5.1 saluran
  • PCM mentah, 5.1 channel

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

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

Pemutaran konten stereo

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

Transisi dan serentak kasus penggunaan

Tangani kasus penggunaan khusus sebagai berikut:

  • Notifikasi harus dicampur dengan konten audio spasial dengan cara yang sama seperti notifikasi dicampur 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. Rekonfigurasi jalur audio untuk beralih dari mode audio spasial ke mode percakapan harus terjadi dengan cepat dan cukup lancar sehingga tidak memengaruhi pengalaman panggilan.

Merender melalui speaker

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

Panduan untuk penerapan pelacakan gerak 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, validasi bahwa UI Anda memiliki perilaku berikut:

  • Di setelan perangkat Bluetooth, jika 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 kepala TIDAK terlihat saat audio spasial dinonaktifkan.

  • Status default untuk pelacakan gerak kepala setelah headset dipasangkan pertama kali adalah ditetapkan ke diaktifkan.

  • Status yang dipilih pengguna, baik diaktifkan atau dinonaktifkan, harus tetap ada saat ponsel di-reboot atau headset dibatalkan penyambungannya dan disambungkan kembali.

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 postur kepala melalui link Bluetooth harus mengikuti protokol yang ditentukan melalui HID.
  • Headset harus mengirimkan informasi pelacakan kepala ke ponsel Android hanya saat pengguna mengaktifkan Pelacakan kepala di UI setelan perangkat Bluetooth.

Performa

Latensi

Latensi pelacakan kepala didefinisikan sebagai waktu yang diperlukan dari gerakan kepala yang direkam oleh unit pengukuran inersia (IMU) hingga deteksi perubahan suara yang disebabkan oleh gerakan ini oleh 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 dengan interval sekitar 20 md. Untuk menghindari pemicuan logika deteksi input yang tidak valid di ponsel selama jitter transmisi Bluetooth, waktu maksimum antara dua pembaruan tidak boleh melebihi 40 md.

Pengoptimalan daya

Untuk mengoptimalkan daya, sebaiknya implementasi 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 peralihan codec. Jika implementasi OEM menggunakan HAL audio utama untuk audio Bluetooth, yang dikenal sebagai mode pelepasan 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 penggantian codec:

  • Hanya melacak aktivitas di aliran output HAL audio berikut:
    • Output spatializer khusus
    • Streaming khusus media, seperti pemutaran dengan buffer dalam atau offload terkompresi
  • Saat semua streaming yang relevan tidak aktif dan streaming spatializer dimulai, mulai streaming Bluetooth dengan isLowLatency ditetapkan ke true untuk menentukan codec latensi rendah.

  • Saat semua aliran yang relevan tidak aktif dan aliran media dimulai, mulai aliran Bluetooth dengan isLowLatency disetel 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. Jika audio spasial diaktifkan dan pelacakan gerakan kepala diaktifkan, mode latensi rendah akan dipilih. Jika audio spasial diaktifkan dan pelacakan gerak kepala dinonaktifkan, mode latensi bebas dipilih. Penyesuaian latensi memberikan penghematan daya yang signifikan dan peningkatan 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.