लुक-अप टेबल (एलयूटी) की मदद से, रंग ठीक करना

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

एसडीके टूल इस्तेमाल करने की ज़रूरी शर्तें

एलयूटी लागू करने के लिए, आपके SDK टूल का वर्शन 36 या इसके बाद का होना चाहिए.

एलयूटी लागू करना

किसी SurfaceControl पर एलयूटी लागू करने के लिए, यह तरीका अपनाएं:

  1. DisplayLuts इंस्टेंस बनाएं.
  2. एलयूटी डेटा बफ़र, एलयूटी डाइमेंशन, और एलयूटी की सैंपलिंग कुंजी का इस्तेमाल करके, DisplayLuts.Entry इंस्टेंस बनाएं. ज़्यादा जानकारी के लिए, LutProperties दस्तावेज़ देखें.
  3. एलयूटी एंट्री सेट करने के लिए, DisplayLuts#set(DisplayLuts.Entry luts) या DisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second) को कॉल करें. यह फ़्रेमवर्क, 1D एलयूटी, 3D एलयूटी या 1D और 3D एलयूटी के कॉम्बिनेशन के साथ काम करता है.
  4. लेयर पर एलयूटी लागू करने के लिए, 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() का इस्तेमाल किया जा सकता है. इससे यह भी पता लगाया जा सकता है कि हार्डवेयर कंपोज़र, चुनी गई एलयूटी को मैनेज कर सकता है या नहीं.