camera_info स्ट्रक्चर का रेफ़रंस
#include <
camera_common.h
>
डेटा फ़ील्ड |
|
int | facing |
int | ओरिएंटेशन |
uint32_t | device_version |
const camera_metadata_t * | static_camera_characteristics |
int | resource_cost |
char ** | conflicting_devices |
size_t | conflicting_devices_length |
पूरी जानकारी
परिभाषा, फ़ाइल के camera_common.h के 161 पंक्ति पर दी गई है.
फ़ील्ड का दस्तावेज़
char** conflicting_devices |
कैमरा डिवाइस आईडी का कलेक्शन, जो NULL-terminated स्ट्रिंग के तौर पर दिखाया जाता है. इससे उन अन्य डिवाइसों के बारे में पता चलता है जिन्हें इस कैमरा डिवाइस के इस्तेमाल के दौरान एक साथ नहीं खोला जा सकता.
इस फ़ील्ड का इस्तेमाल यह बताने के लिए किया जाता है कि यह कैमरा डिवाइस, कई अन्य कैमरा डिवाइसों का कॉम्पोनेंट है या इसमें हार्डवेयर की ऐसी डिपेंडेंसी है जो एक साथ इस्तेमाल करने की अनुमति नहीं देती. अगर कोई डिपेंडेंसी नहीं है, तो इस फ़ील्ड में NULL दिखाया जा सकता है.
जब तक यह कैमरा डिवाइस खुला रहेगा, तब तक कैमरा सेवा इस सूची में मौजूद किसी भी डिवाइस को एक साथ नहीं खोलेगी.
इस फ़ील्ड में बताई गई स्ट्रिंग को कैमरा सेवा मिटाएगी नहीं. साथ ही, इस डिवाइस के प्लग इन रहने पर, ये स्ट्रिंग मौजूद रहनी चाहिए.
वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):
CAMERA_MODULE_API_VERSION_2_3 या इससे पहले का वर्शन:
अमान्य है. इसे शून्य माना जा सकता है. इस फ़ील्ड को न पढ़ें.
CAMERA_MODULE_API_VERSION_2_4 या इसके बाद का वर्शन:
हमेशा मान्य होते हैं.
परिभाषा, फ़ाइल के camera_common.h के 404 पंक्ति पर दी गई है.
size_t conflicting_devices_length |
conflicting_devices फ़ील्ड में दिए गए कलेक्शन की लंबाई.
वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):
CAMERA_MODULE_API_VERSION_2_3 या इससे पहले का वर्शन:
अमान्य है. इसे 0 माना जा सकता है. इस फ़ील्ड को न पढ़ें.
CAMERA_MODULE_API_VERSION_2_4 या इसके बाद का वर्शन:
हमेशा मान्य होते हैं.
परिभाषा, फ़ाइल camera_common.h की लाइन 419 पर दी गई है.
uint32_t device_version |
camera_device_t.common.version की वैल्यू.
वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):
CAMERA_MODULE_API_VERSION_1_0:
अमान्य है. इसे CAMERA_DEVICE_API_VERSION_1_0 माना जा सकता है. इस फ़ील्ड को न पढ़ें.
CAMERA_MODULE_API_VERSION_2_0 या इसके बाद का वर्शन:
हमेशा मान्य रहेगा
परिभाषा, फ़ाइल के camera_common.h के 219 पंक्ति पर दी गई है .
int facing |
कैमरे की दिशा. कैमरे की दिशा की परिभाषाओं के लिए, system/core/include/system/camera.h देखें.
वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):
CAMERA_MODULE_API_VERSION_2_3 या इससे पहले का वर्शन:
यह CAMERA_FACING_BACK या CAMERA_FACING_FRONT होना चाहिए.
CAMERA_MODULE_API_VERSION_2_4 या इसके बाद का वर्शन:
यह CAMERA_FACING_BACK, CAMERA_FACING_FRONT या CAMERA_FACING_EXTERNAL होना चाहिए.
परिभाषा, फ़ाइल camera_common.h की लाइन 177 पर दी गई है.
int orientation |
कैमरे की इमेज का ओरिएंटेशन. यह वैल्यू, कैमरे की इमेज को घड़ी की सुई के घूमने की दिशा में घुमाने के लिए इस्तेमाल की जाती है, ताकि वह डिसप्ले पर अपने नैचुरल ओरिएंटेशन में सही तरीके से दिखे. यह 0, 90, 180 या 270 होना चाहिए.
उदाहरण के लिए, मान लें कि किसी डिवाइस की स्क्रीन लंबी है. पीछे की तरफ़ वाला कैमरा सेंसर, लैंडस्केप में माउंट किया गया हो. आप स्क्रीन देख रहे हों. अगर कैमरा सेंसर का ऊपरी हिस्सा, नैचुरल ओरिएंटेशन में स्क्रीन के दाएं किनारे के साथ अलाइन है, तो वैल्यू 90 होनी चाहिए. अगर सामने वाले कैमरे के सेंसर का ऊपरी हिस्सा, स्क्रीन की दाईं ओर अलाइन है, तो वैल्यू 270 होनी चाहिए.
वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):
CAMERA_MODULE_API_VERSION_2_3 या इससे पहले का वर्शन:
यह सभी camera_module वर्शन में मान्य है.
CAMERA_MODULE_API_VERSION_2_4 या इसके बाद का वर्शन:
अगर कैमरे की फ़ेसिंग CAMERA_FACING_BACK या CAMERA_FACING_FRONT है, तो यह वैल्यू मान्य है. अगर कैमरे की फ़ेसिंग CAMERA_FACING_EXTERNAL है, तो यह वैल्यू मान्य नहीं है.
परिभाषा, camera_common.h फ़ाइल की लाइन 202 पर दी गई है.
int resource_cost |
इस कैमरे का इस्तेमाल करने के लिए, संसाधन की कुल "लागत". इसे [0, 100] की रेंज में एक पूर्णांक वैल्यू के तौर पर दिखाया जाता है. यहां 100, शेयर किए गए संसाधन के कुल इस्तेमाल को दिखाता है, जो कैमरे के सब-सिस्टम की सीमित समस्या है. यह अनुमान बहुत ही अनुमानित हो सकता है. इसका इस्तेमाल, कैमरा सेवा के लिए एक हिंट के तौर पर किया जाता है. इससे यह तय किया जा सकता है कि कैमरा सेवा के विज्ञापन में दिखाए गए अलग-अलग कैमरों को एक साथ खोलने की अनुमति, कई ऐप्लिकेशन को कब नहीं देनी है.
कैमरा सेवा, एचएएल के ज़रिए दिखाए गए कैमरा डिवाइसों के किसी भी कॉम्बिनेशन को एक साथ खोल और इस्तेमाल कर सकती हो. हालांकि, इन कैमरों के संसाधनों की लागत 100 से कम होनी चाहिए. लागत तय करने के लिए, यह मान लिया जाना चाहिए कि हर कैमरा डिवाइस, ज़्यादा से ज़्यादा संसाधनों का इस्तेमाल करने वाली फ़्रेमरेट और स्ट्रीम साइज़ की सेटिंग पर कॉन्फ़िगर किया गया है. ये सेटिंग, कैमरे के मेटाडेटा के ज़रिए उस डिवाइस के लिए कॉन्फ़िगरेशन सेटिंग में उपलब्ध होती हैं.
इसके बावजूद, कैमरा सेवा एक साथ कई कैमरा डिवाइसों को खोलने की कोशिश कर सकती है. हालांकि, इन डिवाइसों के लिए ज़रूरी संसाधनों की कुल लागत 100 से ज़्यादा होनी चाहिए. ऐसा हो सकता है कि यह प्रोसेस पूरी हो जाए या न हो. अगर यह काम हो जाता है, तो कॉन्फ़िगर कॉल के दौरान, ऐसे कॉन्फ़िगरेशन के कॉम्बिनेशन काम नहीं करेंगे जो कई डिवाइसों के खुले होने की वजह से, संसाधनों की कमी की वजह से काम नहीं करते. अगर संसाधन की कुल लागत 100 से कम है, तो स्ट्रीम कॉन्फ़िगरेशन सेटिंग या डिवाइस की अन्य सुविधाओं को खोलने और कॉन्फ़िगर करने में कभी भी समस्या नहीं आनी चाहिए. आम तौर पर, जब किसी डिवाइस पर सिर्फ़ एक कैमरा चालू होता है, तो इन सुविधाओं को खोलने और कॉन्फ़िगर करने में कोई समस्या नहीं आती.
इस फ़ील्ड का इस्तेमाल यह तय करने के लिए किया जाएगा कि जब दूसरे ऐप्लिकेशन दूसरे कैमरा डिवाइसों का इस्तेमाल कर रहे हों, तब बैकग्राउंड में चल रहे ऐप्लिकेशन को इस कैमरा डिवाइस का इस्तेमाल करने की अनुमति है या नहीं. ध्यान दें: कैमरा सेवा, एक ही कैमरा डिवाइस को एक साथ कई ऐप्लिकेशन के लिए कभी भी इस्तेमाल करने की अनुमति नहीं देगी.
इस्तेमाल के उदाहरण:
उदाहरण के लिए, 1: कैमरा डिवाइस 0 = बैक कैमरा कैमरा डिवाइस 1 = फ़्रंट कैमरा
- दोनों कैमरा डिवाइसों का इस्तेमाल करने पर, आईएसपी की सीमित बैंडविड्थ की वजह से फ़्रेम रेट में काफ़ी कमी आती है.
कॉन्फ़िगरेशन:
कैमरा डिवाइस 0 - resource_cost = 51 conflicting_devices = null कैमरा डिवाइस 1 - resource_cost = 51 conflicting_devices = null
नतीजा:
रिसोर्स की लागत का कुल योग 100 से ज़्यादा है. इसलिए, अगर किसी डिवाइस पर प्राथमिकता वाले ऐप्लिकेशन का इस्तेमाल किया जा रहा है, तो कैमरा सेवा किसी भी डिवाइस पर, प्राथमिकता वाले ऐप्लिकेशन के अलावा किसी दूसरे ऐप्लिकेशन को इस्तेमाल करने की अनुमति नहीं देगी. अगर कम प्राथमिकता वाला कोई ऐप्लिकेशन किसी ऐसे डिवाइस का इस्तेमाल कर रहा है जिसे बाद में ज़्यादा प्राथमिकता वाला ऐप्लिकेशन खोलने की कोशिश करता है, तो कम प्राथमिकता वाले ऐप्लिकेशन को डिवाइस से डिसकनेक्ट करना होगा.
अगर सबसे ज़्यादा प्राथमिकता वाला ऐप्लिकेशन चुनता है, तो हो सकता है कि वह दोनों डिवाइसों को खोलने की कोशिश करे. ऐसा इसलिए, क्योंकि ये डिवाइस, conflicting_devices फ़ील्ड में 'एक-दूसरे से मेल नहीं खाते' के तौर पर नहीं दिखते. हालांकि, हो सकता है कि इन डिवाइसों का इस्तेमाल, 'खोलें' या 'कॉन्फ़िगर करें' कॉल में न हो पाए.
उदाहरण के लिए, 2: कैमरा डिवाइस 0 = बाईं ओर का पीछे वाला कैमरा कैमरा डिवाइस 1 = दाईं ओर का पीछे वाला कैमरा कैमरा डिवाइस 2 = दाएं और बाएं, दोनों पीछे वाले कैमरे के सेंसर का इस्तेमाल करने वाला स्टीरियो कैमरा. इनका इस्तेमाल डिवाइस 0 और 1 करते हैं कैमरा डिवाइस 3 = सामने वाला कैमरा
- हार्डवेयर से जुड़ी समस्याओं की वजह से, एक बार में सिर्फ़ दो कैमरे चालू किए जा सकते हैं. कॉम्बाइन किए गए स्टीरियो कैमरे का इस्तेमाल, पीछे के दोनों कैमरे (डिवाइस 0, 1) के साथ कभी नहीं किया जा सकता. साथ ही, आम तौर पर सामने वाले कैमरे (डिवाइस 3) के साथ इसका इस्तेमाल करने के लिए, बहुत ज़्यादा बैंडविड्थ की ज़रूरत होती है.
कॉन्फ़िगरेशन:
कैमरा डिवाइस 0 - resource_cost = 50 conflicting_devices = { 2 } कैमरा डिवाइस 1 - resource_cost = 50 conflicting_devices = { 2 } कैमरा डिवाइस 2 - resource_cost = 100 conflicting_devices = { 0, 1 } कैमरा डिवाइस 3 - resource_cost = 50 conflicting_devices = null
नतीजा:
conflicting_devices फ़ील्ड के आधार पर, कैमरा सेवा यह गारंटी देती है कि ओपन डिवाइसों के इन सेट को कभी अनुमति नहीं दी जाएगी: { 1, 2 }, { 0, 2 }.
resource_cost फ़ील्ड के आधार पर, अगर कोई फ़ोरग्राउंड ऐप्लिकेशन कैमरा डिवाइस 0 का इस्तेमाल कर रहा है, तो बैकग्राउंड ऐप्लिकेशन को कैमरा डिवाइस 1 या 3 को खोलने की अनुमति होगी. हालांकि, अगर फ़ोरग्राउंड ऐप्लिकेशन किसी दूसरे डिवाइस को खोलता है, तो उसे फिर से डिसकनेक्ट करना होगा.
सबसे ज़्यादा प्राथमिकता वाला ऐप्लिकेशन, अब भी डिवाइस 0, 2, और 3 को एक साथ खोलने की कोशिश कर सकता है. हालांकि, इस कॉम्बिनेशन के लिए कॉल खोलने या कॉन्फ़िगर करने में एचएएल को समस्या आ सकती है.
उदाहरण के लिए, 3: कैमरा डिवाइस 0 = बैक कैमरा कैमरा डिवाइस 1 = फ़्रंट कैमरा कैमरा डिवाइस 2 = कम-एनर्जी वाला फ़्रंट कैमरा, जो डिवाइस 1 के सेंसर का इस्तेमाल करता है. हालांकि, यह सिर्फ़ उन इमेज स्ट्रीम के रिज़ॉल्यूशन दिखाता है जिनका इस्तेमाल कम-एनर्जी मोड में किया जा सकता है
-
एक ही समय पर, दोनों सामने वाले कैमरों (डिवाइस 1, 2) का इस्तेमाल नहीं किया जा सकता. ऐसा, फ़िज़िकल सेंसर के शेयर किए जाने की वजह से होता है. हार्डवेयर की सीमाओं की वजह से, हो सकता है कि कुछ स्ट्रीम कॉन्फ़िगरेशन के लिए, पीछे और "ज़्यादा पावर वाले" सामने वाले कैमरे (डिवाइस 1) का इस्तेमाल न किया जा सके. हालांकि, "कम पावर वाले" सामने वाले कैमरे का विकल्प हमेशा इस्तेमाल किया जा सकता है, क्योंकि इसमें खास हार्डवेयर होता है.
कॉन्फ़िगरेशन:
कैमरा डिवाइस 0 - resource_cost = 100 conflicting_devices = null कैमरा डिवाइस 1 - resource_cost = 100 conflicting_devices = { 2 } कैमरा डिवाइस 2 - resource_cost = 0 conflicting_devices = { 1 } नतीजा:
conflicting_devices फ़ील्ड के आधार पर, कैमरा सेवा यह गारंटी देती है कि ओपन डिवाइसों के इन सेट को कभी अनुमति नहीं दी जाएगी: { 1, 2 }.
resource_cost फ़ील्ड के आधार पर, सबसे ज़्यादा प्राथमिकता वाला ऐप्लिकेशन ही एक ही समय में डिवाइस 0 और 1, दोनों को खोलने की कोशिश कर सकता है. अगर ज़्यादा प्राथमिकता वाला कोई ऐप्लिकेशन, डिवाइस 1 या 2 का इस्तेमाल नहीं कर रहा है, तो कम प्राथमिकता वाला बैकग्राउंड ऐप्लिकेशन डिवाइस 2 को खोल सकता है. हालांकि, अगर ज़्यादा प्राथमिकता वाला कोई ऐप्लिकेशन बाद में डिवाइस 1 या 2 को खोलता है, तो उसे डिसकनेक्ट कर दिया जाएगा.
वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):
CAMERA_MODULE_API_VERSION_2_3 या इससे पहले का वर्शन:
अमान्य है. इसे 100 माना जा सकता है. इस फ़ील्ड को न पढ़ें.
CAMERA_MODULE_API_VERSION_2_4 या इसके बाद का वर्शन:
हमेशा मान्य होते हैं.
परिभाषा, फ़ाइल camera_common.h की लाइन 376 पर दी गई है.
const camera_metadata_t * static_camera_characteristics |
कैमरे की तय विशेषताएं. इनमें system/media/camera/docs/docs.html में बताया गया, कैमरे का पूरा स्टैटिक मेटाडेटा शामिल होता है. यह मेटाडेटा बफ़र, क्रम में होना चाहिए. साथ ही, कॉलर इसमें बदलाव नहीं कर सकता या इसे खाली नहीं कर सकता. पॉइंटर, कैमरा मॉड्यूल के लाइफ़टाइम तक मान्य होना चाहिए. साथ ही, get_camera_info() से वापस आने के बाद, इसमें मौजूद वैल्यू में बदलाव नहीं हो सकता.
वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):
CAMERA_MODULE_API_VERSION_1_0:
अमान्य है. अतिरिक्त विशेषताएं उपलब्ध नहीं हैं. इस फ़ील्ड को न पढ़ें.
CAMERA_MODULE_API_VERSION_2_0 या इसके बाद का वर्शन:
यह वैल्यू तब मान्य होती है, जब device_version >= CAMERA_DEVICE_API_VERSION_2_0 हो. ऐसा न करें.
परिभाषा, camera_common.h फ़ाइल की लाइन 241 पर दी गई है.
इस स्ट्रक्चर का दस्तावेज़, इस फ़ाइल से जनरेट किया गया था:
- hardware/libhardware/include/hardware/ camera_common.h