HEIF 顯像

搭載 Android 10 的裝置支援 HEIC 經過壓縮的圖片格式,非常高 高效率圖片的特定品牌效率影片編碼 (HEVC) 檔案格式 (HEIF) ISO/IEC 23008-12。 HEIC 編碼圖片提供 圖片品質較佳,檔案大小比 JPEG 檔案更小。

HEIC 圖片是由要求未壓縮的相機架構產生 映像檔 攝影機 HAL,並傳送到媒體子系統 透過 HEIC 或 HEVC 編碼器編碼

需求條件

如要支援 HEIC 圖片格式,裝置必須包含硬體編碼器 提供支援 MIMETYPE_IMAGE_ANDROID_HEIC敬上 或 MIMETYPE_VIDEO_HEVC。 使用 穩定品質模式

實作

如要在裝置上支援 HEIC 圖片格式,請實作 HEIC/HEVC 轉碼器 並支援所需的串流設定 IMPLEMENTATION_DEFINED 個串流 (共 YUV 個) 和 JPEG 應用程式區隔串流。

媒體

以穩定品質 (CQ) 模式實作 HEIC/HEVC 轉碼器 如下所述:

  • HEVC 類型轉碼器會使用 IMPLEMENTATION_DEFINED 並使用 GRALLOC_USAGE_HW_VIDEO_ENCODER 或 視圖片大小而定,例如 HAL_PIXEL_FORMAT_YCBCR_420_888 格式。
  • HEIC 類型轉碼器會使用 IMPLEMENTATION_DEFINED 格式, GRALLOC_USAGE_HW_IMAGE_ENCODER用量。

相機

在靜態中繼資料中,將 ANDROID_HEIC_INFO_SUPPORTED 設為 true,且 將 ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT 設為 [1, 16] 之間的值。 指出 JPEG 應用程式區隔的數量。

使用每個必要串流組合時,你的相機裝置必須支援替換功能 具有相同大小的 HEIC 串流。

針對公用 API 的 HEIC 輸出串流,相機服務會建立兩個 HAL 內部串流:

  • 具有 JPEG_APPS_SEGMENT 用量旗標的 BLOB 串流,用於儲存應用程式 包含 EXIF 和縮圖片段
  • IMPLEMENTATION_DEFINEDYCBCR_420_888 串流 HEIC 串流 (取決於目標轉碼器和 HEIC 串流大小)

ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT 為基礎,相機架構 配置夠大的緩衝區,讓相機 HAL 可以填入 JPEG 應用程式 區隔「APP1」是必要區隔,但「APP1」之後的區隔為必要區隔 區隔 (APP2 以上) 為選用項目。相機架構會覆寫 EXIF APP1 區段內的標記,可從擷取結果中繼資料衍生 或與主要圖片位元流相關的關聯,並傳送至 MediaMuxer

因為媒體編碼器會將螢幕方向嵌入到輸出的中繼資料 確保主要圖片和縮圖的方向一致 相機 HAL 不得根據 android.jpeg.orientation.架構會將螢幕方向寫入 EXIF 中繼資料和 HEIC 容器

與 JPEG 格式相關的靜態、控制項和動態中繼資料標記 均適用於 HEIC 格式例如 android.jpeg.orientation 和 擷取要求中的 android.jpeg.quality 中繼資料標記可用來控制 以及 HEIC 圖片的方向和品質

如要在應用程式中使用 HEIC 格式,請使用 HEIC 公用 API

如需更多資訊,請參閱下列來源。

相機 HAL

圖形緩衝區資料空間

圖形緩衝區用量空間

驗證

如要驗證實作結果支援 HEIC 映像檔,請使用 TestingCamera2敬上 測試應用程式,然後執行下列相機 CTS 和 VTS 測試。

相機 CTS 測試

相機 VTS 測試