Ramy jakości multimediów

W Androidzie 16 wprowadzamy platformę jakości multimediów na Androida TV, aby utworzyć standardowy interfejs API do dostosowywania jakości obrazu i dźwięku. Głównym celem jest zapewnienie jednolitego podejścia do tych dostosowań na różnych urządzeniach z Androidem TV. Ta ustandaryzowana platforma ma na celu uproszczenie procesu tworzenia aplikacji dla deweloperów, producentów oryginalnego sprzętu (OEM) i dostawców układów SOC dzięki oferowaniu spójnego zestawu interfejsów API Androida. W przypadku dostawców układów SoC umożliwia to platformie Androida obsługę konfiguracji PQ i AQ, co zmniejsza nakład pracy związany ze współpracą z różnymi deweloperami aplikacji.

W przypadku Google i platformy Android pomaga to zmniejszyć fragmentację, poprawić jakość i skalowalność, udostępnić nowe funkcje oraz stworzyć podstawy dla ujednoliconego interfejsu AQ/PQ i lepszych wrażeń użytkownika.

Platforma jakości multimediów obsługuje różne przypadki użycia, które pozwalają poprawić komfort oglądania telewizji. Warto zauważyć, że profilami i ustawieniami można zarządzać w przypadku poszczególnych nazw pakietów (aplikacji) i identyfikatorów wejścia. Profile mogą też być tworzone przez aplikacje systemowe lub inne aplikacje znajdujące się na liście dozwolonych. Profile mogą być aktualizowane lub usuwane tylko przez ich właścicieli. W szczególności framework zarządza profilami obrazu i dźwięku. Przykłady parametrów obrazu to jasność, kontrast i ostrość. Przykłady parametrów dźwięku to basy i wysokie tony. Profile te można stosować w różnych kontekstach, m.in. do ustawiania globalnych profili domyślnych, przesyłania strumieniowego profili za pomocą MediaCodec, ustawiania domyślnych profili aplikacji w przypadku konkretnych aplikacji multimedialnych oraz ustawiania profili obrazu wejścia telewizyjnego w przypadku konkretnych wejść, takich jak HDMI. Platforma obsługuje też zmiany stanu, umożliwiając stosowanie różnych zestawów parametrów w przypadku stanów takich jak HDR, zarządzanie aktywnymi profilami obrazu na potrzeby bieżącego przetwarzania i obsługę funkcji podświetlenia otoczenia.

Zespół Androida współpracuje z partnerami z ekosystemu, aby wspierać platformę Media Quality.

Komponenty

Platforma jakości multimediów składa się z kilku kluczowych komponentów, które współpracują ze sobą na poziomie aplikacji, platformy i sprzętu.

Schemat standaryzacji jakości obrazu i dźwięku

Rysunek 1. Interakcje między komponentami Media Quality Framework

  • Media Quality Manager (interfejs API pakietu SDK): interfejs API pakietu SDK, który umożliwia aplikacjom zarządzanie profilami obrazu i dźwięku.
  • Usługa jakości multimediów: usługa systemowa, która zawiera podstawową logikę biznesową, zarządza profilami, uprawnieniami i komunikacją z HAL.
  • Baza danych jakości multimediów: baza danych SQLite, w której są przechowywane wszystkie profile obrazu i dźwięku.
  • Umowa dotycząca jakości multimediów: określa standardowe parametry i struktury danych używane do komunikacji między aplikacjami a platformą.
  • Media Quality HAL: warstwa abstrakcji sprzętowej, którą dostawcy układów SoC wdrażają w celu przekazywania zmian profilu obrazu i dźwięku do sprzętu bazowego.

Funkcje

Media Quality Framework obsługuje szeroki zakres funkcji, które zapewniają elastyczny i skuteczny system zarządzania jakością multimediów.

Zarządzanie profilami

  • Profile zarządzane przez aplikacje: aplikacje mogą tworzyć, aktualizować i usuwać własne profile, aby dostosowywać działanie.
  • Domyślne profile: aplikacje systemowe mogą ustawiać domyślne profile dla konkretnych aplikacji lub wejść telewizora (np. HDMI 1).
  • Globalny profil domyślny: profil zastępczy w całym systemie, który jest stosowany, gdy nie jest ustawiony żaden konkretny profil.

Ogólny przepływ pracy

Poniższe diagramy ilustrują sekwencje wywołań w przypadku typowych operacji związanych z jakością multimediów.

Tworzenie i stosowanie profilu obrazu

Tworzenie profilu obrazkowego

Rysunek 2. Diagram sekwencji tworzenia profilu z obrazem

  1. Aplikacja systemowa wywołuje funkcję setPictureProfileAllowList(), aby przyznać aplikacji do multimediów uprawnienia do tworzenia profili.
  2. Aplikacja do multimediów rejestruje PictureProfileCallback, aby otrzymywać powiadomienia o zmianach w profilu.
  3. Aplikacja do multimediów wywołuje funkcję createPictureProfile() z obiektem PictureProfile.
  4. MediaQualityService przetwarza żądanie, zapisuje profil w bazie danych i powiadamia aplikację o sukcesie lub niepowodzeniu za pomocą zarejestrowanego wywołania zwrotnego (onPictureProfileAdded() lub onError()).

Ustawianie profilu obrazu dla poszczególnych strumieni

Ten proces pokazuje, jak aplikacja może zastosować określony profil do treści wideo podczas odtwarzania.

Ustawianie profilu obrazu strumienia

Rysunek 3. Diagram sekwencji ustawiania profilu obrazu dla poszczególnych strumieni

  1. Aplikacja do multimediów wysyła zapytanie do MediaQualityManager, aby uzyskać listę dostępnych profili obrazu.
  2. Aplikacja używa następnie MediaCodec.setParameters, aby wybrać i ustawić żądany profil dla transmisji.
  3. Framework przekazuje ten wybór do warstwy HAL jakości multimediów (MQ), przesyłając identyfikator profilu i jego parametry.
  4. Na koniec MQ HAL wysyła te parametry do Composer HAL, który renderuje strumień wideo z określonym profilem obrazu.

Ustawianie domyślnego profilu globalnego

Tylko aplikacje systemowe mogą ustawić globalny profil domyślny, który służy jako profil rezerwowy w przypadku treści, do których nie jest przypisany żaden konkretny profil.

  1. Aplikacja systemowa pobiera z platformy listę dostępnych profili obrazu.
  2. Aplikacja wybiera jeden z tych profili jako nowy domyślny profil globalny, wywołując funkcję setDefaultPictureProfile(id).
  3. Framework wysyła parametry tego profilu do warstwy HAL jakości multimediów, która następnie wprowadza zmiany.

Media Quality SDK API

Interfejs Media Quality SDK API udostępnia aplikacjom narzędzia niezbędne do interakcji z platformą. Głównym punktem wejścia jest pakiet android.media.quality.

android.media.quality

Ten pakiet zawiera główne klasy do zarządzania jakością multimediów.

Klasa Opis
MediaQualityManager Główna klasa do interakcji z MQF.
PictureProfile Klasa danych reprezentująca pełny zestaw parametrów obrazu dla określonego trybu.
SoundProfile Klasa danych dla parametrów dźwięku.
MediaQualityContract Klasa zawierająca stałe dla wszystkich wstępnie zdefiniowanych kluczy parametrów.

MediaQualityManager

Najważniejsze metody to:

Metoda Opis
createPictureProfile(PictureProfile profile) Tworzy nowy profil obrazu. Wymaga specjalnych uprawnień lub dodania aplikacji do listy dozwolonych.
updatePictureProfile(PictureProfile profile) Aktualizuje istniejący profil obrazu. Może być wywoływana tylko przez twórcę profilu.
removePictureProfile(String profileId) Usuwa profil. Może być wywoływana tylko przez twórcę profilu.
getAvailablePictureProfiles() Zwraca listę wszystkich dostępnych profili obrazu.
setDefaultPictureProfile(String profileId) Ustawia globalny domyślny profil obrazu. Wymaga uprawnień MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE.
registerPictureProfileCallback(PictureProfileCallback cb) Rejestruje wywołanie zwrotne, które wykrywa zmiany w profilu.

Obiekt PictureProfile

Obiekt PictureProfile zawiera wszystkie informacje o danym trybie obrazu.

public final class PictureProfile {
  private String id;
  private int type; // System or Application
  private String name; // e.g., "Movie", "Game"
  private String inputId; // e.g., "HDMI1"
  private String packageName; // e.g., "com.google.android.youtube"
  private PersistableBundle parameters; // Bundle containing all PQ parameters
}

Warstwa HAL jakości multimediów

Media Quality HAL to interfejs oparty na AIDL zdefiniowany w hardware/interfaces/tv/mediaquality/aidl/. Aby włączyć na swoich urządzeniach platformę Media Quality Framework, dostawcy SoC muszą zaimplementować ten interfejs. HAL pełni funkcję pomostu komunikacyjnego między MediaQualityService w platformie Androida a sprzętem, odpowiadając za stosowanie korekt obrazu i dźwięku.

Warstwa HAL zarządza profilami obrazu i dźwięku za pomocą obiektów AIDL. Obejmuje to otrzymywanie zmian profilu z platformy i powiadamianie jej o wszelkich dostosowaniach wprowadzonych na poziomie sprzętu.

Moduły

Interfejs HAL składa się z kilku kluczowych plików AIDL:

Plik HAL Opis
IMediaQuality.aidl Główny interfejs usługi Jakość multimediów, który służy do ustawiania odbiorników i odkrywania możliwości sprzętowych.
IPictureProfileChangedListener.aidl Interfejs odbiornika, którego framework używa do powiadamiania HAL (w szczególności komponentu takiego jak HAL kompozytora) o zmianach w profilu obrazu.
IPictureProfileAdjustmentListener.aidl Interfejs odbiornika, którego HAL używa do powiadamiania platformy o zmianach wprowadzonych na poziomie sprzętu, np. gdy użytkownik zmieni ustawienie bezpośrednio za pomocą pilota sprzętowego.
PictureParameter.aidl Unia AIDL, która definiuje wszystkie standardowe parametry obrazu, takie jak kontrast i ostrość, które można dostosować.
PictureProfile.aidl Obiekt AIDL parcelable reprezentujący obiekt PictureProfile na warstwie HAL, zawierający identyfikator profilu i powiązane z nim parametry.
ISoundProfileChangedListener.aidl Interfejs odbiornika, którego framework używa do powiadamiania HAL-u o zmianach w profilu dźwięku.
ISoundProfileAdjustmentListener.aidl Interfejs odbiornika, którego HAL używa do powiadamiania platformy o zmianach dźwięku wprowadzonych na poziomie sprzętu.