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

دستگاه‌هایی که اندروید ۱۰ را اجرا می‌کنند از فرمت تصویر فشرده 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 دوربین

تست‌های VTS دوربین