Odtwarzanie filmów w technologii High Dynamic Range (HDR) na urządzeniach mobilnych często ma poważną wadę: niespójność wizualną na różnych panelach. Podczas przeglądania źródeł treści mieszanych, w których współistnieją elementy o standardowym zakresie dynamiki (SDR) i HDR, potoki renderowania mają trudności z ich zrównoważeniem. Powoduje to nieregularne, gwałtowne przejścia i nieprzewidywalne skoki jasności.
W przypadku twórców treści ten brak jednolitości może negatywnie wpływać na ich zamysł artystyczny. Film HDR, który został starannie poddany korekcji kolorów na profesjonalnym monitorze, może być wyświetlany na urządzeniu konsumenckim z przyciętymi jasnymi partiami, wyblakłymi tonami lub zniekształconymi cieniami.
Eclipsa to nowoczesny standard wideo HDR, który rozwiązuje te problemy związane z ekosystemem różnych urządzeń. Technologia Eclipsa, oparta 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, niewymagającej konfiguracji integracji z Jetpack Media3 ExoPlayer i standardowymi potokami przechwytywania Camera2, Eclipsa Video oferuje zespołom inżynierów mobilnych bezpłatną i bezproblemową ścieżkę do wdrażania strumieniowania wideo nowej generacji, które dostosowuje się do sprzętu i zachowuje zamysł artystyczny na każdym ekranie.
Architektura techniczna SMPTE ST 2094-50
Wyświetlacze urządzeń mobilnych różnią się znacznie pod względem zapasu 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 filmu HDR, jasne fragmenty są przycinane lub wyglądają na matowe. Rzeczywisty zapas i referencyjny punkt bieli ekranu zmieniają się dynamicznie, gdy czujniki jasności otoczenia dostosowują panel do otoczenia.
Standard SMPTE ST 2094-50 rozwiązuje ten problem, wprowadzając dwuwarstwowe metadane, które zapewniają spójność wizualną dzięki 2 głównym filarom:
Punkt odniesienia bieli
Ustanawia to rygorystyczną wartość bazową, która mapuje szczytową jasność elementów SDR bezpośrednio na referencyjny punkt bieli wyświetlacza. Wszystkie wartości luminancji przekraczające tę wartość są zarezerwowane wyłącznie dla jasnych obszarów HDR. Ten przewidywalny mechanizm zakotwiczenia zapewnia, że gdy warstwy SDR i HDR są łączone na ekranie, zachowują zamierzoną relację wizualną bez wzajemnego rozmywania.
Krzywe wzmocnienia dostosowane do pola manewru
Zamiast wymuszać statyczną krzywą mapowania tonów, twórcy umieszczają parametryczne metadane, które dokładnie instruują potok wyświetlania, jak skalować, gdy dostępna jest ograniczona przestrzeń. Standard ten zapewnia twórcom szczegółową elastyczność w wyborze, czy panel docelowy ma łagodnie przycinać jasne miejsca, przycinać je twardo czy kompresować tony pośrednie i cienie, aby aktywnie zachowywać najdrobniejsze szczegóły w jasnych obszarach.
Obsługa platformy
Obsługa odtwarzania i nagrywania filmów Eclipsa na poziomie platformy została wprowadzona w Androidzie 17 (poziom interfejsu API 37).
Implementowanie odtwarzania
W przypadku standardowego tworzenia aplikacji Media3 ExoPlayer zapewnia gotową obsługę filmów Eclipsa. Podczas analizowania plików z metadanymi SMPTE 2094-50 ExoPlayer wyodrębnia i stosuje metadane bezproblemowo, bez konieczności niestandardowej konfiguracji odtwarzacza.
Standardowa inicjalizacja odtwarzacza: aby utworzyć instancję interfejsu odtwarzacza, zapoznaj się z omówieniem ExoPlayera w Media3.
Zastąpienia ścieżek: jeśli aplikacja automatycznie wysyła zapytania do określonych profili HDR lub je blokuje, zapoznaj się z interfejsem Media3 Track Selection API.
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, które występują w starszych warstwach renderowania w Androidzie 16 (poziom API 36) i starszych.
Implementowanie przechwytywania wideo
Aby nagrać film Eclipsa z urządzenia, musisz skonfigurować potok kamery 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 podczas sesji aparatu znajdziesz w artykule o nagrywaniu filmów HDR.
W przypadku metadanych SMPTE 2094-50 nie jest wymagana żadna konfiguracja kodeka. Jeśli metadane istnieją w aktywnym profilu dynamicznym, platforma multimedialna Androida automatycznie je dołącza i przekazuje.
Uwagi dotyczące zgodności i wydajności
Aby monitorować wydajność, pobierz aktywny obiekt Display i sprawdź, czy w obiekcie OverlayProperties zwracanym przez getOverlaySupport() znajduje się LutProperties, aby określić dostępność ścieżek z akceleracją sprzętową.
W przypadku urządzeń, które nie obsługują akceleracji sprzętowej, pracujemy nad możliwością rezygnacji z renderowania filmów 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