Android 14 obsługuje kompresję zdjęć w ultra HDR za pomocą formatu obrazu JPEG_R
. Ten format jest zgodny z wsteczną kompatybilnością z obrazami JPEG SDR i obsługuje renderowanie treści w HDR.
Szczegółowe informacje o specyfikacji formatu ultra HDR znajdziesz w artykule Specyfikacja formatu obrazu ultra HDR w wersji 1.0.
Implementacja
W tej sekcji opisano, jak zaimplementować funkcję ultra HDR.
Implementacja referencyjna
Ramka i usługa aparatu AOSP obejmują referencyjne wdrożenie Ultra HDR.
Oprócz funkcji referencyjnych w ramach kamery możesz zaimplementować funkcję Ultra HDR w interfejsie HAL kamery i reklamować obsługę wyjścia JPEG_R
w taki sam sposób, jak inne strumienie wyjściowe HAL kamery. W tym scenariuszu interfejs HAL aparatu musi wygenerować niezbędną mapę odzyskiwania i ostateczny obraz JPEG_R
zgodnie ze specyfikacją Ultra HDR.
Możesz zoptymalizować i dostosować końcowy wynik w zależności od możliwości sprzętu i oprogramowania urządzenia.
Opcje implementacji
Producenci urządzeń mogą zdecydować o tych poziomach obsługi Ultra HDR na swoich urządzeniach:
- Minimalna: w tej konfiguracji funkcja wyjścia Ultra HDR za pomocą usługi strumieniowego obrazu złożonego z kamery jest domyślnie wyłączona. Aby włączyć implementację referencji
JpegRCompositeStream
, ustaw właściwość systemowąro.camera.enableCompositeAPI0JpegR
natrue
. Wszystkie procesy i kodowanie są wykonywane w oprogramowaniu, więc ta opcja może spowodować wydłużenie czasu oczekiwania i spadek wydajności. - Umiarkowany: jeśli wybierzesz tę opcję, implementacja
JpegRCompositeStream
używa dostarczonego przez HAL pliku SDR JPEG jako obrazu podstawowego i ramki P010 do obliczenia mapy przywracania. Ta opcja obejmuje przetwarzanie oprogramowania na ścieżce danych, ale jest stosunkowo nieznaczne w porównaniu z opcją minimalną. - Rozszerzona: komponent HAL aparatu reklamuje i obsługuje bezpośrednio strumień wyjściowy
JPEG_R
. Ta opcja umożliwia producentom urządzeń wprowadzanie optymalizacji pod kątem konkretnych urządzeń i może znacznie poprawić jakość obrazów.
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 jest ustawiona na false
, Ultra HDR jest domyślnie włączone za pomocą JpegRCompositeStream
na urządzeniach obsługujących 10-bitowe wyjście i jednoczesne 10- i 8-bitowe przechwytywanie.
Weryfikacja
Aby sprawdzić działanie funkcji ultra HDR na swoim urządzeniu, przeprowadź poniższe testy.
Testy CTS
ImageReaderTest.java#testImageReaderBuilderWithBLOBAndJpegR
ImageReaderTest.java#testJpegR
ImageReaderTest.java#testJpegRDisplayP3
PerformanceTest.java#testSingleCapture
StillCaptureTest.java# testJpegRCapture
Testy ITS
Testy ręczne
Do testów ręcznych użyj implementacji przykładowej funkcji do przechwytywania zdjęć w formacie Ultra HDR, która obsługuje konfigurowanie i przechwytywanie zdjęć w formacie JPEG_R
.