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

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

پیش نیازهای SDK

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

یک 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) را فراخوانی کنید. این فریم ورک از 1D LUT، 3D LUT یا ترکیبی از LUT های 1D و 3D پشتیبانی می کند.
  4. SurfaceControl.Transaction#setLuts فراخوانی کنید تا LUT ها را روی لایه اعمال کنید.

کاتلین

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 انتخاب شده را مدیریت کند یا خیر.