Odtwarzanie filmów w trybie High Dynamic Range (HDR) na urządzeniach mobilnych często ma poważną wadę – niespójność obrazu na różnych ekranach. Podczas przeglądania treści mieszanych, w których współistnieją elementy w trybie Standard Dynamic Range (SDR) i HDR, potoki renderowania mają trudności z ich zrównoważeniem. Powoduje to nieprzewidywalne, nieprzyjemne przejścia i nagłe skoki jasności.
W przypadku twórców treści brak jednolitości narusza ich intencje artystyczne. Film HDR starannie skalibrowany na profesjonalnym monitorze może być wyświetlany na urządzeniu konsumenckim z obciętymi jasnymi partiami, wyblakłymi odcieniami lub przyciemnionymi cieniami.
Eclipsa video to nowoczesny standard wideo HDR, który ma rozwiązać te problemy w ekosystemie urządzeń. Eclipsa video, oparty na specyfikacji SMPTE ST 2094-50, umożliwia wyświetlaczom dynamiczne dostosowywanie mapowania treści na podstawie możliwości sprzętowych i warunków oświetlenia otoczenia w czasie rzeczywistym. Dzięki wbudowanej integracji bez konfiguracji w Jetpack Media3 ExoPlayer i standardowych potokach przechwytywania Camera2 Eclipsa video oferuje zespołom inżynierów mobilnych bezpłatną i bezproblemową ścieżkę do wdrożenia strumieniowego przesyłania wideo nowej generacji, które dostosowuje się do sprzętu i zachowuje intencje artystyczne na każdym ekranie.
Architektura techniczna SMPTE ST 2094-50
Wyświetlacze mobilne znacznie różnią się pod względem zakresu luminancji, czyli ilości jasności dostępnej powyżej referencyjnego punktu bieli wyświetlacza. Gdy ograniczenia sprzętowe wyświetlacza nie są zgodne z wymaganiami dotyczącymi masteringu wideo HDR, jasne partie są obcinane lub wyglądają na przyciemnione. Rzeczywisty zakres i referencyjny punkt bieli ekranu zmieniają się dynamicznie, gdy czujniki światła otoczenia dostosowują ekran do otoczenia.
SMPTE ST 2094-50 rozwiązuje ten problem, wprowadzając metadane dwuwarstwowe, które zapewniają spójność wizualną dzięki 2 głównym filarom:
Referencyjny punkt bieli
Ustanawia on ścisłą linię bazową, która mapuje szczytową jasność elementów SDR bezpośrednio na referencyjny punkt bieli wyświetlacza. Wszystkie wartości luminancji przekraczające ten punkt są zarezerwowane wyłącznie dla jasnych partii HDR. Ten przewidywalny mechanizm kotwiczenia zapewnia, że gdy warstwy SDR i HDR są łączone na ekranie, zachowują zamierzoną relację wizualną bez wzajemnego rozmywania.
Krzywe wzmocnienia dostosowujące się do zakresu
Zamiast wymuszać statyczną krzywą mapowania tonów, twórcy osadzają metadane parametryczne, które dokładnie instruują potok wyświetlania, jak skalować obraz, gdy dostępny jest ograniczony zakres. Standard daje twórcom dużą elastyczność w wyborze, czy docelowy panel ma delikatnie obcinać jasne partie, obcinać je twardo, czy też kompresować tony pośrednie i cienie, aby aktywnie zachować najdrobniejsze szczegóły w jasnych obszarach.
Obsługa platformy
Obsługa odtwarzania i przechwytywania wideo Eclipsa na poziomie platformy została wprowadzona w Androidzie 17 (poziom interfejsu API 37).
Wdrażanie odtwarzania
W przypadku standardowego tworzenia aplikacji Media3 ExoPlayer zapewnia gotową obsługę wideo Eclipsa. Podczas analizowania plików osadzonych w metadanych SMPTE 2094-50 ExoPlayer bezproblemowo wyodrębnia i stosuje metadane, bez konieczności konfigurowania odtwarzacza.
Standardowa inicjalizacja odtwarzacza: aby utworzyć instancję powierzchni odtwarzacza, zapoznaj się z omówieniem Media3 ExoPlayer.
Zastępowanie ścieżek: jeśli Twoja aplikacja programowo wysyła zapytania o określone profile HDR lub je blokuje, zapoznaj się z interfejsem Media3 API do wybierania ścieżek.
Zalecamy przeniesienie potoków odtwarzania do Jetpack Media3. ExoPlayer natywnie obsługuje wyodrębnianie kontenerów niskiego poziomu, co całkowicie omija znane artefakty dekodowania na poziomie platformy występujące w starszych warstwach renderowania w Androidzie 16 (poziom interfejsu API 36) i starszych.
Wdrażanie przechwytywania wideo
Aby nagrywać wideo Eclipsa na urządzeniu, potok kamery musi być skonfigurowany tak, aby generował metadane SMPTE 2094-50 przez przypisanie zgodnego profilu zakresu dynamicznego.
Po sprawdzeniu obsługi urządzenia za pomocą CameraCharacteristics przekieruj strumień do powierzchni kodera za pomocą profilu DynamicRangeProfiles.HLG10_SMPTE_2094_50. Instrukcje dotyczące wysyłania zapytań i konfigurowania profili zakresu dynamicznego w sesjach kamery znajdziesz w artykule Przechwytywanie wideo HDR.
W przypadku metadanych SMPTE 2094-50 nie jest wymagana żadna jawna konfiguracja kodeka. Jeśli metadane znajdują się w aktywnym profilu dynamicznym, platforma multimedialna Androida automatycznie je dołącza i przekazuje.
Względy dotyczące zgodności i wydajności
Aby monitorować wydajność, pobierz aktywny obiekt Display i sprawdź, czy w jego overlayProperties znajdują się LutProperties, aby określić dostępność ścieżek akcelerowanych sprzętowo.
W przypadku urządzeń, które nie mają możliwości akceleracji sprzętowej, opracowujemy obsługę rezygnacji z renderowania wideo Eclipsa w Exoplayerze.
Dodatkowe materiały
- Specyfikacja SMPTE ST 2094-50
- HDR Explorer: aplikacja internetowa do sprawdzania metadanych SMPTE ST 2094-50 i krzywych wzmocnienia