कैमरा एचएएल

Android का कैमरा हार्डवेयर एब्स्ट्रैक्शन लेयर (HAL) android.hardware.camera2 में उच्च स्तरीय कैमरा फ्रेमवर्क API को आपके अंतर्निहित कैमरा ड्राइवर और हार्डवेयर से जोड़ता है। Android 13 से शुरू होकर, कैमरा HAL इंटरफ़ेस विकास AIDL का उपयोग करता है। एंड्रॉइड 8.0 ने ट्रेबल की शुरुआत की, कैमरा एचएएल एपीआई को एचएएल इंटरफ़ेस विवरण भाषा (एचआईडीएल) द्वारा परिभाषित एक स्थिर इंटरफ़ेस पर स्विच किया। यदि आपने पहले एक कैमरा एचएएल मॉड्यूल और एंड्रॉइड 7.0 और उसके बाद के संस्करण के लिए ड्राइवर विकसित किया है, तो कैमरा पाइपलाइन में महत्वपूर्ण परिवर्तनों से अवगत रहें।

एआईडीएल कैमरा एचएएल

Android 13 या उच्चतर चलाने वाले उपकरणों के लिए, कैमरा फ्रेमवर्क में AIDL कैमरा HALs के लिए समर्थन शामिल है। कैमरा फ्रेमवर्क एचआईडीएल कैमरा एचएएल का भी समर्थन करता है, हालांकि एंड्रॉइड 13 या उच्चतर में जोड़े गए कैमरा फीचर केवल एआईडीएल कैमरा एचएएल इंटरफेस के माध्यम से उपलब्ध हैं। एंड्रॉइड 13 या उच्चतर में अपग्रेड करने वाले उपकरणों पर ऐसी सुविधाओं को लागू करने के लिए, डिवाइस निर्माताओं को अपनी एचएएल प्रक्रिया को एचआईडीएल कैमरा इंटरफेस का उपयोग करके एआईडीएल कैमरा इंटरफेस में माइग्रेट करना होगा।

एआईडीएल के लाभों के बारे में जानने के लिए, एचएएल के लिए एआईडीएल देखें।

एआईडीएल कैमरा एचएएल लागू करें

एआईडीएल कैमरा एचएएल के संदर्भ कार्यान्वयन के लिए, hardware/google/camera/common/hal/aidl_service/

एआईडीएल कैमरा एचएएल विनिर्देश निम्नलिखित स्थानों पर हैं:

AIDL में माइग्रेट करने वाले उपकरणों के लिए, डिवाइस निर्माताओं को कोड संरचना के आधार पर Android SELinux नीति (sepolicy) और RC फ़ाइलों को संशोधित करने की आवश्यकता हो सकती है।

एआईडीएल कैमरा एचएएल सत्यापित करें

अपने एआईडीएल कैमरा एचएएल कार्यान्वयन का परीक्षण करने के लिए, सुनिश्चित करें कि डिवाइस सभी सीटीएस और वीटीएस परीक्षण पास करता है। Android 13 ने AIDL VTS परीक्षण, VtsAidlHalCameraProvider_TargetTest.cpp पेश किया।

कैमरा HAL3 विशेषताएं

एंड्रॉइड कैमरा एपीआई रीडिज़ाइन का उद्देश्य एंड्रॉइड डिवाइस पर कैमरा सबसिस्टम को नियंत्रित करने के लिए ऐप्स की क्षमता में काफी वृद्धि करना है, जबकि एपीआई को अधिक कुशल और रखरखाव योग्य बनाने के लिए पुनर्गठित करना है। अतिरिक्त नियंत्रण से एंड्रॉइड डिवाइस पर उच्च-गुणवत्ता वाले कैमरा ऐप बनाना आसान हो जाता है जो गुणवत्ता और प्रदर्शन को अधिकतम करने के लिए जब भी संभव हो, डिवाइस-विशिष्ट एल्गोरिदम का उपयोग करते हुए कई उत्पादों में मज़बूती से काम कर सकते हैं।

कैमरा सबसिस्टम का संस्करण 3 ऑपरेशन मोड को एक एकीकृत दृश्य में संरचित करता है, जिसका उपयोग किसी भी पिछले मोड और कई अन्य, जैसे बर्स्ट मोड को लागू करने के लिए किया जा सकता है। इसके परिणामस्वरूप फ़ोकस और एक्सपोज़र के लिए बेहतर उपयोगकर्ता नियंत्रण और अधिक पोस्ट-प्रोसेसिंग, जैसे शोर में कमी, कंट्रास्ट और शार्पनिंग। इसके अलावा, यह सरलीकृत दृश्य एप्लिकेशन डेवलपर्स के लिए कैमरे के विभिन्न कार्यों का उपयोग करना आसान बनाता है।

एपीआई कैमरा सबसिस्टम को एक पाइपलाइन के रूप में मॉडल करता है जो फ्रेम कैप्चर के लिए आने वाले अनुरोधों को 1: 1 के आधार पर फ्रेम में परिवर्तित करता है। अनुरोध फ्रेम के कैप्चर और प्रोसेसिंग के बारे में सभी कॉन्फ़िगरेशन जानकारी को समाहित करता है। इसमें रिज़ॉल्यूशन और पिक्सेल प्रारूप शामिल हैं; मैनुअल सेंसर, लेंस और फ्लैश नियंत्रण; 3 ए ऑपरेटिंग मोड; रॉ-> YUV प्रसंस्करण नियंत्रण; सांख्यिकी पीढ़ी; और इसी तरह।

सरल शब्दों में, एप्लिकेशन फ्रेमवर्क कैमरा सबसिस्टम से एक फ्रेम का अनुरोध करता है, और कैमरा सबसिस्टम आउटपुट स्ट्रीम में परिणाम देता है। इसके अलावा, मेटाडेटा जिसमें रंग रिक्त स्थान और लेंस छायांकन जैसी जानकारी होती है, परिणामों के प्रत्येक सेट के लिए उत्पन्न होती है। आप कैमरा संस्करण 3 को कैमरा संस्करण 1 की वन-वे स्ट्रीम की पाइपलाइन के रूप में सोच सकते हैं। यह प्रत्येक कैप्चर अनुरोध को सेंसर द्वारा कैप्चर की गई एक छवि में परिवर्तित करता है, जिसे इसमें संसाधित किया जाता है:

  • कैप्चर के बारे में मेटाडेटा के साथ एक परिणाम वस्तु।
  • छवि डेटा के एक से N बफ़र, प्रत्येक की अपनी गंतव्य सतह में।

संभावित आउटपुट सतहों का सेट पूर्व-कॉन्फ़िगर किया गया है:

  • प्रत्येक सतह एक निश्चित रिज़ॉल्यूशन के छवि बफ़र्स की एक धारा के लिए एक गंतव्य है।
  • केवल कुछ ही सतहों को एक बार में आउटपुट के रूप में कॉन्फ़िगर किया जा सकता है (~3)।

एक अनुरोध में इस अनुरोध के लिए छवि बफ़र्स को पुश करने के लिए सभी वांछित कैप्चर सेटिंग्स और आउटपुट सतहों की सूची शामिल है (कुल कॉन्फ़िगर किए गए सेट में से)। एक अनुरोध एक-शॉट ( capture() के साथ) हो सकता है, या इसे अनिश्चित काल तक दोहराया जा सकता है ( setRepeatingRequest() के साथ)। बार-बार अनुरोध करने पर कैप्चर की प्राथमिकता होती है।

कैमरा डेटा मॉडल

चित्रा 1. कैमरा कोर ऑपरेशन मॉडल

कैमरा HAL1 सिंहावलोकन

कैमरा सबसिस्टम के संस्करण 1 को उच्च-स्तरीय नियंत्रण और निम्नलिखित तीन ऑपरेटिंग मोड वाले ब्लैक बॉक्स के रूप में डिज़ाइन किया गया था:

  • पूर्वावलोकन
  • चलचित्र आलेख
  • अभी भी कब्जा

प्रत्येक मोड में थोड़ी अलग और अतिव्यापी क्षमताएं होती हैं। इसने बर्स्ट मोड जैसी नई सुविधाओं को लागू करना कठिन बना दिया, जो दो ऑपरेटिंग मोड के बीच आता है।

कैमरा ब्लॉक आरेख

चित्रा 2. कैमरा घटक

Android 7.0 कैमरा HAL1 को सपोर्ट करना जारी रखता है क्योंकि कई डिवाइस अभी भी इस पर निर्भर हैं। इसके अलावा, एंड्रॉइड कैमरा सेवा एचएएल (1 और 3) दोनों को लागू करने का समर्थन करती है, जो तब उपयोगी होती है जब आप कैमरा एचएएल 1 के साथ कम-सक्षम फ्रंट-फेसिंग कैमरा और कैमरा एचएएल 3 के साथ एक अधिक उन्नत बैक-फेसिंग कैमरा का समर्थन करना चाहते हैं।

एक एकल कैमरा एचएएल मॉड्यूल (अपने स्वयं के संस्करण संख्या के साथ) है, जो कई स्वतंत्र कैमरा उपकरणों को सूचीबद्ध करता है, जिनमें से प्रत्येक का अपना संस्करण संख्या होता है। डिवाइस 2 या नए का समर्थन करने के लिए कैमरा मॉड्यूल 2 या नए की आवश्यकता होती है, और ऐसे कैमरा मॉड्यूल में कैमरा डिवाइस संस्करणों का मिश्रण हो सकता है (यही हमारा मतलब है जब हम कहते हैं कि एंड्रॉइड दोनों एचएएल को लागू करने का समर्थन करता है)।