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:
AudioHalCapConfiguration.aidlAudioHalCapCriterionV2.aidlAudioHalCapDomain.aidlAudioHalCapParameter.aidlAudioHalCapRule.aidl
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.