सत्र पैरामीटर

कैप्चर सेशन इनिशियलाइज़ेशन चरण के हिस्से के रूप में, सत्र पैरामीटर सुविधा, कैमरा क्लाइंट को महंगे अनुरोध मापदंडों के सबसेट, यानी सत्र मापदंडों को सक्रिय रूप से कॉन्फ़िगर करने में सक्षम करके देरी को कम करती है। इस सुविधा के साथ, आपके एचएएल कार्यान्वयन पहले कैप्चर अनुरोध के बजाय स्ट्रीम कॉन्फ़िगरेशन चरण के दौरान क्लाइंट पैरामीटर प्राप्त करते हैं और उनके मूल्यों के आधार पर, आंतरिक पाइपलाइन को अधिक कुशलता से तैयार और निर्माण कर सकते हैं।

एंड्रॉइड 10 में, आप आंतरिक सत्र पैरामीटर पुन: कॉन्फ़िगरेशन तर्क पर अधिक नियंत्रण के लिए वैकल्पिक सत्र पुन: कॉन्फ़िगरेशन क्वेरी सुविधा का उपयोग करके प्रदर्शन में सुधार कर सकते हैं। अधिक जानकारी के लिए, सत्र पुनर्विन्यास क्वेरी देखें।

उदाहरण और स्रोत

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

कैमरा क्लाइंट getAvailableSessionKeys() को कॉल करके सभी समर्थित सत्र मापदंडों की कुंजियों को क्वेरी कर सकते हैं और अंततः setSessionParameters() के माध्यम से अपने प्रारंभिक मान सेट कर सकते हैं।

कार्यान्वयन

आपके CameraHal कार्यान्वयन को ANDROID_REQUEST_AVAILABLE_SESSION_KEYS को संबंधित स्थिर कैमरा मेटाडेटा में पॉप्युलेट करना चाहिए और ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS का एक सबसेट प्रदान करना चाहिए, जिसमें उन कुंजियों की सूची होती है जिन्हें प्रति-फ़्रेम लागू करना मुश्किल होता है और कैप्चर सत्र के जीवनकाल के दौरान संशोधित किए जाने पर अप्रत्याशित देरी हो सकती है।

विशिष्ट उदाहरणों में ऐसे पैरामीटर शामिल हैं जिनके लिए समय लेने वाली हार्डवेयर पुन: कॉन्फ़िगरेशन या आंतरिक कैमरा पाइपलाइन परिवर्तन की आवश्यकता होती है। कैप्चर अनुरोधों में सत्र पैरामीटर पर नियंत्रण अभी भी लागू किया जा सकता है लेकिन ग्राहकों को उनके आवेदन में देरी के बारे में पता होना चाहिए और उम्मीद करनी चाहिए।

फ्रेमवर्क सभी आने वाले अनुरोधों की निगरानी करता है और यदि यह सत्र पैरामीटर के मान में परिवर्तन का पता लगाता है, तो यह आंतरिक रूप से कैमरे को पुन: कॉन्फ़िगर करता है। CameraHal को पास किए गए नए स्ट्रीम कॉन्फ़िगरेशन में अपडेट किए गए सत्र पैरामीटर मान शामिल हैं, जिनका उपयोग कैमरा पाइपलाइन को अधिक कुशलता से कॉन्फ़िगर करने के लिए किया जाता है।

अनुकूलन

आप उपलब्ध सत्र पैरामीटर सूची में टैग को परिभाषित कर सकते हैं जो कि CameraHal साइड पर पॉपुलेटेड है। यदि कैमराहाल उपलब्ध सत्र पैरामीटर सूची को खाली छोड़ देता है तो यह सुविधा सक्रिय नहीं है।

मान्यकरण

सीटीएस में परीक्षण सत्र मापदंडों के लिए निम्नलिखित नए मामले शामिल हैं:

सामान्य तौर पर, एक निश्चित पैरामीटर के सत्र कुंजी सूची का हिस्सा होने के बाद, इसका वर्तमान मान एचएएल परत पर स्ट्रीम कॉन्फ़िगरेशन के दौरान पारित सत्र पैरामीटर के हिस्से के रूप में शामिल होता है।

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

सत्र पुन: कॉन्फ़िगरेशन क्वेरी

Android 10 प्रदर्शन को बेहतर बनाने के लिए एक वैकल्पिक सत्र पुन: कॉन्फ़िगरेशन क्वेरी सुविधा पेश करता है क्योंकि सत्र पैरामीटर मान संशोधनों के परिणामस्वरूप आंतरिक स्ट्रीम पुन: कॉन्फ़िगरेशन प्रदर्शन को कम कर सकता है। इस चिंता को दूर करने के लिए, HIDL ICameraDeviceSession संस्करण 3.5 और उच्चतर isReconfigurationRequired पद्धति का समर्थन करता है, जो आंतरिक सत्र पैरामीटर पुनर्विन्यास तर्क पर बारीक नियंत्रण प्रदान करता है। इस पद्धति का उपयोग करते हुए, आवश्यकता होने पर स्ट्रीम पुन: कॉन्फ़िगरेशन ठीक हो सकता है।

isReconfigurationRequired के लिए तर्क प्रत्येक लंबित सत्र पैरामीटर संशोधन के बारे में आवश्यक जानकारी प्रदान करते हैं, जिससे विभिन्न प्रकार के उपकरण-विशिष्ट अनुकूलन की अनुमति मिलती है।

यह सुविधा केवल कैमरा सेवा और कैमरा एचएएल में लागू की गई है। कोई सार्वजनिक-सामना करने वाला एपीआई नहीं है। यदि यह सुविधा लागू की जाती है, तो कैमरा क्लाइंट को सत्र पैरामीटर के साथ काम करते समय प्रदर्शन में सुधार देखना चाहिए।

कार्यान्वयन

सत्र पुन: कॉन्फ़िगरेशन प्रश्नों का समर्थन करने के लिए, आपको यह जांचने के लिए isReconfigurationRequired पद्धति को लागू करना होगा कि नए सत्र पैरामीटर मानों के लिए पूर्ण स्ट्रीम पुन: कॉन्फ़िगरेशन की आवश्यकता है या नहीं।

यदि क्लाइंट किसी विज्ञापित सत्र पैरामीटर का मान बदलता है, तो कैमरा फ़्रेमवर्क isReconfigurationRequired विधि को कॉल करता है। विशिष्ट मूल्यों के आधार पर, एचएएल तय करता है कि क्या एक पूर्ण स्ट्रीम पुन: विन्यास की आवश्यकता है। यदि एचएएल false लौटाता है, तो कैमरा फ्रेमवर्क आंतरिक पुनर्विन्यास को छोड़ देता है। यदि एचएएल true लौटाता है, तो ढांचा धाराओं को फिर से कॉन्फ़िगर करता है और तदनुसार नया सत्र पैरामीटर मान पास करता है।

एचएएल को नए पैरामीटर के साथ अनुरोध सबमिट करने से कुछ समय पहले isReconfigurationRequired विधि को फ्रेमवर्क द्वारा कॉल किया जा सकता है, और अनुरोध सबमिट करने से पहले इसे रद्द किया जा सकता है। इसलिए, एचएएल को किसी भी तरह से अपने व्यवहार को बदलने के लिए इस विधि कॉल का उपयोग नहीं करना चाहिए।

एचएएल कार्यान्वयन को निम्नलिखित आवश्यकताओं को पूरा करना चाहिए:

  • फ्रेमवर्क सक्रिय सत्र विन्यास के बाद किसी भी समय isReconfigurationRequired विधि को कॉल करने में सक्षम होना चाहिए।
  • लंबित कैमरा अनुरोधों के प्रदर्शन पर कोई प्रभाव नहीं होना चाहिए। विशेष रूप से, सामान्य कैमरा स्ट्रीमिंग के दौरान कोई गड़बड़ या देरी नहीं होनी चाहिए।

डिवाइस और एचएएल कार्यान्वयन को निम्नलिखित प्रदर्शन आवश्यकताओं को पूरा करना चाहिए:

  • हार्डवेयर और सॉफ्टवेयर कैमरा सेटिंग्स को नहीं बदला जाना चाहिए।
  • कैमरे के प्रदर्शन पर कोई उपयोगकर्ता-दृश्यमान प्रभाव नहीं होना चाहिए।

isReconfigurationRequired विधि निम्नलिखित तर्क लेती है:

  • oldSessionParams : पिछले सत्र के सत्र पैरामीटर। आमतौर पर मौजूदा सत्र पैरामीटर।
  • newSessionParams : नए सत्र पैरामीटर जो क्लाइंट द्वारा निर्धारित किए जाते हैं।

अपेक्षित वापसी स्थिति कोड हैं:

  • OK : सफल पुनर्विन्यास के लिए आवश्यक क्वेरी।
  • METHOD_NOT_SUPPORTED : कैमरा डिवाइस पुन: कॉन्फ़िगरेशन क्वेरी का समर्थन नहीं करता है।
  • INTERNAL_ERROR : आंतरिक त्रुटि के कारण पुन: कॉन्फ़िगरेशन क्वेरी पूर्ण नहीं हो सकती है।

वापसी मान हैं:

  • true : स्ट्रीम पुन: कॉन्फ़िगरेशन की आवश्यकता है।
  • false : स्ट्रीम पुनर्विन्यास की आवश्यकता नहीं है।

सत्र पुन: कॉन्फ़िगरेशन क्वेरी को अनदेखा करने के लिए, एचएएल METHOD_NOT_SUPPORTED या false लौटाता है। यह डिफ़ॉल्ट कैमरा सेवा व्यवहार में परिणत होता है जहां प्रत्येक सत्र पैरामीटर परिवर्तन पर स्ट्रीम पुन: कॉन्फ़िगरेशन ट्रिगर होता है।

मान्यकरण

CameraHidlTest#configureStreamsWithSessionParameters में VTS टेस्ट केस का उपयोग करके सत्र पुनर्विन्यास क्वेरी सुविधा को सत्यापित किया जा सकता है।