Arama tablolarıyla (LUT) renk düzeltme

Android cihazlar arasındaki farklı HDR özellikleri, HDR ekran çıkışlarının parçalı olmasına neden olabilir. Arama tablosu (LUT), bu tutarsızlığı çözmek için tasarlanmış yeni bir renk düzeltme çözümüdür. Bu tutarsızlık, tanımlanmamış cihaz başına 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 36 veya daha yeni olmalıdır.

LUT uygulama

SurfaceControl'a LUT uygulamak için aşağıdaki adımları uygulayın:

  1. DisplayLuts örneği oluşturun.
  2. LUT veri arabelleği, LUT boyutu ve LUT'un örnekleme anahtarı ile DisplayLuts.Entry örneği oluşturun. Daha fazla bilgi için LutProperties belgelerine bakın.
  3. LUT girişlerini ayarlamak için DisplayLuts#set(DisplayLuts.Entry luts) veya DisplayLuts#set(DisplayLuts.Entry first, DisplayLuts.Entry second) yöntemini çağırın. Çerçeve; 1D LUT, 3D LUT veya 1D ve 3D LUT'ların bir kombinasyonunu destekler.
  4. LUT'ları katmana uygulamak için SurfaceControl.Transaction#setLuts yöntemini çağırı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 Hardware Composer'ın seçilen LUT'u işleyip işleyemeyeceğini belirlemek için OverlayProperties.getLutProperties() yöntemini de kullanabilirsiniz.