Obsługa konfigurowalnych zasad dotyczących dźwięku w interfejsie AIDL HAL

Od Androida 16 interfejs AIDL Audio HAL w pełni obsługuje konfigurowalne zasady audio (CAP).

Ta strona zawiera niezbędne informacje techniczne, które pomogą partnerom i dostawcom układów SoC w migracji konfiguracji zasad audio.

Parameter Framework

Implementacja CAP jest oparta na Parameter Framework firmy Intel. CAP został wprowadzony w Androidzie 6. Parameter Framework (PfW) umożliwia opisanie systemu za pomocą parametrów. Korzystając z pliku konfiguracji XML, PfW wiąże parametry z działaniami za pomocą wtyczek i udostępnia reguły zmiany parametrów zgodnie z bieżącymi kryteriami.

Struktura CAP w HIDL

W HIDL cała konfiguracja CAP była określana w XML. Więcej informacji znajdziesz w artykułach Parameter Framework i Configuration using Parameter Framework. Pliki XML służyły do określania tych elementów:

  • Opis struktury parametrów (czyli opis domeny audio dla PfW)
  • Definicje kryteriów
  • Reguły strategii routingu (wybór urządzenia wejściowego i wyjściowego)
  • Specyfikacja tabel głośności

W HIDL framework Androida mógł wczytywać te pliki XML bezpośrednio z partycji dostawcy. Było to możliwe, ponieważ w ramach interfejsu HAL API zdefiniowano schemat XSD dla tych plików XML. Każda główna wersja HIDL HAL miała odpowiadający jej schemat XSD. Główne wersje nie wymagały zgodności wstecznej.

Struktura CAP w AIDL

Wraz z przejściem na AIDL wersje HAL API muszą zachowywać zgodność wsteczną (w HIDL każda wersja AIDL HAL jest „drobna”). Schematów XSD nie można już używać w ramach HAL API, ponieważ nie ma ustalonego sposobu definiowania aktualizacji schematów zgodnych wstecz. Dlatego konfiguracja, która była wcześniej definiowana w plikach XML, musi być teraz udostępniana przez HAL za pomocą interfejsów AIDL API. Aby to ułatwić, struktura konfiguracji CAP jest konwertowana na AIDL, podobnie jak pliki XML konfiguracji zasad audio w AIDL Audio HAL w Androidzie 15.

Struktury danych dla CAP są dodawane do typów danych stabilnych Common i obejmują te elementy:

Punkt wejścia konfiguracji CAP znajduje się w AudioHalEngineConfig.CapSpecificConfig strukturze. Diagram struktur danych CAP znajdziesz w komentarzach w AudioHalCapConfiguration.aidl.

Domyślna implementacja AIDL HAL zawiera klasę pomocniczą, która wypełnia elementy AIDL na podstawie zawartości starszych plików XML CAP, aby uprościć migrację dla partnerów.

Scenariusze migracji

Partnerzy mogą rozważyć opcje wymienione w tej sekcji, w zależności od tego, czy jest to pierwsze uruchomienie usługi, która wcześniej nie korzystała z CAP, czy migracja istniejącej usługi.

Nowa usługa

W przypadku nowej usługi, która zaczyna korzystać z CAP do implementacji zasad audio, producent OEM może używać XML do przechowywania konfiguracji CAP po stronie dostawcy.

Zaletą korzystania z XML jest to, że istnieje zestaw narzędzi do tworzenia skryptów , które ułatwiają generowanie konfiguracji na podstawie opisu wysokiego poziomu.

Jeśli producent OEM zdecyduje się używać XML do przechowywania konfiguracji CAP w partycji dostawcy, zalecamy używanie domyślnej implementacji parsera XML do konwertowania konfiguracji na AIDL.

Aktualizacja istniejącej usługi

Jeśli usługa korzysta już z CAP i ma konfigurację XML, możesz nadal używać istniejącej konfiguracji CAP z wersją HAL AIDL.

Konwencja nazewnictwa strategii usług różni się w wersjach HIDL i AIDL konfiguracji CAP. W HIDL wbudowane („starsze”) strategie używały krótkich nazw pisanych małymi literami, np. media natomiast w AIDL wbudowane strategie używają nazw pisanych wielkimi literami z przedrostkiem STRATEGY_, np. STRATEGY_MEDIA. Listę wbudowanych strategii znajdziesz w pliku CapProductStrategies.xml. Ten sam plik definiuje „wstępnie przydzielone” identyfikatory dla strategii specyficznych dla producenta OEM, które są zgodne ze wzorcem nazewnictwa vx_10xx z liczbami od 1000 do 1039.

Starsza usługa

Jeśli usługa, która korzysta z CAP, nie aktualizuje partycji dostawcy i pozostaje w HIDL, możesz zaktualizować partycję systemową do Androida 16. Framework pozostaje zgodny ze starszą konfiguracją CAP.

Przykładowa implementacja

Aby pomóc partnerom w implementacji CAP na ich platformach, AOSP udostępnia przykład „samochodowej” wersji urządzenia wirtualnego Cuttlefish, która korzysta z CAP z AIDL HAL. Konfiguracja specyficzna dla urządzenia znajduje się w device/google/cuttlefish/shared/auto/audio/policy/engine, a nazwa docelowa lunch to aosp_cf_x86_64_auto. Plik Android.bp może służyć jako odniesienie do generowania pełnego zestawu plików dostawcy CAP.