Głoska bezdźwięczna

Ikona HAL Androida Media

Android zawiera Stagefright, silnik odtwarzania multimediów na poziomie natywnym, który ma wbudowane kodeki programowe dla popularnych formatów multimediów.

Funkcje odtwarzania audio i wideo Stagefright obejmują integrację z kodekami OpenMAX, zarządzanie sesjami, renderowanie zsynchronizowane w czasie, kontrolę transportu i DRM.

Stagefright obsługuje również integrację z niestandardowymi kodekami sprzętowymi dostarczonymi przez Ciebie. Aby ustawić ścieżkę sprzętową do kodowania i dekodowania nośników, należy zaimplementować koder-dekoder sprzętowy jako komponent OpenMax IL (Warstwa integracji).

Uwaga: aktualizacje Stagefright mogą być wykonywane w ramach comiesięcznego procesu aktualizacji zabezpieczeń systemu Android oraz jako część wydania systemu operacyjnego Android.

Architektura

Aplikacje multimedialne współdziałają z natywną platformą multimedialną systemu Android zgodnie z następującą architekturą.

Architektura multimediów Androida

Rysunek 1. Architektura mediów

Ramy aplikacji
Na poziomie struktury aplikacji znajduje się kod aplikacji, który wykorzystuje interfejsy API android.media do interakcji ze sprzętem multimedialnym.
segregator IPC
Serwery proxy Binder IPC ułatwiają komunikację ponad granicami procesu. Znajdują się one w katalogu frameworks/av/media/libmedia i zaczynają się od litery "I".
Natywna platforma multimedialna
Na poziomie natywnym system Android zapewnia platformę multimedialną, która wykorzystuje silnik Stagefright do nagrywania i odtwarzania dźwięku i wideo. Stagefright jest dostarczany z domyślną listą obsługiwanych kodeków programowych i możesz zaimplementować własny kodek sprzętowy, korzystając ze standardu warstwy integracji OpenMax. Aby uzyskać więcej szczegółów dotyczących implementacji, zobacz komponenty MediaPlayer i Stagefright znajdujące się w frameworks/av/media .
Warstwa integracyjna OpenMAX (IL)
OpenMAX IL zapewnia znormalizowany sposób rozpoznawania i używania przez Stagefright niestandardowych, sprzętowych kodeków multimedialnych zwanych komponentami. Musisz dostarczyć wtyczkę OpenMAX w postaci biblioteki współdzielonej o nazwie libstagefrighthw.so . Ta wtyczka łączy Stagefright z niestandardowymi komponentami kodeka, które muszą być zaimplementowane zgodnie ze standardem komponentów OpenMAX IL.

Wdrażanie niestandardowych kodeków

Stagefright zawiera wbudowane kodeki programowe dla popularnych formatów multimedialnych, ale możesz także dodać własne niestandardowe kodeki sprzętowe jako komponenty OpenMAX. Aby to zrobić, musisz utworzyć komponenty OMX i wtyczkę OMX, która łączy Twoje niestandardowe kodeki z frameworkiem Stagefright. Na przykład komponenty, zobacz hardware/ti/omap4xxx/domx/ ; przykładowy plugin do Galaxy Nexus znajdziesz w hardware/ti/omap4xx/libstagefrighthw .

Aby dodać własne kodeki:

  1. Twórz swoje komponenty zgodnie ze standardem komponentów OpenMAX IL. Interfejs komponentu znajduje się w pliku frameworks/native/include/media/OpenMAX/OMX_Component.h . Aby dowiedzieć się więcej o specyfikacji OpenMAX IL, odwiedź witrynę OpenMAX .
  2. Utwórz wtyczkę OpenMAX, która łączy Twoje komponenty z usługą Stagefright. Aby zapoznać się z interfejsami do tworzenia wtyczki, zobacz pliki nagłówkowe frameworks/native/include/media/hardware/OMXPluginBase.h i HardwareAPI.h .
  3. Zbuduj swoją wtyczkę jako bibliotekę współdzieloną o nazwie libstagefrighthw.so w swoim produkcie Makefile. Na przykład:
    LOCAL_MODULE := libstagefrighthw
    

    Upewnij się, że w pliku Makefile Twojego urządzenia deklarujesz moduł jako pakiet produktu:

    PRODUCT_PACKAGES += \
      libstagefrighthw \
      ...
    

Udostępnianie kodeków we frameworku

Usługa Stagefright analizuje pliki system system/etc/media_codecs.xml i system/etc/media_profiles.xml w celu udostępnienia obsługiwanych kodeków i profili na urządzeniu twórcom aplikacji za pośrednictwem klas android.media.MediaCodecList i android.media.CamcorderProfile . Musisz utworzyć oba pliki w katalogu device/<company>/<device>/ i skopiować je do katalogu system/etc obrazu systemu w pliku Makefile urządzenia. Na przykład:

PRODUCT_COPY_FILES += \
  device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \
  device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \

Aby zapoznać się z pełnymi przykładami, zobacz device/samsung/tuna/media_codecs.xml i device/samsung/tuna/media_profiles.xml .

Uwaga: od Androida 4.1 element <Quirk> dla kodeków multimedialnych nie jest już obsługiwany.