HEIF इमेज खींचने की सुविधा

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 कैमरे की सीटीएस और वीटीएस जांच करने के लिए, इस ऐप्लिकेशन को टेस्ट करें.

कैमरे के सीटीएस टेस्ट

कैमरे के वीटीएस की जांच