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

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

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

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

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

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

कार्यान्वयन

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

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

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

अनुकूलन

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

मान्यकरण

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

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

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

सत्र पुनर्विन्यास क्वेरी

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

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

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

कार्यान्वयन

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

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

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

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

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

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

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

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

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

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

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

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

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

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

मान्यकरण

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