מכשירים עם Android 10 תומכים בפורמט התמונה הדחוס HEIC, שהוא מותג ספציפי של פורמט קובץ התמונה היעיל (HEIF) עם קידוד וידאו יעיל (HEVC), כפי שמצוין בתקן 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, בהתאם ל-codec של היעד ולגודל של זרם 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#testHeicImageReaderTest#testHeicImageReaderTest#testRepeatingHeicReprocessCaptureTest#testBasicYuvToHeicReprocessingReprocessCaptureTest#testBasicOpaqueToHeicReprocessingRobustnessTest#testMandatoryOutputCombinationsStillCaptureTest#testHeicExif
בדיקות VTS של מצלמות