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:
DisplayLutsörneği oluşturun.- LUT veri arabelleği, LUT boyutu ve LUT'nin örnekleme anahtarıyla
DisplayLuts.Entryörneği oluşturun. Daha fazla bilgi içinLutPropertiesdokü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#setLutsnumaralı 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.