تصحیح رنگ با جدول‌های مراجعه (LUT)

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

پیش‌نیازهای کیت توسعه نرم‌افزار

برای پیاده‌سازی جدول‌های مراجعه، نسخه کیت توسعه نرم‌افزار شما باید ۳۶ یا بالاتر باشد.

پیاده‌سازی جدول مراجعه

برای اعمال کردن «جدول مراجعه» به SurfaceControl، این مراحل را دنبال کنید:

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