Android 14 obsługuje kompresję zdjęć w ultra HDR za pomocą formatu obrazu JPEG_R
. Ten format jest zgodny z wsteczną zgodnością z obrazami JPEG SDR i obsługuje renderowanie treści 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 wdrożyć funkcję Ultra HDR.
Implementacja referencyjna
Ramka i usługa aparatu AOSP obejmują referencyjną implementację Ultra HDR.
Oprócz funkcji referencyjnych w ramach platformy aparatu możesz zaimplementować Ultra HDR w komponencie HAL aparatu i reklamować obsługę wyjścia JPEG_R
w taki sam sposób jak inne strumienie wyjścia komponentu HAL aparatu. 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ę referencyjną
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 zmniejszenie wydajności. - Średni: w tym przypadku implementacja
JpegRCompositeStream
używa pliku JPEG SDR dostarczonego przez HAL jako obrazu bazowego i ramki P010 do obliczenia mapy odzyskiwania. 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ń wdrażanie optymalizacji dla poszczególnych urządzeń 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 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ć funkcję Ultra HDR na urządzeniu, uruchom te 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
.