i.smali

.class public final Lcom/tencent/liteav/beauty/b/i;
.super Lcom/tencent/liteav/videobase/a/b;
.source "SourceFile"


# instance fields
.field a:Landroid/graphics/Bitmap;

.field b:I

.field c:Landroid/graphics/Bitmap;

.field d:I

.field final e:Ljava/nio/FloatBuffer;

.field final f:Ljava/nio/FloatBuffer;

.field private g:I

.field private h:I

.field private i:I

.field private j:I


# direct methods
.method public constructor <init>()V
    .registers 3

    const-string v0, "attribute vec4 position;\nattribute vec4 inputTextureCoordinate;\nuniform mat4 textureTransform;\nvarying highp vec2 textureCoordinate;\nvoid main()\n{\n    gl_Position = position;\n    textureCoordinate = (textureTransform * inputTextureCoordinate).xy;\n}"

    const-string v1, "varying highp vec2 textureCoordinate;\n\nuniform sampler2D inputImageTexture;\nuniform sampler2D inputImageTexture2; // lookup texture 1\nuniform sampler2D inputImageTexture3; // lookup texture 2\n\n\nuniform lowp vec3 v3_params;\nuniform lowp vec2 v2_texs;\n\n\nvoid main()\n{\n    lowp vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n\n    mediump float blueColor = textureColor.b * 63.0;\n\n    mediump vec2 quad1;\n    quad1.y = floor(floor(blueColor) / 8.0);\n    quad1.x = floor(blueColor) - (quad1.y * 8.0);\n\n    mediump vec2 quad2;\n    quad2.y = floor(ceil(blueColor) / 8.0);\n    quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n\n    highp vec2 texPos1;\n    texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n    texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n\n    highp vec2 texPos2;\n    texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n    texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n\n    lowp vec4 newColor1;\n    lowp vec4 newColor2;\n    if(textureCoordinate.x <= v3_params.x) { \n      if(v2_texs.x == 1.0) { \n        newColor1 = texture2D(inputImageTexture2, texPos1);\n        newColor2 = texture2D(inputImageTexture2, texPos2);\n        lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n        gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), v3_params.y);\n      } else { \n        gl_FragColor = textureColor;\n      } \n    } else {\n      if(v2_texs.y == 1.0) { \n        newColor1 = texture2D(inputImageTexture3, texPos1);\n        newColor2 = texture2D(inputImageTexture3, texPos2);\n        lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n        gl_FragColor = mix(textureColor, vec4(newColor.rgb, textureColor.w), v3_params.z);\n      } else { \n        gl_FragColor = textureColor;\n      } \n    }\n }"

    .line 99
    invoke-direct {p0, v0, v1}, Lcom/tencent/liteav/videobase/a/b;-><init>(Ljava/lang/String;Ljava/lang/String;)V

    const/4 v0, 0x0

    .line 82
    iput-object v0, p0, Lcom/tencent/liteav/beauty/b/i;->a:Landroid/graphics/Bitmap;

    const/4 v1, -0x1

    .line 84
    iput v1, p0, Lcom/tencent/liteav/beauty/b/i;->b:I

    .line 87
    iput-object v0, p0, Lcom/tencent/liteav/beauty/b/i;->c:Landroid/graphics/Bitmap;

    .line 89
    iput v1, p0, Lcom/tencent/liteav/beauty/b/i;->d:I

    const/4 v0, 0x3

    .line 94
    invoke-static {v0}, Ljava/nio/FloatBuffer;->allocate(I)Ljava/nio/FloatBuffer;

    move-result-object v0

    iput-object v0, p0, Lcom/tencent/liteav/beauty/b/i;->e:Ljava/nio/FloatBuffer;

    const/4 v0, 0x2

    .line 96
    invoke-static {v0}, Ljava/nio/FloatBuffer;->allocate(I)Ljava/nio/FloatBuffer;

    move-result-object v0

    iput-object v0, p0, Lcom/tencent/liteav/beauty/b/i;->f:Ljava/nio/FloatBuffer;

    return-void
.end method


# virtual methods
.method public final a(FLandroid/graphics/Bitmap;FLandroid/graphics/Bitmap;F)V
    .registers 12

    move-object v0, p0

    move v1, p1

    move v2, p3

    move v3, p5

    move-object v4, p2

    move-object v5, p4

    .line 126
    invoke-static/range {v0 .. v5}, Lcom/tencent/liteav/beauty/b/j;->a(Lcom/tencent/liteav/beauty/b/i;FFFLandroid/graphics/Bitmap;Landroid/graphics/Bitmap;)Ljava/lang/Runnable;

    move-result-object p1

    invoke-virtual {p0, p1}, Lcom/tencent/liteav/beauty/b/i;->runOnDraw(Ljava/lang/Runnable;)V

    return-void
.end method

.method public final afterDrawArrays()V
    .registers 5

    .line 190
    invoke-super {p0}, Lcom/tencent/liteav/videobase/a/b;->afterDrawArrays()V

    .line 191
    iget v0, p0, Lcom/tencent/liteav/beauty/b/i;->b:I

    const/4 v1, 0x0

    const/16 v2, 0xde1

    const/4 v3, -0x1

    if-eq v0, v3, :cond_14

    const v0, 0x84c3

    .line 192
    invoke-static {v0}, Landroid/opengl/GLES20;->glActiveTexture(I)V

    .line 193
    invoke-static {v2, v1}, Landroid/opengl/GLES20;->glBindTexture(II)V

    .line 196
    :cond_14
    iget v0, p0, Lcom/tencent/liteav/beauty/b/i;->d:I

    if-eq v0, v3, :cond_21

    const v0, 0x84c4

    .line 197
    invoke-static {v0}, Landroid/opengl/GLES20;->glActiveTexture(I)V

    .line 198
    invoke-static {v2, v1}, Landroid/opengl/GLES20;->glBindTexture(II)V

    :cond_21
    return-void
.end method

.method public final beforeDrawArrays(I)V
    .registers 5

    .line 171
    invoke-super {p0, p1}, Lcom/tencent/liteav/videobase/a/b;->beforeDrawArrays(I)V

    .line 172
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->b:I

    const/16 v0, 0xde1

    const/4 v1, -0x1

    if-eq p1, v1, :cond_1b

    const p1, 0x84c3

    .line 173
    invoke-static {p1}, Landroid/opengl/GLES20;->glActiveTexture(I)V

    .line 174
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->b:I

    invoke-static {v0, p1}, Landroid/opengl/GLES20;->glBindTexture(II)V

    .line 175
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->g:I

    const/4 v2, 0x3

    invoke-static {p1, v2}, Landroid/opengl/GLES20;->glUniform1i(II)V

    .line 178
    :cond_1b
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->d:I

    if-eq p1, v1, :cond_30

    const p1, 0x84c4

    .line 179
    invoke-static {p1}, Landroid/opengl/GLES20;->glActiveTexture(I)V

    .line 180
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->d:I

    invoke-static {v0, p1}, Landroid/opengl/GLES20;->glBindTexture(II)V

    .line 181
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->h:I

    const/4 v0, 0x4

    invoke-static {p1, v0}, Landroid/opengl/GLES20;->glUniform1i(II)V

    .line 184
    :cond_30
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->j:I

    iget-object v0, p0, Lcom/tencent/liteav/beauty/b/i;->f:Ljava/nio/FloatBuffer;

    const/4 v1, 0x1

    invoke-static {p1, v1, v0}, Landroid/opengl/GLES20;->glUniform2fv(IILjava/nio/FloatBuffer;)V

    .line 185
    iget p1, p0, Lcom/tencent/liteav/beauty/b/i;->i:I

    iget-object v0, p0, Lcom/tencent/liteav/beauty/b/i;->e:Ljava/nio/FloatBuffer;

    invoke-static {p1, v1, v0}, Landroid/opengl/GLES20;->glUniform3fv(IILjava/nio/FloatBuffer;)V

    return-void
.end method

.method public final onInit(Lcom/tencent/liteav/videobase/frame/e;)V
    .registers 9

    .line 104
    invoke-super {p0, p1}, Lcom/tencent/liteav/videobase/a/b;->onInit(Lcom/tencent/liteav/videobase/frame/e;)V

    .line 105
    invoke-virtual {p0}, Lcom/tencent/liteav/beauty/b/i;->getProgramId()I

    move-result p1

    const-string v0, "inputImageTexture2"

    invoke-static {p1, v0}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I

    move-result p1

    iput p1, p0, Lcom/tencent/liteav/beauty/b/i;->g:I

    .line 106
    invoke-virtual {p0}, Lcom/tencent/liteav/beauty/b/i;->getProgramId()I

    move-result p1

    const-string v0, "inputImageTexture3"

    invoke-static {p1, v0}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I

    move-result p1

    iput p1, p0, Lcom/tencent/liteav/beauty/b/i;->h:I

    .line 107
    invoke-virtual {p0}, Lcom/tencent/liteav/beauty/b/i;->getProgramId()I

    move-result p1

    const-string v0, "v3_params"

    invoke-static {p1, v0}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I

    move-result p1

    iput p1, p0, Lcom/tencent/liteav/beauty/b/i;->i:I

    .line 108
    invoke-virtual {p0}, Lcom/tencent/liteav/beauty/b/i;->getProgramId()I

    move-result p1

    const-string v0, "v2_texs"

    invoke-static {p1, v0}, Landroid/opengl/GLES20;->glGetUniformLocation(ILjava/lang/String;)I

    move-result p1

    iput p1, p0, Lcom/tencent/liteav/beauty/b/i;->j:I

    .line 109
    iget-object p1, p0, Lcom/tencent/liteav/beauty/b/i;->a:Landroid/graphics/Bitmap;

    if-nez p1, :cond_3b

    iget-object p1, p0, Lcom/tencent/liteav/beauty/b/i;->c:Landroid/graphics/Bitmap;

    if-eqz p1, :cond_5d

    .line 110
    :cond_3b
    iget-object p1, p0, Lcom/tencent/liteav/beauty/b/i;->e:Ljava/nio/FloatBuffer;

    const/4 v0, 0x0

    invoke-virtual {p1, v0}, Ljava/nio/FloatBuffer;->get(I)F

    move-result v2

    iget-object v3, p0, Lcom/tencent/liteav/beauty/b/i;->a:Landroid/graphics/Bitmap;

    iget-object p1, p0, Lcom/tencent/liteav/beauty/b/i;->e:Ljava/nio/FloatBuffer;

    const/4 v0, 0x1

    invoke-virtual {p1, v0}, Ljava/nio/FloatBuffer;->get(I)F

    move-result v4

    iget-object v5, p0, Lcom/tencent/liteav/beauty/b/i;->c:Landroid/graphics/Bitmap;

    iget-object p1, p0, Lcom/tencent/liteav/beauty/b/i;->e:Ljava/nio/FloatBuffer;

    const/4 v0, 0x2

    .line 111
    invoke-virtual {p1, v0}, Ljava/nio/FloatBuffer;->get(I)F

    move-result v6

    move-object v1, p0

    .line 110
    invoke-virtual/range {v1 .. v6}, Lcom/tencent/liteav/beauty/b/i;->a(FLandroid/graphics/Bitmap;FLandroid/graphics/Bitmap;F)V

    const/4 p1, 0x0

    .line 112
    iput-object p1, p0, Lcom/tencent/liteav/beauty/b/i;->a:Landroid/graphics/Bitmap;

    .line 113
    iput-object p1, p0, Lcom/tencent/liteav/beauty/b/i;->c:Landroid/graphics/Bitmap;

    :cond_5d
    return-void
.end method

.method public final onUninit()V
    .registers 2

    .line 162
    invoke-super {p0}, Lcom/tencent/liteav/videobase/a/b;->onUninit()V

    .line 163
    iget v0, p0, Lcom/tencent/liteav/beauty/b/i;->b:I

    invoke-static {v0}, Lcom/tencent/liteav/videobase/utils/OpenGlUtils;->deleteTexture(I)V

    .line 164
    iget v0, p0, Lcom/tencent/liteav/beauty/b/i;->d:I

    invoke-static {v0}, Lcom/tencent/liteav/videobase/utils/OpenGlUtils;->deleteTexture(I)V

    const/4 v0, -0x1

    .line 165
    iput v0, p0, Lcom/tencent/liteav/beauty/b/i;->b:I

    .line 166
    iput v0, p0, Lcom/tencent/liteav/beauty/b/i;->d:I

    return-void
.end method