Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 753122bc authored by Sally Qi's avatar Sally Qi Committed by Android (Google) Code Review
Browse files

Merge "[SilkFX] update lut demo" into main

parents 5f4b6700 e2a3c832
Loading
Loading
Loading
Loading
+198 −6
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@ class LutTestActivity : AppCompatActivity() {
        surfaceView.holder.addCallback(object : SurfaceHolder.Callback {
            override fun surfaceCreated(holder: SurfaceHolder) {
                createChildSurfaceControl()
                loadImage("gainmaps/sunflower.jpg", holder)
                loadImage("gainmaps/lamps.jpg", holder)
                currentBitmap?.let {
                    createAndRenderHardwareBuffer(holder, it, getCurrentLut())
                }
@@ -119,9 +119,199 @@ class LutTestActivity : AppCompatActivity() {
    private fun get3DLut(): DisplayLuts {
        var luts = DisplayLuts()
        val entry = DisplayLuts.Entry(
            floatArrayOf(0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
                         0f, 0f, 0f, 0f, 0f, 0f, 0f, 0f,
                         1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f),
            floatArrayOf(
            // ----------------------------------------------------------------------------------------------------
            // RED Channel Values (125 values: R_out[i][j][k] where k varies fastest, then j, then i)
            //
            // i=0 (Input Red index 0)
            //   j=0 (Input Green index 0)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // (k=0,1,2,3,4) -> R_out values for R[0][0][k]
            //   j=1 (Input Green index 1)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // (k=0,1,2,3,4) -> R_out values for R[0][1][k]
            //   j=2 (Input Green index 2)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // (k=0,1,2,3,4) -> R_out values for R[0][2][k]
            //   j=3 (Input Green index 3)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // (k=0,1,2,3,4) -> R_out values for R[0][3][k]
            //   j=4 (Input Green index 4)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // (k=0,1,2,3,4) -> R_out values for R[0][4][k]

            // i=1 (Input Red index 1)
            //   j=0 (Input Green index 0)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f, // (k=0,1,2,3,4) -> R_out values for R[1][0][k]
            //   j=1 (Input Green index 1)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f, // (k=0,1,2,3,4) -> R_out values for R[1][1][k]
            //   j=2 (Input Green index 2)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f, // (k=0,1,2,3,4) -> R_out values for R[1][2][k]
            //   j=3 (Input Green index 3)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f, // (k=0,1,2,3,4) -> R_out values for R[1][3][k]
            //   j=4 (Input Green index 4)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f, // (k=0,1,2,3,4) -> R_out values for R[1][4][k]

            // i=2 (Input Red index 2)
            //   j=0 (Input Green index 0)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f, // (k=0,1,2,3,4) -> R_out values for R[2][0][k]
            //   j=1 (Input Green index 1)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f, // (k=0,1,2,3,4) -> R_out values for R[2][1][k]
            //   j=2 (Input Green index 2)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f, // (k=0,1,2,3,4) -> R_out values for R[2][2][k]
            //   j=3 (Input Green index 3)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f, // (k=0,1,2,3,4) -> R_out values for R[2][3][k]
            //   j=4 (Input Green index 4)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f, // (k=0,1,2,3,4) -> R_out values for R[2][4][k]

            // i=3 (Input Red index 3)
            //   j=0 (Input Green index 0)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f, // (k=0,1,2,3,4) -> R_out values for R[3][0][k]
            //   j=1 (Input Green index 1)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f, // (k=0,1,2,3,4) -> R_out values for R[3][1][k]
            //   j=2 (Input Green index 2)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f, // (k=0,1,2,3,4) -> R_out values for R[3][2][k]
            //   j=3 (Input Green index 3)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f, // (k=0,1,2,3,4) -> R_out values for R[3][3][k]
            //   j=4 (Input Green index 4)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f, // (k=0,1,2,3,4) -> R_out values for R[3][4][k]

            // i=4 (Input Red index 4)
            //   j=0 (Input Green index 0)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f, // (k=0,1,2,3,4) -> R_out values for R[4][0][k]
            //   j=1 (Input Green index 1)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f, // (k=0,1,2,3,4) -> R_out values for R[4][1][k]
            //   j=2 (Input Green index 2)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f, // (k=0,1,2,3,4) -> R_out values for R[4][2][k]
            //   j=3 (Input Green index 3)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f, // (k=0,1,2,3,4) -> R_out values for R[4][3][k]
            //   j=4 (Input Green index 4)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f, // (k=0,1,2,3,4) -> R_out values for R[4][4][k]

            // ----------------------------------------------------------------------------------------------------
            // GREEN Channel Values (125 values: G_out[i][j][k])
            // Starts at index 125 in the 1D array.
            // The G_out value depends on 'j' index, irrespective of 'i' or 'k'.
            //
            // i=0 (Input Red index 0)
            //   j=0 (Input Green index 0)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f, // (k=0,1,2,3,4) -> G_out values for G[0][0][k]
            //   j=1 (Input Green index 1)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f, // (k=0,1,2,3,4) -> G_out values for G[0][1][k]
            //   j=2 (Input Green index 2)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f, // (k=0,1,2,3,4) -> G_out values for G[0][2][k]
            //   j=3 (Input Green index 3)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f, // (k=0,1,2,3,4) -> G_out values for G[0][3][k]
            //   j=4 (Input Green index 4)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f, // (k=0,1,2,3,4) -> G_out values for G[0][4][k]

            // i=1 (Input Red index 1)
            //   j=0 (Input Green index 0)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
            //   j=1 (Input Green index 1)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f,
            //   j=2 (Input Green index 2)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
            //   j=3 (Input Green index 3)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f,
            //   j=4 (Input Green index 4)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f,

            // i=2 (Input Red index 2)
            //   j=0 (Input Green index 0)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
            //   j=1 (Input Green index 1)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f,
            //   j=2 (Input Green index 2)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
            //   j=3 (Input Green index 3)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f,
            //   j=4 (Input Green index 4)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f,

            // i=3 (Input Red index 3)
            //   j=0 (Input Green index 0)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
            //   j=1 (Input Green index 1)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f,
            //   j=2 (Input Green index 2)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
            //   j=3 (Input Green index 3)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f,
            //   j=4 (Input Green index 4)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f,

            // i=4 (Input Red index 4)
            //   j=0 (Input Green index 0)
            0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
            //   j=1 (Input Green index 1)
            0.25f, 0.25f, 0.25f, 0.25f, 0.25f,
            //   j=2 (Input Green index 2)
            0.5f, 0.5f, 0.5f, 0.5f, 0.5f,
            //   j=3 (Input Green index 3)
            0.75f, 0.75f, 0.75f, 0.75f, 0.75f,
            //   j=4 (Input Green index 4)
            1.0f, 1.0f, 1.0f, 1.0f, 1.0f,

            // ----------------------------------------------------------------------------------------------------
            // BLUE Channel Values (125 values, B_out[i][j][k])
            // Starts at index 250 in the 1D array.
            // The B_out value depends on 'k' index, irrespective of 'i' or 'j'.
            //
            // i=0 (Input Red index 0)
            //   j=0 (Input Green index 0)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f, // (k=0,1,2,3,4) -> B_out values for B[0][0][k]
            //   j=1 (Input Green index 1)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f, // (k=0,1,2,3,4) -> B_out values for B[0][1][k]
            //   j=2 (Input Green index 2)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f, // (k=0,1,2,3,4) -> B_out values for B[0][2][k]
            //   j=3 (Input Green index 3)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f, // (k=0,1,2,3,4) -> B_out values for B[0][3][k]
            //   j=4 (Input Green index 4)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f, // (k=0,1,2,3,4) -> B_out values for B[0][4][k]

            // i=1 (Input Red index 1)
            //   j=0 (Input Green index 0)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=1 (Input Green index 1)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=2 (Input Green index 2)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=3 (Input Green index 3)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=4 (Input Green index 4)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,

            // i=2 (Input Red index 2)
            //   j=0 (Input Green index 0)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=1 (Input Green index 1)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=2 (Input Green index 2)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=3 (Input Green index 3)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=4 (Input Green index 4)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,

            // i=3 (Input Red index 3)
            //   j=0 (Input Green index 0)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=1 (Input Green index 1)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=2 (Input Green index 2)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=3 (Input Green index 3)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=4 (Input Green index 4)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,

            // i=4 (Input Red index 4)
            //   j=0 (Input Green index 0)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=1 (Input Green index 1)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=2 (Input Green index 2)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=3 (Input Green index 3)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f,
            //   j=4 (Input Green index 4)
            0.0f, 0.25f, 0.5f, 0.75f, 1.0f),
            LutProperties.THREE_DIMENSION,
            LutProperties.SAMPLING_KEY_RGB
        )
@@ -132,9 +322,11 @@ class LutTestActivity : AppCompatActivity() {
    private fun get1DLut(): DisplayLuts {
        var luts = DisplayLuts()
        val entry = DisplayLuts.Entry(
            floatArrayOf(0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f),
            floatArrayOf(0.778345f, 0.778345f, 0.79628f, 0.806962f, 0.814628f, 0.820624f, 0.825556f, 0.829749f, 0.833398f, 0.83663f, 0.839532f, 0.842166f, 0.844578f, 0.846803f, 0.848868f, 0.850795f, 0.852601f, 0.854302f, 0.855908f, 0.85743f, 0.858877f, 0.860255f, 0.861571f, 0.862831f, 0.864039f, 0.865199f, 0.866315f, 0.86739f, 0.868427f, 0.869429f, 0.870399f, 0.871337f, 0.872247f, 0.873129f, 0.873986f, 0.874819f, 0.87563f, 0.876419f, 0.877187f, 0.877936f, 0.878667f, 0.87938f, 0.880077f, 0.880758f, 0.881424f, 0.882075f, 0.882712f, 0.883336f, 0.883948f, 0.884547f, 0.885135f, 0.885711f, 0.886276f, 0.886831f, 0.887376f, 0.887912f, 0.888438f, 0.888955f, 0.889463f, 0.889963f, 0.890454f, 0.890938f, 0.891414f, 0.891883f, 0.892345f, 0.8928f, 0.893248f, 0.89369f, 0.894125f, 0.894554f,
                         0.894977f, 0.895394f, 0.895806f, 0.896212f, 0.896613f, 0.897009f, 0.897399f, 0.897785f, 0.898166f, 0.898542f, 0.898913f, 0.89928f, 0.899643f, 0.900002f, 0.900356f, 0.900706f, 0.901052f, 0.901395f, 0.901733f, 0.902068f, 0.9024f, 0.902727f, 0.903052f, 0.903373f, 0.90369f, 0.904005f, 0.904316f, 0.904624f, 0.904929f, 0.905231f, 0.90553f, 0.905826f, 0.906119f, 0.90641f, 0.906698f, 0.906983f, 0.907266f, 0.907546f, 0.907823f, 0.908098f, 0.908371f, 0.908641f,
                         0.998874f, 0.998891f, 0.998907f, 0.998924f, 0.998941f, 0.998957f, 0.998974f, 0.99899f, 0.999007f, 0.999023f, 0.99904f, 0.999056f, 0.999073f, 0.999089f, 0.999106f, 0.999122f, 0.999139f, 0.999155f, 0.999172f, 0.999188f, 0.999204f, 0.999221f, 0.999237f, 0.999254f, 0.99927f, 0.999286f, 0.999303f, 0.999319f, 0.999336f, 0.999352f, 0.999368f, 0.999385f, 0.999401f, 0.999417f, 0.999434f, 0.99945f, 0.999466f, 0.999483f, 0.999499f, 0.999515f, 0.999531f, 0.999548f, 0.999564f, 0.99958f, 0.999596f, 0.999613f, 0.999629f, 0.999645f, 0.999661f, 0.999678f, 0.999694f, 0.99971f, 0.999726f, 0.999742f, 0.999758f, 0.999775f, 0.999791f, 0.999807f, 0.999823f, 0.999839f, 0.999855f, 0.999871f, 0.999888f, 0.999904f, 0.99992f, 0.999936f, 0.999952f, 0.999968f, 0.999984f, 1.0f),
            LutProperties.ONE_DIMENSION,
            LutProperties.SAMPLING_KEY_RGB
            LutProperties.SAMPLING_KEY_MAX_RGB
        )
        luts.set(entry)
        return luts