Android 14 obsługuje zapisywanie skompresowanych zdjęć w formacie ultra HDR za pomocą formatu obrazu JPEG_R
. Ten format jest wstecznie zgodny z obrazami JPEG w formacie SDR i obsługuje renderowanie treści w formacie HDR.
Szczegółowe informacje o specyfikacji formatu Ultra HDR znajdziesz w tym dokumencie.
Implementacja
W tej sekcji opisujemy, jak wdrożyć funkcję Ultra HDR.
Implementacja referencyjna
Platforma kamery AOSP i usługa kamery obejmują referencyjną implementację Ultra HDR.
Oprócz funkcji referencyjnych w ramach aparatu możesz zaimplementować ultra HDR w komponencie HAL aparatu i ogłosić obsługę JPEG_R
w taki sam sposób jak inne strumienie wyjściowe komponentu HAL aparatu. W tym scenariuszu HAL aparatu musi wygenerować niezbędną mapę odzyskiwania i końcowy obraz JPEG_R
zgodnie ze specyfikacją ultra HDR.
Możesz zoptymalizować i dostosować ostateczny wynik w zależności od możliwości sprzętowych i programowych urządzenia.
Opcje implementacji
Producenci urządzeń mogą zdecydować o tych poziomach obsługi Ultra HDR na swoich urządzeniach:
- Minimalna: w tej konfiguracji renderowanie w ultra HDR za pomocą funkcji strumienia złożonego usługi aparatu jest domyślnie wyłączone. Aby włączyć implementację referencyjną
JpegRCompositeStream
, ustaw właściwość systemowąro.camera.enableCompositeAPI0JpegR
natrue
. Ponieważ wszystkie procesy i kodowanie są wykonywane w oprogramowaniu, ta opcja może powodować zwiększenie opóźnień i spadek wydajności. - Umiarkowane: w tym przypadku
JpegRCompositeStream
implementacja używa dostarczonego przez HAL pliku JPEG SDR jako obrazu podstawowego i klatki P010 do obliczenia mapy odzyskiwania. Ta opcja obejmuje przetwarzanie oprogramowania na ścieżce danych, ale jest stosunkowo niewielkie w porównaniu z opcją minimalną. - Rozszerzona: komponent HAL aparatu reklamuje i obsługuje
JPEG_R
strumień wyjściowy bezpośrednio. Ta opcja umożliwia producentom urządzeń wdrażanie optymalizacji specyficznych dla danego urządzenia i może znacznie poprawić jakość obrazu.
Aby wyłączyć implementację JpegRCompositeStream
, ustaw właściwość kompilacji ro.camera.disableJpegR
na true
. Jeśli ta właściwość kompilacji nie jest ustawiona lub ma wartość false
, Ultra HDR jest domyślnie włączony przez JpegRCompositeStream
na urządzeniach obsługujących 10-bitowe wyjście i jednoczesne przechwytywanie 10- i 8-bitowe.
Weryfikacja
Aby sprawdzić, czy funkcja Ultra HDR działa na urządzeniu, przeprowadź te testy.
Testy CTS
ImageReaderTest.java#testImageReaderBuilderWithBLOBAndJpegR
ImageReaderTest.java#testJpegR
ImageReaderTest.java#testJpegRDisplayP3
PerformanceTest.java#testSingleCapture
StillCaptureTest.java# testJpegRCapture
Testy ITS
Testy ręczne
Aby przeprowadzić testy ręczne, użyj przykładowej implementacji przechwytywania obrazów w formacie ultra HDR, która obejmuje obsługę konfiguracji i przechwytywania obrazów w formacie ultra HDR za pomocą JPEG_R
.