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

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

शब्दावली

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

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

कैमरा एपीआई

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

कैमरा API1

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

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

कैमरा API2

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

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

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

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

डिवाइस का समर्थित हार्डवेयर स्तर, साथ ही साथ इसके द्वारा समर्थित विशिष्ट कैमरा API2 क्षमताएं, कैमरा API2 कैमरा ऐप्स के 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 परीक्षण पास करना होगा। हालाँकि, डिवाइस कैमरा API2 लीगेसी मोड में चलता है (जिसमें कैमरा API2 कॉल को कैमरा LEGACY कॉल के लिए अवधारणात्मक रूप से मैप किया जाता है) इसलिए कैमरा API1 से परे सुविधाओं या क्षमताओं से संबंधित कोई भी कैमरा API2 CTS परीक्षण स्वचालित रूप से छोड़ दिया जाता है।

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

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

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

कैमरा फ्रेमवर्क सख्त

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

API1 के लिए स्थापत्य परिवर्तन

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

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

    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 के लिए, BufferQueue बफ़र्स पास करता है ताकि वे पथ काम करना जारी रखें। API2 के लिए Android 7.0 आर्किटेक्चर इस पर:

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

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

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

अतिरिक्त आवश्यकताएं

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

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

मान्यकरण

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

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

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

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

एंड्रॉइड 10

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

कैमरा एपीआई

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

कैमरा एचएएल

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

3.5

ICameraDevice

  • getPhysicalCameraCharacteristics : एक तार्किक कैमरा डिवाइस का समर्थन करने वाले भौतिक कैमरा आईडी के लिए स्थिर कैमरा जानकारी। मल्टी-कैमरा सपोर्ट देखें।
  • isStreamCombinationSupported : यह विधि एक सार्वजनिक API का समर्थन करती है जो सत्र कॉन्फ़िगरेशन समर्थित होने पर क्लाइंट को क्वेरी करने में मदद करती है। स्ट्रीम संयोजनों को क्वेरी करने के लिए API देखें।

ICameraDeviceSession

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

ICameraDeviceCallback के अपडेट:

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

3.4

Android 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

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

निम्नलिखित कैमरा मॉड्यूल संस्करण Android 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 देखें।
  • समर्थित उपकरणों पर बाहरी USB/UVC कैमरों के लिए समर्थन जोड़ता है। INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL देखें।

कैमरा एचएएल

3.4

ICameraDeviceSession के अपडेट

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

ICameraDeviceCallback के अपडेट

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

3.3

Android 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 रिलीज ट्रेबल पेश करता है। ट्रेबल के साथ, विक्रेता कैमरा एचएएल कार्यान्वयन को बाइंडर किया जाना चाहिए। Android 8.0 में कैमरा सेवा में ये प्रमुख संवर्द्धन भी शामिल हैं:

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

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

साझा सतह

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

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

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

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

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

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

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

onCaptureQueueखाली

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

कैमरा HIDL इंटरफ़ेस

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

3.4

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

  • RAW_OPAQUE प्रारूप समर्थित होने पर ANDROID_SENSOR_OPAQUE_RAW_SIZE स्थिर मेटाडेटा को अनिवार्य रूप से जोड़ें।
  • यदि कोई रॉ प्रारूप समर्थित है तो 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 अपडेट।
  • गहराई आउटपुट बफ़र्स के लिए मूल समर्थन।
  • कैमरा3_स्ट्रीम_टी में data_space फ़ील्ड camera3_stream_t
  • camera3_stream_t में रोटेशन फ़ील्ड जोड़ना।
  • कैमरा3 स्ट्रीम कॉन्फ़िगरेशन ऑपरेशन मोड को camera3_stream_configuration_t में जोड़ना।

3.2

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

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

3.1

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

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

3.0

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

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

2.0

विस्तारित-क्षमता एचएएल (एंड्रॉइड 4.2) की प्रारंभिक रिलीज [camera2.h]:

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

1.0

आरंभिक Android कैमरा HAL (Android 4.0) [camera.h]:

  • C++ CameraHardwareInterface अमूर्त परत से रूपांतरित।
  • Android. android.hardware.Camera एपीआई का समर्थन करता है।

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

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

2.4

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

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

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