تصویربرداری HEIF

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

تست دوربین VTS