camera_module स्ट्रक्चर का रेफ़रंस

camera_module स्ट्रक्चर का रेफ़रंस

#include < camera_common.h >

डेटा फ़ील्ड

hw_module_t   सामान्य
 
int(*  get_number_of_cameras )(void)
 
int(*  get_camera_info )(int camera_id, struct camera_info *info)
 
int(*  set_callbacks )(const camera_module_callbacks_t *callbacks)
 
void(*  get_vendor_tag_ops )(vendor_tag_ops_t *ops)
 
int(*  open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
 
int(*  set_torch_mode )(const char *camera_id, bool enabled)
 
int(*  init )()
 
void *  reserved [5]
 

पूरी जानकारी

परिभाषा, camera_common.h फ़ाइल की लाइन 646 पर दी गई है.

फ़ील्ड का दस्तावेज़

hw_module_t सामान्य

कैमरा मॉड्यूल के सामान्य तरीके. यह camera_module के पहले सदस्य के तौर पर होना चाहिए, क्योंकि इस स्ट्रक्चर के उपयोगकर्ता, hw_module_t को camera_module के पॉइंटर पर तब कास्ट करेंगे, जब यह पता हो कि hw_module_t camera_module के बारे में बताता है .

camera_module के लिए, common.methods->open की रिटर्न वैल्यू ये हैं:

0: कैमरा डिवाइस के खुलने पर.

-ENODEV: किसी अंदरूनी गड़बड़ी की वजह से, कैमरा डिवाइस को नहीं खोला जा सकता.

-EINVAL: इनपुट आर्ग्युमेंट अमान्य हैं. इसका मतलब है कि आईडी अमान्य है और/या मॉड्यूल अमान्य है.

-EBUSY: इस कैमरा आईडी के लिए, कैमरा डिवाइस पहले से ही खुला था. ऐसा, इस तरीके या open_legacy का इस्तेमाल करके किया गया था. भले ही, डिवाइस के एचएएल वर्शन को किसी भी तरह से खोला गया हो.

-EUSERS: एक साथ खोले जा सकने वाले कैमरा डिवाइसों की ज़्यादा से ज़्यादा संख्या, पहले ही खोल दी गई है. ऐसा, इस तरीके या open_legacy तरीके से किया गया है.

common.methods->open से मिलने वाली अन्य सभी वैल्यू को -ENODEV माना जाएगा.

परिभाषा, फ़ाइल camera_common.h की लाइन 674 पर दी गई है.

int(* get_camera_info)(int camera_id, struct camera_info *info)

get_camera_info:

किसी कैमरा डिवाइस के लिए, कैमरे की स्टैटिक जानकारी दिखाता है. कैमरा डिवाइस के लिए, यह जानकारी नहीं बदल सकती.

रिटर्न वैल्यू:

0: कार्रवाई पूरी होने पर

-ENODEV: सिस्टम में किसी गड़बड़ी की वजह से जानकारी नहीं दी जा सकती.

-EINVAL: इनपुट आर्ग्युमेंट अमान्य हैं. इसका मतलब है कि आईडी अमान्य है और/या मॉड्यूल अमान्य है.

वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):

CAMERA_MODULE_API_VERSION_2_4 या इसके बाद का वर्शन:

जब कोई कैमरा डिसकनेक्ट हो जाता है, तो उसका कैमरा आईडी अमान्य हो जाता है. अमान्य कैमरा आईडी के साथ इस तरीके को कॉल करने पर, -EINVAL और कैमरे का स्टैटिक मेटाडेटा ( camera_info.static_camera_characteristics ) NULL मिलेगा.

परिभाषा, फ़ाइल camera_common.h की लाइन 727 पर दी गई है.

int(* get_number_of_cameras)(void)

get_number_of_cameras:

कैमरा मॉड्यूल की मदद से ऐक्सेस किए जा सकने वाले कैमरा डिवाइसों की संख्या दिखाता है. कैमरा डिवाइसों को 0 से N-1 तक नंबर दिया जाता है. यहां N, इस कॉल से मिली वैल्यू है. open() फ़ंक्शन के लिए, कैमरा डिवाइस का नाम सिर्फ़ एक संख्या है, जिसे स्ट्रिंग में बदला गया है. इसका मतलब है कि कैमरा आईडी 0 के लिए "0", कैमरा आईडी 1 के लिए "1".

वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):

CAMERA_MODULE_API_VERSION_2_3 या इससे पहले का वर्शन:

यहां दी गई वैल्यू स्टैटिक होनी चाहिए. इस तरीके को पहली बार कॉल करने के बाद, इस वैल्यू में बदलाव नहीं किया जा सकता.

CAMERA_MODULE_API_VERSION_2_4 या इसके बाद का वर्शन:

यहां दी गई वैल्यू स्टैटिक होनी चाहिए. साथ ही, इसमें सिर्फ़ उन डिवाइस में पहले से मौजूद कैमरों की गिनती की जानी चाहिए जिनमें CAMERA_FACING_BACK या CAMERA_FACING_FRONT कैमरे की वैल्यू ( camera_info.facing ) मौजूद हों. HAL को इस कॉल की रिटर्न वैल्यू में बाहरी कैमरे ( camera_info.facing == CAMERA_FACING_EXTERNAL) शामिल नहीं करने चाहिए. फ़्रेमवर्क, बाहरी कैमरों की संख्या को मैनेज करने के लिए, camera_device_status_change कॉलबैक का इस्तेमाल करेंगे.

परिभाषा, फ़ाइल camera_common.h की लाइन 701 पर दी गई है.

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

वेंडर एक्सटेंशन मेटाडेटा टैग की जानकारी के लिए क्वेरी करने के तरीके जानें. एचएएल को वेंडर टैग के सभी ऑपरेशन के तरीके भरने चाहिए. अगर कोई वेंडर टैग तय नहीं किया गया है, तो ऑपरेशन में कोई बदलाव नहीं किया जाना चाहिए.

यहां इस्तेमाल किया गया vendor_tag_ops स्ट्रक्चर, system/media/camera/include/system/vendor_tags.h में बताया गया है

वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: एचएएल मॉड्यूल से नहीं दिया जाता. हो सकता है कि फ़्रेमवर्क इस फ़ंक्शन को कॉल न करे.

CAMERA_MODULE_API_VERSION_2_2: फ़्रेमवर्क से कॉल करने के लिए मान्य है.

परिभाषा, फ़ाइल के camera_common.h के 778 पंक्ति पर दी गई है.

int(* init)()

init:

कैमरा सेवा, किसी भी दूसरे तरीके को शुरू करने से पहले, इस तरीके को कॉल करती है. यह कॉल, कैमरा एचएएल लाइब्रेरी के लोड होने के तुरंत बाद किया जाता है. अगर कोई शुरुआती सेटअप ज़रूरी नहीं है, तो HAL मॉड्यूल इसे NULL के तौर पर छोड़ सकता है.

HAL लागू करने के लिए, इसका इस्तेमाल शुरुआती प्रोसेस और एक बार में होने वाली अन्य कार्रवाइयों के लिए किया जा सकता है.

वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: एचएएल मॉड्यूल से नहीं दिया जाता. फ़्रेमवर्क इस फ़ंक्शन को कॉल नहीं करेगा.

CAMERA_MODULE_API_VERSION_2_4: अगर यह शून्य नहीं है, तो एचएएल मॉड्यूल लोड होने के बाद, फ़्रेमवर्क इसे हमेशा एक बार कॉल करेगा. ऐसा, एचएएल मॉड्यूल के किसी भी दूसरे तरीके को कॉल करने से पहले किया जाएगा.

रिटर्न वैल्यू:

0: कार्रवाई पूरी होने पर.

-ENODEV: किसी अंदरूनी गड़बड़ी की वजह से, शुरू करने की प्रोसेस पूरी नहीं हो सकी. यह मान लिया जाना चाहिए कि एचएएल काम नहीं कर रहा है.

परिभाषा, फ़ाइल के camera_common.h के 909 पंक्ति पर दी गई है.

int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)

open_legacy:

अगर इस कैमरा एचएएल मॉड्यूल में, डिवाइस के एक से ज़्यादा एचएएल एपीआई वर्शन काम करते हैं, तो कोई लेगसी कैमरा एचएएल डिवाइस खोलें. उदाहरण के लिए, अगर कैमरा मॉड्यूल एक ही कैमरा आईडी के लिए, CAMERA_DEVICE_API_VERSION_1_0 और CAMERA_DEVICE_API_VERSION_3_2 डिवाइस एपीआई, दोनों के साथ काम करता है, तो फ़्रेमवर्क इस फ़ंक्शन को कॉल करके, कैमरा डिवाइस को CAMERA_DEVICE_API_VERSION_1_0 डिवाइस के तौर पर खोल सकता है.

यह तरीका इस्तेमाल करना ज़रूरी नहीं है. किसी कैमरा एचएएल मॉड्यूल को हर डिवाइस के लिए, एक से ज़्यादा डिवाइस एचएएल वर्शन के साथ काम करने की ज़रूरत नहीं होती. साथ ही, ऐसे मॉड्यूल इस तरीके के सभी कॉल के लिए -ENOSYS दिखा सकते हैं. HAL डिवाइस एपीआई के उन सभी पुराने वर्शन के लिए, यह -EOPNOTSUPP दिखा सकता है जो काम नहीं करते. ऊपर बताए गए मामलों में, फ़्रेमवर्क सामान्य open() तरीके (common.methods->open) का इस्तेमाल करेगा.

वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: एचएएल मॉड्यूल से नहीं दिया जाता. फ़्रेमवर्क इस फ़ंक्शन को कॉल नहीं करेगा.

CAMERA_MODULE_API_VERSION_2_3: फ़्रेमवर्क से कॉल करने के लिए मान्य है.

रिटर्न वैल्यू:

0: कैमरा डिवाइस के खुलने पर.

-ENOSYS यह तरीका काम नहीं करता.

-EOPNOTSUPP: अनुरोध किया गया HAL वर्शन, इस तरीके के साथ काम नहीं करता.

-EINVAL: इनपुट आर्ग्युमेंट अमान्य हैं. इसका मतलब है कि आईडी अमान्य है और/या मॉड्यूल अमान्य है.

-EBUSY: इस कैमरा आईडी के लिए, कैमरा डिवाइस पहले से ही खुला था. ऐसा, इस तरीके या common.methods->open तरीके का इस्तेमाल करके किया गया था. भले ही, डिवाइस के HAL वर्शन के तौर पर इसे खोला गया हो.

-EUSERS: एक साथ खोले जा सकने वाले कैमरा डिवाइसों की ज़्यादा से ज़्यादा संख्या, पहले ही खोल दी गई है. ऐसा, इस तरीके या common.methods->open तरीके से किया गया है.

परिभाषा, फ़ाइल camera_common.h की लाइन 824 पर दी गई है.

void* reserved[5]

परिभाषा, फ़ाइल के camera_common.h के 912 पंक्ति पर दी गई है.

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

एएसिंक्रोनस कैमरा मॉड्यूल इवेंट के बारे में फ़्रेमवर्क को बताने के लिए, एचएएल मॉड्यूल को कॉलबैक फ़ंक्शन पॉइंटर दें. फ़्रेमवर्क, कैमरे के एचएएल मॉड्यूल के लोड होने के बाद, इस फ़ंक्शन को एक बार कॉल करेगा. ऐसा, get_number_of_cameras() मंत्र को पहली बार कॉल करने के बाद और मॉड्यूल को किसी भी दूसरे कॉल से पहले किया जाएगा.

वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):

CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:

HAL मॉड्यूल से नहीं दिया जाता. हो सकता है कि फ़्रेमवर्क इस फ़ंक्शन को कॉल न करे.

CAMERA_MODULE_API_VERSION_2_1:

फ़्रेमवर्क से कॉल किया जा सकता है.

रिटर्न वैल्यू:

0: कार्रवाई पूरी होने पर

-ENODEV: सिस्टम में गड़बड़ी की वजह से, कार्रवाई पूरी नहीं की जा सकी.

-EINVAL: इनपुट आर्ग्युमेंट अमान्य हैं. इसका मतलब है कि कॉलबैक शून्य हैं

परिभाषा, फ़ाइल camera_common.h की लाइन 758 पर दी गई है.

int(* set_torch_mode)(const char *camera_id, bool enabled)

set_torch_mode:

किसी कैमरा आईडी से जुड़ी फ़्लैश यूनिट के टॉर्च मोड को चालू या बंद करें. अगर कार्रवाई पूरी हो जाती है, तो एचएएल को नई स्थिति के साथ camera_module_callbacks.torch_mode_status_change() को ट्रिगर करके, फ़्रेमवर्क के टॉर्च स्टेटस की सूचना देनी चाहिए.

फ़्लैश यूनिट को ऐक्सेस करने के लिए, कैमरा डिवाइस को ज़्यादा प्राथमिकता दी जाती है. जब संसाधनों में कोई विरोध होता है, जैसे कि कैमरा डिवाइस खोलने के लिए open() को कॉल किया जाता है, तो एचएएल मॉड्यूल को camera_module_callbacks.torch_mode_status_change() के ज़रिए फ़्रेमवर्क को यह सूचना देनी होगी कि टॉर्च मोड बंद कर दिया गया है और टॉर्च मोड की स्थिति TORCH_MODE_STATUS_NOT_AVAILABLE हो गई है. जब टॉर्च मोड चालू करने के लिए संसाधन फिर से उपलब्ध हो जाते हैं, तो एचएएल मॉड्यूल को camera_module_callbacks.torch_mode_status_change() के ज़रिए फ़्रेमवर्क को सूचना देनी होगी कि टॉर्च मोड की स्थिति, set_torch_mode() को कॉल करने के लिए, TORCH_MODE_STATUS_AVAILABLE_OFF हो गई है.

जब फ़्रेमवर्क किसी फ़्लैश यूनिट के टॉर्च मोड को चालू करने के लिए, set_torch_mode() को कॉल करता है, तो अगर एचएएल एक साथ कई टॉर्च मोड चालू नहीं रख सकता, तो एचएएल को वह टॉर्च मोड बंद करना चाहिए जिसे पिछले set_torch_mode() कॉल से चालू किया गया था. साथ ही, फ़्रेमवर्क को यह सूचना देनी चाहिए कि उस फ़्लैश यूनिट के टॉर्च मोड की स्थिति, TORCH_MODE_STATUS_AVAILABLE_OFF हो गई है.

वर्शन की जानकारी (camera_module_t.common.module_api_version के आधार पर):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: एचएएल मॉड्यूल से नहीं दिया जाता. फ़्रेमवर्क इस फ़ंक्शन को कॉल नहीं करेगा.

CAMERA_MODULE_API_VERSION_2_4: फ़्रेमवर्क से कॉल करने के लिए मान्य है.

रिटर्न वैल्यू:

0: कार्रवाई पूरी होने पर.

-ENOSYS: कैमरा डिवाइस पर यह कार्रवाई नहीं की जा सकती. यह वैल्यू सिर्फ़ तब दिखती है, जब android.flash.info.available की वैल्यू 'गलत' हो.

-EBUSY: कैमरा डिवाइस पहले से ही इस्तेमाल में है.

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

-EINVAL: camera_id अमान्य है.

परिभाषा, फ़ाइल के camera_common.h के 878 पंक्ति पर दी गई है .


इस स्ट्रक्चर का दस्तावेज़, इस फ़ाइल से जनरेट किया गया था: