एक प्रोड्यूसर, एक से ज़्यादा उपभोक्ता कैमरा बफ़र ट्रांसपोर्ट

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

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

बफ़र शेयर करने की सुविधा

पहली इमेज. बफ़र शेयर करने की सुविधा

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

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

इस सुविधा को लागू करने से जुड़ी मुख्य जानकारी, Camera3StreamSplitter मॉड्यूल में मिल सकती है. इस सुविधा से जुड़ा दस्तावेज़, डेवलपर के इस रेफ़रंस में देखा जा सकता है:

लागू करना

इस सुविधा को फ़्रेमवर्क की तरफ़ से लागू किया जाता है. इसलिए, Camera HAL की तरफ़ से इसे लागू करने की ज़रूरत नहीं है.

Validation

आपका लागू किया गया तरीका, इस सुविधा को कवर करने वाले सीटीएस टेस्ट पास करना चाहिए. ये टेस्ट, नेटिव एपीआई के लिए MultiViewTest मॉड्यूल और नेटिव JNI लाइब्रेरी से लिए जाते हैं.