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

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

#include < camera2.h >

डेटा फ़ील्ड

int(*  set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
 
int(*  notify_request_queue_not_empty )(const struct camera2_device *)
 
int(*  set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
 
int(*  get_in_progress_count )(const struct camera2_device *)
 
int(*  flush_captures_in_progress )(const struct camera2_device *)
 
int(*  construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
 
int(*  allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
 
int(*  register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
 
int(*  release_stream )(const struct camera2_device *, uint32_t stream_id)
 
int(*  allocate_reprocess_stream )(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
 
int(*  allocate_reprocess_stream_from_stream )(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id)
 
int(*  release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id)
 
int(*  trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
 
int(*  set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
 
int(*  get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops)
 
int(*  dump )(const struct camera2_device *, int fd)
 
int(*  get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata)
 

पूरी जानकारी

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

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

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

allocate_reprocess_stream:

इस्तेमाल के लिए नई इनपुट स्ट्रीम कोटा दें. यह आउटपुट बफ़र की चौड़ाई, ऊंचाई, और पिक्सल फ़ॉर्मैट के हिसाब से तय किया जाता है. सफल होने पर, नई स्ट्रीम का आईडी, gralloc के इस्तेमाल के फ़्लैग, और एक साथ इकट्ठा किए जाने वाले बफ़र की ज़रूरी संख्या दिखाता है. गड़बड़ी की स्थितियां:

  • सेंसर की स्टैटिक विशेषताओं के साथ काम करने वाले चौड़ाई/ऊंचाई/फ़ॉर्मैट के कॉम्बिनेशन का अनुरोध करना
  • एक साथ कई स्ट्रीम को फिर से प्रोसेस करने के लिए कॉन्फ़िगर करने का अनुरोध करना.

इनपुट पैरामीटर:

  • width, height, format: इस स्ट्रीम के ज़रिए भेजे जाने वाले बफ़र की जानकारी. फ़ॉर्मैट, HAL_PIXEL_FORMAT_* सूची में से कोई वैल्यू होनी चाहिए.
  • reprocess_stream_ops: इस स्ट्रीम के लिए बफ़र हासिल करने और उन्हें रिलीज़ करने के लिए, फ़ंक्शन पॉइंटर का स्ट्रक्चर. इस्तेमाल और max_buffers आउटपुट के आधार पर, मौजूदा स्ट्रीम को कॉन्फ़िगर किया जाएगा.

आउटपुट पैरामीटर:

  • stream_id: इस स्ट्रीम की पहचान करने वाला बिना साइन वाला पूर्णांक. इस वैल्यू का इस्तेमाल, स्ट्रीम की पहचान करने और उसे रिलीज़ करने के लिए, इनकमिंग अनुरोधों में किया जाता है. इन आईडी को इनपुट स्ट्रीम आईडी से अलग नंबर दिया जाता है.
  • consumer_usage: अनुरोध किए गए डेटा टाइप का इस्तेमाल करने के लिए, HAL डिवाइस को gralloc के इस्तेमाल का मास्क चाहिए. इसका इस्तेमाल, स्ट्रीम बफ़र कतार के लिए नए gralloc बफ़र को असाइन करने में किया जाता है.
  • max_buffers: यह वह ज़्यादा से ज़्यादा बफ़र की संख्या है जो एचएएल डिवाइस को एक ही समय पर हासिल करनी पड़ सकती है. हो सकता है कि डिवाइस में एक ही समय पर, इस वैल्यू से ज़्यादा बफ़र न हों.

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

int(* allocate_reprocess_stream_from_stream)(const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

allocate_reprocess_stream_from_stream:

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

गड़बड़ी की स्थितियां:

  • रीप्रोसेसिंग स्ट्रीम के आधार के तौर पर, गलत साइज़/फ़ॉर्मैट की आउटपुट स्ट्रीम का इस्तेमाल करना.
  • एक बार में बहुत ज़्यादा रीप्रोसेसिंग स्ट्रीम को ऐलोकेट करने की कोशिश की जा रही है.

इनपुट पैरामीटर:

  • output_stream_id: किसी मौजूदा आउटपुट स्ट्रीम का आईडी, जिसका साइज़ और फ़ॉर्मैट, फिर से प्रोसेस करने के लिए सही हो.
  • reprocess_stream_ops: इस स्ट्रीम के लिए बफ़र हासिल करने और उन्हें रिलीज़ करने के लिए, फ़ंक्शन पॉइंटर का स्ट्रक्चर. अंडरलाइंग स्ट्रीम, आउटपुट स्ट्रीम के ग्राफ़िक बफ़र हैंडल का इस्तेमाल करेगी.

आउटपुट पैरामीटर:

  • stream_id: इस स्ट्रीम की पहचान करने वाला बिना साइन वाला पूर्णांक. इस वैल्यू का इस्तेमाल, स्ट्रीम की पहचान करने और उसे रिलीज़ करने के लिए, इनकमिंग अनुरोधों में किया जाता है. इन आईडी को इनपुट स्ट्रीम आईडी से अलग नंबर दिया जाता है.

HAL क्लाइंट को, उस आउटपुट स्ट्रीम को रिलीज़ करने से पहले, रीप्रोसेसिंग स्ट्रीम को हमेशा रिलीज़ करना चाहिए जिस पर वह आधारित है.

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

int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

allocate_stream:

इस्तेमाल के लिए नई आउटपुट स्ट्रीम कोटा दें. यह आउटपुट बफ़र की चौड़ाई, ऊंचाई, टारगेट, और शायद पिक्सल फ़ॉर्मैट के हिसाब से तय किया जाता है. सफल होने पर, नई स्ट्रीम का आईडी, gralloc के इस्तेमाल के फ़्लैग, सूची में बफ़र की कम से कम संख्या, और शायद पिक्सल फ़ॉर्मैट दिखाता है. गड़बड़ी की स्थितियां:

  • सेंसर की स्टैटिक विशेषताओं के साथ काम करने वाले चौड़ाई/ऊंचाई/फ़ॉर्मैट के कॉम्बिनेशन का अनुरोध करना
  • किसी फ़ॉर्मैट टाइप (उदाहरण के लिए, दो बेयर रॉ स्ट्रीम) की बहुत ज़्यादा स्ट्रीम का अनुरोध करना.

इनपुट पैरामीटर:

  • width, height, format: इस स्ट्रीम के ज़रिए भेजे जाने वाले बफ़र की जानकारी. फ़ॉर्मैट, HAL_PIXEL_FORMAT_* सूची की कोई वैल्यू है. अगर HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED का इस्तेमाल किया जाता है, तो प्लैटफ़ॉर्म gralloc मॉड्यूल, कैमरा HAL और स्ट्रीम के उपभोक्ता से मिले इस्तेमाल के फ़्लैग के आधार पर कोई फ़ॉर्मैट चुनेगा. अगर ज़रूरी हो, तो कैमरा एचएएल को रजिस्टर_स्ट्रीम_बफ़र कॉल में दिए गए बफ़र की जांच करनी चाहिए, ताकि लागू करने के हिसाब से फ़ॉर्मैट मिल सके.
  • stream_ops: इस स्ट्रीम के लिए बफ़र पाने और उन्हें लाइन में लगाने के लिए, फ़ंक्शन पॉइंटर का स्ट्रक्चर. इस्तेमाल और max_buffers आउटपुट के आधार पर, मौजूदा स्ट्रीम को कॉन्फ़िगर किया जाएगा. इस स्ट्रक्चर में मौजूद तरीकों को तब तक नहीं बुलाया जा सकता, जब तक कि allocate_stream फ़ंक्शन नतीजा न दे.

आउटपुट पैरामीटर:

  • stream_id: इस स्ट्रीम की पहचान करने वाला बिना साइन वाला पूर्णांक. इस वैल्यू का इस्तेमाल, स्ट्रीम की पहचान करने और उसे रिलीज़ करने के लिए, इनकमिंग अनुरोधों में किया जाता है.
  • usage: अनुरोध किए गए डेटा टाइप को जनरेट करने के लिए, HAL डिवाइस को gralloc के इस्तेमाल का मास्क चाहिए. इसका इस्तेमाल, स्ट्रीम बफ़र कतार के लिए नए gralloc बफ़र को असाइन करने में किया जाता है.
  • max_buffers: यह वह ज़्यादा से ज़्यादा बफ़र की संख्या है जिसे एचएएल डिवाइस को एक ही समय पर डिसक्यू से हटाना पड़ सकता है. हो सकता है कि डिवाइस एक ही समय में, इस वैल्यू से ज़्यादा बफ़र को डिसक्यू से न हटा पाए.

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

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

कैमरे के इस्तेमाल के स्टैंडर्ड उदाहरणों के लिए, पहले से भरा हुआ डिफ़ॉल्ट अनुरोध बनाएं.

डिवाइस को पूरा अनुरोध दिखाना चाहिए, जो अनुरोध किए गए इस्तेमाल के उदाहरण को पूरा करने के लिए कॉन्फ़िगर किया गया हो. यह CAMERA2_TEMPLATE_* एनम में से किसी एक के तौर पर होना चाहिए. android.request.outputStreams को छोड़कर, अनुरोध कंट्रोल करने वाले सभी फ़ील्ड शामिल होने चाहिए.

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

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

int(* dump)(const struct camera2_device *, int fd)

कैमरे के हार्डवेयर की स्थिति का डंप

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

int(* flush_captures_in_progress)(const struct camera2_device *)

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

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

int(* get_in_progress_count)(const struct camera2_device *)

फ़िलहाल, डिवाइस पर कैमरे के जिन अनुरोधों को प्रोसेस किया जा रहा है उनकी संख्या (कैप्चर/फिर से प्रोसेस करने के लिए जिन अनुरोधों को सूची से हटा दिया गया है, लेकिन उन्हें आउटपुट पाइपलाइन में शामिल नहीं किया गया है). जब तक प्रोसेस में चल रहे अनुरोधों की संख्या 0 नहीं हो जाती, तब तक फ़्रेमवर्क से कोई स्ट्रीम रिलीज़ नहीं की जा सकती.

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

int(* get_instance_metadata)(const struct camera2_device *, camera_metadata **instance_metadata)

डिवाइस-इंस्टेंस के हिसाब से मेटाडेटा पाएं. यह मेटाडेटा, कैमरा डिवाइस के किसी एक इंस्टेंस के लिए एक जैसा होना चाहिए. हालांकि, open() कॉल के बीच यह अलग हो सकता है. डिवाइस के close() तरीके को कॉल करने तक, camera_metadata पॉइंटर मान्य होना चाहिए.

वर्शन की जानकारी:

CAMERA_DEVICE_API_VERSION_2_0:

यह सुविधा उपलब्ध नहीं है. हो सकता है कि फ़्रेमवर्क इस फ़ंक्शन पॉइंटर को ऐक्सेस न कर पाए.

CAMERA_DEVICE_API_VERSION_2_1:

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

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

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops)

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

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

int(* notify_request_queue_not_empty)(const struct camera2_device *)

डिवाइस को सूचना दें कि अनुरोध की सूची अब खाली नहीं है. इसे सिर्फ़ तब कॉल किया जाना चाहिए, जब पहले बफ़र को नई सूची में जोड़ा गया हो या सोर्स ने डिक्वे कॉल के जवाब में NULL दिखाया हो.

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

int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)

किसी स्ट्रीम के लिए बफ़र रजिस्टर करें. इसे allocate_stream कॉल के पूरा होने के बाद और स्ट्रीम का रेफ़रंस देने वाले पहले अनुरोध के सूची में शामिल होने से पहले कॉल किया जाता है. इस तरीके का मकसद, एचएएल डिवाइस को बाद में इस्तेमाल करने के लिए बफ़र को मैप करने या अन्य तरीके से तैयार करने की अनुमति देना है. यह पक्का है कि num_buffers, allocate_stream से मिली max_buffers से कम नहीं होगी, लेकिन यह ज़्यादा हो सकती है. बफ़र, इस्तेमाल के लिए पहले से ही लॉक हो जाएंगे. कॉल खत्म होने पर, सभी बफ़र को सूची में वापस लाया जाना चाहिए. अगर स्ट्रीम फ़ॉर्मैट को HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED पर सेट किया गया था, तो कैमरा एचएएल को यहां पास किए गए बफ़र की जांच करनी चाहिए, ताकि प्लैटफ़ॉर्म के निजी पिक्सल फ़ॉर्मैट की जानकारी का पता लगाया जा सके.

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

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

फिर से प्रोसेस की गई स्ट्रीम रिलीज़ करें. अगर get_in_progress_count शून्य नहीं है या स्ट्रीम आईडी अमान्य है, तो गड़बड़ी का मैसेज दिखाता है.

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

int(* release_stream)(const struct camera2_device *, uint32_t stream_id)

कोई स्ट्रीम रिलीज़ करें. अगर get_in_progress_count शून्य से ज़्यादा है या स्ट्रीम आईडी अमान्य है, तो गड़बड़ी का मैसेज दिखाता है.

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

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

आउटपुट फ़्रेम की सूची के इंटरफ़ेस के तरीके पास करें

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

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

सूचना कॉलबैक सेटअप करना

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

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

इनपुट अनुरोध सूची के इंटरफ़ेस के तरीके डालें.

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

int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

एसिंक्रोनस गतिविधि को ट्रिगर करना. इसका इस्तेमाल, कैमरे के 3A रूटीन के इस्तेमाल के दौरान, उनके खास व्यवहार को ट्रिगर करने के लिए किया जाता है. ट्रिगर आईडी और उनके आर्ग्युमेंट के बारे में जानने के लिए, ऊपर CAMERA2_TRIGGER_* का दस्तावेज़ देखें.

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


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