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