قد تؤدي إمكانات HDR المختلفة على أجهزة Android إلى تجزئة مخرجات عرض HDR. جدول البحث (LUT) هو حلّ جديد لتصحيح الألوان مصمّم لحلّ هذا التناقض. يتم حلّ هذا التناقض من خلال تحديد طريقة لتصحيح الألوان، بدلاً من تفويضها إلى آلية غير محدّدة لتصحيح الألوان على مستوى كل جهاز.
المتطلبات الأساسية لحِزم تطوير البرامج (SDK)
لاستخدام جداول البحث، يجب أن يكون إصدار حزمة تطوير البرامج (SDK) هو 36 أو إصدارًا أحدث.
تنفيذ جدول بحث
اتّبِع الخطوات التالية لتطبيق جدول بحث الألوان على SurfaceControl:
- أنشئ مثيلاً من
DisplayLuts. - أنشئ مثيلاً واحدًا أو أكثر من
DisplayLuts.Entryباستخدام مخزن بيانات لوحة الألوان، وبُعد لوحة الألوان، ومفتاح أخذ العينات للوحة الألوان. لمزيد من المعلومات، يُرجى الاطّلاع على مستنداتLutProperties. - اتّصِل على
DisplayLuts#set(DisplayLuts.Entry luts)أوDisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second)لضبط إدخالات جدول البحث. يتوافق إطار العمل مع لوحات ألوان أحادية الأبعاد أو ثلاثية الأبعاد أو مزيج من لوحات الألوان الأحادية والثلاثية الأبعاد. - اتّصِل بالرقم
SurfaceControl.Transaction#setLutsلتطبيق جداول البحث على الطبقة.
Kotlin
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()
Java
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 التعامل مع لوحة الألوان المحدّدة.