Ramy jakości multimediów

W Androidzie 16 wprowadzamy na Androida TV platformę jakości multimediów, której celem jest ustanowienie standardowego interfejsu API do dostosowywania jakości obrazu i jakości 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ępniać nowe funkcje oraz stworzyć podstawy dla ujednoliconego interfejsu AQ/PQ i lepszych wrażeń użytkownika.

Platforma Media Quality 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ć na podstawie nazwy pakietu (aplikacji) i identyfikatora wejścia. Profile mogą być też 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 dla konkretnych aplikacji multimedialnych oraz ustawiania profili obrazu wejścia telewizyjnego dla konkretnych wejść, takich jak HDMI. Framework 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 platformy jakości mediów

  • 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ętu, którą dostawcy układów SoC wdrażają, aby przekazywać zmiany profilu obrazu i dźwięku do sprzętu bazowego.

Funkcje

Media Quality Framework obsługuje wiele 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 dostosować działanie.
  • Domyślne profile: aplikacje systemowe mogą ustawiać domyślne profile dla określonych 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 obrazu

  1. Aplikacja systemowa wywołuje funkcję setPictureProfileAllowList(), aby przyznać aplikacji multimedialnej uprawnienia do tworzenia profili.
  2. Aplikacja multimedialna rejestruje PictureProfileCallback, aby otrzymywać powiadomienia o zmianach w profilu.
  3. Aplikacja multimedialna wywołuje funkcję createPictureProfile() z obiektem PictureProfile.
  4. Usługa 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 multimedialna 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 rezerwa dla treści, do których nie przypisano konkretnego profilu.

  1. Aplikacja systemowa pobiera z platformy listę dostępnych profili obrazu.
  2. Aplikacja wybiera następnie jeden z tych profili jako nowy domyślny profil globalny, wywołując funkcję setDefaultPictureProfile(id).
  3. Framework wysyła parametry tego profilu do HAL jakości multimediów, który 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.

Kategoria 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 układów SoC muszą zaimplementować ten interfejs. Warstwa HAL stanowi pomost komunikacyjny między MediaQualityService w strukturze 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 parcelable. 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 Media Quality, 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 o zmianach w profilu dźwięku.
ISoundProfileAdjustmentListener.aidl Interfejs odbiornika, którego HAL używa do powiadamiania platformy o dostosowaniach dźwięku wprowadzonych na poziomie sprzętu.