कैमरा एचएएल

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

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

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

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

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

AIDL कैमरा HAL के संदर्भ कार्यान्वयन के लिए, hardware/google/camera/common/hal/aidl_service/ देखें।

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

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

एआईडीएल कैमरा एचएएल को मान्य करें

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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