कैमरा3_कॉलबैक_ऑप्स संरचना संदर्भ
#include < camera3.h >
डेटा फ़ील्ड | |
खालीपन(* | प्रोसेस_कैप्चर_रिजल्ट )(कॉन्स्ट स्ट्रक्चर कैमरा3_कॉलबैक_ऑप्स *, कास्ट कैमरा3_कैप्चर_रिजल्ट_टी *रिजल्ट) |
खालीपन(* | सूचित करें )(स्थिरांक struct कैमरा3_कॉलबैक_ऑप्स *, स्थिरांक कैमरा3_नोटिफ़ाई_msg_t *संदेश) |
विस्तृत विवरण
फ़ील्ड दस्तावेज़ीकरण
शून्य(* सूचित करें)(स्थिरांक संरचना कैमरा3_कॉलबैक_ऑप्स *, स्थिरांक कैमरा3_नोटिफ़ाइ_एमएसजी_टी *संदेश) |
सूचित करें:
एचएएल से एसिंक्रोनस अधिसूचना कॉलबैक, विभिन्न कारणों से निकाल दिया गया। केवल फ़्रेम कैप्चर से स्वतंत्र जानकारी के लिए, या जिसके लिए विशिष्ट समय की आवश्यकता होती है। संदेश संरचना का स्वामित्व एचएएल के पास रहता है, और संदेश को केवल इस कॉल की अवधि के लिए वैध होना चाहिए।
एकाधिक थ्रेड एक साथ notify() को कॉल कर सकते हैं।
<= CAMERA_DEVICE_API_VERSION_3_1:
किसी दिए गए अनुरोध के लिए एक्सपोज़र की शुरुआत की अधिसूचना उस अनुरोध के लिए प्रोसेस_कैप्चर_रिजल्ट() पर पहली कॉल करने से पहले एचएएल द्वारा भेजी जानी चाहिए।
>= CAMERA_DEVICE_API_VERSION_3_2:
फ़्रेमवर्क को दिए गए बफ़र्स को एप्लिकेशन लेयर पर तब तक नहीं भेजा जाएगा जब तक कि एक्सपोज़र टाइमस्टैम्प की शुरुआत (या रिप्रोसेस रिक्वेस्ट के लिए इनपुट इमेज की एक्सपोज़र टाइमस्टैम्प की शुरुआत) SHUTTER notify() कॉल के माध्यम से प्राप्त न हो जाए। इस कॉल को यथाशीघ्र भेजने की अत्यधिक अनुशंसा की जाती है।
प्रदर्शन संबंधी जरूरतें:
यह एक नॉन-ब्लॉकिंग कॉल है. फ्रेमवर्क इस कॉल को 5ms में वापस कर देगा।
शून्य(* प्रोसेस_कैप्चर_परिणाम)(कॉन्स्ट स्ट्रक्चर कैमरा3_कॉलबैक_ऑप्स *, कास्ट कैमरा3_कैप्चर_रिजल्ट_टी *परिणाम) |
प्रक्रिया_कैप्चर_परिणाम:
पूर्ण कैप्चर से परिणाम फ़्रेमवर्क पर भेजें। एकल कैप्चर अनुरोध के जवाब में एचएएल द्वारा प्रोसेस_कैप्चर_रिजल्ट() को कई बार लागू किया जा सकता है। यह, उदाहरण के लिए, मेटाडेटा और कम-रिज़ॉल्यूशन बफ़र्स को एक कॉल में वापस करने की अनुमति देता है, और बाद में कॉल में पोस्ट-प्रोसेस्ड JPEG बफ़र्स, एक बार उपलब्ध होने पर। प्रत्येक कॉल में उस अनुरोध का फ़्रेम नंबर शामिल होना चाहिए जिसके लिए वह मेटाडेटा या बफ़र्स लौटा रहा है।
संपूर्ण परिणाम का एक घटक (बफर या मेटाडेटा) केवल एक प्रोसेस_कैप्चर_रिजल्ट कॉल में शामिल किया जा सकता है। प्रत्येक स्ट्रीम के लिए एक बफर, और परिणाम मेटाडेटा, एचएएल द्वारा प्रोसेस_कैप्चर_रिजल्ट कॉल में से प्रत्येक अनुरोध के लिए लौटाया जाना चाहिए, भले ही कुछ आउटपुट उत्पन्न करने में त्रुटियां हों। आउटपुट बफ़र्स या परिणाम मेटाडेटा के साथ प्रोसेस_कैप्चर_रिजल्ट() पर कॉल की अनुमति नहीं है।
एकल परिणाम के लिए मेटाडेटा और बफ़र्स को वापस करने का क्रम कोई मायने नहीं रखता है, लेकिन किसी दिए गए स्ट्रीम के लिए बफ़र्स को FIFO क्रम में वापस किया जाना चाहिए। इसलिए स्ट्रीम ए के लिए अनुरोध 5 का बफ़र हमेशा स्ट्रीम ए के लिए अनुरोध 6 के बफ़र से पहले लौटाया जाना चाहिए। यह परिणाम मेटाडेटा पर भी लागू होता है; अनुरोध 5 का मेटाडेटा अनुरोध 6 के मेटाडेटा से पहले लौटाया जाना चाहिए।
हालाँकि, विभिन्न स्ट्रीम एक-दूसरे से स्वतंत्र हैं, इसलिए यह स्वीकार्य है और अपेक्षित है कि स्ट्रीम ए के लिए अनुरोध 5 के लिए बफर को स्ट्रीम बी के लिए अनुरोध 6 के लिए बफर के बाद वापस किया जा सकता है। और यह स्वीकार्य है कि स्ट्रीम बी के लिए अनुरोध 6 का परिणाम मेटाडेटा स्ट्रीम ए के लिए अनुरोध 5 के बफर से पहले लौटाया जाता है।
एचएएल परिणाम संरचना का स्वामित्व बरकरार रखता है, जिसे इस कॉल के दौरान एक्सेस करने के लिए केवल वैध होना आवश्यक है। इस कॉल के वापस आने से पहले फ्रेमवर्क को जो कुछ भी चाहिए उसे कॉपी कर लेगा।
आउटपुट बफ़र्स को अभी भरने की आवश्यकता नहीं है; फ़्रेमवर्क बफ़र डेटा को पढ़ने से पहले स्ट्रीम बफ़र रिलीज़ सिंक बाड़ पर प्रतीक्षा करेगा। इसलिए, इस विधि को एचएएल द्वारा जल्द से जल्द बुलाया जाना चाहिए, भले ही कुछ या सभी आउटपुट बफ़र अभी भी भरे जा रहे हों। एचएएल को प्रत्येक आउटपुट_बफ़र्स स्ट्रीम बफ़र प्रविष्टि में वैध रिलीज़ सिंक फ़ेंस शामिल करना होगा, या -1 यदि वह स्ट्रीम बफ़र पहले से ही भरा हुआ है।
यदि किसी अनुरोध के लिए परिणाम बफ़र का निर्माण नहीं किया जा सकता है, तो एचएएल को एक खाली मेटाडेटा बफ़र लौटाना चाहिए, लेकिन फिर भी आउटपुट बफ़र और उनके सिंक फ़ेंस प्रदान करना चाहिए। इसके अलावा, Inform() को ERROR_RESULT संदेश के साथ कॉल किया जाना चाहिए।
यदि कोई आउटपुट बफ़र नहीं भरा जा सकता है, तो उसकी स्थिति फ़ील्ड को STATUS_ERROR पर सेट किया जाना चाहिए। इसके अलावा, Inform() को ERROR_BUFFER संदेश के साथ कॉल किया जाना चाहिए।
यदि संपूर्ण कैप्चर विफल हो गया है, तो आउटपुट बफ़र्स को फ़्रेमवर्क में वापस करने के लिए इस विधि को अभी भी कॉल करने की आवश्यकता है। सभी बफ़र स्थितियाँ STATUS_ERROR होनी चाहिए, और परिणाम मेटाडेटा एक खाली बफ़र होना चाहिए। इसके अलावा, Inform() को ERROR_REQUEST संदेश के साथ कॉल किया जाना चाहिए। इस स्थिति में, व्यक्तिगत ERROR_RESULT/ERROR_BUFFER संदेश नहीं भेजे जाने चाहिए।
प्रदर्शन संबंधी जरूरतें:
यह एक नॉन-ब्लॉकिंग कॉल है. फ्रेमवर्क इस कॉल को 5ms में वापस कर देगा।
पाइपलाइन विलंबता (परिभाषा के लिए S7 देखें) 4 फ़्रेम अंतराल से कम या उसके बराबर होनी चाहिए, और 8 फ़्रेम अंतराल से कम या उसके बराबर होनी चाहिए।
इस संरचना के लिए दस्तावेज़ीकरण निम्नलिखित फ़ाइल से तैयार किया गया था:
- हार्डवेयर/लिबहार्डवेयर/शामिल/हार्डवेयर/ कैमरा3.एच