स्ट्रीम कॉन्फ़िगरेशन

Android में ऐसी सुविधाएं शामिल हैं जो कैमरा क्लाइंट को अनुमति देती हैं से बेहतरीन कैमरा चुनने के लिए स्ट्रीम के कुछ खास तरीके इस्तेमाल किए जा सकते हैं. साथ ही, इससे यह पक्का किया जा सकता है कि कैमरा डिवाइस पर काम करती हैं. स्ट्रीम कॉन्फ़िगरेशन, एक कैमरा डिवाइस में कॉन्फ़िगर की गई कैमरा स्ट्रीम और स्ट्रीम कॉम्बिनेशन का मतलब है को स्ट्रीम के एक या उससे ज़्यादा सेट में कनेक्ट करता है. ज़्यादा जानकारी के लिए इन सुविधाओं को देखना न भूलें. सुझाए गए स्ट्रीम कॉन्फ़िगरेशन और क्वेरी सुविधा के अलग-अलग कॉम्बिनेशन के लिए एपीआई.

रेफ़रंस फ़ाइल को लागू करना

सुझाए गए कॉन्फ़िगरेशन को लागू करने के लिए, वेंडर-साइड रेफ़रंस उपलब्ध है स्ट्रीम और एपीआई की मदद से, स्ट्रीम को एक साथ जोड़ना. आप इसका इस्तेमाल कर सकते हैं लागू करने का समय QCamera3HWI.cpp

कैमरा वेंडर, खास तरीके से इस्तेमाल के लिए, सुझाए गए स्ट्रीम कॉन्फ़िगरेशन का विज्ञापन दे सकते हैं केस की मदद से कैमरा क्लाइंट तक पहुंचा सकते हैं. ये सुझाए गए स्ट्रीम कॉन्फ़िगरेशन, जो इसके सबसेट StreamConfigurationMap, से कैमरा क्लाइंट को सबसे सही कॉन्फ़िगरेशन चुनने में मदद मिल सकती है.

हालांकि StreamConfigurationMap कैमरा क्लाइंट को स्ट्रीम कॉन्फ़िगरेशन की पूरी जानकारी देता है. क्षमता, क्षमता या परफ़ॉर्मेंस के बारे में कोई जानकारी नहीं देती एक स्ट्रीम को दूसरी स्ट्रीम के ऊपर चुनने से पड़ने वाले असर के बारे में बताया गया है. कैमरा क्लाइंट अपने हिसाब से चुन सकते हैं से निकाल देता है, लेकिन कई मामलों में इससे जिनमें बेहतर कैमरा कॉन्फ़िगरेशन और ऐप्लिकेशन बनाने की सुविधा का इस्तेमाल किया जा रहा है खोज करने में काफ़ी समय लगता है.

उदाहरण के लिए, हालांकि प्रोसेस किए गए कुछ YUV फ़ॉर्मैट ज़रूरी हैं और ये ज़रूरी हैं समर्थित नहीं है, तो हो सकता है कि कैमरा डिवाइस में इन प्रारूप के लिए स्थानीय समर्थन न हो. यह फ़ॉर्मैट के कन्वर्ज़न के लिए एक अतिरिक्त प्रोसेसिंग पास मिलता है और क्षमता. साइज़ और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से भी मिलता-जुलता हो सकता है इस तरह के असर को ज़्यादा अहमियत देते हुए, खास डाइमेंशन को प्राथमिकता दी जाती है. साथ ही, परफ़ॉर्मेंस.

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

सभी जांचों में कोई बदलाव नहीं किया जाता. साथ ही, सुझाई गई जांच के मुताबिक, इन्हें बंद नहीं किया जाता स्ट्रीम कॉन्फ़िगरेशन.

कैमरा लागू करने की प्रक्रिया से मिलने वाले स्ट्रीम कॉन्फ़िगरेशन के लिए सुझाव दिए जाते हैं ऐसा करना ज़रूरी नहीं है और कैमरा क्लाइंट उन्हें अनदेखा कर सकता है.

लागू करना

इस सुविधा को लागू करने के लिए यह तरीका अपनाएं.

मेटाडेटा एंट्री

इस सुविधा को चालू करने के लिए कैमरा एचएएल को नीचे दिए गए स्टैटिक को भरना होगा मेटाडेटा एंट्री:

  • android.scaler.availableRecommendedStreamConfigurations: इस्तेमाल के खास उदाहरणों के लिए, स्ट्रीम कॉन्फ़िगरेशन के सुझाए गए सबसेट. कॉन्टेंट बनाने एलान में, बिटमैप का इस्तेमाल किया गया है, जो [1 << PREVIEW | 1 << RECORD..] का फ़ॉर्म. इस्तेमाल के उदाहरण सामान्य (फ़ॉर्मैट, चौड़ाई, ऊंचाई, इनपुट) टपल, एक अतिरिक्त एंट्री के साथ. सार्वजनिक इस्तेमाल के मौजूदा मामले या रेंज के अंदर सेट किए गए अन्य बिट [PUBLIC_END, VENDOR_START] प्रतिबंधित हैं.

    यह जानकारी इसमें सेव की जाती है availableRecommendedStreamConfigurations मेटाडेटा टैग.

    नीचे दिए गए उदाहरण में, सुझाई गई स्ट्रीम का कलेक्शन दिखाया गया है सिर्फ़ 4K और 1080 पिक्सल वाले कैमरा डिवाइस के लिए कॉन्फ़िगरेशन, जहां वीडियो रिकॉर्डिंग के लिए दोनों रिज़ॉल्यूशन को प्राथमिकता दी जाती है, लेकिन सिर्फ़ 1080 पिक्सल वाले रिज़ॉल्यूशन को झलक देखने के लिए सुझाया गया.

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है (यह सिर्फ़ तब उपलब्ध होता है, जब डिवाइस पर काम करता हो): गहराई के लिए सुझाया गया डेटास्पेस इस कैमरा डिवाइस के लिए सुझाए गए स्ट्रीम कॉन्फ़िगरेशन. इसके समान मेटाडेटा प्रविष्टि के ऊपर, एक अतिरिक्त उपयोग का बिट मैप इस्तेमाल के उदाहरण.

    यह जानकारी इसमें सेव की जाती है availableRecommendedInputOutputFormatsMap मेटाडेटा टैग.

  • android.scaler.availableRecommendedInputOutputFormatsMap (उपलब्ध है अगर डिवाइस पर काम करता हो): सुझाए गए इमेज फ़ॉर्मैट की मैपिंग इनपुट स्ट्रीम के लिए इस कैमरा डिवाइस के लिए सुझाए गए हैं, संबंधित आउटपुट फ़ॉर्मैट.

    यह जानकारी इसमें सेव की जाती है availableRecommendedDepthStreamConfigurations मेटाडेटा टैग.

यह जानकारी कैमरा क्लाइंट को सुझाया गया स्ट्रीम कॉन्फ़िगरेशन मैप एपीआई.

इस्तेमाल के ज़रूरी उदाहरण

नीचे दिए गए इस्तेमाल के उदाहरणों के लिए, सुझाए गए स्ट्रीम कॉन्फ़िगरेशन दिए जाने चाहिए और ये ज़रूरी शर्तें पूरी करते हैं:

इस्तेमाल का उदाहरण ज़रूरी शर्त
PREVIEW झलक में सिर्फ़ ऐसे स्ट्रीम कॉन्फ़िगरेशन शामिल होने चाहिए जो स्टॉल न किए जा सकें YUV_420_888 और जैसे आउटपुट फ़ॉर्मैट के साथ IMPLEMENTATION_DEFINED.
RECORD वीडियो रिकॉर्ड में ऐसे स्ट्रीम कॉन्फ़िगरेशन शामिल होने चाहिए जो विज्ञापन में दिखाए गए विज्ञापन से मेल खाते हों इस्तेमाल की जा सकने वाली मीडिया प्रोफ़ाइलें IMPLEMENTATION_DEFINED प्रारूप के साथ.
VIDEO_SNAPSHOT वीडियो के स्नैपशॉट में स्ट्रीम कॉन्फ़िगरेशन शामिल होना चाहिए, जो कम से कम अधिकतम RECORD रिज़ॉल्यूशन वाला होता है और केवल BLOB + के साथ DATASPACE_JFIF फ़ॉर्मैट/डेटास्पेस कॉम्बिनेशन (JPEG). कॉन्फ़िगरेशन पूर्वावलोकन ग्लिच नहीं होने चाहिए और 30 एफ़पीएस (फ़्रेम प्रति सेकंड) पर चलने चाहिए.
SNAPSHOT स्नैपशॉट स्ट्रीम कॉन्फ़िगरेशन में, कम से कम एक ऐसा होना चाहिए जिसका साइज़ करीब हो BLOB + के साथ android.sensor.info.activeArraySize को DATASPACE_JFIF फ़ॉर्मैट/डेटास्पेस कॉम्बिनेशन (JPEG). ध्यान में रखा जा रहा है आसपेक्ट रेशियो, अलाइनमेंट, और वेंडर की अन्य पाबंदियों के बारे में बताया गया है. सुझाए गए साइज़ का ज़्यादा से ज़्यादा हिस्सा, सेंसर के 97% से कम नहीं होना चाहिए अरे साइज़ एरिया.
ZSL (अगर काम करता है) अगर कैमरा डिवाइस के साथ काम करता है, तो सुझाए गए इनपुट स्ट्रीम कॉन्फ़िगरेशन का विज्ञापन केवल अन्य संसाधित या स्टॉल किए जा रहे आउटपुट के साथ किया जाना चाहिए फ़ॉर्मैट के बारे में ज़्यादा जानें.
RAW (अगर काम करता है) अगर कैमरा डिवाइस के साथ काम करता है, तो सुझाए गए रॉ स्ट्रीम कॉन्फ़िगरेशन इसमें सिर्फ़ RAW आधारित आउटपुट फ़ॉर्मैट शामिल होने चाहिए.

इस्तेमाल के अन्य उदाहरण

इस्तेमाल के उदाहरणों के लिए, सुझाए गए अन्य कॉन्फ़िगरेशन स्ट्रीम दिए जा सकते हैं लागू करने के लिए खास.

पुष्टि करें

यह जांच करने के लिए कि सुझाई गई कॉन्फ़िगरेशन स्ट्रीम लागू की गई हैं या नहीं, इसे चलाएं ये सीटीएस और वीटीएस टेस्ट दिए जा रहे हैं:

क्वेरी सुविधा के अलग-अलग कॉम्बिनेशन के लिए एपीआई

Android 15 की शुरुआत से, Android प्लैटफ़ॉर्म सुविधा के कॉम्बिनेशन के बारे में क्वेरी करने के लिए एक एपीआई. इस एपीआई की मदद से कैमरा क्लाइंट यह पूछता है कि क्या डिवाइस पर इन सुविधाओं का एक खास कॉम्बिनेशन काम कर सकता है. यह एपीआई यह ज़रूरी है, क्योंकि Camera2 API अलग-अलग सुविधाओं का मॉडल बनाता है, जैसे कि 4k, 60fps, ऑर्थोगनल कंट्रोल के तौर पर एचडीआर वीडियो, अल्ट्राएचडीआर, अल्ट्रावाइड ज़ूम, और स्टेबलाइज़ेशन.

ज़रूरी शर्तें

एपीआई की सुविधा के अलग-अलग कॉम्बिनेशन के बारे में क्वेरी करने के लिए, कैमरा एचएएल को लागू करना ज़रूरी है ICameraDevice इंटरफ़ेस का 3 वर्शन है. जानकारी के लिए, यह देखें लागू करना सेक्शन.

एपीआई के साथ काम करने पर, प्रीव्यू स्टेबलाइज़ेशन के अन्य सुविधाएं. इसका मतलब है कि अगर कैमरा डिवाइस पर झलक देखी जा सकती है, तो स्टेबलाइज़ेशन, isStreamCombinationWithSettingsSupported की रिटर्न वैल्यू प्रीव्यू स्टेबलाइज़ेशन के समय किसी खास कॉम्बिनेशन के लिए वैल्यू एक ही होनी चाहिए चालू या बंद हो. इससे सुविधा के कॉम्बिनेशन वाली क्वेरी के लिए, खोज करने की जगह कम हो जाती है.

इसके अलावा, मीडिया परफ़ॉर्मेंस क्लास 15 के लिए, मुख्य पीछे के कैमरे के लिए यह ज़रूरी है 1080 और 720 पिक्सल के लिए 10-बिट HLG10 प्रीव्यू के साथ प्रीव्यू स्टेबलाइज़ेशन JPEG ज़्यादा से ज़्यादा साइज़ की झलक देखें. इन ज़रूरी शर्तों के बारे में ज़्यादा जानकारी के लिए, यह देखें सेक्शन 2.2.7.2. कैमरा और साथ मिलकर काम करने का मौका मिलता है.

लागू करना

एपीआई की सुविधा के अलग-अलग कॉम्बिनेशन की क्वेरी करने में मदद करने के लिए, इन्हें लागू करें इसके वर्शन 3 में फ़ीचर कॉम्बिनेशन क्वेरी API ICameraDevice:

  • constructDefaultRequestSettings: बताए गए CaptureRequest टाइप के लिए, डिफ़ॉल्ट सेटिंग बनाता है. एचएएल ऐप्लिकेशन, ICameraDeviceSession::constructDefaultRequestSettings लागू करना.

  • isStreamCombinationWithSettingsSupported: यह जांच करता है कि डिवाइस पर कैमरा स्ट्रीम के किसी खास कॉम्बिनेशन की सुविधा काम करती है या नहीं सेशन पैरामीटर और CaptureRequest की अन्य कुंजियों के साथ. ज़रूर इस्तेमाल किए जा सकने वाले कॉम्बिनेशन के लिए true और काम न करने वाले कॉम्बिनेशन के लिए false रिटर्न सुविधा के अलग-अलग कॉम्बिनेशन इस्तेमाल किए जा सकते हैं. एचएएल, isStreamCombinationSupported लागू करें और CaptureRequest सेटिंग की जांच करने के लिए सहायता जोड़ें को sessionParams में पास किया गया.

  • getSessionCharacteristics: इस्तेमाल किया जा सकने वाला फ़ॉर्मैट इस्तेमाल करता है सत्र पैरामीटर के साथ स्ट्रीम का संयोजन प्रदान करता है और विशेषताएं.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: इसमें, आम तौर पर इस्तेमाल किए जाने वाले सभी सेशन कॉन्फ़िगरेशन की सूची होती है. ये कॉन्फ़िगरेशन अनुपालन जांच से पुष्टि की जाती है.

ICameraDevice इंटरफ़ेस के वर्शन 3 से पहले के वर्शन के लिए, एचएएल को लागू करना चाहिए isStreamCombinationSupported तरीका.

एपीआई की ओर से क्वेरी की गई सुविधा के कॉम्बिनेशन के बारे में ज़्यादा जानकारी के लिए, यहां देखें: में sessionConfigurationQueryVersion पर दस्तावेज़ system/media/camera/docs/metadata_definitions.xml.

इस सुविधा को लागू करने के बारे में जानने के लिए, देखें hardware/google/camera/devices/EmulatedCamera/hwl/.

पब्लिक एपीआई

ऐप्लिकेशन, काम करने वाले फ़ीचर के कॉम्बिनेशन के बारे में क्वेरी करने के लिए इन सार्वजनिक एपीआई का इस्तेमाल कर सकते हैं डिवाइस के लिए:

  • CameraDevice.CameraDeviceSetup: यह CameraDevice का सीमित प्रज़ेंटेशन है, जिसका इस्तेमाल सुविधा के बारे में क्वेरी करने के लिए किया जा सकता है CameraDevice इंस्टेंस की ज़रूरत के बिना.

  • getCameraDeviceSetup: दिए गए कैमरा आईडी के लिए CameraDeviceSetup ऑब्जेक्ट हासिल करता है, अगर isCameraDeviceSetupSupported, true दिखाता है.

  • INFO_SESSION_CONFIGURATION_QUERY_VERSION: सुविधा के कॉम्बिनेशन के लिए क्वेरी का इस्तेमाल किया जा सकता है, अगर यह वैल्यू VANILLA_ICE_CREAM या उससे ज़्यादा.

  • OutputConfiguration: कैमरे के आउटपुट के बारे में जानकारी देने वाली क्लास, जिसमें ताकि इंतज़ार का समय कम करने वाली सुविधा की कॉम्बिनेशन क्वेरी इस्तेमाल की जा सकें.

  • SessionConfiguration: यूटिलिटी क्लास, जिसमें स्ट्रीम के साथ-साथ सेशन के कॉन्फ़िगरेशन की जानकारी दी गई है कॉम्बिनेशन और सेशन पैरामीटर का इस्तेमाल करें. इनका इस्तेमाल सुविधा के लिए किया जा सकता है कॉम्बिनेशन क्वेरी का इस्तेमाल करती है.

पुष्टि करें

इस सुविधा को लागू करने की पुष्टि करने के लिए, इन वीटीएस, सीटीएस, और Camera ITS (CTS Verifier) जांच:

वीटीएस

सीटीएस

कैमरा आईटीएस