دستگاههای دارای 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