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

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

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

एलयूटी लागू करने के लिए, आपके एसडीके टूल का वर्शन 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() का भी इस्तेमाल किया जा सकता है.