Urządzenia z Androidem 10 obsługują standard HEIC skompresowanego formatu obrazu, specyficzne dla marki obrazu o wysokiej wydajności związane z kodowaniem wideo (HEVC) formatu pliku (HEIF) określonego w ISO/IEC 23008-12. Oferta dotycząca obrazów zakodowanych w formacie HEIC lepsza jakość obrazów przy mniejszych rozmiarach plików w porównaniu z plikami JPEG.
Obrazy HEIC są generowane przez ramkę aparatu wysyłającą żądanie nieskompresowanego obraz z HAL i przesłanie go do podsystemu multimedialnego być kodowany za pomocą kodera HEIC lub HEVC.
Wymagania
Aby obsługiwać format obrazu HEIC, urządzenie musi mieć koder sprzętowy
wsparcie
MIMETYPE_IMAGE_ANDROID_HEIC
lub
MIMETYPE_VIDEO_HEVC
z
Tryb stałej jakości.
Implementacja
Aby obsługiwać format obrazu HEIC na urządzeniu, zaimplementuj kodek HEIC/HEVC
i umożliwia korzystanie z wymaganych konfiguracji strumieni, które są
IMPLEMENTATION_DEFINED
/YUV
strumieni i strumieni danych z segmentu aplikacji w formacie JPEG.
Multimedia
Wdróż kodek HEIC/HEVC w trybie stałej jakości (CQ) w z odpowiednim sprzętem:
- Kodek typu HEVC zużywa
IMPLEMENTATION_DEFINED
z wykorzystaniemGRALLOC_USAGE_HW_VIDEO_ENCODER
lub FormatHAL_PIXEL_FORMAT_YCBCR_420_888
w zależności od rozmiaru obrazu. - Kodek typu HEIC używa formatu
IMPLEMENTATION_DEFINED
z UżycieGRALLOC_USAGE_HW_IMAGE_ENCODER
.
Aparat
W metadanych statycznych ustaw atrybut ANDROID_HEIC_INFO_SUPPORTED
na wartość true, a następnie
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
na wartość z zakresu od [1, 16]
,
z liczbą segmentów aplikacji w formacie JPEG.
W przypadku każdej obowiązkowej kombinacji strumieniowania kamera musi obsługiwać zamianę to strumień JPEG ze strumieniem HEIC o takim samym rozmiarze.
Dla strumienia danych wyjściowych HEIC przy publicznym interfejsie API usługa kamery tworzy dwie wartości HAL strumienie wewnętrzne:
- Strumień BLOB z flagą użycia
JPEG_APPS_SEGMENT
do przechowywania aplikacji segmenty obejmujące EXIF i segmenty miniatur - Strumień
IMPLEMENTATION_DEFINED
lubYCBCR_420_888
o rozmiarze Strumień HEIC w zależności od docelowego kodeka i rozmiaru strumienia HEIC
Na podstawie ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
, struktura kamery
przydziela bufory wystarczająco duże, by HAL aparatu wypełniał aplikację JPEG
segmentów niestandardowych. Segment APP1
jest wymagany, ale segmenty następujące po APP1
(APP2
i nowsze) są opcjonalne. Platforma kamery zastępuje dane EXIF
tagi w segmencie APP1
, które mogą pochodzić z metadanych wyniku przechwytywania.
lub są powiązane ze strumieniem bitowym obrazu głównego i wysyłają je do MediaMuxer
.
Ponieważ koder multimediów umieszcza orientację w metadanych danych wyjściowych
aby zachować spójną orientację między zdjęciem głównym a miniaturą,
HAL aparatu nie może obracać obrazu miniatury na podstawie
android.jpeg.orientation.
Platforma zapisuje orientację w formacie EXIF
metadanych i kontenera HEIC.
statyczne, kontrolne i dynamiczne tagi metadanych związane z formatem JPEG.
ma zastosowanie do formatu HEIC. Na przykład właściwości android.jpeg.orientation
i
Tagi metadanych android.jpeg.quality
w żądaniu przechwytywania są używane do kontroli
jakość i orientację obrazów HEIC.
Aby użyć formatu HEIC w aplikacji, użyj instrukcji Publiczny interfejs API HEIC.
Więcej informacji znajdziesz w tych źródłach.
HAL aparatu
bufor graficzny – miejsce na dane,
Miejsce na bufor graficzny
Weryfikacja
Aby sprawdzić, czy implementacja obsługuje obrazy HEIC, użyj atrybutu
TestingCamera2
aplikację testową i przeprowadź następujące testy CTS i VTS kamery.
Testy CTS aparatu
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
Testy VTS kamery