अध्याय 11: कैप्चर प्रकार (Capture Types)
11.1 पाइपलाइन को फीड करने के तीन तरीके
Camera2 आपको तीन सबमिशन तंत्र (mechanisms) देता है, जिनमें से प्रत्येक का व्यवहार मौलिक रूप से अलग है:
- वन-शॉट (One-shot) (
capture()) — एक सिंगल रिक्वेस्ट को एक बार निष्पादित करें। - बर्स्ट (Burst) (
captureBurst()) — रिक्वेस्ट की एक सूची को बिना किसी गैप के एक के बाद एक निष्पादित करें। - रिपीटिंग (Repeating) (
setRepeatingRequest()) — एक ही रिक्वेस्ट को हमेशा के लिए (या रुकने तक) लगातार निष्पादित करें।
इन तीन सबमिशन मोड के अलावा, फ्रेमवर्क छह कैप्चर टेम्पलेट्स प्रदान करता है जो सामान्य उपयोग के मामलों (preview, still capture, video recording, आदि) के लिए उचित डिफॉल्ट्स के साथ एक CaptureRequest.Builder को पहले से भर देते हैं।
11.2 वन-शॉट: capture()
सबसे सरल सबमिशन मोड वन-शॉट कैप्चर है। यह एक सिंगल CaptureRequest को पाइपलाइन में सबमिट करता है, इसे ठीक एक बार निष्पादित करता है, और काम पूरा हो जाता है।
इसका उपयोग सिंगल फोटो लेने या ऑटोफोकस (AF) ट्रिगर करने के लिए किया जाता है।
वन-शॉट रिपीटिंग प्रीव्यू के साथ कैसे इंटरैक्ट करता है?
Camera2 में एक महत्वपूर्ण डिज़ाइन पैटर्न है: प्रीव्यू एक रिपीटिंग रिक्वेस्ट के रूप में चलता है, और स्थिर फोटो वन-शॉट रिक्वेस्ट के रूप में इंजेक्ट किए जाते हैं। वन-शॉट पेंडिंग क्यू में रिपीटिंग रिक्वेस्ट के आगे कूद जाता है। वन-शॉट पूरा होने के बाद, फ्रेमवर्क स्वचालित रूप से रिपीटिंग प्रीव्यू रिक्वेस्ट को फिर से शुरू कर देता है।
11.3 बर्स्ट: captureBurst()
जहाँ capture() एक रिक्वेस्ट सबमिट करता है, captureBurst() एक List<CaptureRequest> सबमिट करता है और गारंटी देता है कि सूची के सभी N फ्रेम बिना किसी गैप के एक के बाद एक निष्पादित होंगे।
यह निम्नलिखित के लिए आवश्यक है:
- एक्सपोज़र ब्रैकेटिंग — HDR के लिए अलग-अलग एक्सपोज़र पर 3-5 फ्रेम कैप्चर करना।
- फोकस ब्रैकेटिंग — डेप्थ-ऑफ-फील्ड के लिए फोकस दूरी को बदलना।
- स्लो-मोशन वीडियो — 120fps या 240fps पर बर्स्ट।
11.4 रिपीटिंग: setRepeatingRequest()
Camera2 का मुख्य आधार रिपीटिंग रिक्वेस्ट है। इसे एक बार सेट करें, और यह हार्डवेयर की नेटिव फ्रेम रेट पर लगातार फ्रेम बनाता रहता है। यह प्रीव्यू और वीडियो रिकॉर्डिंग के लिए उपयोग किया जाता है।
रिपीटिंग रिक्वेस्ट को रोकना
रिपीटिंग स्ट्रीम को रोकने के लिए, stopRepeating() कॉल करें। यह पेंडिंग क्यू से रिक्वेस्ट को हटा देता है लेकिन पहले से इन-फ्लाइट फ्रेमों को फ्लश नहीं करता है। सब कुछ तुरंत रोकने के लिए abortCaptures() का उपयोग करें।
11.5 कैप्चर टेम्पलेट्स (Capture Templates)
फ्रेमवर्क छह टेम्पलेट्स प्रदान करता है जो उस उपयोग के मामले के लिए हार्डवेयर-अनुकूलित डिफॉल्ट्स के साथ बिल्डर को भरते हैं:
| टेम्पलेट | उपयोग का मामला |
|---|---|
TEMPLATE_PREVIEW | लाइव व्यूफाइंडर / प्रीव्यू |
TEMPLATE_STILL_CAPTURE | सिंगल-शॉट फोटो (अधिकतम गुणवत्ता) |
TEMPLATE_RECORD | वीडियो रिकॉर्डिंग (स्थिर फ्रेम रेट) |
TEMPLATE_VIDEO_SNAPSHOT | वीडियो रिकॉर्डिंग के दौरान हाई-रेज़ोल्यूशन फोटो |
TEMPLATE_ZERO_SHUTTER_LAG | ज़ीरो शटर लैग (ZSL) के लिए |
TEMPLATE_MANUAL | प्रो कंट्रोल (सभी ऑटो मोड बंद) |
हमेशा एक टेम्पलेट से शुरू करें और केवल विशिष्ट फ़ील्ड को ओवरराइड करें।
11.6 तीनों कैप्चर प्रकारों की तुलना
| आयाम | One-Shot capture() | Burst captureBurst() | Repeating setRepeatingRequest() |
|---|---|---|---|
| निष्पादन | एक बार चलता है | N फ्रेम बिना गैप के चलते हैं | लगातार चलता रहता है |
| प्राथमिकता | उच्चतम (क्यू में सबसे आगे) | उच्च (सूची एक साथ आगे आती है) | सबसे कम |
| उपयोग | फोटो, AF ट्रिगर | HDR ब्रैकेटिंग, स्लो-मो | प्रीव्यू, वीडियो रिकॉर्डिंग |
सारांश (Summary)
- One-shot
capture(): सिंगल फोटो के लिए, उच्चतम प्राथमिकता। - Burst
captureBurst(): बिना गैप के कई फोटो, ब्रैकेटिंग के लिए। - Repeating
setRepeatingRequest(): प्रीव्यू के लिए, लगातार स्ट्रीम। - Templates: छह आधारभूत सेटिंग्स जो बिल्डर को पहले से भरती हैं।
आगे क्या है
अध्याय 12: CameraCharacteristics में गहराई से उतरें में, हम उस मेटाडेटा ऑब्जेक्ट को विस्तार से देखेंगे जो बताता है कि आपका कैमरा वास्तव में क्या करने में सक्षम है।