Android की कैमरा हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल), android.hardware.camera2 में मौजूद कैमरा फ़्रेमवर्क एपीआई को आपके कैमरे के ड्राइवर और हार्डवेयर से जोड़ती है. Android 13 से, कैमरे के एचएएल इंटरफ़ेस के डेवलपमेंट में एआईडीएल का इस्तेमाल किया जाता है. Android 8.0 में Treble की सुविधा लॉन्च की गई थी. इसकी मदद से, Camera HAL API को HAL इंटरफ़ेस की जानकारी देने वाली भाषा (HIDL) से तय किए गए एक स्थिर इंटरफ़ेस पर स्विच किया गया था. अगर आपने पहले Android 7.0 और उससे पहले के वर्शन के लिए, कैमरा एचएएल मॉड्यूल और ड्राइवर डेवलप किया है, तो कैमरा पाइपलाइन में हुए अहम बदलावों के बारे में जानें.
AIDL कैमरा एचएएल
Android 13 या उसके बाद के वर्शन वाले डिवाइसों में, कैमरा फ़्रेमवर्क में एआईडीएल कैमरा एचएएल सपोर्ट शामिल है. कैमरे का फ़्रेमवर्क भी HIDL कैमरा एचएएल के साथ काम करता है, हालांकि इसमें कैमरे की सुविधाएं जोड़ी गई हैं Android 13 या उसके बाद के वर्शन, सिर्फ़ AIDL कैमरा HAL इंटरफ़ेस. इस तरह की सुविधाओं को उन डिवाइसों पर लागू करने के लिए जिन पर अपग्रेड किया जा रहा है Android 13 या इसके बाद के वर्शन के लिए, डिवाइस बनाने वाली कंपनियों को ज़रूरी शर्तें पूरी करनी होंगी एचएएल प्रोसेस को HIDL कैमरा इंटरफ़ेस से बदलकर एआईडीएल कैमरे पर माइग्रेट करना इंटरफ़ेस.
AIDL के फ़ायदों के बारे में जानने के लिए, HAL के लिए AIDL देखें.
एआईडीएल कैमरा एचएएल लागू करें
AIDL कैमरा एचएएल को लागू करने का रेफ़रंस पाने के लिए,
hardware/google/camera/common/hal/aidl_service/
देखें.
AIDL कैमरा एचएएल की खास जानकारी यहां दी गई है:
- कैमरा कंपनी:
hardware/interfaces/camera/provider/aidl/
- कैमरा डिवाइस:
hardware/interfaces/camera/device/aidl/
- कैमरे का मेटाडेटा:
hardware/interfaces/camera/metadata/aidl/
- सामान्य डेटा टाइप:
hardware/interfaces/camera/common/aidl/
एआईडीएल पर माइग्रेट करने के लिए, डिवाइस बनाने वाली कंपनियों को कोड के हिसाब से, Android SELinux नीति (sepolicy) और RC फ़ाइलें स्ट्रक्चर.
AIDL कैमरा एचएएल की पुष्टि करना
एआईडीएल कैमरा एचएएल लागू करने की जांच करने के लिए, पक्का करें कि डिवाइस
सीटीएस और वीटीएस टेस्ट. Android 13 में पेश है एआईडीएल वीटीएस
टेस्ट,
VtsAidlHalCameraProvider_TargetTest.cpp
.
कैमरे HAL3 की सुविधाएं
Android Camera API को फिर से डिज़ाइन करने का मकसद, Android डिवाइसों पर कैमरा सबसिस्टम को कंट्रोल करने के लिए, ऐप्लिकेशन की क्षमता को काफ़ी बढ़ाना है. साथ ही, एपीआई को फिर से व्यवस्थित करके उसे ज़्यादा असरदार और मैनेज करने लायक बनाना है. ज़्यादा कंट्रोल की मदद से, Android डिवाइसों पर अच्छी क्वालिटी के कैमरा ऐप्लिकेशन बनाना आसान हो जाता है. ये ऐप्लिकेशन कई प्रॉडक्ट पर भरोसेमंद तरीके से काम कर सकते हैं. साथ ही, क्वालिटी और परफ़ॉर्मेंस को बेहतर बनाने के लिए, जब भी हो सके, डिवाइस के हिसाब से एल्गोरिद्म का इस्तेमाल करते हैं.
कैमरा सबसिस्टम के वर्शन 3 में, ऑपरेशन मोड को एक ही यूनिफ़ाइड व्यू में व्यवस्थित किया गया है. इसका इस्तेमाल, पिछले किसी भी मोड और बर्स्ट मोड जैसे कई अन्य मोड को लागू करने के लिए किया जा सकता है. इससे उपयोगकर्ताओं को, फ़ोकस और एक्सपोज़र के साथ-साथ पोस्ट-प्रोसेसिंग से जुड़ी ज़्यादा जानकारी, जैसे कि शोर कम करने की सुविधा, कंट्रास्ट और शार्प करना. साथ ही, इस आसानी से समझ में आने वाले व्यू की मदद से, ऐप्लिकेशन डेवलपर कैमरे के अलग-अलग फ़ंक्शन आसानी से इस्तेमाल कर सकते हैं.
एपीआई, कैमरा सबसिस्टम को पाइपलाइन के तौर पर मॉडल करता है, जिससे इनकमिंग कन्वर्ज़न को कन्वर्ट किया जाता है फ़्रेम में कैप्चर करने के अनुरोधों को 1:1 के आधार पर अनुमति दी जाती है. इन अनुरोधों में, फ़्रेम को कैप्चर करने और प्रोसेस करने के बारे में कॉन्फ़िगरेशन की पूरी जानकारी होती है. इसमें रिज़ॉल्यूशन और पिक्सल फ़ॉर्मैट शामिल हैं; मैन्युअल सेंसर, लेंस, और फ़्लैश नियंत्रण; 3A ऑपरेटिंग मोड; RAW->YUV प्रोसेसिंग कंट्रोल; आंकड़े जनरेट करना; वगैरह.
आसान शब्दों में कहें, तो ऐप्लिकेशन फ़्रेमवर्क कैमरे से फ़्रेम का अनुरोध करता है सबसिस्टम और कैमरा सबसिस्टम, आउटपुट स्ट्रीम में नतीजे दिखाता है. इसके अलावा, नतीजों के हर सेट के लिए, कलर स्पेस और लेंस शेडिंग जैसी जानकारी वाला मेटाडेटा जनरेट किया जाता है. आपके पास कैमरा वर्शन 3 की बात करने का विकल्प है को कैमरा वर्शन 1 की एकतरफ़ा स्ट्रीम के लिए पाइपलाइन के रूप में यह हर कैप्चर को कन्वर्ट करता है सेंसर से कैप्चर की गई एक इमेज में अनुरोध को शामिल करें. इस इमेज को इनमें प्रोसेस किया जाता है:
- कैप्चर के बारे में मेटाडेटा के साथ नतीजा ऑब्जेक्ट.
- इमेज डेटा के एक से लेकर N बफ़र, अपने डेस्टिनेशन सरफ़ेस में.
आउटपुट के लिए उपलब्ध प्लैटफ़ॉर्म का सेट पहले से कॉन्फ़िगर किया गया है:
- हर सरफ़ेस, तय किए गए इमेज बफ़र के स्ट्रीम के लिए एक डेस्टिनेशन होता है का रिज़ॉल्यूशन.
- एक बार में सिर्फ़ कुछ प्लैटफ़ॉर्म को आउटपुट के तौर पर कॉन्फ़िगर किया जा सकता है (~3).
किसी अनुरोध में, कैप्चर की सभी ज़रूरी सेटिंग और आउटपुट प्लैटफ़ॉर्म की सूची होती है. इस सूची में, कॉन्फ़िगर किए गए सभी प्लैटफ़ॉर्म में से, इस अनुरोध के लिए इमेज बफ़र को पुश किया जाता है. अनुरोध एक बार किया जा सकता है (capture()
के साथ) या इसे बार-बार किया जा सकता है (setRepeatingRequest()
के साथ). कैप्चर को बार-बार किए जाने वाले अनुरोधों पर प्राथमिकता दी जाती है.
Camera HAL1 के बारे में खास जानकारी
कैमरा सबसिस्टम के वर्शन 1 को हाई-लेवल वाले ब्लैक बॉक्स के तौर पर डिज़ाइन किया गया है और नीचे दिए गए तीन ऑपरेटिंग मोड जैसा है:
- झलक देखें
- वीडियो रिकॉर्ड
- स्टिल कैप्चर करें
हर मोड में थोड़ा अलग और ओवरलैप होने वाली क्षमताएं होती हैं. इस वजह से, बर्स्ट मोड जैसी नई सुविधाओं को लागू करना मुश्किल हो गया. यह सुविधा, कैमरे के दो ऑपरेटिंग मोड के बीच में आती है.
Android 7.0 पर कैमरा एचएएल1 की सुविधा काम करती रहेगी, क्योंकि कई डिवाइस अब भी इस पर निर्भर हैं. इसके अलावा, Android कैमरा सेवा, दोनों एचएएल (1 और 3), यह तब काम आता है, जब आपको फ़्रंट-फ़ेसिंग की सुविधा देने वाली कम सुविधाओं का इस्तेमाल करना हो कैमरा HAL1 के साथ कैमरा और ज़्यादा बेहतर बैक-फ़ेसिंग कैमरा के साथ HAL3.
इसमें एक कैमरा HAL मॉड्यूल (अपने वर्शन नंबर के साथ) होता है. इसमें कई अलग-अलग कैमरा डिवाइसों की जानकारी होती है. हर डिवाइस का अपना वर्शन नंबर होता है. Android 2 या इसके बाद के वर्शन वाले डिवाइसों के साथ काम करने के लिए, कैमरा मॉड्यूल 2 या इसके बाद का वर्शन ज़रूरी है. साथ ही, ऐसे कैमरा मॉड्यूल में कैमरा डिवाइस के अलग-अलग वर्शन हो सकते हैं. जब हम यह कहते हैं कि Android, दोनों एचएएल लागू करने की सुविधा देता है, तो हमारा यही मतलब होता है.