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:
DisplayLuts
örneği oluşturun.- LUT veri arabelleği, LUT boyutu ve LUT örnekleme anahtarıyla
DisplayLuts.Entry
örnek oluşturun. Daha fazla bilgi içinLutProperties
dokümanlarına bakın. - LUT girişlerini ayarlamak için
DisplayLuts#set(DisplayLuts.Entry luts)
veyaDisplayLuts#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. - 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.