कैमरा संस्करण समर्थन

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

शब्दावली

इस पृष्ठ पर निम्नलिखित शब्दों का उपयोग किया गया है:

कैमरा API1
एंड्रॉइड 4.4 और उससे नीचे के डिवाइस पर ऐप-स्तरीय कैमरा फ्रेमवर्क, android.hardware.Camera क्लास के माध्यम से प्रदर्शित किया गया।
कैमरा API2
एंड्रॉइड 5.0 और उच्चतर उपकरणों पर ऐप-स्तरीय कैमरा ढांचा, android.hardware.camera2 पैकेज के माध्यम से प्रदर्शित किया गया है।
कैमरा एचएएल
SoC विक्रेताओं द्वारा कार्यान्वित कैमरा मॉड्यूल परत। ऐप-स्तरीय सार्वजनिक फ़्रेमवर्क कैमरा HAL के शीर्ष पर बनाए गए हैं।
कैमरा HAL3.1
कैमरा डिवाइस HAL का संस्करण Android 4.4 के साथ जारी किया गया।
कैमरा HAL3.2
कैमरा डिवाइस HAL का संस्करण Android 5.0 के साथ जारी किया गया।
कैमरा एपीआई1 सीटीएस
कैमरा सीटीएस परीक्षणों का सेट जो कैमरा एपीआई1 के शीर्ष पर चलता है।
कैमरा API2 CTS
कैमरा CTS परीक्षणों का अतिरिक्त सेट जो कैमरा API2 के शीर्ष पर चलता है।
तिहरा
एक नए विक्रेता इंटरफ़ेस के माध्यम से विक्रेता कार्यान्वयन (सिलिकॉन निर्माताओं द्वारा लिखित डिवाइस-विशिष्ट, निचले स्तर का सॉफ़्टवेयर) को एंड्रॉइड ओएस ढांचे से अलग करता है।
छिपाना
एचएएल इंटरफ़ेस परिभाषा भाषा को ट्रेबल के साथ पेश किया गया और इसका उपयोग एचएएल और उसके उपयोगकर्ताओं के बीच इंटरफ़ेस को निर्दिष्ट करने के लिए किया गया।
वीटीएस
ट्रेबल के साथ विक्रेता परीक्षण सूट पेश किया गया।

कैमरा एपीआई

एंड्रॉइड में निम्नलिखित कैमरा एपीआई शामिल हैं।

कैमरा API1

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

  • ऐप्स के लिए कैमरा API1 इंटरफ़ेस। कैमरा एपीआई1 के शीर्ष पर बने कैमरा ऐप्स को वैसे ही काम करना चाहिए जैसे वे निचले एंड्रॉइड रिलीज़ संस्करण चलाने वाले उपकरणों पर करते हैं।
  • कैमरा एचएएल संस्करण। कैमरा HAL1.0 के लिए समर्थन शामिल है।

कैमरा API2

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

Android 5.0 और उच्चतर में कैमरा API2 शामिल है; हालाँकि, Android 5.0 और उच्चतर संस्करण चलाने वाले डिवाइस सभी कैमरा API2 सुविधाओं का समर्थन नहीं कर सकते हैं। android.info.supportedHardwareLevel प्रॉपर्टी, जिसे ऐप्स कैमरा API2 इंटरफ़ेस के माध्यम से क्वेरी कर सकते हैं, निम्न समर्थन स्तरों में से एक की रिपोर्ट करती है:

  • LEGACY : ये डिवाइस कैमरा एपीआई2 इंटरफेस के माध्यम से ऐप्स को क्षमताओं को उजागर करते हैं जो लगभग वही क्षमताएं हैं जो कैमरा एपीआई1 इंटरफेस के माध्यम से ऐप्स को उजागर की जाती हैं। लीगेसी फ्रेमवर्क कोड वैचारिक रूप से कैमरा एपीआई2 कॉल को कैमरा एपीआई1 कॉल में अनुवादित करता है; पुराने डिवाइस प्रति-फ़्रेम नियंत्रण जैसी कैमरा API2 सुविधाओं का समर्थन नहीं करते हैं।
  • LIMITED : ये डिवाइस कुछ कैमरा API2 क्षमताओं का समर्थन करते हैं (लेकिन सभी नहीं) और इन्हें कैमरा HAL 3.2 या उच्चतर का उपयोग करना चाहिए।
  • FULL : ये डिवाइस कैमरा API2 की सभी प्रमुख क्षमताओं का समर्थन करते हैं और इन्हें कैमरा HAL 3.2 या उच्चतर और Android 5.0 या उच्चतर का उपयोग करना चाहिए।
  • LEVEL_3 : ये डिवाइस अतिरिक्त आउटपुट स्ट्रीम कॉन्फ़िगरेशन के साथ-साथ YUV रीप्रोसेसिंग और RAW इमेज कैप्चर का समर्थन करते हैं।
  • EXTERNAL : ये उपकरण कुछ अपवादों के साथ LIMITED उपकरणों के समान हैं; उदाहरण के लिए, कुछ सेंसर या लेंस की जानकारी रिपोर्ट नहीं की जा सकती है या उनकी फ़्रेम दरें कम स्थिर हैं। इस स्तर का उपयोग USB वेबकैम जैसे बाहरी कैमरों के लिए किया जाता है।

कैमरा एपीआई2 इंटरफेस में android.request.availableCapabilities प्रॉपर्टी के माध्यम से व्यक्तिगत क्षमताओं को उजागर किया जाता है। FULL उपकरणों के लिए MANUAL_SENSOR और MANUAL_POST_PROCESSING क्षमताओं की आवश्यकता होती है। RAW क्षमता FULL उपकरणों के लिए भी वैकल्पिक है। LIMITED उपकरण इन क्षमताओं के किसी भी उपसमूह का विज्ञापन कर सकते हैं, इनमें से कोई भी शामिल नहीं है। हालाँकि, BACKWARD_COMPATIBLE क्षमता को हमेशा परिभाषित किया जाना चाहिए।

डिवाइस का समर्थित हार्डवेयर स्तर, साथ ही इसके द्वारा समर्थित विशिष्ट कैमरा एपीआई2 क्षमताएं, कैमरा एपीआई2 कैमरा ऐप्स के Google Play फ़िल्टरिंग की अनुमति देने के लिए निम्नलिखित फीचर फ़्लैग के रूप में उपलब्ध हैं।

  • android.hardware.camera.hardware_level.full
  • android.hardware.camera.capability.raw
  • android.hardware.camera.capability.manual_sensor
  • android.hardware.camera.capability.manual_post_processing

सीटीएस आवश्यकताएँ

Android 5.0 और उच्चतर संस्करण चलाने वाले उपकरणों को कैमरा API1 CTS, कैमरा API2 CTS और CTS सत्यापनकर्ता कैमरा परीक्षण पास करना होगा।

जिन डिवाइसों में कैमरा HAL3.2 कार्यान्वयन की सुविधा नहीं है और वे पूर्ण कैमरा API2 इंटरफेस का समर्थन करने में सक्षम नहीं हैं, उन्हें अभी भी कैमरा API2 CTS परीक्षण पास करना होगा। हालाँकि, डिवाइस कैमरा एपीआई2 LEGACY मोड में चलता है (जिसमें कैमरा एपीआई2 कॉल को संकल्पनात्मक रूप से कैमरा एपीआई1 कॉल में मैप किया जाता है) इसलिए कैमरा एपीआई1 से परे सुविधाओं या क्षमताओं से संबंधित कोई भी कैमरा एपीआई2 सीटीएस परीक्षण स्वचालित रूप से छोड़ दिया जाता है।

पुराने उपकरणों पर, चलाए जाने वाले कैमरा एपीआई2 सीटीएस परीक्षण बिना किसी नई आवश्यकता के मौजूदा सार्वजनिक कैमरा एपीआई1 इंटरफेस और क्षमताओं का उपयोग करते हैं। जो बग सामने आए हैं (और जो कैमरा एपीआई2 सीटीएस विफलता का कारण बनते हैं) वे डिवाइस के मौजूदा कैमरा एचएएल में पहले से मौजूद बग हैं, और इस प्रकार मौजूदा कैमरा एपीआई1 ऐप्स द्वारा ढूंढ लिए जाएंगे। हम इस प्रकृति के कई बग की उम्मीद नहीं करते हैं (हालांकि, कैमरा एपीआई2 सीटीएस परीक्षण पास करने के लिए ऐसे किसी भी बग को ठीक किया जाना चाहिए)।

वीटीएस आवश्यकताएँ

बाइंडराइज्ड एचएएल कार्यान्वयन के साथ एंड्रॉइड 8.0 और उच्चतर संस्करण चलाने वाले उपकरणों को कैमरा वीटीएस परीक्षण पास करना होगा।

कैमरा ढाँचा सख्त हो रहा है

मीडिया और कैमरा फ्रेमवर्क सुरक्षा को सख्त करने के लिए, एंड्रॉइड 7.0 कैमरा सेवा को मीडियासर्वर से बाहर ले जाता है। एंड्रॉइड 8.0 से शुरू होकर, प्रत्येक बाइंडराइज्ड कैमरा एचएएल कैमरा सेवा से अलग प्रक्रिया में चलता है। विक्रेताओं को उपयोग में आने वाले एपीआई और एचएएल संस्करणों के आधार पर कैमरा एचएएल में बदलाव करने की आवश्यकता हो सकती है। निम्नलिखित अनुभाग HAL1 और HAL3 के लिए AP1 और AP2 में वास्तुशिल्प परिवर्तनों के साथ-साथ सामान्य आवश्यकताओं का विवरण देते हैं।

API1 के लिए वास्तुशिल्प परिवर्तन

API1 वीडियो रिकॉर्डिंग में कैमरा और वीडियो एनकोडर को एक ही प्रक्रिया में लाइव माना जा सकता है। API1 का उपयोग करते समय:

  • HAL3, जहां कैमरा सेवा प्रक्रियाओं के बीच बफ़र्स को पास करने के लिए बफ़रक्यू का उपयोग करती है, कोई विक्रेता अद्यतन आवश्यक नहीं है।

    HAL3 पर API1 में Android 7.0 कैमरा और मीडिया स्टैक

    चित्र 1. HAL3 पर API1 में Android 7.0 कैमरा और मीडिया स्टैक

  • HAL1, जो वीडियो बफ़र्स में मेटाडेटा पास करने का समर्थन करता है, विक्रेताओं को kMetadataBufferTypeNativeHandleSource का उपयोग करने के लिए HAL को अपडेट करना होगा। ( kMetadataBufferTypeCameraSource अब Android 7.0 में समर्थित नहीं है।)

    HAL1 पर API1 में Android 7.0 कैमरा और मीडिया स्टैक

    चित्र 2. HAL1 पर API1 में Android 7.0 कैमरा और मीडिया स्टैक

API2 के लिए वास्तुशिल्प परिवर्तन

HAL1 या HAL3 पर API2 के लिए, बफ़रक्यू बफ़र्स पास करता है ताकि वे पथ काम करना जारी रखें। API2 के लिए Android 7.0 आर्किटेक्चर:

  • HAL1 कैमरा सेवा के स्थानांतरण से प्रभावित नहीं है, और कोई विक्रेता अद्यतन आवश्यक नहीं है।
  • HAL3 प्रभावित है , लेकिन कोई विक्रेता अद्यतन आवश्यक नहीं है:

    HAL3 पर API2 में Android 7.0 कैमरा और मीडिया स्टैक

    चित्र 3. HAL3 पर API2 में Android 7.0 कैमरा और मीडिया स्टैक

अतिरिक्त जरूरतें

मीडिया और कैमरा फ्रेमवर्क सुरक्षा को मजबूत करने के लिए किए गए वास्तुशिल्प परिवर्तनों में निम्नलिखित अतिरिक्त डिवाइस आवश्यकताएं शामिल हैं।

  • सामान्य। आईपीसी के कारण उपकरणों को अतिरिक्त बैंडविड्थ की आवश्यकता होती है, जो हाई-स्पीड वीडियो रिकॉर्डिंग जैसे समय-संवेदनशील कैमरा उपयोग के मामलों को प्रभावित कर सकता है। विक्रेता 120/240 FPS हाई-स्पीड वीडियो रिकॉर्डिंग के लिए android.hardware.camera2.cts.PerformanceTest और Google कैमरा ऐप चलाकर वास्तविक प्रभाव को माप सकते हैं। नई प्रक्रिया बनाने के लिए उपकरणों को थोड़ी मात्रा में अतिरिक्त रैम की भी आवश्यकता होती है।
  • वीडियो बफ़र्स में मेटाडेटा पास करें ( केवल HAL1 )। यदि HAL1 वीडियो बफ़र्स में वास्तविक YUV फ़्रेम डेटा के बजाय मेटाडेटा संग्रहीत करता है, तो HAL को मेटाडेटा बफ़र प्रकार के रूप में kMetadataBufferTypeNativeHandleSource उपयोग करना होगा और वीडियो बफ़र्स में VideoNativeHandleMetadata पास करना होगा। ( kMetadataBufferTypeCameraSource अब एंड्रॉइड 7.0 पर समर्थित नहीं है।) VideoNativeHandleMetadata के साथ, कैमरा और मीडिया फ्रेमवर्क देशी हैंडल को क्रमबद्ध और डीसेरिएलाइज़ करके प्रक्रियाओं के बीच वीडियो बफ़र्स को पास करने में सक्षम हैं।
  • बफ़र हैंडल पता हमेशा एक ही बफ़र ( केवल HAL3 ) संग्रहीत नहीं करता है । प्रत्येक कैप्चर अनुरोध के लिए, HAL3 को बफ़र हैंडल के पते मिलते हैं। एचएएल बफ़र्स की पहचान करने के लिए पतों का उपयोग नहीं कर सकता क्योंकि एचएएल द्वारा बफ़र लौटाने के बाद पते एक और बफ़र हैंडल संग्रहीत कर सकते हैं। आपको बफ़र्स की पहचान करने के लिए बफ़र हैंडल का उपयोग करने के लिए HAL को अद्यतन करना होगा। उदाहरण के लिए, एचएएल को एक बफर हैंडल एड्रेस ए प्राप्त होता है, जो बफर हैंडल ए को संग्रहीत करता है। एचएएल बफर हैंडल ए को वापस करने के बाद, बफर हैंडल एड्रेस ए अगली बार एचएएल को प्राप्त होने पर बफर हैंडल बी को स्टोर कर सकता है।
  • कैमरासर्वर के लिए SELinux नीतियों को अपडेट करें। यदि डिवाइस-विशिष्ट SELinux नीतियां मीडियासर्वर को कैमरा चलाने की अनुमति देती हैं, तो आपको कैमरासर्वर को उचित अनुमति देने के लिए SELinux नीतियों को अपडेट करना होगा। हम कैमरासर्वर के लिए मीडियासर्वर की SELinux नीतियों की नकल करने को हतोत्साहित करते हैं (क्योंकि मीडियासर्वर और कैमरासर्वर को आमतौर पर सिस्टम में अलग-अलग संसाधनों की आवश्यकता होती है)। कैमरासर्वर के पास केवल कैमरा कार्य करने के लिए आवश्यक अनुमतियाँ होनी चाहिए और मीडियासर्वर में किसी भी अनावश्यक कैमरा-संबंधी अनुमति को हटा दिया जाना चाहिए।
  • कैमरा एचएएल और कैमरासर्वर के बीच पृथक्करण। एंड्रॉइड 8.0 और उच्चतर अतिरिक्त रूप से कैमरासर्वर से अलग प्रक्रिया में बाइंडराइज्ड कैमरा एचएएल को अलग करते हैं। आईपीसी एचआईडीएल-परिभाषित इंटरफेस से गुजरता है।

मान्यकरण

उन सभी डिवाइसों के लिए जिनमें कैमरा शामिल है और Android 7.0 चलता है, Android 7.0 CTS चलाकर कार्यान्वयन को सत्यापित करें। हालाँकि एंड्रॉइड 7.0 में नए सीटीएस परीक्षण शामिल नहीं हैं जो कैमरा सेवा परिवर्तनों को सत्यापित करते हैं, यदि आपने ऊपर बताए गए अपडेट नहीं किए हैं तो मौजूदा सीटीएस परीक्षण विफल हो जाते हैं।

उन सभी उपकरणों के लिए जिनमें कैमरा शामिल है और जो एंड्रॉइड 8.0 और उच्चतर पर चलते हैं, वीटीएस चलाकर विक्रेता कार्यान्वयन को सत्यापित करें।

कैमरा एचएएल संस्करण इतिहास

एंड्रॉइड कैमरा एचएएल के मूल्यांकन के लिए उपलब्ध परीक्षणों की सूची के लिए, कैमरा एचएएल परीक्षण चेकलिस्ट देखें।

एंड्रॉइड 10

एंड्रॉइड 10 निम्नलिखित अपडेट पेश करता है।

कैमरा एपीआई

  • मल्टी-कैमरा सुधार जो भौतिक कैमरा आईडी को छिपाकर भौतिक कैमरों को व्यक्तिगत रूप से या संबंधित तार्किक कैमरों के माध्यम से उपयोग करने की अनुमति देता है। मल्टी-कैमरा सपोर्ट देखें।
  • यह जांचने की क्षमता कि नया सत्र बनाने के प्रदर्शन ओवरहेड के बिना कोई विशेष सत्र कॉन्फ़िगरेशन समर्थित है या नहीं। CameraDevice देखें।
  • क्लाइंट को अधिक शक्तिशाली और कुशल बनाने के लिए किसी दिए गए उपयोग के मामले के लिए अनुशंसित स्ट्रीम कॉन्फ़िगरेशन को पुनः प्राप्त करने की क्षमता। getRecommendedStreamConfigurationMap देखें।
  • गहराई वाले JPEG छवि प्रारूप के लिए समर्थन। अधिक जानकारी के लिए, गतिशील गहराई विनिर्देश देखें।
  • HEIC छवि प्रारूप के लिए समर्थन। HEIF इमेजिंग देखें.
  • गोपनीयता में सुधार. CameraCharacteristics से पुनर्प्राप्त करने से पहले क्लाइंट के पास CAMERA अनुमतियाँ होना आवश्यक है। getKeysNeedingPermission देखें।

कैमरा एचएएल

निम्नलिखित कैमरा HAL संस्करण Android 10 में अपडेट किए गए हैं।

3.5

ICameraDevice

ICameraDeviceSession

  • isReconfigurationNeeded : वह विधि जो कैमरा फ्रेमवर्क को बताती है कि संभावित नए सत्र पैरामीटर मानों के लिए पूर्ण स्ट्रीम पुन: कॉन्फ़िगरेशन की आवश्यकता है या नहीं। यह अनावश्यक कैमरा पुन: कॉन्फ़िगरेशन विलंब से बचने में मदद करता है। सत्र पुनर्विन्यास क्वेरी देखें।
  • एचएएल बफ़र प्रबंधन एपीआई : ये एपीआई कैमरा एचएएल को कैमरा पाइपलाइन में उसके संबंधित बफ़र्स के साथ प्रत्येक कैप्चर अनुरोध को युग्मित करने के बजाय केवल आवश्यकता पड़ने पर कैमरा फ्रेमवर्क से बफ़र्स का अनुरोध करने की अनुमति देते हैं, जिसके परिणामस्वरूप संभावित रूप से महत्वपूर्ण मेमोरी बचत होती है।
    • signalStreamFlush : एचएएल को संकेत कि कैमरा सेवा configureStreams_3_5 निष्पादित करने वाली है और एचएएल को निर्दिष्ट स्ट्रीम के सभी बफ़र्स वापस करने होंगे।
    • configureStreams_3_5 : ICameraDevice3.4.configureStreams के समान, लेकिन इसके अलावा, configureStreams_3_5 और signalStreamFlush कॉल के बीच दौड़ की स्थिति की जांच करने के लिए streamConfigCounter काउंटर प्रदान किया जाता है।

ICameraDeviceCallback में अपडेट:

  • requestStreamBuffers : सिंक्रोनस कॉलबैक जिसे कैमरा HAL कैमरा सर्वर से बफ़र्स के लिए पूछने के लिए कॉल करता है। requestStreamBuffers देखें।
  • returnStreamBuffers : कैमरा सर्वर पर आउटपुट बफ़र्स वापस करने के लिए कैमरा एचएएल के लिए सिंक्रोनस कॉलबैक। returnStreamBuffers देखें।

3.4

एंड्रॉइड 10 में कैमरा मेटाडेटा में निम्नलिखित कुंजियाँ जोड़ी गई हैं।

  • छवि प्रारूप
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW10
    • ANDROID_SCALER_AVAILABLE_FORMATS_RAW12
    • ANDROID_SCALER_AVAILABLE_FORMATS_Y8
  • कैमरा मेटाडेटा टैग
    • ANDROID_REQUEST_CHARACTERISTIC_KEYS_NEEDING_PERMISSION
    • ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS
    • ANDROID_SCALER_AVAILABLE_RECOMMENDED_INPUT_OUTPUT_FORMATS_MAP
    • ANDROID_INFO_SUPPORTED_BUFFER_MANAGEMENT_VERSION
    • ANDROID_DEPTH_AVAILABLE_RECOMMENDED_DEPTH_STREAM_CONFIGURATIONS
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_MIN_FRAME_DURATIONS
    • ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS
    • ANDROID_HEIC_AVAILABLE_HEIC_MIN_FRAME_DURATIONS
    • ANDROID_HEIC_AVAILABLE_HEIC_STALL_DURATIONS
    • ANDROID_HEIC_INFO_SUPPORTED
    • ANDROID_HEIC_INFO_MAX_JPEG_APP_SEGMENTS_COUNT
  • क्षमताओं
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SECURE_IMAGE_DATA
  • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT कुंजी के लिए मान
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_MONO
    • ANDROID_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT_NIR
  • उपलब्ध गतिशील गहराई धारा विन्यास
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_DEPTH_AVAILABLE_DYNAMIC_DEPTH_STREAM_CONFIGURATIONS_INPUT
  • उपलब्ध HEIC स्ट्रीम कॉन्फ़िगरेशन
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_OUTPUT
    • ANDROID_HEIC_AVAILABLE_HEIC_STREAM_CONFIGURATIONS_INPUT

कैमरा मॉड्यूल

निम्नलिखित कैमरा मॉड्यूल संस्करण एंड्रॉइड 10 में अपडेट किए गए हैं।

2.5

  • जब भौतिक परिवर्तन, जैसे फ़ोल्डिंग, कैमरा और रूटिंग को प्रभावित करते हैं, तो कैमरा HAL को सूचित करने के लिए उपकरणों के लिए notifyDeviceStateChange विधि जोड़ता है।

2.4

  • एपीआई स्तर 29 या उच्चतर के साथ लॉन्च होने वाले उपकरणों को isTorchModeSupported के लिए true रिपोर्ट करना होगा।

एंड्रॉइड 9

एंड्रॉइड 9 रिलीज़ कैमरा एपीआई2 और एचएएल इंटरफ़ेस में निम्नलिखित अपडेट पेश करता है।

कैमरा एपीआई

  • एक ही दिशा में कई कैमरों वाले डिवाइसों को बेहतर समर्थन देने के लिए मल्टी-कैमरा एपीआई पेश किया गया है, जो बोकेह और सीमलेस ज़ूम जैसी सुविधाओं को सक्षम करता है। यह ऐप्स को एक डिवाइस पर कई कैमरों को एक लॉजिकल यूनिट (लॉजिकल कैमरा) के रूप में देखने की अनुमति देता है। कैप्चर अनुरोध एक तार्किक कैमरे से घिरे अलग-अलग कैमरा उपकरणों पर भी भेजे जा सकते हैं। मल्टी-कैमरा सपोर्ट देखें।
  • सत्र पैरामीटर का परिचय देता है. सत्र पैरामीटर उपलब्ध कैप्चर पैरामीटर का एक सबसेट है जो संशोधित होने पर गंभीर प्रसंस्करण देरी का कारण बन सकता है। यदि ग्राहक कैप्चर सत्र आरंभीकरण के दौरान अपने प्रारंभिक मान पास कर लेते हैं तो इन लागतों को कम किया जा सकता है। सत्र पैरामीटर देखें.
  • ऐप-स्तरीय स्थिरीकरण और प्रभावों के लिए ऑप्टिकल स्थिरीकरण (OIS) डेटा कुंजियाँ जोड़ता है। STATISTICS_OIS_SAMPLES देखें।
  • बाहरी फ़्लैश समर्थन जोड़ता है. CONTROL_AE_MODE_ON_EXTERNAL_FLASH देखें।
  • CAPTURE_INTENT में मोशन ट्रैकिंग आशय जोड़ता है। CONTROL_CAPTURE_INTENT_MOTION_TRACKING देखें।
  • LENS_RADIAL_DISTORTION अस्वीकार करता है और उसके स्थान पर LENS_DISTORTION जोड़ता है।
  • CaptureRequest में विरूपण सुधार मोड जोड़ता है। DISTORTION_CORRECTION_MODE देखें।
  • समर्थित उपकरणों पर बाहरी यूएसबी/यूवीसी कैमरों के लिए समर्थन जोड़ता है। INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL देखें।

कैमरा एचएएल

3.4

ICameraDeviceSession में अपडेट

  • configureStreams_3_4 : sessionParameters और लॉजिकल कैमरों के लिए समर्थन जोड़ता है।
  • processCaptureRequest_3_4 : स्ट्रीम संरचना में भौतिक कैमरा आईडी शामिल करने के लिए समर्थन जोड़ता है।

ICameraDeviceCallback में अपडेट

  • processCaptureResult_3_4 : कैप्चर परिणामों में भौतिक कैमरा मेटाडेटा जोड़ता है।

3.3

एंड्रॉइड 9 में कैमरा मेटाडेटा में निम्नलिखित कुंजियाँ जोड़ी गई हैं।

  • क्षमताओं
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING
    • ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MONOCHROME
  • कैमरा मेटाडेटा टैग
    • ANDROID_LOGICAL_MULTI_CAMERA_PHYSICAL_IDS
    • ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE
    • ANDROID_DISTORTION_CORRECTION_AVAILABLE_MODES
    • ANDROID_LENS_POSE_REFERENCE
    • ANDROID_LENS_DISTORTION
    • ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
    • ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS
    • ANDROID_STATISTICS_OIS_DATA_MODE
    • ANDROID_STATISTICS_OIS_TIMESTAMPS
    • ANDROID_STATISTICS_OIS_X_SHIFTS
    • ANDROID_STATISTICS_OIS_Y_SHIFTS

एंड्रॉइड 8.0

एंड्रॉइड 8.0 रिलीज़ ट्रेबल पेश करता है। ट्रेबल के साथ, विक्रेता कैमरा एचएएल कार्यान्वयन को बाइंडराइज़ किया जाना चाहिए। एंड्रॉइड 8.0 में कैमरा सेवा में ये प्रमुख संवर्द्धन भी शामिल हैं:

  • साझा सतहें: समान OutputConfiguration साझा करने वाली एकाधिक सतहों को सक्षम करें
  • कस्टम कैमरा मोड के लिए सिस्टम एपीआई
  • onCaptureQueueEmpty

इन सुविधाओं पर अधिक जानकारी के लिए नीचे दिए गए अनुभाग देखें।

साझा सतहें

यह सुविधा बफ़र्स के केवल एक सेट को पूर्वावलोकन और वीडियो एन्कोडिंग जैसे दो आउटपुट चलाने में सक्षम बनाती है, जो बिजली और मेमोरी की खपत को कम करती है। इस सुविधा का समर्थन करने के लिए, डिवाइस निर्माताओं को यह सुनिश्चित करने की आवश्यकता है कि उनके कैमरा एचएएल और ग्रैलोक एचएएल कार्यान्वयन ग्रैलोक बफ़र्स बना सकते हैं जो केवल एक उपभोक्ता के बजाय कई अलग-अलग उपभोक्ताओं (जैसे हार्डवेयर कंपोजर/जीपीयू और वीडियो एनकोडर) द्वारा उपयोग किए जाते हैं। कैमरा सेवा उपभोक्ता उपयोग फ़्लैग को कैमरा HAL और ग्रालोक HAL तक भेजती है; उन्हें या तो सही प्रकार के बफ़र्स आवंटित करने की आवश्यकता है, या कैमरा एचएएल को एक त्रुटि लौटाने की आवश्यकता है कि उपभोक्ताओं का यह संयोजन समर्थित नहीं है।

अतिरिक्त विवरण के लिए enableSurfaceSharing डेवलपर दस्तावेज़ देखें।

कस्टम कैमरा मोड के लिए सिस्टम एपीआई

सार्वजनिक कैमरा एपीआई दो ऑपरेटिंग मोड को परिभाषित करता है: सामान्य और प्रतिबंधित उच्च गति रिकॉर्डिंग। उनके शब्दार्थ काफी भिन्न हैं; उदाहरण के लिए, हाई-स्पीड मोड एक बार में अधिकतम दो विशिष्ट आउटपुट तक सीमित है। विभिन्न ओईएम ने हार्डवेयर-विशिष्ट क्षमताओं के लिए अन्य कस्टम मोड को परिभाषित करने में रुचि व्यक्त की है। हुड के तहत, मोड सिर्फ एक पूर्णांक है जो configure_streams को पास किया गया है। देखें: hardware/camera/device/3.2/ICameraDeviceSession#configurestreams

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

इस सुविधा का समर्थन करने के लिए, OEM को केवल अपने HAL में नया मोड जोड़ने की आवश्यकता है, जो config_streams पर HAL को दिए गए इस पूर्णांक द्वारा ट्रिगर होता है, और फिर उनके कस्टम कैमरा ऐप को सिस्टम API का उपयोग करना होता है।

विधि का नाम android.hardware.camera2.CameraDevice#createCustomCaptureSession है। देखें: frameworks/base/core/java/android/hardware/camera2/CameraDevice

onCaptureQueueEmpty

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

कैमरा एचआईडीएल इंटरफ़ेस

कैमरा एचआईडीएल इंटरफ़ेस कैमरा एचएएल इंटरफ़ेस का एक पूर्ण ओवरहाल है जो स्थिर एचआईडीएल-परिभाषित एपीआई का उपयोग करता है। सबसे हालिया विरासत संस्करण 3.4 और 2.4 (कैमरा मॉड्यूल के लिए) में पेश की गई सभी सुविधाएं और कैमरा क्षमताएं भी एचआईडीएल परिभाषाओं का हिस्सा हैं।

3.4

समर्थित मेटाडेटा में मामूली परिवर्धन और डेटा_स्पेस समर्थन में परिवर्तन:

  • यदि RAW_OPAQUE प्रारूप समर्थित है तो ANDROID_SENSOR_OPAQUE_RAW_SIZE स्थिर मेटाडेटा को अनिवार्य रूप से जोड़ें।
  • यदि कोई RAW प्रारूप समर्थित है तो ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE स्थिर मेटाडेटा को अनिवार्य रूप से जोड़ें।
  • डेटास्पेस एन्कोडिंग की संस्करण 0 परिभाषा का उपयोग करके, camera3_stream_t data_space डेटा_स्पेस फ़ील्ड को अधिक लचीली परिभाषा पर स्विच करें।
  • सामान्य मेटाडेटा परिवर्धन जो HALv3.2 या नए के लिए उपयोग के लिए उपलब्ध हैं:
    • ANDROID_INFO_SUPPORTED_HARDWARE_LEVEL_3
    • ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST
    • ANDROID_CONTROL_POST_RAW_SENSITIVITY_BOOST_RANGE
    • ANDROID_SENSOR_DYNAMIC_BLACK_LEVEL
    • ANDROID_SENSOR_DYNAMIC_WHITE_LEVEL
    • ANDROID_SENSOR_OPAQUE_RAW_SIZE
    • ANDROID_SENSOR_OPTICAL_BLACK_REGIONS

3.3

विस्तारित क्षमता वाले एचएएल का मामूली संशोधन:

  • OPAQUE और YUV रीप्रोसेसिंग API अपडेट।
  • गहराई आउटपुट बफ़र्स के लिए बुनियादी समर्थन।
  • camera3_stream_t में data_space फ़ील्ड जोड़ना।
  • camera3_stream_t में रोटेशन फ़ील्ड को जोड़ना।
  • कैमरा3 स्ट्रीम कॉन्फ़िगरेशन ऑपरेशन मोड को camera3_stream_configuration_t में जोड़ना।

3.2

विस्तारित क्षमता वाले एचएएल का मामूली संशोधन:

  • get_metadata_vendor_tag_ops को अस्वीकार करता है। इसके बजाय camera_common.h में get_vendor_tag_ops उपयोग करें।
  • register_stream_buffers अस्वीकार करता है। process_capture_request में एचएएल को फ्रेमवर्क द्वारा प्रदान किए गए सभी ग्रैलोक बफ़र्स किसी भी समय नए हो सकते हैं।
  • आंशिक परिणाम समर्थन जोड़ें. पूर्ण परिणाम उपलब्ध होने से पहले उपलब्ध परिणामों के सबसेट के साथ process_capture_result कई बार कॉल किया जा सकता है।
  • camera3_request_template में मैन्युअल टेम्पलेट जोड़ें। एप्लिकेशन कैप्चर सेटिंग्स को सीधे नियंत्रित करने के लिए इस टेम्पलेट का उपयोग कर सकते हैं।
  • द्विदिशात्मक और इनपुट स्ट्रीम विशिष्टताओं पर दोबारा काम करें।
  • इनपुट बफ़र रिटर्न पथ बदलें। बफ़र को process_capture_result के बजाय process_capture_request में लौटाया जाता है।

3.1

विस्तारित क्षमता वाले एचएएल का मामूली संशोधन:

  • configure_streams उपभोक्ता उपयोग फ़्लैग को HAL को भेजता है।
  • जितनी जल्दी हो सके सभी इन-फ़्लाइट अनुरोधों/बफ़र्स को ड्रॉप करने के लिए फ्लश कॉल।

3.0

विस्तारित क्षमता वाले एचएएल का पहला संशोधन:

  • एबीआई पूरी तरह से अलग होने के कारण प्रमुख संस्करण परिवर्तन। 2.0 से आवश्यक हार्डवेयर क्षमताओं या परिचालन मॉडल में कोई बदलाव नहीं।
  • इनपुट अनुरोध और स्ट्रीम कतार इंटरफेस पर दोबारा काम किया गया: फ्रेमवर्क अगले अनुरोध के साथ एचएएल में कॉल करता है और स्ट्रीम बफ़र्स पहले ही हटा दिए गए हैं। कुशल कार्यान्वयन के लिए आवश्यक सिंक फ्रेमवर्क समर्थन शामिल है।
  • ट्रिगर्स को अनुरोधों में ले जाया गया, अधिकांश सूचनाओं को परिणामों में।
  • फ्रेमवर्क में सभी कॉलबैक को एक संरचना में समेकित किया गया, और सभी सेटअप विधियों को एक initialize() कॉल में समेकित किया गया।
  • स्ट्रीम प्रबंधन को सरल बनाने के लिए स्ट्रीम कॉन्फ़िगरेशन को एकल कॉल में बनाया गया। द्विदिश धाराएँ STREAM_FROM_STREAM निर्माण को प्रतिस्थापित करती हैं।
  • पुराने/सीमित हार्डवेयर उपकरणों के लिए सीमित मोड शब्दार्थ।

2.0

विस्तारित-क्षमता वाले HAL (Android 4.2) की आरंभिक रिलीज़ [camera2.h]:

  • मौजूदा android.hardware.Camera API को लागू करने के लिए पर्याप्त है।
  • कैमरा सेवा परत में ZSL कतार की अनुमति देता है।
  • किसी भी नई सुविधा जैसे मैन्युअल कैप्चर नियंत्रण, बायर रॉ कैप्चर, रॉ डेटा का पुन: प्रसंस्करण आदि के लिए परीक्षण नहीं किया गया।

1.0

प्रारंभिक एंड्रॉइड कैमरा एचएएल (एंड्रॉइड 4.0) [कैमरा.एच]:

  • C++ कैमराहार्डवेयरइंटरफ़ेस एब्स्ट्रैक्शन परत से परिवर्तित।
  • android.hardware.Camera API को सपोर्ट करता है।

कैमरा मॉड्यूल संस्करण इतिहास

इस अनुभाग में camera_module_t.common.module_api_version पर आधारित कैमरा हार्डवेयर मॉड्यूल के लिए मॉड्यूल संस्करण जानकारी शामिल है। दो सबसे महत्वपूर्ण हेक्स अंक प्रमुख संस्करण का प्रतिनिधित्व करते हैं, और दो सबसे कम महत्वपूर्ण छोटे संस्करण का प्रतिनिधित्व करते हैं।

2.4

यह कैमरा मॉड्यूल संस्करण निम्नलिखित एपीआई परिवर्तन जोड़ता है:

  1. टॉर्च मोड समर्थन. फ्रेमवर्क किसी भी कैमरा डिवाइस के लिए टॉर्च मोड को चालू कर सकता है जिसमें फ्लैश यूनिट है, कैमरा डिवाइस को खोले बिना। कैमरा मॉड्यूल की तुलना में कैमरा डिवाइस में फ्लैश यूनिट तक पहुंचने की प्राथमिकता अधिक होती है; यदि कैमरा उपकरण को मॉड्यूल इंटरफ़ेस के माध्यम से सक्षम किया गया हो तो उसे खोलने से टॉर्च बंद हो जाती है। जब कोई संसाधन विरोध होता है, जैसे कि कैमरा डिवाइस को खोलने के लिए open() कहा जाता है, तो कैमरा एचएएल मॉड्यूल को टॉर्च मोड स्थिति कॉलबैक के माध्यम से फ्रेमवर्क को सूचित करना होगा कि टॉर्च मोड बंद कर दिया गया है।
  2. बाहरी कैमरा (उदाहरण के लिए, यूएसबी हॉट-प्लग कैमरा) समर्थन। एपीआई अपडेट निर्दिष्ट करते हैं कि कैमरे की स्थैतिक जानकारी केवल तभी उपलब्ध होती है जब कैमरा कनेक्ट होता है और बाहरी हॉट-प्लग कैमरों के लिए उपयोग के लिए तैयार होता है। जब कैमरे की स्थिति CAMERA_DEVICE_STATUS_PRESENT नहीं है तो स्थिर जानकारी प्राप्त करने के लिए कॉल अमान्य कॉल हैं। उपलब्ध बाहरी कैमरा सूची को प्रबंधित करने के लिए फ्रेमवर्क पूरी तरह से डिवाइस स्थिति परिवर्तन कॉलबैक पर निर्भर करता है।
  3. कैमरा मध्यस्थता संकेत. एक साथ खोले और उपयोग किए जा सकने वाले कैमरा उपकरणों की संख्या को स्पष्ट रूप से इंगित करने के लिए समर्थन जोड़ता है। उपकरणों के वैध संयोजनों को निर्दिष्ट करने के लिए, resource_cost और conflicting_devices फ़ील्ड को हमेशा get_camera_info कॉल द्वारा लौटाए गए camera_info संरचना में सेट किया जाना चाहिए।
  4. मॉड्यूल आरंभीकरण विधि. एचएएल के एक बार आरंभीकरण की अनुमति देने के लिए एचएएल मॉड्यूल लोड होने के बाद कैमरा सेवा द्वारा कॉल किया जाता है। किसी अन्य मॉड्यूल विधि को लागू करने से पहले इसे बुलाया जाता है।

2.3

यह कैमरा मॉड्यूल संस्करण ओपन लीगेसी कैमरा एचएएल डिवाइस समर्थन जोड़ता है। यदि एक ही डिवाइस एकाधिक डिवाइस एपीआई संस्करणों का समर्थन कर सकता है तो फ्रेमवर्क इसका उपयोग कैमरा डिवाइस को निचले डिवाइस एचएएल संस्करण एचएएल डिवाइस के रूप में खोलने के लिए कर सकता है। मानक हार्डवेयर मॉड्यूल ओपन कॉल ( common.methods->open ) नवीनतम समर्थित संस्करण के साथ कैमरा डिवाइस को खोलना जारी रखता है, जो कि camera_info_t.device_version में सूचीबद्ध संस्करण भी है।

2.2

यह कैमरा मॉड्यूल संस्करण मॉड्यूल से विक्रेता टैग समर्थन जोड़ता है, और पुराने vendor_tag_query_ops हटा देता है जो पहले केवल खुले डिवाइस के साथ ही पहुंच योग्य थे।

2.1

यह कैमरा मॉड्यूल संस्करण कैमरा एचएएल मॉड्यूल से फ्रेमवर्क में एसिंक्रोनस कॉलबैक के लिए समर्थन जोड़ता है, जिसका उपयोग कैमरा मॉड्यूल स्थिति में परिवर्तनों के बारे में फ्रेमवर्क को सूचित करने के लिए किया जाता है। मॉड्यूल जो एक वैध set_callbacks() विधि प्रदान करते हैं, उन्हें कम से कम इस संस्करण संख्या की रिपोर्ट करनी होगी।

2.0

कैमरा मॉड्यूल जो इस संस्करण संख्या की रिपोर्ट करते हैं, कैमरा मॉड्यूल एचएएल इंटरफ़ेस के दूसरे संस्करण को लागू करते हैं। इस मॉड्यूल के माध्यम से खुलने वाले कैमरा डिवाइस कैमरा डिवाइस एचएएल इंटरफ़ेस के संस्करण 1.0 या संस्करण 2.0 का समर्थन कर सकते हैं। कैमरा_इन्फो का device_version फ़ील्ड हमेशा मान्य होता है; यदि device_version फ़ील्ड 2.0 या उच्चतर है, तो camera_info का static_camera_characteristics फ़ील्ड मान्य है।

1.0

कैमरा मॉड्यूल जो इन संस्करण संख्याओं की रिपोर्ट करते हैं, प्रारंभिक कैमरा मॉड्यूल एचएएल इंटरफ़ेस लागू करते हैं। इस मॉड्यूल के माध्यम से खुलने वाले सभी कैमरा डिवाइस, कैमरा डिवाइस HAL के केवल संस्करण 1 का समर्थन करते हैं। camera_info के device_version और static_camera_characteristics फ़ील्ड मान्य नहीं हैं। इस मॉड्यूल और इसके उपकरणों द्वारा केवल android.hardware.Camera API का समर्थन किया जा सकता है।