कैमरा वर्शन की सुविधा

इस पेज पर, कैमरा एचएएल, एपीआई, और उनसे जुड़े वर्शन के अलग-अलग वर्शन की जानकारी दी गई है कंपैटबिलिटी टेस्ट सुइट (सीटीएस) टेस्ट. साथ ही, इसमें कई चीज़ें Android में कैमरे के फ़्रेमवर्क को सख्त और सुरक्षित करने के लिए, आर्किटेक्चर में किए गए बदलाव 7.0 के बाद, Android 8.0 में Treble पर स्विच किया जाता है और वे अपडेट वेंडर को करने होंगे इन बदलावों को लागू करने में मदद करता है.

शब्दावली

इस पेज पर इन कीवर्ड का इस्तेमाल किया गया है:

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

Camera API

Android में नीचे दिए गए कैमरा एपीआई शामिल हैं.

कैमरा API1

Android 5.0 के साथ काम करने वाला Camera API1 अब काम नहीं करता. हालांकि, इसे धीरे-धीरे नए वर्शन के तौर पर हटाया जाना जारी है प्लैटफ़ॉर्म डेवलपमेंट, Camera API2 पर फ़ोकस करता है. हालांकि, फ़ेस-आउट की अवधि यह अवधि लंबे समय तक चलती रहेगी. साथ ही, Android की रिलीज़, Camera API1 ऐप्लिकेशन के साथ काम करती रहेंगी कभी-कभी. खास तौर पर, इन मामलों में सहायता जारी रहेगी:

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

कैमरा API2

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

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

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

उपयोगकर्ता की व्यक्तिगत क्षमताओं को इसके ज़रिए दिखाया जाता है Camera API2 में android.request.availableCapabilities प्रॉपर्टी इंटरफ़ेस. FULL डिवाइसों के लिए, MANUAL_SENSOR और MANUAL_POST_PROCESSING सुविधाएं वगैरह. कॉन्टेंट बनाने FULL डिवाइसों के लिए भी RAW की सुविधा ज़रूरी नहीं है. LIMITED डिवाइस इन सुविधाओं के किसी भी सबसेट का विज्ञापन कर सकता है, जिनमें से कुछ भी नहीं. हालांकि, BACKWARD_COMPATIBLE क्षमता हमेशा तय होना चाहिए.

डिवाइस के साथ काम करने वाले हार्डवेयर के स्तर के साथ-साथ ख़ास कैमरे की सुविधा एपीआई2 की जिन सुविधाओं के साथ यह काम करता है वे नीचे दी गई सुविधाओं के बारे में बताने के लिए उपलब्ध हैं Google Play को Camera API2 कैमरा ऐप्लिकेशन के लिए फ़िल्टर करने की अनुमति दें.

  • 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 और इसके बाद के वर्शन वाले डिवाइसों को Camera API1 सीटीएस, कैमरा API2 CTS और CTS Verifier कैमरे से जुड़ी जांच.

वे डिवाइस जिनमें कैमरा HAL3.2 लागू नहीं किया गया है और न ही पूर्ण Camera API2 इंटरफ़ेस का समर्थन करने में सक्षम होने के बाद भी कैमरे को API2 सीटीएस टेस्ट. हालांकि, डिवाइस Camera API2 में चलता है LEGACY मोड (इसमें Camera API2 कॉल को सैद्धांतिक तौर पर मैप किया गया है का इस्तेमाल करने का सुझाव देते हैं, ताकि सुविधाओं से जुड़े किसी भी Camera API2 सीटीएस टेस्ट का इस्तेमाल किया जा सके या Camera API1 के अलावा, दूसरी सुविधाएं अपने-आप स्किप कर दी जाती हैं.

लेगसी डिवाइसों पर, चल रहे Camera API2 सीटीएस टेस्ट का इस्तेमाल करके बिना किसी नए के मौजूदा सार्वजनिक Camera API1 इंटरफ़ेस और क्षमताएं ज़रूरतें. ऐसी गड़बड़ियां जो बिना अनुमति के सार्वजनिक की गई हैं. इनकी वजह से, Camera API2 सीटीएस काम नहीं करता है डिवाइस के मौजूदा कैमरा एचएएल में पहले से ही गड़बड़ियां मौजूद होती हैं. इसलिए, उन्हें मौजूदा Camera API1 ऐप्लिकेशन में खोजा जा सकता है. हमें इस तरह की बहुत सारी गड़बड़ियों की उम्मीद नहीं होती (हालांकि, Camera API2 सीटीएस टेस्ट को पास करने के लिए, इस तरह की किसी भी गड़बड़ी को ठीक करना ज़रूरी है).

वीटीएस की ज़रूरी शर्तें

Android 8.0 और उसके बाद के वर्शन वाले ऐसे डिवाइस जिनमें बाइंड किए गए एचएएल लागू किए गए हैं, उन्हें ये काम करने होंगे कैमरा पास करो वीटीएस टेस्ट.

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

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

API1 के स्ट्रक्चर में बदलाव

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

  • HAL3, जहां कैमरा सेवा के बीच बफ़र को पास करने के लिए बफ़र सूची का इस्तेमाल किया जाता है प्रोसेस के लिए, किसी वेंडर को अपडेट करने की ज़रूरत नहीं है.

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

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

  • HAL1, जो वीडियो बफ़र में मेटाडेटा पास करने की सुविधा देता है, वेंडर को यह ज़रूर करना चाहिए kMetadataBufferTypeNativeHandleSource का इस्तेमाल करने के लिए, एचएएल को अपडेट करें. (kMetadataBufferTypeCameraSource अब Android में काम नहीं करता 7.0.)

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

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

API2 के स्ट्रक्चर में बदलाव

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

  • कैमरा सर्विस के ट्रांसफ़र होने से HAL1 पर कोई असर नहीं पड़ता और कोई वेंडर नहीं अपडेट करना ज़रूरी है.
  • HAL3 पर असर है, लेकिन कोई वेंडर अपडेट नहीं हुआ ज़रूरी:

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

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

अन्य ज़रूरी शर्तें

मीडिया और कैमरे के फ़्रेमवर्क को बेहतर बनाने के लिए, आर्किटेक्चर में किए गए बदलाव सुरक्षा में, डिवाइस से जुड़ी ये अतिरिक्त ज़रूरी शर्तें भी शामिल हैं.

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

पुष्टि करें

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

ऐसे सभी डिवाइसों के लिए पुष्टि करें जिनमें कैमरा शामिल है और जो Android 8.0 और उसके बाद के वर्शन पर काम करते हैं वेंडर को लागू करने में मदद करता है.

कैमरा एचएएल का वर्शन इतिहास

Android कैमरा एचएएल का आकलन करने के लिए उपलब्ध टेस्ट की सूची के लिए, यहां देखें: कैमरा एचएएल की जांच चेकलिस्ट.

Android 10

Android 10 में ये अपडेट लॉन्च किए गए हैं.

कैमरा एपीआई

कैमरा एचएएल

Android में कैमरा एचएएल के ये वर्शन अपडेट किए गए हैं 10.

3.5

ICameraDevice

ICameraDeviceSession

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

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

  • डिवाइसों को सूचना देने के लिए, notifyDeviceStateChange तरीका जोड़ता है डिवाइस को फ़ोल्ड करने जैसे फ़िज़िकल बदलाव होने पर, कैमरा हैल कैमरे पर असर डालता है और रूटिंग.

2.4

  • एपीआई लेवल 29 या उसके बाद के वर्शन के साथ लॉन्च होने वाले डिवाइसों के लिए, ज़रूरी रिपोर्ट isTorchModeSupported विकेट खोकर true रन बनाए.

Android 9

Android 9 रिलीज़ में Camera API2 और ये अपडेट किए गए हैं HAL इंटरफ़ेस.

कैमरा एपीआई

  • पेश है मल्टी-कैमरा एपीआई कैमरे एक ही दिशा में हैं, ताकि बोकेह और बोकेह और बिना किसी रुकावट के ज़ूम करने की सुविधा मिलती है. इससे ऐप्लिकेशन, किसी डिवाइस पर मौजूद कई कैमरे को एक डिवाइस के तौर पर देख सकते हैं लॉजिकल यूनिट (लॉजिकल कैमरा). कैप्चर करने के अनुरोध किसी एक व्यक्ति को भी भेजे जा सकते हैं कैमरा डिवाइस, जिसमें एक लॉजिकल कैमरा होता है. यहां जाएं: एक से ज़्यादा कैमरों के लिए सहायता.
  • सेशन के पैरामीटर की जानकारी देता है. सेशन पैरामीटर, ऐसे कैप्चर पैरामीटर उपलब्ध हैं, जिनकी वजह से प्रोसेसिंग में देरी हो सकती है. ऐसा तब होता है, जब संशोधित. अगर क्लाइंट अपने शुरुआती वैल्यू पास कर देते हैं, तो ये लागत कम की जा सकती है कैप्चर सेशन शुरू करने के दौरान. यहां जाएं: सेशन पैरामीटर.
  • ऐप्लिकेशन-लेवल पर स्टेबलाइज़ेशन के लिए ऑप्टिकल स्टेबलाइज़ेशन (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

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

Android 8.0

Android 8.0 रिलीज़ में ट्रेबल की शुरुआत की गई है. ट्रेबल की सुविधा वाले वेंडर कैमरा एचएएल लागू होना चाहिए बाइंडर के साथ. Android 8.0 के साथ कैमरा सेवा में किए गए प्रमुख सुधार शामिल हैं:

  • शेयर किए गए प्लैटफ़ॉर्म: एक ही जगह पर कई प्लैटफ़ॉर्म शेयर करने की सुविधा चालू करें OutputConfiguration अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • कस्टम कैमरा मोड के लिए System API
  • onCaptureQueueEmpty

इन सुविधाओं के बारे में ज़्यादा जानकारी के लिए, नीचे दिए गए सेक्शन देखें.

शेयर किए गए प्लैटफ़ॉर्म

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

enableSurfaceSharing देखें डेवलपर दस्तावेज़ पढ़ें.

कस्टम कैमरा मोड के लिए System API

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

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

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

तरीके का नाम android.hardware.camera2.CameraDevice#createCustomCaptureSession है. देखें: frameworks/base/core/java/android/hardware/camera2/CameraDevice.

ऑनकैप्चर क्यू रिक्रूट

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

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

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

3.4

काम करने वाले मेटाडेटा में कुछ बदलाव किए गए हैं और data_space की सुविधा में बदलाव किए गए हैं:

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

3.2

बढ़ाई गई क्षमता वाले एचएएल में हुआ छोटा सा बदलाव:

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

3.1

बढ़ाई गई क्षमता वाले एचएएल में हुआ छोटा सा बदलाव:

  • configure_streams, उपभोक्ता इस्तेमाल से जुड़े फ़्लैग एचएएल को भेजना चाहता है.
  • फ़्लश कॉल करें.

3.0

बढ़ाई गई क्षमता वाले एचएएल में पहला बदलाव:

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

2.0

बढ़ाई गई क्षमता वाले HAL (Android 4.2) की शुरुआती रिलीज़ [camera2.h]:

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

1.0

शुरुआती Android कैमरा एचएएल (Android 4.0) [camera.h]:

  • C++ CameraHardwareInterface ऐब्स्ट्रैक्ट लेयर से बदला गया.
  • android.hardware.Camera एपीआई के साथ काम करता है.

कैमरा मॉड्यूल का वर्शन इतिहास

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

2.4

यह कैमरा मॉड्यूल वर्शन, एपीआई के इन बदलावों को जोड़ता है:

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

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 का समर्थन कर सकता है HAL इंटरफ़ेस. Camera_info का device_version फ़ील्ड हमेशा होता है मान्य; इसका static_camera_characteristics फ़ील्ड camera_info तब मान्य होगा, जब device_version फ़ील्ड यह हो 2.0 या इसके बाद का कोई वर्शन होना चाहिए.

1.0

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