قابلیتهای متفاوت HDR در دستگاههای Android میتواند منجر به خروجیهای نمایشگر HDR تکهتکه شود. جدول مراجعه (LUT) راهکار جدیدی برای اصلاح رنگ است که برای حل این ناهماهنگی طراحی شده است. این ناسازگاری با تجویز روشی برای تصحیح رنگ، بهجای واگذاری به سازوکار تصحیح رنگ تعریفنشده برای هر دستگاه، حل میشود.
پیشنیازهای کیت توسعه نرمافزار
برای پیادهسازی جدولهای مراجعه، نسخه کیت توسعه نرمافزار شما باید ۳۶ یا بالاتر باشد.
پیادهسازی جدول مراجعه
برای اعمال کردن «جدول مراجعه» به SurfaceControl، این مراحل را دنبال کنید:
- نمونه
DisplayLutsایجاد کنید. DisplayLuts.Entryنمونه با میانگیر دادههای «جدول مراجعه»، بُعد «جدول مراجعه»، و کلید نمونهگیری «جدول مراجعه» ایجاد کنید. برای اطلاعات بیشتر، به اسنادLutPropertiesمراجعه کنید.- برای تنظیم ورودیهای LUT،
DisplayLuts#set(DisplayLuts.Entry luts)یاDisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second)را فراخوانی کنید. این چارچوب از جدول مراجعه یکبعدی، جدول مراجعه سهبعدی، یا ترکیبی از جدولهای مراجعه یکبعدی و سهبعدی پشتیبانی میکند. - برای اعمال 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();
همچنین میتوانید از OverlayProperties.getLutProperties() برای درک ویژگیهای LUT دستگاه استفاده کنید و تعیین کنید که آیا Hardware Composer میتواند LUT انتخابشده را مدیریت کند یا نه.