zdjęcia HEIF

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 wykorzystaniem GRALLOC_USAGE_HW_VIDEO_ENCODER lub Format HAL_PIXEL_FORMAT_YCBCR_420_888 w zależności od rozmiaru obrazu.
  • Kodek typu HEIC używa formatu IMPLEMENTATION_DEFINED z Użycie GRALLOC_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 lub YCBCR_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

Testy VTS kamery