অ্যান্ড্রয়েড ডিভাইস জুড়ে বিভিন্ন HDR ক্ষমতা খণ্ডিত HDR ডিসপ্লে আউটপুট হতে পারে। একটি লুক-আপ টেবিল (LUT) হল একটি নতুন রঙ সংশোধন সমাধান যা এই অসঙ্গতি সমাধানের জন্য ডিজাইন করা হয়েছে। এই অসঙ্গতিটি একটি অনির্ধারিত প্রতি-ডিভাইস রঙ সংশোধন পদ্ধতিতে অর্পণ করার পরিবর্তে রঙ সঠিক করার একটি উপায় নির্ধারণ করে সমাধান করা হয়।
SDK পূর্বশর্ত
LUTs প্রয়োগ করতে, আপনার SDK সংস্করণটি 36 বা তার বেশি হতে হবে।
একটি LUT বাস্তবায়ন
একটি SurfaceControl একটি LUT প্রয়োগ করতে এই পদক্ষেপগুলি অনুসরণ করুন:
- একটি
DisplayLutsউদাহরণ তৈরি করুন। - LUT ডেটা বাফার, LUT মাত্রা এবং LUT-এর স্যাম্পলিং কী দিয়ে
DisplayLuts.Entry. Entry উদাহরণ(গুলি) তৈরি করুন। আরও তথ্যের জন্য,LutPropertiesডকুমেন্টেশন দেখুন। - LUT এন্ট্রি সেট করতে
DisplayLuts#set(DisplayLuts.Entry luts)অথবাDisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second)কল করুন। ফ্রেমওয়ার্ক 1D LUT, 3D LUT, বা 1D এবং 3D LUT-এর সংমিশ্রণ সমর্থন করে। - স্তরে LUTs প্রয়োগ করতে
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 বৈশিষ্ট্যগুলি বোঝার জন্য OverlayProperties.getLutProperties() ব্যবহার করতে পারেন এবং হার্ডওয়্যার কম্পোজার নির্বাচিত LUT পরিচালনা করতে পারে কিনা তা নির্ধারণ করতে পারেন।