লুক-আপ টেবিল (LUT) ব্যবহার করে রঙ সংশোধন করা

Android ডিভাইস জুড়ে বিভিন্ন HDR ক্ষমতার কারণে ফ্র্যাগমেন্টেড HDR ডিসপ্লে আউটপুট হতে পারে। লুক-আপ টেবিল (LUT) হল রঙ সংশোধন করার নতুন সমাধান যা এই অসঙ্গতি দূর করার জন্য ডিজাইন করা হয়েছে। এই অসঙ্গতি দূর করতে, প্রতিটি ডিভাইসের জন্য রঙ সংশোধন করার কোনও অনির্দিষ্ট মেকানিজমের উপর নির্ভর না করে, রঙ সংশোধন করার একটি উপায় নির্ধারণ করা হয়।

SDK-এর পূর্বশর্ত

LUT প্রয়োগ করতে, আপনার SDK ভার্সন অবশ্যই ৩৬ বা তার বেশি হতে হবে।

LUT প্রয়োগ করা

SurfaceControl-এ LUT প্রয়োগ করতে এইসব ধাপ অনুসরণ করুন:

  1. DisplayLuts ইনস্ট্যান্স তৈরি করুন।
  2. LUT ডেটা বাফার, LUT ডাইমেনশন এবং LUT-এর স্যাম্পেলিং কী সহ DisplayLuts.Entry ইনস্ট্যান্স তৈরি করুন। আরও তথ্যের জন্য, LutProperties ডকুমেন্টেশন দেখুন।
  3. LUT এন্ট্রি সেট করতে DisplayLuts#set(DisplayLuts.Entry luts) অথবা DisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second) কল করুন। ফ্রেমওয়ার্ক 1D LUT, 3D LUT অথবা 1D ও 3D LUT-এর কম্বিনেশন সাপোর্ট করে।
  4. লেয়ারে LUT প্রয়োগ করতে 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()

জাভা

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();

এছাড়াও, ডিভাইসের LUT প্রপার্টি বুঝতে এবং হার্ডওয়্যার কম্পোজার বেছে নেওয়া LUT ম্যানেজ করতে পারবে কিনা তা নির্ধারণ করতে আপনি OverlayProperties.getLutProperties() ব্যবহার করতে পারবেন।