YuvConverter$ShaderCallbacks.smali
.class Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;
.super Ljava/lang/Object;
.source "YuvConverter.java"
# interfaces
.implements Lio/agora/base/internal/video/GlGenericDrawer$ShaderCallbacks;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/agora/base/internal/video/YuvConverter;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0xa
name = "ShaderCallbacks"
.end annotation
# static fields
.field private static final U_COEFFS_BIT601_FULL:[F
.field private static final U_COEFFS_BIT601_LIMIT:[F
.field private static final U_COEFFS_BIT709_FULL:[F
.field private static final U_COEFFS_BIT709_LIMIT:[F
.field private static final V_COEFFS_BIT601_FULL:[F
.field private static final V_COEFFS_BIT601_LIMIT:[F
.field private static final V_COEFFS_BIT709_FULL:[F
.field private static final V_COEFFS_BIT709_LIMIT:[F
.field private static final Y_COEFFS_BIT601_FULL:[F
.field private static final Y_COEFFS_BIT601_LIMIT:[F
.field private static final Y_COEFFS_BIT709_FULL:[F
.field private static final Y_COEFFS_BIT709_LIMIT:[F
# instance fields
.field private coeffs:[F
.field private coeffsLoc:I
.field private colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
.field private stepSize:F
.field private xUnitLoc:I
# direct methods
.method static constructor <clinit>()V
.registers 2
const/4 v0, 0x4
new-array v1, v0, [F
.line 70
fill-array-data v1, :array_56
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT601_LIMIT:[F
new-array v1, v0, [F
.line 71
fill-array-data v1, :array_62
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT601_LIMIT:[F
new-array v1, v0, [F
.line 72
fill-array-data v1, :array_6e
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT601_LIMIT:[F
new-array v1, v0, [F
.line 78
fill-array-data v1, :array_7a
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT601_FULL:[F
new-array v1, v0, [F
.line 79
fill-array-data v1, :array_86
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT601_FULL:[F
new-array v1, v0, [F
.line 80
fill-array-data v1, :array_92
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT601_FULL:[F
new-array v1, v0, [F
.line 85
fill-array-data v1, :array_9e
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT709_LIMIT:[F
new-array v1, v0, [F
.line 86
fill-array-data v1, :array_aa
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT709_LIMIT:[F
new-array v1, v0, [F
.line 87
fill-array-data v1, :array_b6
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT709_LIMIT:[F
new-array v1, v0, [F
.line 92
fill-array-data v1, :array_c2
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT709_FULL:[F
new-array v1, v0, [F
.line 93
fill-array-data v1, :array_ce
sput-object v1, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT709_FULL:[F
new-array v0, v0, [F
.line 94
fill-array-data v0, :array_da
sput-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT709_FULL:[F
return-void
:array_56
.array-data 4
0x3e8379b7
0x3f010e99
0x3dc882e3
0x3d808081
.end array-data
:array_62
.array-data 4
-0x41e8383b
-0x416b02f7
0x3ee0e0eb
0x3f008084
.end array-data
:array_6e
.array-data 4
0x3ee0e0eb
-0x4143b14b
-0x426db779
0x3f008084
.end array-data
:array_7a
.array-data 4
0x3e991687 # 0.299f
0x3f1645a2 # 0.587f
0x3de978d5 # 0.114f
0x0
.end array-data
:array_86
.array-data 4
-0x41d336df
-0x41566491
0x3f000000 # 0.5f
0x3f000000 # 0.5f
.end array-data
:array_92
.array-data 4
0x3f000000 # 0.5f
-0x4129a1ba # -0.418688f
-0x425978e2
0x3f000000 # 0.5f
.end array-data
:array_9e
.array-data 4
0x3e3b645a # 0.183f
0x3f1d2f1b # 0.614f
0x3d7df3b6 # 0.062f
0x3d808081
.end array-data
:array_aa
.array-data 4
-0x423126e9 # -0.101f
-0x41526e98 # -0.339f
0x3ee0c49c # 0.439f
0x3f000000 # 0.5f
.end array-data
:array_b6
.array-data 4
0x3ee0c49c # 0.439f
-0x4133b646 # -0.399f
-0x42dc28f6 # -0.04f
0x3f000000 # 0.5f
.end array-data
:array_c2
.array-data 4
0x3e59b3d0 # 0.2126f
0x3f372474 # 0.7154f
0x3d9374bc # 0.072f
0x0
.end array-data
:array_ce
.array-data 4
-0x42158106 # -0.1145f
-0x413a9fbe # -0.3855f
0x3f000000 # 0.5f
0x3f000000 # 0.5f
.end array-data
:array_da
.array-data 4
0x3f000000 # 0.5f
-0x411765fe # -0.4543f
-0x42c4d014 # -0.0457f
0x3f000000 # 0.5f
.end array-data
.end method
.method private constructor <init>()V
.registers 6
.line 53
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 101
new-instance v0, Lio/agora/base/internal/video/WrappedNativeColorSpace;
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Range;->Full:Lio/agora/base/VideoFrame$ColorSpace$Range;
.line 102
invoke-virtual {v1}, Lio/agora/base/VideoFrame$ColorSpace$Range;->getRange()I
move-result v1
sget-object v2, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->SMPTE170M:Lio/agora/base/VideoFrame$ColorSpace$Matrix;
.line 103
invoke-virtual {v2}, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->getMatrix()I
move-result v2
sget-object v3, Lio/agora/base/VideoFrame$ColorSpace$Transfer;->SMPTE170M:Lio/agora/base/VideoFrame$ColorSpace$Transfer;
.line 104
invoke-virtual {v3}, Lio/agora/base/VideoFrame$ColorSpace$Transfer;->getTransfer()I
move-result v3
sget-object v4, Lio/agora/base/VideoFrame$ColorSpace$Primary;->kSMPTE170M:Lio/agora/base/VideoFrame$ColorSpace$Primary;
.line 105
invoke-virtual {v4}, Lio/agora/base/VideoFrame$ColorSpace$Primary;->getPrimary()I
move-result v4
invoke-direct {v0, v1, v2, v3, v4}, Lio/agora/base/internal/video/WrappedNativeColorSpace;-><init>(IIII)V
iput-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
return-void
.end method
.method synthetic constructor <init>(Lio/agora/base/internal/video/YuvConverter$1;)V
.registers 2
.line 53
invoke-direct {p0}, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;-><init>()V
return-void
.end method
# virtual methods
.method public onNewShader(Lio/agora/base/internal/video/GlShader;)V
.registers 3
const-string/jumbo v0, "xUnit"
.line 154
invoke-virtual {p1, v0}, Lio/agora/base/internal/video/GlShader;->getUniformLocation(Ljava/lang/String;)I
move-result v0
iput v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->xUnitLoc:I
const-string v0, "coeffs"
.line 155
invoke-virtual {p1, v0}, Lio/agora/base/internal/video/GlShader;->getUniformLocation(Ljava/lang/String;)I
move-result p1
iput p1, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffsLoc:I
return-void
.end method
.method public onPrepareShader(Lio/agora/base/internal/video/GlShader;[FIIII)V
.registers 7
.line 161
iget p1, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffsLoc:I
iget-object p4, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffs:[F
const/4 p5, 0x1
const/4 p6, 0x0
invoke-static {p1, p5, p4, p6}, Landroid/opengl/GLES20;->glUniform4fv(II[FI)V
.line 163
iget p1, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->xUnitLoc:I
iget p4, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->stepSize:F
aget p6, p2, p6
mul-float/2addr p6, p4
int-to-float p3, p3
div-float/2addr p6, p3
aget p2, p2, p5
mul-float/2addr p4, p2
div-float/2addr p4, p3
invoke-static {p1, p6, p4}, Landroid/opengl/GLES20;->glUniform2f(IFF)V
return-void
.end method
.method public setColorSpace(Lio/agora/base/VideoFrame$ColorSpace;)V
.registers 2
if-eqz p1, :cond_4
.line 148
iput-object p1, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
:cond_4
return-void
.end method
.method public setPlaneU()V
.registers 3
const/high16 v0, 0x40000000 # 2.0f
.line 121
iput v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->stepSize:F
.line 122
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getRange()Lio/agora/base/VideoFrame$ColorSpace$Range;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Range;->Full:Lio/agora/base/VideoFrame$ColorSpace$Range;
if-ne v0, v1, :cond_20
.line 123
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getMatrix()Lio/agora/base/VideoFrame$ColorSpace$Matrix;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->BT709:Lio/agora/base/VideoFrame$ColorSpace$Matrix;
if-ne v0, v1, :cond_1b
.line 124
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT709_FULL:[F
goto :goto_1d
.line 125
:cond_1b
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT601_FULL:[F
:goto_1d
iput-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffs:[F
goto :goto_31
.line 127
:cond_20
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getMatrix()Lio/agora/base/VideoFrame$ColorSpace$Matrix;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->BT709:Lio/agora/base/VideoFrame$ColorSpace$Matrix;
if-ne v0, v1, :cond_2d
.line 128
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT709_LIMIT:[F
goto :goto_2f
.line 129
:cond_2d
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->U_COEFFS_BIT601_LIMIT:[F
:goto_2f
iput-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffs:[F
:goto_31
return-void
.end method
.method public setPlaneV()V
.registers 3
const/high16 v0, 0x40000000 # 2.0f
.line 134
iput v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->stepSize:F
.line 135
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getRange()Lio/agora/base/VideoFrame$ColorSpace$Range;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Range;->Full:Lio/agora/base/VideoFrame$ColorSpace$Range;
if-ne v0, v1, :cond_20
.line 136
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getMatrix()Lio/agora/base/VideoFrame$ColorSpace$Matrix;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->BT709:Lio/agora/base/VideoFrame$ColorSpace$Matrix;
if-ne v0, v1, :cond_1b
.line 137
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT709_FULL:[F
goto :goto_1d
.line 138
:cond_1b
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT601_FULL:[F
:goto_1d
iput-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffs:[F
goto :goto_31
.line 140
:cond_20
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getMatrix()Lio/agora/base/VideoFrame$ColorSpace$Matrix;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->BT709:Lio/agora/base/VideoFrame$ColorSpace$Matrix;
if-ne v0, v1, :cond_2d
.line 141
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT709_LIMIT:[F
goto :goto_2f
.line 142
:cond_2d
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->V_COEFFS_BIT601_LIMIT:[F
:goto_2f
iput-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffs:[F
:goto_31
return-void
.end method
.method public setPlaneY()V
.registers 3
const/high16 v0, 0x3f800000 # 1.0f
.line 108
iput v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->stepSize:F
.line 109
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getRange()Lio/agora/base/VideoFrame$ColorSpace$Range;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Range;->Full:Lio/agora/base/VideoFrame$ColorSpace$Range;
if-ne v0, v1, :cond_20
.line 110
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getMatrix()Lio/agora/base/VideoFrame$ColorSpace$Matrix;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->BT709:Lio/agora/base/VideoFrame$ColorSpace$Matrix;
if-ne v0, v1, :cond_1b
.line 111
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT709_FULL:[F
goto :goto_1d
.line 112
:cond_1b
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT601_FULL:[F
:goto_1d
iput-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffs:[F
goto :goto_31
.line 114
:cond_20
iget-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->colorSpace:Lio/agora/base/VideoFrame$ColorSpace;
invoke-interface {v0}, Lio/agora/base/VideoFrame$ColorSpace;->getMatrix()Lio/agora/base/VideoFrame$ColorSpace$Matrix;
move-result-object v0
sget-object v1, Lio/agora/base/VideoFrame$ColorSpace$Matrix;->BT709:Lio/agora/base/VideoFrame$ColorSpace$Matrix;
if-ne v0, v1, :cond_2d
.line 115
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT709_LIMIT:[F
goto :goto_2f
.line 116
:cond_2d
sget-object v0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->Y_COEFFS_BIT601_LIMIT:[F
:goto_2f
iput-object v0, p0, Lio/agora/base/internal/video/YuvConverter$ShaderCallbacks;->coeffs:[F
:goto_31
return-void
.end method