W przypadku urządzeń z Androidem 13 lub nowszym Android obsługuje 10-bitowe dane wyjściowe z kamery za pomocą profili zakresu dynamicznego, które można skonfigurować przez klienta aparatu w ramach konfiguracji strumienia. Producenci urządzeń mogą dodać obsługę 10-bitowych profili zakresu dynamicznego, takich jak HLG10, HDR 10, HDR 10+ i Dolby Vision.
Obsługa 10-bitowego sygnału wyjściowego kamery pozwala klientom aparatów wykrywać obsługiwane 10-bitowe profile zakresu dynamicznego urządzenia, wywołując metodę getSupportedProfiles
.
Następnie framework zwraca instancję DynamicRangeProfiles
, która zawiera informacje o obsługiwanych profilach zakresu dynamicznego oraz, w razie potrzeby, ograniczenia żądania rejestrowania. Musisz mieć obsługiwany profil HLG10
. Zalecane ustawienie zakresu dynamicznego znajduje się w polu REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE
.
Klienty aparatu mogą konfigurować kombinacje strumieni, wywołując metodę setDynamicRangeProfile
.
Więcej informacji o obowiązkowych kombinacjach strumieni wyjściowych znajdziesz w tabeli Dodatkowe konfiguracje gwarantowanych 10-bitowych danych wyjściowych w artykule Zwykłe przechwytywanie.
Wymagania
Aby obsługiwać 10-bitowe wyjście z kamery, urządzenie musi mieć 10-bitowy czujnik z odpowiednim interfejsem ISP. Szczegółowe informacje o wymaganiach dotyczących zgodności dla obsługi systemów 10-bitowych znajdziesz w sekcji 7.5. Kamery w CDD.
Implementacja
Aby zapewnić obsługę 10-bitowego wyjścia z aparatu, producenci urządzeń muszą wykonać te integracje interfejsu Camera AIDL HAL:
- Uwzględnij
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT
w funkcjach aparatu. - Wypełnij element
ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
wszystkimi obsługiwanymi profilami zakresu dynamicznego oraz bitmapą ich ograniczeń. ProfilHLG10
musi być obsługiwany. Musisz też podać zalecany profil dynamicznego zakresu, aby poinformować klientów o optymalnym obsługiwanym formacie. - Upewnij się, że podczas konfigurowania strumienia obsługiwana jest wartość profilu zakresu dynamicznego w przypadku strumieni używających formatu P010 lub obsługi formatu zdefiniowanego przez implementację (
ImageFormat.PRIVATE
). - W zależności od profilu dynamicznego zakresu ustawiaj statyczne lub dynamiczne metadane bufora przetworzonych buforów Gralloc 4 przed powiadomieniem usługi aparatu.
Więcej informacji o 10-bitowych danych wyjściowych aparatu w HAL aparatu znajdziesz w tych materiałach w sekcji metadata_definitions.xml
:
DYNAMIC_RANGE_TEN_BIT
- Szczegóły HAL dla
availableDynamicRangeProfilesMap
recommendedTenBitDynamicRangeProfile
10BIT_OUTPUT
Przykład implementacji komponentu HAL aparatu obsługującego 10-bitowe dane wyjściowe aparatu znajdziesz w artykule /hardware/google/camera/devices/EmulatedCamera/hwl
.
Weryfikacja
Aby sprawdzić implementację 10-bitowego wyjścia z aparatu i upewnić się, że aplikacje innych firm mogą włączyć tę funkcję, zalecamy wykonanie tych 3 etapów weryfikacji.
- Sprawdzanie poprawności działania interfejsu API
- Porównanie aparatu natywnego i aplikacji innej firmy
- Porównanie standardowego zakresu dynamicznego i HDR
W celu wizualnej weryfikacji 10-bitowych danych wyjściowych aparatu przyjmijmy, że urządzenie obsługuje wyświetlanie filmów HDR (wyświetlacz o rozdzielczości 1000 nitów), a aplikacja do oglądania filmów (np. Zdjęcia Google) obsługuje odtwarzanie filmów HDR.
Testowanie poprawności działania interfejsu API
Aby sprawdzić poprawność działania interfejsu API w przypadku 10-bitowego wyjścia z kamery, uruchom te testy CTS, ITS i VTS:
hardware/interfaces/camera/provider/aidl/vts/
: testuje podstawowe wykrywanie, konfigurację i przesyłanie strumieniowe oraz sprawdza obecność metadanych HDR (w razie potrzeby).tests/camera/src/android/hardware/camera2/cts/
: zapewnia, że aparat działa zgodnie ze specyfikacją interfejsu AOSP API.cts/apps/CameraITS
: potwierdza, że ogólne działanie filmu jest spójne podczas używania profili HDR. Konkretny test totests/scene4/test_video_aspect_ratio_and_crop.py
.
Porównanie aparatu natywnego i aplikacji innej firmy
Zdecydowanie zalecamy, aby wyniki nagrywania 10-bitowego filmu za pomocą aplikacji innej firmy były podobne, jeśli nie takie same jak w przypadku natywnej aplikacji aparatu. Oznacza to, że ustawienia dostrajania, takie jak ekspozycja, zakres dynamiki i kolor, powinny zostać przeniesione z aplikacji natywnej na aplikacje innych firm. Aby sprawdzić, jak aplikacja innej firmy, która obsługuje 10-bitowe wyjście kamery na urządzeniu, wyświetla na Twoim urządzeniu proces nagrywania filmów, użyj przykładowej aplikacji Camera2Video na GitHubie. Poniższe wskazówki mają na celu zilustrowanie widocznych aspektów HDR bez obiektywnych liczb ze względu na zmienność czujników, paneli, warunków oglądania i preferencji dostawców.
Sugerowane sceny do porównania
Aby porównać natywną aplikację aparatu z aplikacją innej firmy, nagraj filmy z różnymi scenami za pomocą natywnej aplikacji aparatu i próbnej aplikacji Camera2Video. Oto sugerowane sceny do porównania:
- Scena o średnim lub słabym oświetleniu z jasnym obiektem, np. świecą lub małym jasnym światłem, które tworzy znaczny zakres jasności. Potwierdza to zachowanie automatycznej ekspozycji i zakres dynamiczny.
- Jasna scena plenerowa z żywymi kolorami i odbijające światło obiekty, takie jak chromowane zderzaki samochodu, które tworzą jasne refleksy. Potwierdza to renderowanie jasnych scen z jeszcze jaśniejszymi punktami.
- Średnia scena o niskim zakresie dynamicznym, np. naturalna scena wewnątrz domu lub biura. Potwierdza to, że w przypadku mniej ekstremalnych warunków oświetleniowych wszystko działa zgodnie z oczekiwaniami.
W przypadku wszystkich scen zalecamy, aby w kadrze były osoby i twarze, co pozwoli zweryfikować ekspozycję, kolorystykę i sposób odwzorowania odcienia skóry. Zmniejszenie różnic między ujęciami ułatwia porównywanie kolejnych ujęć.
Porównywanie standardowego zakresu dynamicznego i HDR
Aby mieć pewność, że korzystanie z 10-bitowego profilu zakresu dynamiki jest korzystniejsze niż korzystanie z profilu standardowego zakresu dynamiki, porównaj materiały wideo nagrane w standardzie SDR (bez profilu HDR) z materiałami HDR, aby sprawdzić, czy kluczowe aspekty HDR są widoczne w materiałach. Aby porównać obrazy SDR i HDR, użyj próbnej aplikacji Camera2Video i zaproponowanych scen, aby porównać natywną aplikację aparatu z aplikacjami innych firm.
Oto najważniejsze aspekty, które należy sprawdzić w zalecanych scenach. Panele wyświetlacze z obsługą HDR mają różne poziomy jasności (mierzone w nitach lub lumenach), więc poniższe wartości stanowią przykład:
- W scenie o średnim lub słabym oświetleniu jasne punkty światła świecy lub małego światła są renderowane z maksymalną jasnością dla wyświetlacza (do 1000 nitów) w klipie HDR i z maksymalną jasnością dla SDR (około 100 nitów) w klipie SDR. W klipie HDR jasne punkty powinny wyróżniać się na ekranie, odzwierciedlając sposób, w jaki użytkownik odbiera rzeczywisty zakres dynamiczny sceny. W porównaniu z klipem HDR klip SDR powinien być mniej jasny i mniej kontrastowy.
- W scenie z jasnym wyjściem, w zależności od ustawień urządzenia, klip HDR pokazuje widoczną różnicę w jasności ekranu w porównaniu z klipem SDR. W przypadku klipu HDR jasność ekranu całej sceny (w zależności od zapasu) powinna być wyższa, np. do 800 nitów, a w przypadku jasnych najciekawszych elementów, takich jak chromowane bumpery, powinna być zbliżona do maksymalnej.
- W przypadku nagrania w pomieszczeniu o średnim, niskim zakresie dynamiki klipy HDR i SDR są podobne pod względem kolorów i odcieni, przy czym nagranie HDR może być jaśniejsze niż SDR. Efekt HDR nie powinien być ciemniejszy niż SDR. Jeśli nie jest to możliwe, upewnij się, że działanie aplikacji innej firmy odpowiada działaniu natywnej aplikacji kamery.