قابلیتهای HDR متفاوت در دستگاههای اندروید میتواند منجر به خروجیهای نمایش HDR چندپاره شود. جدول جستجو (LUT) یک راهحل جدید برای اصلاح رنگ است که برای حل این ناهماهنگی طراحی شده است. این ناهماهنگی با تجویز روشی برای اصلاح رنگ، به جای واگذاری به یک مکانیسم اصلاح رنگ تعریف نشده برای هر دستگاه، حل میشود.
پیشنیازهای SDK
برای پیادهسازی LUTها، نسخه SDK شما باید ۳۶ یا بالاتر باشد.
پیادهسازی LUT
برای اعمال 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 انتخاب شده را مدیریت کند یا خیر.