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:
DisplayLutsörneği oluşturun.- LUT veri arabelleği, LUT boyutu ve LUT'un örnekleme anahtarı ile
DisplayLuts.Entryörneği oluşturun. Daha fazla bilgi içinLutPropertiesbelgelerine bakın. - LUT girişlerini ayarlamak için
DisplayLuts#set(DisplayLuts.Entry luts)veyaDisplayLuts#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. - LUT'ları katmana uygulamak için
SurfaceControl.Transaction#setLutsyö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.