במכשירים עם 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 ותמונות ממוזערות - גודל הסטרימינג של HEIC הוא
IMPLEMENTATION_DEFINED
אוYCBCR_420_888
, בהתאם לקודק היעד ולגודל של שידור 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 של המצלמה