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.

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

Rysunek 2. Diagram sekwencji tworzenia profilu obrazu
- Aplikacja systemowa wywołuje funkcję
setPictureProfileAllowList(), aby przyznać aplikacji multimedialnej uprawnienia do tworzenia profili. - Aplikacja multimedialna rejestruje
PictureProfileCallback, aby otrzymywać powiadomienia o zmianach w profilu. - Aplikacja multimedialna wywołuje funkcję
createPictureProfile()z obiektemPictureProfile. - Usługa
MediaQualityServiceprzetwarza żądanie, zapisuje profil w bazie danych i powiadamia aplikację o sukcesie lub niepowodzeniu za pomocą zarejestrowanego wywołania zwrotnego (onPictureProfileAdded()lubonError()).
Ustawianie profilu obrazu dla poszczególnych strumieni
Ten proces pokazuje, jak aplikacja może zastosować określony profil do treści wideo podczas odtwarzania.

Rysunek 3. Diagram sekwencji ustawiania profilu obrazu dla poszczególnych strumieni
- Aplikacja multimedialna wysyła zapytanie do
MediaQualityManager, aby uzyskać listę dostępnych profili obrazu. - Aplikacja używa następnie
MediaCodec.setParameters, aby wybrać i ustawić żądany profil dla transmisji. - Framework przekazuje ten wybór do warstwy HAL jakości multimediów (MQ), przesyłając identyfikator profilu i jego parametry.
- 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.
- Aplikacja systemowa pobiera z platformy listę dostępnych profili obrazu.
- Aplikacja wybiera następnie jeden z tych profili jako nowy domyślny profil globalny, wywołując funkcję
setDefaultPictureProfile(id). - 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. |