دستگاههای دارای 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.
رسانه ها
کدک 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 در یک برنامه، از API عمومی HEIC استفاده کنید.
برای اطلاعات بیشتر به منابع زیر مراجعه کنید.
دوربین HAL
فضای داده بافر گرافیکی
فضای استفاده بافر گرافیکی
اعتبار سنجی
برای تأیید اینکه پیاده سازی شما از تصاویر HEIC پشتیبانی می کند، از برنامه تست TestingCamera2 استفاده کنید و تست های CTS و VTS دوربین زیر را اجرا کنید.
تست های CTS دوربین
-
NativeImageReaderTest#testHeic -
ImageReaderTest#testHeic -
ImageReaderTest#testRepeatingHeic -
ReprocessCaptureTest#testBasicYuvToHeicReprocessing -
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing -
RobustnessTest#testMandatoryOutputCombinations -
StillCaptureTest#testHeicExif
تست دوربین VTS