रंग प्रबंधन

एंड्रॉइड 8.1 और उच्चतर में रंग प्रबंधन के लिए समर्थन शामिल है जिसका उपयोग डिस्प्ले प्रौद्योगिकियों में लगातार अनुभव प्रदान करने के लिए किया जा सकता है। एंड्रॉइड पर चलने वाले ऐप्स किसी डिस्प्ले डिवाइस से अधिकतम लाभ प्राप्त करने के लिए वाइड-गैमट डिस्प्ले की पूर्ण क्षमताओं तक पहुंच सकते हैं।

पिछले एंड्रॉइड रिलीज़ में रंग प्रबंधन समर्थन शामिल नहीं था और इसके बजाय सामग्री और डिस्प्ले के संगत होने पर भरोसा किया गया था (एक लक्ष्य जो अक्सर टीवी उद्योग द्वारा सहायता प्राप्त होता है)। हालाँकि, हाल की डिस्प्ले प्रौद्योगिकियाँ बहुत बड़े सरगम ​​डिस्प्ले की अनुमति देती हैं जो मौजूदा सामग्री को अपेक्षित रूप से प्रदर्शित नहीं करती हैं। एंड्रॉइड 8.1 और उच्चतर के साथ, जो डिवाइस वाइड-गैमट डिस्प्ले (उदाहरण के लिए, एक्टिव-मैट्रिक्स ऑर्गेनिक लाइट-एमिटिंग डायोड या AMOLED, कुछ एलसीडी) का उपयोग करते हैं, वे ऐप्स से वाइड-गैमट सामग्री देख सकते हैं।

डिवाइस समर्थन निर्धारित करें

एंड्रॉइड 8.1 या उच्चतर पर चलने वाले चौड़े रंग वाले डिस्प्ले वाले उपकरणों को रंग प्रबंधन (चौड़े रंग) का समर्थन करना चाहिए। इस सुविधा को सक्षम करने से पहले, सुनिश्चित करें कि डिवाइस निम्नलिखित आवश्यकताओं को पूरा करता है:

  • डिवाइस डिस्प्ले हार्डवेयर आवश्यकताओं को पूरा करता है, जिसमें एक अच्छी तरह से विशेषता वाला डिस्प्ले शामिल है जो डिस्प्ले-पी 3 कलरस्पेस का समर्थन करता है। यदि डिस्प्ले इस आवश्यकता को पूरा नहीं करता है, तो रंग प्रबंधन सक्षम न करें। सीपीयू और जीपीयू प्रभाव को कम करने के लिए, डिस्प्ले पाइपलाइन में विस्तारित एसआरजीबी और एचडीआर10 के लिए समर्थन वांछनीय है।
  • डिवाइस फ़ैक्टरी अंशांकन प्रक्रिया का समर्थन करता है जो प्रदर्शन व्यवहार में विनिर्माण भिन्नता को समायोजित करने के लिए अंशांकन डेटा (डिवाइस पर संग्रहीत) उत्पन्न करता है। कम से कम, अंशांकन डेटा को डिस्प्ले को एसआरजीबी सामग्री और डी65 और डी73 सफेद बिंदुओं को सटीक रूप से प्रदर्शित करने की अनुमति देनी चाहिए।

यदि ये आवश्यकताएं पूरी होती हैं, तो आप डिवाइस के लिए रंग प्रबंधन सुविधा सक्षम कर सकते हैं।

रंग प्रबंधन लागू करें

रंग प्रबंधन को लागू करने के लिए, पहले रंग मोड को समझने और हार्डवेयर पर उन मोड को लागू करने के लिए हार्डवेयर कंपोज़र 2 (HWC2) ड्राइवर को अपडेट करें। विशेष रूप से, HWC2 कंपोजर को HWCDisplay::GetColorModes का उपयोग करके डिस्प्ले-पी3 और sRGB रंग मोड की रिपोर्ट करनी होगी।

इसके बाद, ओपनजीएल कलर स्पेस को एचएएल डेटा स्पेस में अनुवाद करने के लिए आवश्यक ओपनजीएल एक्सटेंशन और लाइब्रेरी समर्थन सक्षम करें। आवश्यक ओपनजीएल एक्सटेंशन में शामिल हैं:

  • EGL_EXT_pixel_format_float । ऐप्स को 16-बिट फ़्लोट रंग घटकों के साथ प्रस्तुत करने योग्य EGLSurfaces बनाने की अनुमति देता है। प्राथमिकता: उच्च (उम्मीद है कि यह वाइड-रंग जागरूक ऐप्स के लिए डिफ़ॉल्ट पिक्सेल प्रारूप है)। ड्राइवर समर्थन की आवश्यकता है.
  • EGL_KHR_gl_colorspace । उन ऐप्स के लिए जो डिस्प्ले डिवाइस पर sRGB रेंडरिंग को अधिक आसानी से प्राप्त करने के लिए sRGB प्रारूप डिफ़ॉल्ट फ़्रेमबफ़र्स का उपयोग करना चाहते हैं, यह एक्सटेंशन EGLSurfaces बनाने की अनुमति देता है जिसे उस क्षमता का समर्थन करने वाले OpenGL संदर्भों द्वारा sRGB में प्रस्तुत किया जाएगा। sRGB व्यवहार के लिए ड्राइवर समर्थन की आवश्यकता है।

Android निम्नलिखित वैकल्पिक एक्सटेंशन भी प्रदान करता है:

  • EGL_EXT_colorspace_scrgb_linear . यह एक्सटेंशन एक नया कलर स्पेस विकल्प, scRGB प्रदान करता है, जिसे ऐप्स EGLSurface बनाते समय चुन सकते हैं। ScRGB रंग स्थान एक रैखिक डिस्प्ले संदर्भित स्थान को sRGB के समान सफेद बिंदु और रंग प्राइमरी के साथ परिभाषित करता है (और इस प्रकार यह sRGB के साथ पिछड़ा संगत है)। इसके लिए ड्राइवर समर्थन की आवश्यकता नहीं होनी चाहिए और इसे एंड्रॉइड ईजीएल रैपर में लागू किया जा सकता है। उपयोगी होने के लिए, इस एक्सटेंशन को 16-बिट फ़्लोटिंग पॉइंट (FP16) के समर्थन की आवश्यकता है।
  • EGL_EXT_gl_colorspace_display_p3 और EGL_EXT_gl_colorspace_display_p3_linear । उन ऐप्स के लिए जो डिस्प्ले डिवाइस पर sRGB रेंडरिंग को अधिक आसानी से प्राप्त करने के लिए डिस्प्ले-पी 3 प्रारूप डिफ़ॉल्ट फ़्रेमबफ़र्स का उपयोग करना चाहते हैं, यह एक्सटेंशन ईजीएल सर्फेस बनाने की अनुमति देता है जिसे उस क्षमता का समर्थन करने वाले ओपनजीएल संदर्भों द्वारा डिस्प्ले-पी 3 में प्रस्तुत किया जाएगा। इसे ईजीएल ड्राइवर रैपर में लागू किया जा सकता है।
  • VK_EXT_swapchain_colorspace (वल्कन)। ऐप्स को उनके द्वारा उपयोग किए जा रहे रंग स्थान के साथ स्वैप श्रृंखलाओं को टैग करने में सक्षम बनाता है। इसमें DCI-P3, डिस्प्ले-P3, AdobeRGB और BT2020 जैसे कई सामान्य रंग स्थान शामिल हैं।

अनुकूलन

आप DCI-P3, AdobeRGB, Rec709, और Rec2020 जैसे विभिन्न रंग मानकों के लिए समर्थन शामिल करके रंग प्रबंधन सुविधा को अनुकूलित कर सकते हैं। अन्य अनुकूलन में शामिल हैं:

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

परिक्षण

रंग प्रबंधन का परीक्षण करने के लिए, opengl/tests में निम्नलिखित संसाधनों का उपयोग करें:

  • gl2_basic एक सरल ओपनजीएल डेमो है जो डिस्प्ले-पी3 कलरस्पेस का अनुरोध करता है।
  • आवश्यक एक्सटेंशन और कॉन्फ़िगरेशन समर्थन के लिए EGL_test परीक्षण (10:10:10:2 और FP16)।
  • test_wide_color SurfaceFlinger की तरह ही एक सतह बनाता है (उदाहरण के लिए, कॉन्फ़िगरेशन, रंग स्थान और पिक्सेल प्रारूप)।

संदर्भ कार्यान्वयन

संदर्भ कार्यान्वयन के लिए, frameworks/native देखें। शीर्षकों के लिए, देखें: