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