सेशन पैरामीटर की सुविधा, कैमरा क्लाइंट को चालू करके देरी को कम करती है खर्च वाले अनुरोध पैरामीटर के सबसेट यानी सेशन को कॉन्फ़िगर करते हैं पैरामीटर की पहचान करें. इसके साथ सुविधा का इस्तेमाल करते हैं, तो आपके HAL लागू करने के प्रोसेस के दौरान क्लाइंट पैरामीटर मिलते हैं पहले कैप्चर अनुरोध के बजाय स्ट्रीम कॉन्फ़िगरेशन चरण स्ट्रीम करता है और ये काम कर सकते हैं, उनके मानों के आधार पर, आंतरिक पाइपलाइन को हैं.
Android 10 में, Android 10 में परफ़ॉर्मेंस को बेहतर बनाने के लिए, पर अधिक नियंत्रण के लिए वैकल्पिक सत्र पुनः कॉन्फ़िगरेशन क्वेरी सुविधा इंटरनल सेशन पैरामीटर को फिर से कॉन्फ़िगर करने का लॉजिक. ज़्यादा जानकारी के लिए, यह देखें सेशन को फिर से कॉन्फ़िगर करने से जुड़ी क्वेरी.
उदाहरण और सोर्स
रेफ़रंस सेशन पैरामीटर को लागू करना, पहले से ही CameraHal. यह HAL लेगसी हैल एपीआई का इस्तेमाल करता है. बाइंडराइज़्ड Camera HIDL API को लागू करने वाला CameraHal, उससे जुड़े HIDL का इस्तेमाल करना चाहिए सेशन पैरामीटर स्ट्रीम कॉन्फ़िगरेशन के दौरान, आने वाले किसी नए सेशन के पैरामीटर को ऐक्सेस करने की एंट्री.
कैमरा क्लाइंट, कॉल करके इस्तेमाल किए जा सकने वाले सभी सेशन पैरामीटर की कुंजियों के बारे में क्वेरी कर सकते हैं
getAvailableSessionKeys()
और अंत में अपने शुरुआती वैल्यू को
setSessionParameters()
.
लागू करना
CameraHal में, आपकी लागू की गई सेटिंग के लिए यह ज़रूरी है कि
ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
संबंधित स्थैतिक कैमरा मेटाडेटा के अनुसार और इसका एक सबसेट प्रदान करें
ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS
,
इसमें ऐसी कुंजियों की सूची होती है जिन्हें प्रति-फ़्रेम लागू करना कठिन होता है और वे
कैप्चर सेशन के दौरान, डेटा में बदलाव करने पर अचानक देरी हो सकती है.
सामान्य उदाहरणों में ऐसे पैरामीटर शामिल होते हैं जिनके लिए समय लेने वाले हार्डवेयर की ज़रूरत होती है कॉन्फ़िगरेशन को फिर से कॉन्फ़िगर किया जा सकता है या कैमरा पाइपलाइन में बदलाव किया जा सकता है. सेशन पर कंट्रोल पैरामीटर का इस्तेमाल अब भी कैप्चर अनुरोधों में किया जा सकता है, लेकिन क्लाइंट को इसकी जानकारी होनी चाहिए उनके ऐप्लिकेशन में देरी हो सकती है.
यह फ़्रेमवर्क, आने वाले सभी अनुरोधों को मॉनिटर करता है. साथ ही, अगर इसे मान है, तो यह कैमरे को अंदरूनी तौर पर फिर से कॉन्फ़िगर करता है. नया स्ट्रीम कॉन्फ़िगरेशन CameraHal में भेजा जाता है. इसके बाद, अपडेट किया गया सेशन भी इसमें शामिल हो जाता है पैरामीटर वैल्यू, जिनका इस्तेमाल कैमरा पाइपलाइन को और कॉन्फ़िगर करने के लिए किया जाता है हैं.
पसंद के मुताबिक बनाएं
उपलब्ध सेशन पैरामीटर की सूची में, टैग तय किए जा सकते हैं. यह सूची इन जगहों पर अपने-आप भर जाती है कैमराहॉल साइड. यह सुविधा तब तक चालू नहीं रहती, जब CameraHal इस सिस्टम से बाहर निकल जाता है उपलब्ध सेशन पैरामीटर की सूची खाली है.
पुष्टि करें
सीटीएस में, सेशन पैरामीटर की जांच के लिए यहां दिए गए नए मामले शामिल किए गए हैं:
CameraDeviceTest#testSessionConfiguration
CameraDeviceTest#testCreateSessionWithParameters
CameraDeviceTest#testSessionParametersStateLeak
NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters
आम तौर पर, किसी खास पैरामीटर के सेशन कुंजी की सूची का हिस्सा होने के बाद, मौजूदा वैल्यू को स्ट्रीम के दौरान पास किए गए सेशन पैरामीटर के हिस्से के तौर पर शामिल किया जाता है कॉन्फ़िगरेशन पर निर्भर करता है.
सेशन के पैरामीटर ध्यान से चुने जाने चाहिए. वैल्यू में बदलाव नहीं होना चाहिए अक्सर, स्ट्रीम कॉन्फ़िगरेशन के बीच में. बदलने वाले पैरामीटर अक्सर, जैसे कैप्चर इंटेंट खराब होते हैं और उन्हें सेशन पैरामीटर की सूची की वजह से, सर्वर के बहुत ज़्यादा अंदरूनी इस्तेमाल की वजह से सीटीएस काम नहीं कर सकता कॉन्फ़िगरेशन को फिर से कॉन्फ़िगर करना.
सेशन को फिर से कॉन्फ़िगर करने से जुड़ी क्वेरी
Android 10 में लॉन्च किया गया वैकल्पिक सेशन
क्वेरी सुविधा को फिर से कॉन्फ़िगर करें
इस सेशन की वजह से, इंटरनल स्ट्रीम को फिर से कॉन्फ़िगरेशन करने की वजह से परफ़ॉर्मेंस बेहतर हो सकती है
पैरामीटर की वैल्यू में बदलाव करने से परफ़ॉर्मेंस घट सकती है. इस चिंता को दूर करने के लिए,
एचआईडीएल
ICameraDeviceSession
3.5 और उसके बाद के वर्शन
isReconfigurationRequired
तरीका है, जो अंदरूनी सेशन पैरामीटर पर बारीकी से कंट्रोल देता है
कॉन्फ़िगरेशन को फिर से कॉन्फ़िगर करने का लॉजिक. इस तरीके का इस्तेमाल करने पर, स्ट्रीम को फिर से कॉन्फ़िगरेशन किया जा सकता है
ज़रूरत पड़ने पर.
isReconfigurationRequired
के लिए तर्क
हर रुके हुए सेशन के पैरामीटर के बारे में ज़रूरी जानकारी देना
जिसमें विभिन्न प्रकार के डिवाइस-विशिष्ट कस्टमाइज़ेशन की अनुमति भी है.
यह सुविधा सिर्फ़ कैमरा सेवा और कैमरा एचएएल में लागू की जाती है. यह लीजिए सार्वजनिक तौर पर उपलब्ध कोई एपीआई नहीं है. अगर यह सुविधा लागू की जाती है, तो कैमरा क्लाइंट को सेशन पैरामीटर के साथ काम करते समय परफ़ॉर्मेंस में सुधार देखे जा सकते हैं.
लागू करना
सेशन को फिर से कॉन्फ़िगर करने से जुड़ी क्वेरी के लिए सहायता पाने के लिए, आपको
isReconfigurationRequired
यह देखने का तरीका कि नए वर्शन के लिए स्ट्रीम को फिर से कॉन्फ़िगर करने की ज़रूरत है या नहीं
सेशन पैरामीटर की वैल्यू.
अगर क्लाइंट किसी विज्ञापन किए गए सेशन पैरामीटर की वैल्यू बदलता है, तो कैमरा
फ़्रेमवर्क, isReconfigurationRequired
को कॉल करता है
तरीका. खास वैल्यू के आधार पर, एचएएल यह तय करता है कि
स्ट्रीम को फिर से कॉन्फ़िगर करना ज़रूरी है. अगर एचएएल false
दिखाता है, तो कैमरे को
फ़्रेमवर्क, अंदरूनी कॉन्फ़िगरेशन को स्किप कर देता है. अगर एचएएल, true
दिखाता है, तो
फ़्रेमवर्क, स्ट्रीम को फिर से कॉन्फ़िगर करता है और नए सेशन की पैरामीटर वैल्यू पास करता है
उसी के हिसाब से.
isReconfigurationRequired
तरीके को फ़्रेमवर्क से कभी-कभी कॉल किया जा सकता है
एचएएल को नए पैरामीटर वाले अनुरोध सबमिट करने से पहले और
तो इसे सबमिट करने से पहले रद्द किया जा सकता है. इसलिए, HAL को इसका इस्तेमाल
तरीका कॉल करें.
एचएएल को लागू करने के लिए, इन शर्तों को पूरा करना ज़रूरी है:
- फ़्रेमवर्क ऐसा होना चाहिए कि
isReconfigurationRequired
तरीके को कॉल किया जा सके चालू सेशन कॉन्फ़िगरेशन के बाद किसी भी समय भेजा जा सकता है. - कैमरे से जुड़े उन अनुरोधों की परफ़ॉर्मेंस पर कोई असर नहीं पड़ेगा जिन्हें मंज़ूरी मिलना बाकी है. तय सीमा में खास तौर पर, सामान्य कैमरे के इस्तेमाल में कोई ग्लिच या देरी नहीं होनी चाहिए स्ट्रीमिंग.
डिवाइस और एचएएल को लागू करने के लिए, इन तरीकों का पालन करना ज़रूरी है ज़रूरतें:
- हार्डवेयर और सॉफ़्टवेयर कैमरे की सेटिंग न बदलें.
- कैमरे की परफ़ॉर्मेंस पर, लोगों को साफ़ तौर पर इसका कोई असर नहीं दिखना चाहिए.
isReconfigurationRequired
विधि में निम्नलिखित तर्क होते हैं:
oldSessionParams
: पिछले सेशन के सेशन पैरामीटर. आम तौर पर, मौजूदा सेशन पैरामीटर.newSessionParams
: सेशन के ऐसे नए पैरामीटर जिन्हें क्लाइंट सेट करता है.
सामान लौटाने की स्थिति के अनुमानित कोड यहां दिए गए हैं:
OK
: फिर से कॉन्फ़िगरेशन करने की ज़रूरी क्वेरी को पूरा किया गया.METHOD_NOT_SUPPORTED
: कैमरा डिवाइस क्वेरी को फिर से कॉन्फ़िगर करें.INTERNAL_ERROR
: किसी सिस्टम में गड़बड़ी हुई.
रिटर्न वैल्यू ये हैं:
true
: स्ट्रीम को फिर से कॉन्फ़िगर करना ज़रूरी है.false
: स्ट्रीम को फिर से कॉन्फ़िगर करने की ज़रूरत नहीं है.
किसी सेशन को फिर से कॉन्फ़िगर करने वाली क्वेरी को अनदेखा करने के लिए, एचएएल रिटर्न करता है
METHOD_NOT_SUPPORTED
या false
. इससे डिफ़ॉल्ट कैमरा सेवा चालू हो जाती है
ऐसा व्यवहार जहां हर सेशन पैरामीटर पर स्ट्रीम का कॉन्फ़िगरेशन ट्रिगर होता है
बदलें.
पुष्टि करें
सेशन को फिर से कॉन्फ़िगर करने से जुड़ी क्वेरी की सुविधा की पुष्टि, वीटीएस टेस्ट का इस्तेमाल करके की जा सकती है
केस इन
CameraHidlTest#configureStreamsWithSessionParameters
.