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 অ্যাপ সেগমেন্ট স্ট্রিম।

মিডিয়া

সংশ্লিষ্ট হার্ডওয়্যারের জন্য কনস্ট্যান্ট কোয়ালিটি (CQ) মোডে HEIC/HEVC কোডেক প্রয়োগ করুন, যেমন:

  • 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 অ্যাপ সেগমেন্টের সংখ্যা নির্দেশ করে।

প্রতিটি বাধ্যতামূলক স্ট্রিম কম্বিনেশনের জন্য, আপনার ক্যামেরা ডিভাইসকে অবশ্যই একই সাইজের HEIC স্ট্রিমের সাথে JPEG স্ট্রিম অদল-বদল করার সুবিধা থাকতে হবে।

পাবলিক API-তে HEIC আউটপুট স্ট্রিমের জন্য, ক্যামেরা পরিষেবা দুটি HAL ইন্টার্নাল স্ট্রিম তৈরি করে:

  • EXIF ও থাম্বনেল সেগমেন্ট সহ অ্যাপ সেগমেন্ট স্টোর করার জন্য JPEG_APPS_SEGMENT ব্যবহার ফ্ল্যাগ সহ BLOB স্ট্রিম
  • টার্গেট কোডেক ও HEIC স্ট্রিমের সাইজের উপর নির্ভর করে HEIC স্ট্রিমের সাইজের IMPLEMENTATION_DEFINED বা YCBCR_420_888 স্ট্রিম

ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT-এর উপর ভিত্তি করে, ক্যামেরা ফ্রেমওয়ার্ক ক্যামেরা HAL-এর জন্য যথেষ্ট বড় বাফার বরাদ্দ করে যাতে JPEG অ্যাপ সেগমেন্ট পূরণ করা যায়। APP1 সেগমেন্ট প্রয়োজন, তবে APP1 সেগমেন্টের (APP2 ও তার পরের যেকোনও ভার্সন) পরের সেগমেন্ট ঐচ্ছিক। ক্যামেরা ফ্রেমওয়ার্ক APP1 সেগমেন্টে EXIF ট্যাগ ওভাররাইড করে, যা ক্যাপচার রেজাল্ট মেটাডেটা থেকে পাওয়া যায় অথবা মূল ইমেজ বিটস্ট্রিমের সাথে সম্পর্কিত এবং সেগুলি MediaMuxer-এ পাঠায়।

কারণ, মিডিয়া এনকোডার আউটপুট ইমেজের মেটাডেটায় ওরিয়েন্টেশন এম্বেড করে। মূল ছবি ও থাম্বনেলের মধ্যে সামঞ্জস্যপূর্ণ ওরিয়েন্টেশন নিশ্চিত করতে, ক্যামেরা HAL-কে অবশ্যই android.jpeg.orientation. ফ্রেমওয়ার্ক EXIF মেটাডেটা ও HEIC কন্টেনারে ওরিয়েন্টেশন লিখতে হবে।

JPEG ফর্ম্যাটের সাথে সম্পর্কিত স্ট্যাটিক, কন্ট্রোল ও ডায়নামিক মেটাডেটা ট্যাগ HEIC ফর্ম্যাটের ক্ষেত্রেও প্রযোজ্য। যেমন, ক্যাপচার অনুরোধে android.jpeg.orientation এবং android.jpeg.quality মেটাডেটা ট্যাগ HEIC ছবির অরিয়েন্টেশন ও কোয়ালিটি কন্ট্রোল করতে ব্যবহার করা হয়।

কোনও অ্যাপে HEIC ফর্ম্যাট ব্যবহার করতে, HEIC পাবলিক API ব্যবহার করুন।

আরও তথ্যের জন্য, নিম্নলিখিত সোর্স দেখুন।

ক্যামেরা HAL

গ্রাফিক বাফার ডেটা স্পেস

গ্রাফিক বাফার ব্যবহারের স্পেস

যাচাইকরণ

আপনার ইমপ্লিমেন্টেশন HEIC ছবি সাপোর্ট করে কিনা তা যাচাই করতে, TestingCamera2 টেস্ট অ্যাপ ব্যবহার করুন এবং নিম্নলিখিত ক্যামেরা CTS ও VTS টেস্ট রান করুন।

ক্যামেরা CTS পরীক্ষা

ক্যামেরা VTS টেস্ট