במכשירים עם Android 10 יש תמיכה בפורמט התמונה המכווץ HEIC, שהוא מותג ספציפי של קידוד וידאו יעיל (HEVC) בפורמט קובץ תמונה יעיל (HEIF), כפי שמפורט ב-ISO/IEC 23008-12. תמונות בקידוד HEIC מציעות איכות תמונה טובה יותר בגודל קובץ קטן יותר בהשוואה לקובצי JPEG.
התמונות בפורמט HEIC נוצרות על ידי מסגרת המצלמה, שמבקשת תמונה לא דחוסה מ-camera HAL ושולחת אותה למערכת המשנה של המדיה לצורך קידוד על ידי מקודד HEIC או HEVC.
דרישות
כדי לתמוך בפורמט התמונה HEIC, המכשיר צריך לכלול מקודד חומרה שתומך ב-MIMETYPE_IMAGE_ANDROID_HEIC
או ב-MIMETYPE_VIDEO_HEVC
עם מצב איכות קבוע.
הטמעה
כדי לתמוך בפורמט התמונה HEIC במכשיר, צריך להטמיע קודק HEIC/HEVC ולספק תמיכה בהגדרות הסטרימינג הנדרשות, שהן הסטרימינג של IMPLEMENTATION_DEFINED
/YUV
והסטרימינג של קטעי האפליקציה בפורמט JPEG.
מדיה
מטמיעים את הקודק HEIC/HEVC במצב איכות קבועה (CQ) לחומרה המתאימה באופן הבא:
- הקודק מסוג 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.
בכל שילוב נדרש של מקורות נתונים, המצלמה צריכה לתמוך בהחלפה של מקור נתונים בפורמט JPEG במקור נתונים בפורמט HEIC באותו גודל.
בשביל שידור פלט של HEIC ב-API הציבורי, שירות המצלמה יוצר שני שידורים פנימיים של HAL:
- שידור BLOB עם דגל השימוש
JPEG_APPS_SEGMENT
לאחסון פלחים של אפליקציות, כולל פלחים של 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 public API.
מידע נוסף זמין במקורות הבאים.
Camera HAL
מרחב הנתונים של מאגר הגרפיקה
נפח השימוש במאגר נתונים זמני של גרפיקה
אימות
כדי לוודא שההטמעה תומכת בתמונות HEIC, צריך להשתמש באפליקציית הבדיקה TestingCamera2
ולהריץ את בדיקות ה-CTS וה-VTS הבאות של המצלמה.
בדיקות CTS למצלמה
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
בדיקות VTS של מצלמה