Moduły multimedialne

Android 10 lub nowszy zawiera kilka aktualizowalnych komponentów multimedialnych, które umożliwiają aktualizację komponentów platformy za pośrednictwem infrastruktury Sklepu Google Play lub za pośrednictwem zapewnianego przez partnera mechanizmu bezprzewodowego (OTA). Komponenty multimedialne są spakowane razem w moduły, które umożliwiają dostarczanie aktualizacji zabezpieczeń i aktualizacji funkcji bez konieczności pełnej aktualizacji obrazu systemu.

Komponenty multimedialne, które można aktualizować, znajdują się w następujących modułach.

Aby uzyskać szczegółowe informacje na temat dodawania niestandardowych ekstraktorów i dekoderów, zobacz Dostosowywanie komponentów multimedialnych .

Ekstraktory mediów

W systemie Android 9 i starszych ekstraktory są kompilowane w jeden plik libstagefright.so . W systemie Android 10 lub nowszym ekstraktory multimediów stanowią osobne komponenty. Każdy ekstraktor ma swój własny plik .so z punktem wejścia, który udostępnia funkcję sniffera w celu ustalenia, czy ekstraktor może obsłużyć dany plik multimedialny, oraz funkcję fabryczną , która tworzy instancję ekstraktora dla danego pliku multimedialnego. Każdy ekstraktor ma nazwę (aby pomóc w debugowaniu) i posiada wersję, aby wskazać, który ekstraktor jest najnowszy.

Struktura multimediów automatycznie ładuje wszystkie dostępne pliki ekstraktora .so , więc możesz tworzyć własne ekstraktory, dodając nowy plik .so bez konieczności modyfikowania bibliotek libstagefright lub innych bibliotek struktury multimediów. Możesz także upewnić się, że ekstraktor niestandardowy będzie preferowany zamiast ekstraktora udostępnianego przez Google.

API MediaSession2

Interfejs API MediaSession2 umożliwia aplikacjom multimedialnym udostępnianie kontroli transportu i informacji o odtwarzaniu innym procesom, takim jak platforma Android i inne aplikacje. Tego komponentu nie można dostosować.

API MediaParsera

Interfejs API MediaParser umożliwia ExoPlayerowi efektywne wykorzystanie frameworkowych analizatorów kontenerów multimediów w celu wyodrębnienia próbek multimediów z kontenerów multimediów. MediaParser zawiera następujące zmiany w granicach kodu źródłowego:

  • frameworks/base/apex/media/framework/java/android/media/MediaParser.java . Implementacja API i cienkowarstwowa.

  • external/exoplayer/ . Dosłowne źródła Exoplayer, na których zbudowano MediaParser.

Interfejsu API MediaParser nie można dostosować. Aby przetestować MediaParser, użyj testów w cts/tests/tests/mediaparser/ .

Kodeki multimedialne

Moduł Media Codecs zawiera aktualizowalne komponenty oprogramowania Codec2. Obsługa dostosowywania różni się w zależności od wersji:

  • W systemie Android 11 lub nowszym (w szczególności Google Play System Update v292100200 ) możesz dostosować parametry alokacji pamięci ION (szczegóły poniżej).

  • W systemie Android 9 lub starszym interfejsu API kodeka OMX nie można aktualizować, ale nadal można go używać na partycji dostawcy.

Alokacja pamięci ION

W systemie Android 11 lub nowszym i aktualizacji systemu Google Play v292100200 lub nowszej możesz dostosować następujące parametry alokacji pamięci ION.

Parametr Domyślna wartość Opis
heapMask 0xFFFFFFFF Dozwolone wszystkie typy stert.
allocFlags 0 Nie ustawiono żadnych flag.
minAlignment 0 Brak wyrównania.

Aby zastąpić parametry:

  1. Zarejestruj domyślną usługę android.hardware.media.c2 i podaj niestandardowe parametry użytkowania ION.

  2. Dodaj następujący kod do pliku manifest.xml urządzenia.

    <hal format="hidl">
        <name>android.hardware.media.c2</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IComponentStore</name>
            <instance>default</instance>
        </interface>
    </hal>
    

Format i zależności

Moduł Media ( com.android.media ) i moduł Media Codec ( com.android.media.swcodec ) są w formacie APEX . Dołączone komponenty multimedialne opierają się wyłącznie na interfejsach API NDK.

Aktualizacje

Podczas aktualizacji komponenty platformy na urządzeniu ładują pakiet APEX zawierający język Java i kod natywny.

Aktualizacje multimediów

Rysunek 1. Przebieg aktualizacji komponentu multimedialnego

Po zainstalowaniu przez framework pakietu APEX urządzenie uruchamia się ponownie i montuje obraz dysku, a procesy systemu multimedialnego ( media.extractor i media.codec ) ładują zaktualizowane moduły z punktu montowania.