कैमरा3_कैप्चर_परिणाम संरचना संदर्भ
#include < camera3.h >
डेटा फ़ील्ड | |
uint32_t | चौखटा नंबर |
स्थिरांक कैमरा_मेटाडेटा_टी * | परिणाम |
uint32_t | num_output_buffers |
स्थिरांक कैमरा3_स्ट्रीम_बफ़र_टी * | आउटपुट_बफ़र्स |
स्थिरांक कैमरा3_स्ट्रीम_बफ़र_टी * | इनपुट_बफर |
uint32_t | आंशिक_परिणाम |
विस्तृत विवरण
कैमरा3_कैप्चर_परिणाम_टी:
कैमरा एचएएल डिवाइस द्वारा एकल कैप्चर/रीप्रोसेस का परिणाम। इसे एचएएल को प्रोसेस_कैप्चर_रेक्वेस्ट() के साथ भेजे गए एकल कैप्चर अनुरोध के जवाब में, प्रोसेस_कैप्चर_रिजल्ट() के साथ एसिंक्रोनस रूप से फ्रेमवर्क में भेजा जाता है। प्रत्येक अनुरोध के लिए एचएएल द्वारा एकाधिक प्रक्रिया_कैप्चर_परिणाम() कॉल निष्पादित की जा सकती हैं।
प्रत्येक कॉल, सभी समान फ़्रेम नंबर के साथ, आउटपुट बफ़र्स के कुछ सबसेट और/या परिणाम मेटाडेटा शामिल हो सकते हैं। किसी दिए गए फ़्रेम नंबर के लिए मेटाडेटा केवल एक बार प्रदान किया जा सकता है; अन्य सभी कॉलों को परिणाम मेटाडेटा को NULL पर सेट करना होगा।
परिणाम संरचना में इस कैप्चर से आउटपुट मेटाडेटा और आउटपुट बफ़र्स का सेट शामिल है जो इस कैप्चर के लिए भरे गए हैं/भरे जाएंगे। प्रत्येक आउटपुट बफ़र एक रिलीज़ सिंक बाड़ के साथ आ सकता है जिसे फ्रेमवर्क पढ़ने से पहले प्रतीक्षा करेगा, यदि बफ़र अभी तक एचएएल द्वारा नहीं भरा गया है।
>= CAMERA_DEVICE_API_VERSION_3_2:
एकल फ़्रेम नंबर के लिए मेटाडेटा कई बार प्रदान किया जा सकता है। फ़्रेमवर्क प्रत्येक आंशिक परिणाम को कुल परिणाम सेट में एक साथ जोड़कर अंतिम परिणाम सेट को एक साथ जमा करेगा।
यदि अनुरोध में एक इनपुट बफ़र दिया गया है, तो HAL को इसे प्रोसेस_कैप्चर_रिज़ल्ट कॉल में से एक में वापस करना होगा, और कॉल मेटाडेटा और आउटपुट बफ़र्स के बिना, केवल इनपुट बफ़र को वापस करने के लिए हो सकता है; सिंक बाड़ को उसी तरह से संभाला जाना चाहिए जैसे वे आउटपुट बफ़र्स के लिए किया जाता है।
प्रदर्शन संबंधी विचार:
एप्लिकेशन को ये आंशिक परिणाम भी तुरंत प्राप्त होंगे, इसलिए पाइपलाइन में बहुत पहले से ज्ञात परिणाम भेजने से पहले कुल पाइपलाइन विलंबता से बचने के लिए आंशिक परिणाम भेजना एक अत्यधिक अनुशंसित प्रदर्शन अनुकूलन है।
एक सामान्य उपयोग का मामला पाइपलाइन के बीच में एएफ स्थिति की गणना करना हो सकता है; राज्य को तुरंत फ्रेमवर्क में वापस भेजने से, हमें 50% प्रदर्शन वृद्धि और ऑटो-फोकस की कथित प्रतिक्रिया मिलती है।
फ़ील्ड दस्तावेज़ीकरण
uint32_t फ़्रेम_नंबर |
फ़्रेम संख्या इस कैप्चर को विशिष्ट रूप से पहचानने के लिए सबमिट किए गए अनुरोध में फ़्रेमवर्क द्वारा निर्धारित एक वृद्धिशील पूर्णांक है। इसका उपयोग कैमरा3_कॉलबैक_ऑप्स_t.notify() पर भेजे गए एसिंक्रोनस नोटिफिकेशन में अनुरोध की पहचान करने के लिए भी किया जाता है।
कॉन्स्ट कैमरा3_स्ट्रीम_बफ़र_टी * इनपुट_बफ़र |
>= CAMERA_DEVICE_API_VERSION_3_2:
इस कैप्चर के लिए इनपुट स्ट्रीम बफ़र का हैंडल। जब एचएएल प्रोसेस_कैप्चर_रिजल्ट() को कॉल करता है, तब तक इसका उपभोग नहीं किया जा सकता है; बफ़र का पुन: उपयोग करने से पहले फ़्रेमवर्क एचएएल द्वारा प्रदान किए गए रिलीज़ सिंक फ़ेंस पर प्रतीक्षा करेगा।
एचएएल को सिंक बाड़ को उसी तरह से संभालना चाहिए जैसे वे आउटपुट_बफ़र्स के लिए करते हैं।
प्रति अनुरोध केवल एक इनपुट बफ़र भेजने की अनुमति है। आउटपुट बफ़र्स के समान, लौटाए गए इनपुट बफ़र्स का क्रम एचएएल द्वारा बनाए रखा जाना चाहिए।
प्रदर्शन संबंधी विचार:
इनपुट बफ़र यथाशीघ्र वापस किया जाना चाहिए। यदि एचएएल सिंक बाड़ का समर्थन करता है, तो यह उचित रूप से सेट किए गए सिंक बाड़ के साथ इसे वापस सौंपने के लिए प्रोसेस_कैप्चर_रिजल्ट को कॉल कर सकता है। यदि सिंक बाड़ समर्थित नहीं हैं, तो बफर को केवल तभी वापस किया जा सकता है जब इसका उपभोग हो जाए, जिसमें लंबा समय लग सकता है; बफ़र को जल्दी वापस लाने के लिए HAL इस इनपुट बफ़र को कॉपी करना चुन सकता है।
uint32_t num_output_buffers |
इस परिणाम संरचना में लौटाए गए आउटपुट बफ़र्स की संख्या। मिलान कैप्चर अनुरोध की संख्या से कम या उसके बराबर होनी चाहिए। यदि यह कैप्चर अनुरोध में बफर गिनती से कम है, तो शेष आउटपुट बफर को फ्रेमवर्क में वापस करने के लिए, उसी फ्रेम_नंबर के साथ प्रोसेस_कैप्चर_रिजल्ट पर कम से कम एक और कॉल किया जाना चाहिए। यह केवल तभी शून्य हो सकता है जब संरचना में वैध परिणाम मेटाडेटा शामिल हो या इस परिणाम में एक इनपुट बफर लौटाया गया हो।
कॉन्स्ट कैमरा3_स्ट्रीम_बफ़र_टी * आउटपुट_बफ़र्स |
इस कैप्चर के लिए आउटपुट स्ट्रीम बफ़र्स के हैंडल। हो सकता है कि एचएएल द्वारा प्रोसेस_कैप्चर_रिजल्ट() को कॉल करने के समय वे अभी तक भरे न गए हों; फ्रेमवर्क बफ़र्स को पढ़ने से पहले एचएएल द्वारा प्रदान किए गए रिलीज़ सिंक फ़ेंस पर प्रतीक्षा करेगा।
एचएएल को स्ट्रीम बफ़र की रिलीज़ सिंक बाड़ को एक वैध सिंक एफडी पर सेट करना होगा, या यदि बफ़र पहले ही भर चुका है तो -1 पर सेट करना होगा।
यदि बफ़र को संसाधित करते समय HAL को कोई त्रुटि आती है, और बफ़र नहीं भरा है, तो बफ़र की स्थिति फ़ील्ड को CAMERA3_BUFFER_STATUS_ERROR पर सेट किया जाना चाहिए। यदि एचएएल ने त्रुटि का सामना करने से पहले अधिग्रहण बाड़ पर इंतजार नहीं किया, तो अधिग्रहण बाड़ को रिलीज बाड़ में कॉपी किया जाना चाहिए, ताकि फ्रेमवर्क को बफर का पुन: उपयोग करने से पहले बाड़ पर इंतजार करने की अनुमति मिल सके।
सभी आउटपुट बफ़र्स के लिए अधिग्रहण बाड़ को -1 पर सेट किया जाना चाहिए। यदि num_output_buffers शून्य है, तो यह NULL हो सकता है। उस स्थिति में, आउटपुट बफ़र्स प्रदान करने के लिए HAL द्वारा कम से कम एक और प्रोसेस_कैप्चर_रिजल्ट कॉल की जानी चाहिए।
जब किसी फ्रेम के लिए नए बफर के साथ प्रोसेस_कैप्चर_रिजल्ट को कॉल किया जाता है, तो उस संबंधित स्ट्रीम के लिए सभी पिछले फ्रेम के बफर पहले ही वितरित किए जा चुके होंगे (बाड़ को अभी तक सिग्नल करने की आवश्यकता नहीं है)।
>= CAMERA_DEVICE_API_VERSION_3_2:
फ़्रेम के लिए ग्रैलोक बफ़र्स को संबंधित शटर-नोटिफ़िकेशन से पहले फ़्रेमवर्क में भेजा जा सकता है।
प्रदर्शन संबंधी विचार:
फ़्रेमवर्क को दिए गए बफ़र्स को एप्लिकेशन लेयर पर तब तक नहीं भेजा जाएगा जब तक कि शटर नोटिफ़िकेशन () कॉल के माध्यम से एक्सपोज़र टाइमस्टैम्प की शुरुआत प्राप्त न हो जाए। उस कॉल को यथाशीघ्र भेजने की अत्यधिक अनुशंसा की जाती है।
uint32_t आंशिक_परिणाम |
>= CAMERA_DEVICE_API_VERSION_3_2:
आंशिक परिणामों का लाभ उठाने के लिए, एचएएल को स्थिर मेटाडेटा android.request.partialResultCount को प्रत्येक फ्रेम के लिए भेजे जाने वाले आंशिक परिणामों की संख्या पर सेट करना होगा।
आंशिक परिणाम वाले प्रत्येक नए कैप्चर परिणाम को इस फ़ील्ड (आंशिक_परिणाम) को 1 और android.request.partialResultCount के बीच एक विशिष्ट समावेशी मान पर सेट करना होगा।
इस सुविधा का लाभ नहीं लेने के इच्छुक एचएएल को android.request.partialResultCount या आंशिक_परिणाम को 1 के अलावा किसी अन्य मान पर सेट नहीं करना चाहिए।
यह मान 0 पर सेट किया जाना चाहिए जब कैप्चर परिणाम में केवल बफ़र्स हों और कोई मेटाडेटा न हो।
स्थिरांक कैमरा_मेटाडेटा_टी * परिणाम |
इस कैप्चर के लिए परिणाम मेटाडेटा. इसमें अंतिम कैप्चर पैरामीटर, कैप्चर और पोस्ट-प्रोसेसिंग हार्डवेयर की स्थिति, सक्षम होने पर 3ए एल्गोरिदम की स्थिति और किसी भी सक्षम सांख्यिकी इकाइयों के आउटपुट के बारे में जानकारी शामिल है।
किसी दिए गए फ्रेम_नंबर के साथ प्रोसेस_कैप्चर_रिजल्ट() पर केवल एक कॉल में परिणाम मेटाडेटा शामिल हो सकता है। समान फ़्रेम_नंबर के लिए अन्य सभी कॉलों को इसे NULL पर सेट करना होगा।
यदि परिणाम मेटाडेटा उत्पन्न करने में कोई त्रुटि हुई, तो परिणाम एक खाली मेटाडेटा बफर होना चाहिए, और सूचित करें() को ERROR_RESULT के साथ कॉल किया जाना चाहिए।
>= CAMERA_DEVICE_API_VERSION_3_2:
किसी दिए गए फ्रेम_नंबर के साथ प्रोसेस_कैप्चर_रिजल्ट() पर एकाधिक कॉल में परिणाम मेटाडेटा शामिल हो सकता है।
सबमिट किए गए आंशिक मेटाडेटा में किसी दिए गए फ़्रेम के लिए पिछले आंशिक परिणाम में लौटाई गई कोई मेटाडेटा कुंजी शामिल नहीं होनी चाहिए। उस फ़्रेम के लिए प्रत्येक नए आंशिक परिणाम को एक अलग आंशिक_परिणाम मान भी सेट करना होगा।
यदि अधिसूचना को ERROR_RESULT के साथ बुलाया गया है, तो उस फ़्रेम के सभी आंशिक परिणामों को फ़्रेमवर्क द्वारा अनदेखा कर दिया जाता है।
इस संरचना के लिए दस्तावेज़ीकरण निम्नलिखित फ़ाइल से तैयार किया गया था:
- हार्डवेयर/लिबहार्डवेयर/शामिल/हार्डवेयर/ कैमरा3.एच