Android 10 चलाने वाले डिवाइस HEIC कंप्रेस्ड इमेज फॉर्मेट का समर्थन करते हैं, जो ISO/IEC 23008-12 में निर्दिष्ट उच्च दक्षता वाले इमेज फाइल फॉर्मेट (HEIF) का एक उच्च दक्षता वाला वीडियो एन्कोडिंग (HEVC) विशिष्ट ब्रांड है। जेपीईजी फाइलों की तुलना में एचईआईसी-एन्कोडेड छवियां छोटे फ़ाइल आकारों के साथ बेहतर छवि गुणवत्ता प्रदान करती हैं।
HEIC चित्र कैमरा फ्रेमवर्क द्वारा उत्पन्न होते हैं जो कैमरा HAL से एक असम्पीडित छवि का अनुरोध करते हैं और इसे HEIC या HEVC एन्कोडर द्वारा एन्कोड किए जाने के लिए मीडिया सबसिस्टम को भेजते हैं।
आवश्यकताएं
HEIC छवि प्रारूप का समर्थन करने के लिए, आपके डिवाइस में स्थिर गुणवत्ता मोड के साथ MIMETYPE_IMAGE_ANDROID_HEIC
या MIMETYPE_VIDEO_HEVC
का समर्थन करने वाला हार्डवेयर एन्कोडर होना चाहिए।
कार्यान्वयन
अपने डिवाइस पर HEIC छवि प्रारूप का समर्थन करने के लिए, एक HEIC/HEVC कोडेक लागू करें और आवश्यक स्ट्रीम कॉन्फ़िगरेशन के लिए समर्थन प्रदान करें, जो कि IMPLEMENTATION_DEFINED
/ YUV
स्ट्रीम और JPEG ऐप सेगमेंट स्ट्रीम हैं।
मीडिया
संगत हार्डवेयर के लिए निरंतर गुणवत्ता (CQ) मोड में HEIC/HEVC कोडेक को निम्नानुसार कार्यान्वित करें:
- HEVC प्रकार का कोडेक छवि आकार के आधार पर या तो
GRALLOC_USAGE_HW_VIDEO_ENCODER
उपयोग के साथIMPLEMENTATION_DEFINED
प्रारूप याHAL_PIXEL_FORMAT_YCBCR_420_888
प्रारूप का उपभोग करता है। - HEIC प्रकार का कोडेक
GRALLOC_USAGE_HW_IMAGE_ENCODER
उपयोग के साथIMPLEMENTATION_DEFINED
प्रारूप का उपयोग करता है।
कैमरा
स्थिर मेटाडेटा में, ANDROID_HEIC_INFO_SUPPORTED
को सत्य पर और ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
को [1, 16]
के बीच के मान पर सेट करें, जो JPEG ऐप सेगमेंट की संख्या दर्शाता है।
प्रत्येक अनिवार्य स्ट्रीम संयोजन के लिए, आपके कैमरा डिवाइस को समान आकार की HEIC स्ट्रीम के साथ JPEG स्ट्रीम की अदला-बदली का समर्थन करना चाहिए।
सार्वजनिक API पर HEIC आउटपुट स्ट्रीम के लिए, कैमरा सेवा दो HAL आंतरिक स्ट्रीम बनाती है:
- EXIF और थंबनेल सेगमेंट सहित ऐप सेगमेंट को स्टोर करने के लिए
JPEG_APPS_SEGMENT
उपयोग ध्वज के साथ एक BLOB स्ट्रीम - लक्ष्य कोडेक और HEIC स्ट्रीम आकार के आधार पर एक
IMPLEMENTATION_DEFINED
याYCBCR_420_888
स्ट्रीम के आकार को स्ट्रीम करता है
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
के आधार पर, कैमरा फ्रेमवर्क JPEG ऐप सेगमेंट को पॉप्युलेट करने के लिए कैमरा HAL के लिए पर्याप्त बफ़र आवंटित करता है। APP1
खंड आवश्यक है लेकिन APP1
खंड ( APP2
और ऊपर) के बाद वाले खंड वैकल्पिक हैं। कैमरा फ्रेमवर्क APP1
सेगमेंट में EXIF टैग को ओवरराइड करता है जिसे कैप्चर परिणाम मेटाडेटा से प्राप्त किया जा सकता है या मुख्य छवि बिटस्ट्रीम से संबंधित होता है और उन्हें MediaMuxer
पर भेजता है।
चूंकि मीडिया एन्कोडर आउटपुट छवियों के मेटाडेटा में अभिविन्यास एम्बेड करता है, मुख्य छवि और थंबनेल के बीच एक सुसंगत अभिविन्यास सुनिश्चित करने के लिए, कैमरा एचएएल को android.jpeg.orientation.
फ्रेमवर्क EXIF मेटाडेटा और HEIC कंटेनर में ओरिएंटेशन लिखता है।
जेपीईजी प्रारूप से संबंधित स्थिर, नियंत्रण और गतिशील मेटाडेटा टैग भी एचईआईसी प्रारूप पर लागू होते हैं। उदाहरण के लिए, कैप्चर अनुरोध में android.jpeg.orientation
और android.jpeg.quality
मेटाडेटा टैग का उपयोग HEIC छवियों के उन्मुखीकरण और गुणवत्ता को नियंत्रित करने के लिए किया जाता है।
किसी एप्लिकेशन में HEIC प्रारूप का उपयोग करने के लिए, HEIC सार्वजनिक API का उपयोग करें।
अधिक जानकारी के लिए निम्न स्रोत देखें।
कैमरा एचएएल
ग्राफिक बफर डेटा स्पेस
ग्राफिक बफर उपयोग स्थान
मान्यकरण
यह सत्यापित करने के लिए कि आपका कार्यान्वयन HEIC छवियों का समर्थन करता है, TestingCamera2
परीक्षण एप्लिकेशन का उपयोग करें और निम्नलिखित कैमरा CTS और VTS परीक्षण चलाएँ।
कैमरा सीटीएस परीक्षण
-
NativeImageReaderTest#testHeic
-
ImageReaderTest#testHeic
-
ImageReaderTest#testRepeatingHeic
-
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
-
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
-
RobustnessTest#testMandatoryOutputCombinations
-
StillCaptureTest#testHeicExif
कैमरा वीटीएस परीक्षण