Arama tablolarıyla (LUT) renk düzeltme

Android cihazlardaki farklı HDR özellikleri, parçalanmış HDR ekran çıkışlarına neden olabilir. Arama tablosu (LUT), bu tutarsızlığı gidermek için tasarlanmış yeni bir renk düzeltme çözümüdür. Bu tutarsızlık, cihaza özel tanımlanmamış bir renk düzeltme mekanizmasına devretmek yerine renk düzeltme yöntemini belirleyerek çözülür.

SDK ön koşulları

LUT'leri uygulamak için SDK sürümünüz 36 veya sonraki bir sürüm olmalıdır.

LUT uygulama

SurfaceControl öğesine LUT uygulamak için şu adımları izleyin:

  1. DisplayLuts örneği oluşturun.
  2. LUT veri arabelleği, LUT boyutu ve LUT örnekleme anahtarıyla DisplayLuts.Entry örnek oluşturun. Daha fazla bilgi için LutProperties dokümanlarına bakın.
  3. LUT girişlerini ayarlamak için DisplayLuts#set(DisplayLuts.Entry luts) veya DisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second) numaralı telefonu arayın. Çerçeve; 1D LUT, 3D LUT veya 1D ve 3D LUT'ların kombinasyonunu destekler.
  4. LUT'ları katmana uygulamak için SurfaceControl.Transaction#setLuts'ı arayın.

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();

Cihazın LUT özelliklerini anlamak ve Donanım Oluşturucu'nun seçilen LUT'yi işleyip işleyemeyeceğini belirlemek için OverlayProperties.getLutProperties() aracını da kullanabilirsiniz.