תמונת HEIF

במכשירים עם 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 למצלמה

בדיקות VTS של מצלמה