10-बिट कैमरा आउटपुट

Android 13 और इसके बाद के वर्शन वाले डिवाइसों के लिए, Android, डाइनैमिक रेंज प्रोफ़ाइलों के ज़रिए 10-बिट कैमरा आउटपुट की सुविधा देता है. इन्हें कैमरा क्लाइंट, स्ट्रीम कॉन्फ़िगरेशन के हिस्से के तौर पर कॉन्फ़िगर कर सकता है. डिवाइस बनाने वाली कंपनियां, 10-बिट डाइनैमिक रेंज प्रोफ़ाइल के लिए सहायता जोड़ सकती हैं. जैसे, HLG10, HDR 10, HDR 10+, और Dolby Vision.

10-बिट कैमरा आउटपुट की सुविधा से, कैमरा क्लाइंट getSupportedProfiles को कॉल करके, किसी डिवाइस की 10-बिट डाइनैमिक रेंज प्रोफ़ाइलों के बारे में जान सकते हैं. इसके बाद, फ़्रेमवर्क DynamicRangeProfiles का एक इंस्टेंस दिखाता है. इसमें, डाइनैमिक रेंज की उन प्रोफ़ाइलों के बारे में जानकारी होती है जो काम करती हैं. साथ ही, अगर उपलब्ध हो, तो कैप्चर करने के अनुरोध से जुड़ी पाबंदियों के बारे में भी जानकारी होती है. HLG10 प्रोफ़ाइल का इस्तेमाल किया जा सकता हो. सुझाई गई डाइनैमिक रेंज प्रोफ़ाइल, REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE फ़ील्ड में दी गई है.

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

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

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

लागू करना

डिवाइस बनाने वाली कंपनियों को 10-बिट कैमरा आउटपुट की सुविधा देने के लिए, कैमरा एआईडीएल एचएएल के ये इंटिग्रेशन करने होंगे:

  • कैमरे की सुविधाओं में ANDROID_REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT को शामिल करें.
  • ANDROID_REQUEST_AVAILABLE_DYNAMIC_RANGE_PROFILES_MAP को, डाइनैमिक रेंज की सभी प्रोफ़ाइलों और उनकी सीमाओं के बिटमैप से भरें. HLG10 प्रोफ़ाइल का इस्तेमाल किया जा सकता हो. आपको सुझाई गई डाइनैमिक रेंज प्रोफ़ाइल भी शामिल करनी होगी, ताकि कैमरा क्लाइंट को सबसे सही फ़ॉर्मैट के बारे में जानकारी मिल सके.
  • P010 फ़ॉर्मैट का इस्तेमाल करने वाली स्ट्रीम के लिए, स्ट्रीम कॉन्फ़िगरेशन के दौरान डाइनैमिक रेंज प्रोफ़ाइल वैल्यू के साथ काम करने की सुविधा उपलब्ध कराएं. इसके अलावा, लागू करने के लिए तय किए गए फ़ॉर्मैट (ImageFormat.PRIVATE) के साथ काम करने की सुविधा उपलब्ध कराएं.
  • डाइनैमिक रेंज प्रोफ़ाइल के आधार पर, कैमरा सेवा को सूचना देने से पहले, प्रोसेस किए गए Gralloc 4 बफ़र का स्टैटिक या डाइनैमिक मेटाडेटा बफ़र सेट करें.

Camera HAL में 10-बिट कैमरा आउटपुट के बारे में ज़्यादा जानने के लिए, metadata_definitions.xml में यह देखें:

10-बिट कैमरा आउटपुट के साथ काम करने वाले कैमरा एचएएल के रेफ़रंस के लिए, /hardware/google/camera/devices/EmulatedCamera/hwl देखें.

Validation

10-बिट कैमरा आउटपुट को लागू करने की पुष्टि करने के लिए, हमारा सुझाव है कि आप पुष्टि करने के इन तीन चरणों को पूरा करें. इससे यह भी पक्का किया जा सकेगा कि तीसरे पक्ष के ऐप्लिकेशन, इस सुविधा को चालू कर सकते हैं.

10-बिट कैमरा आउटपुट की पुष्टि करने के लिए, यह मान लिया जाता है कि डिवाइस पर एचडीआर (1000 से ज़्यादा निट्स वाला डिसप्ले) दिखाने की सुविधा उपलब्ध है. साथ ही, वीडियो देखने वाले ऐप्लिकेशन (उदाहरण के लिए, Google Photos) पर एचडीआर वीडियो चलाने की सुविधा उपलब्ध है.

एपीआई के फ़ंक्शन की सही तरीके से जांच करना

10-बिट कैमरा आउटपुट के लिए, एपीआई के फ़ंक्शन सही तरीके से काम कर रहे हैं या नहीं, यह जांचने के लिए, यहां दिए गए CTS, कैमरा ITS, और VTS टेस्ट चलाएं:

  • hardware/interfaces/camera/provider/aidl/vts/: इनमें बुनियादी तौर पर कॉन्टेंट ढूंढने, कॉन्फ़िगर करने, और स्ट्रीम करने की जांच की जाती है. साथ ही, यह भी देखा जाता है कि जहां ज़रूरी हो वहां एचडीआर मेटाडेटा मौजूद है या नहीं.
  • tests/camera/src/android/hardware/camera2/cts/: इससे यह पक्का किया जाता है कि कैमरा, AOSP API की खास बातों के मुताबिक काम करे.
  • cts/apps/CameraITS: इससे पुष्टि होती है कि एचडीआर प्रोफ़ाइल इस्तेमाल करने पर, वीडियो का सामान्य व्यवहार एक जैसा रहता है. खास टेस्ट tests/scene4/test_video_aspect_ratio_and_crop.py है.

नेटिव कैमरे और तीसरे पक्ष के ऐप्लिकेशन की तुलना करना

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

तुलना करने के लिए सुझाए गए सीन

नेटिव कैमरा ऐप्लिकेशन और तीसरे पक्ष के ऐप्लिकेशन के बीच तुलना करने के लिए, नेटिव कैमरा ऐप्लिकेशन और Camera2Video सैंपल ऐप्लिकेशन, दोनों का इस्तेमाल करके अलग-अलग सीन के वीडियो कैप्चर करें. तुलना करने के लिए, यहां कुछ सीन दिए गए हैं:

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

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

स्टैंडर्ड डाइनैमिक रेंज और हाई डाइनैमिक रेंज की तुलना करना

यह पक्का करने के लिए कि स्टैंडर्ड डाइनैमिक रेंज प्रोफ़ाइल के मुकाबले, 10-बिट डाइनैमिक रेंज प्रोफ़ाइल का इस्तेमाल करने से फ़ायदा हो रहा है, एसडीआर (कोई एचडीआर प्रोफ़ाइल नहीं) का इस्तेमाल करके कैप्चर किए गए वीडियो की तुलना एचडीआर वीडियो से करें. इससे यह पुष्टि की जा सकेगी कि कैप्चर किए गए वीडियो में एचडीआर के मुख्य पहलू दिख रहे हैं. एसडीआर और एचडीआर की तुलना करने के लिए, Camera2Video सैंपल ऐप्लिकेशन का इस्तेमाल करें. साथ ही, नेटिव कैमरा ऐप्लिकेशन और तीसरे पक्ष के ऐप्लिकेशन की तुलना करने के लिए, सुझाए गए सीन का इस्तेमाल करें.

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

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