W przypadku urządzeń z Androidem 13 lub nowszym Android obsługuje 10-bitowe dane wyjściowe z aparatu za pomocą profili zakresu dynamicznego, które klient aparatu może skonfigurować w ramach konfiguracji strumienia. Producenci urządzeń mogą dodać obsługę 10-bitowych profili zakresu dynamicznego, takich jak HLG10, HDR10, HDR10+ i Dolby Vision.
Obsługa 10-bitowego wyjścia z kamery umożliwia klientom kamery wykrywanie obsługiwanych 10-bitowych profili zakresu dynamicznego urządzenia przez wywołanie funkcji getSupportedProfiles
.
Framework zwraca wtedy instancję DynamicRangeProfiles
, która zawiera informacje o obsługiwanych profilach zakresu dynamicznego oraz, jeśli są dostępne, ograniczenia żądania przechwytywania. HLG10
Profil musi być obsługiwany. Zalecany profil zakresu dynamicznego jest podany w polu REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE
.
Klienci kamery mogą konfigurować kombinacje strumieni, wywołując funkcję setDynamicRangeProfile
.
Więcej informacji o obowiązkowych kombinacjach strumieni wyjściowych znajdziesz w tabeli Dodatkowe gwarantowane konfiguracje 10-bitowego wyjścia w sekcji Zwykłe przechwytywanie.
Wymagania
Aby obsługiwać 10-bitowe dane wyjściowe z aparatu, urządzenie musi mieć czujnik aparatu o 10-bitowej lub wyższej rozdzielczości z odpowiednią obsługą ISP. Szczegółowe informacje o wymaganiach dotyczących zgodności związanych z obsługą 10-bitowego koloru znajdziesz w sekcji 7.5. Kamery w dokumencie CDD.
Implementacja
Aby zapewnić obsługę 10-bitowego wyjścia z aparatu, producenci urządzeń muszą przeprowadzić następujące integracje interfejsu HAL AIDL aparatu:
- Uwzględnij
ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT
w możliwościach aparatu. - Wypełnij pole
ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP
wszystkimi obsługiwanymi profilami zakresu dynamicznego i mapą bitową ich ograniczeń.HLG10
Profil musi być obsługiwany. Musisz też podać zalecany profil zakresu dynamicznego, aby poinformować klientów aparatu o optymalnym obsługiwanym formacie. - Zapewnij obsługę wartości profilu zakresu dynamicznego podczas konfiguracji strumienia w przypadku strumieni korzystających z formatu P010 lub obsługę formatu zdefiniowanego przez implementację (
ImageFormat.PRIVATE
). - W zależności od profilu zakresu dynamicznego ustaw statyczny lub dynamiczny bufor metadanych przetworzonych buforów Gralloc 4 przed powiadomieniem usługi aparatu.
Więcej informacji o 10-bitowym wyjściu z aparatu w HAL aparatu znajdziesz w metadata_definitions.xml
:
DYNAMIC_RANGE_TEN_BIT
- Szczegóły HAL dla
availableDynamicRangeProfilesMap
recommendedTenBitDynamicRangeProfile
10BIT_OUTPUT
Przykładową implementację komponentu HAL aparatu obsługującą 10-bitowe dane wyjściowe znajdziesz w tym artykule: /hardware/google/camera/devices/EmulatedCamera/hwl
.
Weryfikacja
Aby sprawdzić poprawność implementacji 10-bitowego wyjścia z aparatu i upewnić się, że aplikacje innych firm mogą włączyć tę funkcję, zalecamy przeprowadzenie tych 3 etapów weryfikacji.
- Testowanie prawidłowości działania interfejsu API
- Porównanie aplikacji Aparat i aplikacji innej firmy
- Porównanie standardowego i wysokiego zakresu dynamicznego
W przypadku wizualnej weryfikacji 10-bitowego wyjścia z aparatu zakłada się, że urządzenie obsługuje wyświetlanie HDR (wyświetlacz o jasności ponad 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 przetestować poprawność działania interfejsu API 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 tam, gdzie jest to wymagane.tests/camera/src/android/hardware/camera2/cts/
: zapewnia, że aparat działa zgodnie ze specyfikacjami interfejsu API AOSP.cts/apps/CameraITS
: potwierdza, że ogólne zachowanie filmu jest spójne w przypadku używania profili HDR. Konkretny test totests/scene4/test_video_aspect_ratio_and_crop.py
.
Porównanie natywnej aplikacji aparatu i aplikacji innej firmy
Zdecydowanie zalecamy, aby wyniki nagrywania 10-bitowych filmów za pomocą aplikacji innej firmy były podobne, jeśli nie identyczne, jak w przypadku natywnej aplikacji aparatu. Oznacza to, że ustawienia, takie jak ekspozycja, zakres dynamiczny i kolor, powinny być przenoszone z aplikacji natywnej do aplikacji innych firm. Aby sprawdzić, jak aplikacja innej firmy obsługująca 10-bitowe dane wyjściowe z kamery nagrywa filmy na Twoim urządzeniu, użyj przykładowej aplikacji Camera2Video w serwisie GitHub. Poniższe wskazówki ilustrują widoczne aspekty HDR bez podawania 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 w kilku różnych scenach za pomocą natywnej aplikacji aparatu i przykładowej aplikacji Camera2Video. Oto sugerowane sceny do porównania:
- Scena z średnim lub słabym oświetleniem, na której znajduje się jasny obiekt, np. świeca lub małe jasne światło, które tworzy znaczny zakres jasności. Potwierdza to działanie automatycznej ekspozycji i zakres dynamiczny.
- Jasna scena plenerowa z żywymi kolorami i odblaskowymi obiektami, takimi jak chromowane zderzaki samochodu, które tworzą jasne odblaski. Potwierdza to renderowanie jasnych scen z jeszcze jaśniejszymi światłami.
- Scena o średnim zakresie dynamiki, np. naturalna scena w pomieszczeniu w domu lub biurze. Potwierdza to, że mniej ekstremalne warunki oświetleniowe działają zgodnie z oczekiwaniami.
W przypadku wszystkich scen zalecamy, aby na zdjęciu były osoby i twarze, co pozwoli sprawdzić ekspozycję, kolor i odcień skóry. Zmniejszenie różnic między kolejnymi zdjęciami ułatwia porównywanie ich ze sobą.
Porównanie standardowego i wysokiego zakresu dynamicznego
Aby mieć pewność, że używanie profilu o 10-bitowym zakresie dynamiki przynosi korzyści w porównaniu z profilem o standardowym zakresie dynamiki, porównaj nagrania wideo w SDR (bez profilu HDR) z filmami HDR. Sprawdź, czy w nagraniach widać kluczowe aspekty HDR. Aby porównać SDR i HDR, użyj przykładowej aplikacji Camera2Video i sugerowanych scen do porównania natywnej aplikacji aparatu i aplikacji innych firm.
Oto najważniejsze aspekty, które należy sprawdzić w sugerowanych scenach. Wyświetlacze obsługujące HDR różnią się poziomem jasności (mierzonym w nitach lub lumenach), więc podane poniżej wartości mają charakter przykładowy:
- W scenie o średnim lub słabym oświetleniu jasne obszary świecy lub małego światła są renderowane z maksymalną jasnością wyświetlacza (prawdopodobnie do 1000 nitów) w klipie HDR i z maksymalną jasnością SDR (około 100 nitów) w klipie SDR. W klipie HDR jasne elementy powinny być wyraźnie widoczne na wyświetlaczu, odzwierciedlając to, jak użytkownik postrzega prawdziwy zakres dynamiczny sceny. W porównaniu z klipem HDR klip SDR powinien być bardziej płaski i mniej jasny.
- W scenie z jasnym obrazem klip HDR może wykazywać widoczną różnicę w jasności ekranu w porównaniu z klipem SDR, w zależności od ustawień urządzenia. W przypadku klipu HDR jasność ekranu dla całej sceny (w zależności od zakresu dynamiki) powinna być wyższa, np. do 800 nitów, a w przypadku jasnych świateł, takich jak chromowane zderzaki, jeszcze wyższa, w pobliżu maksymalnej jasności.
- W przypadku nagrań w pomieszczeniach o średnim i niskim zakresie dynamiki klipy HDR i SDR mają podobne kolory i odcienie, przy czym nagranie HDR może być jaśniejsze niż SDR. HDR nie powinien być ciemniejszy niż SDR. Jeśli wybór ustawień to uniemożliwia, zadbaj o to, aby działanie aplikacji innej firmy było zgodne z działaniem natywnej aplikacji aparatu.