Android डिवाइसों में एचडीआर की अलग-अलग सुविधाएं होने की वजह से, एचडीआर डिसप्ले आउटपुट अलग-अलग हो सकते हैं. लुक-अप टेबल (एलयूटी), रंग को ठीक करने का एक नया तरीका है. इसे इस समस्या को हल करने के लिए डिज़ाइन किया गया है. इस समस्या को ठीक करने के लिए, रंग में सुधार करने का तरीका तय किया गया है. इसके बजाय, हर डिवाइस के लिए रंग में सुधार करने की सुविधा को किसी अनडिफ़ाइंड तरीके से डेलिगेट किया गया है.
एसडीके टूल इस्तेमाल करने की ज़रूरी शर्तें
एलयूटी लागू करने के लिए, आपके SDK टूल का वर्शन 36 या इसके बाद का होना चाहिए.
एलयूटी लागू करना
किसी SurfaceControl
पर एलयूटी लागू करने के लिए, यह तरीका अपनाएं:
DisplayLuts
इंस्टेंस बनाएं.- एलयूटी डेटा बफ़र, एलयूटी डाइमेंशन, और एलयूटी की सैंपलिंग कुंजी का इस्तेमाल करके,
DisplayLuts.Entry
इंस्टेंस बनाएं. ज़्यादा जानकारी के लिए,LutProperties
दस्तावेज़ देखें. - एलयूटी एंट्री सेट करने के लिए,
DisplayLuts#set(DisplayLuts.Entry luts)
याDisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second)
को कॉल करें. यह फ़्रेमवर्क, 1D एलयूटी, 3D एलयूटी या 1D और 3D एलयूटी के कॉम्बिनेशन के साथ काम करता है. - लेयर पर एलयूटी लागू करने के लिए,
SurfaceControl.Transaction#setLuts
को कॉल करें.
Kotlin
val sc = SurfaceControl.Builder().build()
val luts = DisplayLuts()
val entry = DisplayLuts.Entry(
floatArrayOf(0.5f, 0.5f, 0.5f, 0.5f),
LutProperties.ONE_DIMENSION,
LutProperties.SAMPLING_KEY_MAX_RGB
)
luts.set(entry)
SurfaceControl.Transaction().setLuts(sc, luts).apply()
Java
SurfaceControl sc = new SurfaceControl.Builder().build();
DisplayLuts luts = new DisplayLuts();
DisplayLuts.Entry entry = new DisplayLuts.Entry(
new float[]{0.5f, 0.5f, 0.5f, 0.5f},
LutProperties.ONE_DIMENSION,
LutProperties.SAMPLING_KEY_MAX_RGB
);
luts.set(entry);
new SurfaceControl.Transaction().setLuts(sc, luts).apply();
डिवाइस की एलयूटी प्रॉपर्टी के बारे में जानने के लिए, OverlayProperties.getLutProperties()
का इस्तेमाल किया जा सकता है. इससे यह भी पता लगाया जा सकता है कि हार्डवेयर कंपोज़र, चुनी गई एलयूटी को मैनेज कर सकता है या नहीं.