رنگ صحیح با جداول جستجو (LUTs)

قابلیت‌های HDR متفاوت در دستگاه‌های اندروید می‌تواند منجر به خروجی‌های نمایش HDR چندپاره شود. جدول جستجو (LUT) یک راه‌حل جدید برای اصلاح رنگ است که برای حل این ناهماهنگی طراحی شده است. این ناهماهنگی با تجویز روشی برای اصلاح رنگ، به جای واگذاری به یک مکانیسم اصلاح رنگ تعریف نشده برای هر دستگاه، حل می‌شود.

پیش‌نیازهای SDK

برای پیاده‌سازی LUTها، نسخه SDK شما باید ۳۶ یا بالاتر باشد.

پیاده‌سازی LUT

برای اعمال LUT به SurfaceControl مراحل زیر را دنبال کنید:

  1. یک نمونه DisplayLuts ایجاد کنید.
  2. نمونه(های) DisplayLuts.Entry با بافر داده LUT، بُعد LUT و کلید نمونه‌برداری LUT ایجاد کنید. برای اطلاعات بیشتر، به مستندات LutProperties مراجعه کنید.
  3. برای تنظیم ورودی‌های LUT، DisplayLuts#set(DisplayLuts.Entry luts) یا DisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second) فراخوانی کنید. این چارچوب از LUT یک بعدی، LUT سه بعدی یا ترکیبی از 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();

همچنین می‌توانید از OverlayProperties.getLutProperties() برای درک ویژگی‌های LUT دستگاه استفاده کنید و تعیین کنید که آیا Hardware Composer می‌تواند LUT انتخاب شده را مدیریت کند یا خیر.