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 poprzez oferowanie 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. Profilami i ustawieniami można zarządzać według nazwy pakietu (aplikacji) lub identyfikatora wejścia. Profile mogą też tworzyć aplikacje systemowe lub aplikacje z listy dozwolonych. Mogą być one aktualizowane lub usuwane tylko przez właściciela.

Zarządza on w szczególności profilami obrazu i dźwięku. Przykłady parametrów obrazu to jasność, kontrast i ostrość, a przykłady parametrów dźwięku to basy i wysokie tony.

Profile te można stosować w różnych kontekstach, m.in. ustawiając globalne profile domyślne, profile strumieniowania za pomocą MediaCodec, profile domyślne aplikacji dla konkretnych aplikacji multimedialnych oraz profile obrazu wejścia telewizora dla konkretnych wejść, takich jak HDMI. Framework obsługuje też zmiany stanu (umożliwiając różne zestawy parametrów dla stanów takich jak HDR), zarządza aktywnymi profilami obrazu na potrzeby bieżącego przetwarzania i obsługuje funkcje 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 PQ AQ
Rysunek 1. Interakcje między komponentami Media Quality Framework.
  • Media Quality Manager (SDK API): interfejs API pakietu SDK, który jest widoczny dla aplikacji i umożliwia im 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.
  • Media Quality Database: 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 SoC wdrażają w celu przekazywania zmian w profilach 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 profilem

  • Profile zarządzane przez aplikacje: aplikacje mogą tworzyć, aktualizować i usuwać własne profile, aby dostosowywać działanie.
  • Profile domyślne: aplikacje systemowe mogą ustawiać profile domyślne dla konkretnych aplikacji lub wejść telewizora (np. HDMI 1).
  • Globalny profil domyślny: profil rezerwowy 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. 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 każdego strumienia.
  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ć wybrany profil dla strumienia.
  3. Framework przekazuje ten wybór do warstwy HAL jakości multimediów (MQ), przekazują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 przypisano konkretnego profilu.

  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 przesył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

HAL jakości multimediów 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. HAL służy jako pomost komunikacyjny 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 parcelable. Obejmuje to odbieranie zmian profilu z platformy i powiadamianie jej o wszelkich korektach 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 usługi Composer) 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.