c.smali

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


# instance fields
.field private a:I

.field private b:F

.field private c:I

.field private d:I


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

    const/4 v0, 0x0

    .line 100
    invoke-direct {p0, v0}, Lcom/tencent/liteav/beauty/b/b/c;-><init>(B)V

    return-void
.end method

.method private constructor <init>(B)V
    .registers 3

    const-string p1, "attribute vec4 position;\nattribute vec4 inputTextureCoordinate;\n\nuniform float imageWidthFactor; \nuniform float imageHeightFactor; \n\nvarying vec2 textureCoordinate;\nvarying vec2 leftTextureCoordinate;\nvarying vec2 rightTextureCoordinate; \nvarying vec2 topTextureCoordinate;\nvarying vec2 bottomTextureCoordinate;\n\n\nvoid main()\n{\n    gl_Position = position;\n    \n    mediump vec2 widthStep = vec2(imageWidthFactor, 0.0);\n    mediump vec2 heightStep = vec2(0.0, imageHeightFactor);\n    \n    textureCoordinate = inputTextureCoordinate.xy;\n    leftTextureCoordinate = inputTextureCoordinate.xy - widthStep;\n    rightTextureCoordinate = inputTextureCoordinate.xy + widthStep;\n    topTextureCoordinate = inputTextureCoordinate.xy + heightStep;\n    bottomTextureCoordinate = inputTextureCoordinate.xy - heightStep;\n}\n"

    const-string v0, "precision mediump float;\n\nuniform float sharpness;\nvarying mediump vec2 textureCoordinate;\nvarying mediump vec2 leftTextureCoordinate;\nvarying mediump vec2 rightTextureCoordinate; \nvarying mediump vec2 topTextureCoordinate;\nvarying mediump vec2 bottomTextureCoordinate;\n\nuniform sampler2D inputImageTexture;\nfloat centerMultiplier;\nfloat edgeMultiplier;\n\nvoid main()\n{\n    mediump vec4 textureColor = texture2D(inputImageTexture, textureCoordinate);\n    mediump vec3 leftTextureColor = texture2D(inputImageTexture, leftTextureCoordinate).rgb;\n    mediump vec3 rightTextureColor = texture2D(inputImageTexture, rightTextureCoordinate).rgb;\n    mediump vec3 topTextureColor = texture2D(inputImageTexture, topTextureCoordinate).rgb;\n    mediump vec3 bottomTextureColor = texture2D(inputImageTexture, bottomTextureCoordinate).rgb;\n\n    centerMultiplier = 1.0 + 4.0 * sharpness * (1.0 - textureColor.a);\n    edgeMultiplier = sharpness * (1.0 - textureColor.a);\n    gl_FragColor = vec4((textureColor.rgb * centerMultiplier - (leftTextureColor * edgeMultiplier + rightTextureColor * edgeMultiplier + topTextureColor * edgeMultiplier + bottomTextureColor * edgeMultiplier)), textureColor.a);    \n}\n"

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

    const/4 p1, 0x0

    .line 105
    iput p1, p0, Lcom/tencent/liteav/beauty/b/b/c;->b:F

    return-void
.end method


# virtual methods
.method public final a(F)V
    .registers 4

    .line 127
    invoke-static {p1}, Ljava/lang/String;->valueOf(F)Ljava/lang/String;

    move-result-object v0

    const-string v1, "setSharpness "

    invoke-virtual {v1, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    const-string v1, "GPUSharpen"

    invoke-static {v1, v0}, Lcom/tencent/liteav/base/util/LiteavLog;->i(Ljava/lang/String;Ljava/lang/String;)V

    .line 128
    iput p1, p0, Lcom/tencent/liteav/beauty/b/b/c;->b:F

    .line 129
    iget v0, p0, Lcom/tencent/liteav/beauty/b/b/c;->a:I

    const v1, 0x3f333333    # 0.7f

    add-float/2addr p1, v1

    invoke-virtual {p0, v0, p1}, Lcom/tencent/liteav/beauty/b/b/c;->setFloatOnDraw(IF)V

    return-void
.end method

.method public final canBeSkipped()Z
    .registers 2

    .line 134
    iget v0, p0, Lcom/tencent/liteav/beauty/b/b/c;->b:F

    invoke-virtual {p0, v0}, Lcom/tencent/liteav/beauty/b/b/c;->isLessOrEqualZero(F)Z

    move-result v0

    return v0
.end method

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

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

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

    move-result p1

    const-string v0, "sharpness"

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

    move-result p1

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

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

    move-result p1

    const-string v0, "imageWidthFactor"

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

    move-result p1

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

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

    move-result p1

    const-string v0, "imageHeightFactor"

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

    move-result p1

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

    .line 116
    iget p1, p0, Lcom/tencent/liteav/beauty/b/b/c;->b:F

    invoke-virtual {p0, p1}, Lcom/tencent/liteav/beauty/b/b/c;->a(F)V

    return-void
.end method

.method public final onOutputSizeChanged(II)V
    .registers 5

    .line 121
    invoke-super {p0, p1, p2}, Lcom/tencent/liteav/videobase/a/b;->onOutputSizeChanged(II)V

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

    int-to-float p1, p1

    const/high16 v1, 0x3f800000    # 1.0f

    div-float p1, v1, p1

    invoke-virtual {p0, v0, p1}, Lcom/tencent/liteav/beauty/b/b/c;->setFloatOnDraw(IF)V

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

    int-to-float p2, p2

    div-float/2addr v1, p2

    invoke-virtual {p0, p1, v1}, Lcom/tencent/liteav/beauty/b/b/c;->setFloatOnDraw(IF)V

    return-void
.end method