2011年2月26日土曜日

[HOWTO] Nexus S GRI40 Color Fix

新しいAndroid 2.3.3(GRI40)を適用したらかなり色温度が低くなった印象で、海外の掲示板等でも話題となってますね。ある程度高い明るさ設定で使う場合はいいのですが、画面の明るさの自動調節モードを使っていると、かなり色温度が低い印象。

Kernelのソースもアップデートされましたので、早速眺めてみることに。主にvideo周りを中心です。
新しいソースを新たに落としておきましょう。
git clone git://android.git.kernel.org/kernel/samsung.git
ポイントは
drivers/video/samsung/s3cfb_tl2796.c
arch/arm/mach-s5pv210/herring-panel.c
あたりです。

herring-panel.c

        .color_adj = {
                /* Convert from 8500K to D65, assuming:
                 * Rx 0.66950, Ry 0.33100
                 * Gx 0.18800, Gy 0.74350
                 * Bx 0.14142, By 0.04258
                 */
                .mult = {
                        2318372099U,
                        2117262806U,
                        1729744557U,
                },
                .rshift = 31,
        },

怪しいですねw。herring_panel_dataストラクチャに新しく追加されたメンバですが、8500K to D65の部分色温度の調整に使う定数ですねこれは。というわけでドライバをながめると。

s3cfb-tl2796.c

        shift = lcd->data->color_adj.rshift;
        if (shift)
                for (c = 0; c < 3; c++)
                        bc[c] = bc[c] * lcd->data->color_adj.mult[c] >> shift;

新しいメンバを参照しているコードが。ビンゴでしょう。まぁ、その他もいろいろビデオ周りは修正されていますが、今回はこの部分のコードをコメントアウトしてビルド。

一応、色温度は高めで表示されるようになりましたが、試す人は自己責任でよろしく。

0 コメント:

コメントを投稿