कैमरा2_request_queue_src_ops संरचना संदर्भ
#include < camera2.h >
डेटा फ़ील्ड | |
पूर्णांक(* | request_count )(const struct कैमरा2_request_queue_src_ops *q) |
पूर्णांक(* | dequeue_request )(स्थिरांक संरचना कैमरा2_request_queue_src_ops *q, कैमरा_मेटाडेटा_t **बफ़र) |
पूर्णांक(* | free_request )(स्थिरांक संरचना कैमरा2_request_queue_src_ops *q, कैमरा_मेटाडेटा_t *पुराना_बफ़र) |
विस्तृत विवरण
अनुरोध इनपुट कतार प्रोटोकॉल:
ढांचा कतार और उसकी सामग्री को रखता है। प्रारंभ में, कतार खाली है.
- जब पहला मेटाडेटा बफ़र कतार में रखा जाता है, तो फ़्रेमवर्क notify_request_queue_not_empty() को कॉल करके डिवाइस को संकेत देता है।
- Notify_request_queue_not_empty प्राप्त करने के बाद, अगले बफ़र को संभालने के लिए तैयार होने पर डिवाइस को dequeue() को कॉल करना होगा।
- एक बार जब डिवाइस एक बफ़र संसाधित कर लेता है, और अगले बफ़र के लिए तैयार हो जाता है, तो उसे अधिसूचना की प्रतीक्षा करने के बजाय फिर से dequeue() को कॉल करना होगा। यदि कोई और बफ़र्स उपलब्ध नहीं हैं, तो dequeue() NULL लौटा देगा। इस बिंदु के बाद, जब एक बफर उपलब्ध हो जाता है, तो फ्रेमवर्क को notify_request_queue_not_empty() को फिर से कॉल करना होगा। यदि डिवाइस को डिक्यू से NULL रिटर्न प्राप्त होता है, तो उसे स्रोत से notify_request_queue_not_empty() कॉल प्राप्त होने तक कतार को फिर से क्वेरी करने की आवश्यकता नहीं होती है।
- यदि डिवाइस बफर_काउंट() को कॉल करता है और 0 प्राप्त करता है, तो इसका मतलब यह नहीं है कि फ्रेमवर्क एक notify_request_queue_not_empty() कॉल प्रदान करेगा। डिवाइस को डीक्यू से NULL प्राप्त होने के बाद, या प्रारंभिक स्टार्टअप पर, फ्रेमवर्क केवल ऐसी अधिसूचना प्रदान करेगा।
- Notify_request_queue_not_empty() के जवाब में dequeue() कॉल notify_request_queue_not_empty() कॉल के समान थ्रेड पर हो सकती है, और नोटिफिकेशन कॉल के भीतर से की जा सकती है।
- सभी कतारबद्ध अनुरोध बफ़र्स को free_request पर कॉल करके फ्रेमवर्क में वापस किया जाना चाहिए, जिसमें त्रुटियां होने पर, डिवाइस फ्लश का अनुरोध करने पर, या जब डिवाइस बंद हो रहा हो।
फ़ील्ड दस्तावेज़ीकरण
int(* dequeue_request)(स्थिरांक संरचना कैमरा2_request_queue_src_ops *q, कैमरा_मेटाडेटा_t **बफ़र) |
फ़्रेमवर्क से मेटाडेटा बफ़र प्राप्त करें। यदि कोई त्रुटि नहीं है तो ठीक लौटाता है। यदि कतार खाली है, तो बफर में NULL लौटाता है। उस स्थिति में, डिवाइस को दोबारा कतार हटाने का प्रयास करने से पहले एक notify_request_queue_not_empty() संदेश की प्रतीक्षा करनी होगी। इस तरह से प्राप्त बफ़र्स को free_request() के साथ फ्रेमवर्क में वापस किया जाना चाहिए।
int(* free_request)(const struct कैमरा2_request_queue_src_ops *q, कैमरा_मेटाडेटा_t *old_buffer) |
int(* request_count)(const struct कैमरा2_request_queue_src_ops *q) |
कतार में लंबित अनुरोध बफ़र्स की गिनती प्राप्त करें। यदि दोहराए जाने वाला अनुरोध (स्ट्रीम अनुरोध) वर्तमान में कॉन्फ़िगर किया गया है, तो CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS वापस आ सकता है। इस विधि को कॉल करने से इस बात पर कोई प्रभाव नहीं पड़ता है कि फ्रेमवर्क द्वारा notify_request_queue_not_empty() विधि को कॉल किया जाएगा या नहीं।
इस संरचना के लिए दस्तावेज़ीकरण निम्नलिखित फ़ाइल से तैयार किया गया था:
- हार्डवेयर/लिबहार्डवेयर/शामिल/हार्डवेयर/ कैमरा2.एच