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'ları uygulamak için SDK sürümünüzün 36 veya daha yüksek olması gerekir.

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'nin örnekleme anahtarıyla DisplayLuts.Entry örneği 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 numaralı telefonu 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 birleştiricinin seçilen LUT'yi işleyip işleyemeyeceğini belirlemek için OverlayProperties.getLutProperties() aracını da kullanabilirsiniz.