লুক-আপ টেবিলের সাথে রঙ সঠিক (LUTs)

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

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

LUT বাস্তবায়নের জন্য, আপনার SDK সংস্করণটি অবশ্যই 36 বা তার বেশি হতে হবে।

একটি 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 কল করুন।

কোটলিন

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() ব্যবহার করতে পারেন।