Android 10 वर्शन वाले डिवाइस, HEIC के साथ काम करते हैं कंप्रेस किया गया इमेज फ़ॉर्मैट, ज़्यादा अच्छी परफ़ॉर्मेंस वाली इमेज के परफ़ॉर्मेंस वीडियो एन्कोडिंग (एचईवीसी) से जुड़ा कोई ब्रैंड फ़ाइल फ़ॉर्मैट (HEIF) जैसा बताया गया है आईएसओ/आईईसी 23008-12. एचईआईसी कोड में बदली गई इमेज का ऑफ़र JPEG फ़ाइलों से छोटे साइज़ की फ़ाइल के साथ बेहतर इमेज क्वालिटी.
एचईआईसी इमेज जनरेट करने के लिए, कैमरा फ़्रेमवर्क का इस्तेमाल किया जाता है. इस फ़्रेमवर्क के तहत एचईआईसी को कंप्रेस किया जाता है इमेज कैमरा एचएएल और उसे मीडिया सबसिस्टम को इन्हें HEIC या HEVC एन्कोडर की मदद से एन्कोड किया जाना चाहिए.
ज़रूरी शर्तें
HEIC इमेज फ़ॉर्मैट के साथ काम करने के लिए, आपके डिवाइस में हार्डवेयर एन्कोडर होना चाहिए
सहायक
MIMETYPE_IMAGE_ANDROID_HEIC
या
MIMETYPE_VIDEO_HEVC
के साथ
लगातार क्वालिटी मोड.
लागू करना
अपने डिवाइस पर HEIC इमेज फ़ॉर्मैट के साथ काम करने के लिए, HEIC/HEVC कोडेक लागू करें
और ज़रूरी स्ट्रीम कॉन्फ़िगरेशन के लिए सहायता उपलब्ध कराता है, जो
YUV
में से IMPLEMENTATION_DEFINED
स्ट्रीम और 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
को 'सही है' पर सेट करें और
ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
से लेकर [1, 16]
के बीच की कोई वैल्यू
JPEG ऐप्लिकेशन सेगमेंट की संख्या दिखाता है.
स्ट्रीम के हर एक कॉम्बिनेशन के लिए, आपके कैमरा डिवाइस पर स्ट्रीम को स्वैप किया जा सकता है एक JPEG स्ट्रीम जिसमें एक ही साइज़ की HEIC स्ट्रीम हो.
सार्वजनिक एपीआई पर HEIC आउटपुट स्ट्रीम के लिए, कैमरा सेवा दो एचएएल बनाती है इंटरनल स्ट्रीम:
- ऐप्लिकेशन को सेव करने के लिए,
JPEG_APPS_SEGMENT
के इस्तेमाल से जुड़े फ़्लैग के साथ एक BLOB स्ट्रीम ऐसे सेगमेंट जिनमें EXIF और थंबनेल सेगमेंट शामिल हैं IMPLEMENTATION_DEFINED
याYCBCR_420_888
स्ट्रीम, टारगेट कोडेक और HEIC स्ट्रीम साइज़ के आधार पर HEIC स्ट्रीम
कैमरे का फ़्रेमवर्क ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
पर आधारित है
इस उदाहरण में, कैमरा एचएएल के लिए बड़े बफ़र का साइज़ तय करता है, ताकि JPEG ऐप्लिकेशन में अपने-आप जानकारी भर सके
सेगमेंट. APP1
सेगमेंट ज़रूरी है, लेकिन APP1
के बाद आने वाले सेगमेंट
सेगमेंट (APP2
और इससे ज़्यादा) वैकल्पिक हैं. कैमरा फ़्रेमवर्क EXIF को बदल देता है
APP1
सेगमेंट में मौजूद टैग जिन्हें कैप्चर नतीजे के मेटाडेटा से लिया जा सकता है
या मुख्य इमेज बिटस्ट्रीम से जुड़े हों और उन्हें MediaMuxer
पर भेजते हों.
क्योंकि मीडिया एन्कोडर, आउटपुट के मेटाडेटा में ओरिएंटेशन एम्बेड करता है
इमेज से जुड़ी जानकारी मिलेगी. इससे यह पक्का किया जा सकेगा कि मुख्य इमेज और थंबनेल के बीच की दिशा एक जैसी है.
कैमरा एचएएल, थंबनेल इमेज को इन चीज़ों के आधार पर नहीं घुमाना चाहिए
android.jpeg.orientation.
फ़्रेमवर्क, ओरिएंटेशन को EXIF में लिखता है
मेटाडेटा और HEIC कंटेनर.
JPEG फ़ॉर्मैट से जुड़े स्टैटिक, कंट्रोल, और डाइनैमिक मेटाडेटा टैग भी
HEIC फ़ॉर्मैट पर लागू करना होगा. उदाहरण के लिए, android.jpeg.orientation
और
कैप्चर करने के अनुरोध में शामिल android.jpeg.quality
मेटाडेटा टैग का इस्तेमाल, नियंत्रण के लिए किया जाता है
HEIC इमेज की दिशा और क्वालिटी.
किसी ऐप्लिकेशन में HEIC फ़ॉर्मैट इस्तेमाल करने के लिए, HEIC सार्वजनिक एपीआई.
ज़्यादा जानकारी के लिए, इन सोर्स को देखें.
कैमरा एचएएल
ग्राफ़िक बफ़र डेटा स्पेस
ग्राफ़िक बफ़र का इस्तेमाल करने के लिए बची जगह
पुष्टि करें
इस बात की पुष्टि करने के लिए कि आपकी लागू की गई सेटिंग HEIC इमेज के साथ काम करती है,
TestingCamera2
कैमरे की सीटीएस और वीटीएस जांच करने के लिए, इस ऐप्लिकेशन को टेस्ट करें.
कैमरे के सीटीएस टेस्ट
NativeImageReaderTest#testHeic
ImageReaderTest#testHeic
ImageReaderTest#testRepeatingHeic
ReprocessCaptureTest#testBasicYuvToHeicReprocessing
ReprocessCaptureTest#testBasicOpaqueToHeicReprocessing
RobustnessTest#testMandatoryOutputCombinations
StillCaptureTest#testHeicExif
कैमरे के वीटीएस की जांच