搭載 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_DEFINED
或YCBCR_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 測試
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
相機 VTS 測試