InputSurface.smali

.class public Lim/tpelyyftgw/messenger/video/InputSurface;
.super Ljava/lang/Object;
.source "InputSurface.java"


# static fields
.field private static final EGL_OPENGL_ES2_BIT:I

.field private static final EGL_RECORDABLE_ANDROID:I


# instance fields
.field private mEGLContext:Landroid/opengl/EGLContext;

.field private mEGLDisplay:Landroid/opengl/EGLDisplay;

.field private mEGLSurface:Landroid/opengl/EGLSurface;

.field private mSurface:Landroid/view/Surface;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    const v0, 0x156b

    invoke-static {v0}, Lnp/NPFog;->d(I)I

    move-result v0

    sput v0, Lim/tpelyyftgw/messenger/video/InputSurface;->EGL_OPENGL_ES2_BIT:I

    const v0, 0x242d

    invoke-static {v0}, Lnp/NPFog;->d(I)I

    move-result v0

    sput v0, Lim/tpelyyftgw/messenger/video/InputSurface;->EGL_RECORDABLE_ANDROID:I

    return-void
.end method

.method public constructor <init>(Landroid/view/Surface;)V
    .registers 3
    .param p1, "surface"    # Landroid/view/Surface;

    .line 39
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 40
    if-eqz p1, :cond_b

    .line 43
    iput-object p1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mSurface:Landroid/view/Surface;

    .line 44
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/video/InputSurface;->eglSetup()V

    .line 45
    return-void

    .line 41
    :cond_b
    const/4 v0, 0x0

    throw v0
.end method

.method private checkEglError(Ljava/lang/String;)V
    .registers 5
    .param p1, "msg"    # Ljava/lang/String;

    .line 128
    const/4 v0, 0x0

    .line 129
    .local v0, "failed":Z
    :goto_1
    invoke-static {}, Landroid/opengl/EGL14;->eglGetError()I

    move-result v1

    const/16 v2, 0x3000

    if-eq v1, v2, :cond_b

    .line 130
    const/4 v0, 0x1

    goto :goto_1

    .line 132
    :cond_b
    if-nez v0, :cond_e

    .line 135
    return-void

    .line 133
    :cond_e
    new-instance v1, Ljava/lang/RuntimeException;

    const-string v2, "EGL error encountered (see log)"

    invoke-direct {v1, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    goto :goto_17

    :goto_16
    throw v1

    :goto_17
    goto :goto_16
.end method

.method private eglSetup()V
    .registers 14

    .line 48
    const/4 v0, 0x0

    invoke-static {v0}, Landroid/opengl/EGL14;->eglGetDisplay(I)Landroid/opengl/EGLDisplay;

    move-result-object v1

    iput-object v1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    .line 49
    sget-object v2, Landroid/opengl/EGL14;->EGL_NO_DISPLAY:Landroid/opengl/EGLDisplay;

    if-eq v1, v2, :cond_8d

    .line 52
    const/4 v1, 0x2

    new-array v1, v1, [I

    .line 53
    .local v1, "version":[I
    iget-object v2, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    const/4 v3, 0x1

    invoke-static {v2, v1, v0, v1, v3}, Landroid/opengl/EGL14;->eglInitialize(Landroid/opengl/EGLDisplay;[II[II)Z

    move-result v2

    if-eqz v2, :cond_81

    .line 58
    const/16 v2, 0xb

    new-array v5, v2, [I

    fill-array-data v5, :array_96

    .line 66
    .local v5, "attribList":[I
    new-array v2, v3, [Landroid/opengl/EGLConfig;

    .line 67
    .local v2, "configs":[Landroid/opengl/EGLConfig;
    new-array v12, v3, [I

    .line 68
    .local v12, "numConfigs":[I
    iget-object v4, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    const/4 v6, 0x0

    const/4 v8, 0x0

    array-length v9, v2

    const/4 v11, 0x0

    move-object v7, v2

    move-object v10, v12

    invoke-static/range {v4 .. v11}, Landroid/opengl/EGL14;->eglChooseConfig(Landroid/opengl/EGLDisplay;[II[Landroid/opengl/EGLConfig;II[II)Z

    move-result v4

    if-eqz v4, :cond_78

    .line 73
    const/4 v4, 0x3

    new-array v4, v4, [I

    fill-array-data v4, :array_b0

    .line 78
    .local v4, "attrib_list":[I
    iget-object v6, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    aget-object v7, v2, v0

    sget-object v8, Landroid/opengl/EGL14;->EGL_NO_CONTEXT:Landroid/opengl/EGLContext;

    invoke-static {v6, v7, v8, v4, v0}, Landroid/opengl/EGL14;->eglCreateContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Landroid/opengl/EGLContext;[II)Landroid/opengl/EGLContext;

    move-result-object v6

    iput-object v6, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLContext:Landroid/opengl/EGLContext;

    .line 79
    const-string v6, "eglCreateContext"

    invoke-direct {p0, v6}, Lim/tpelyyftgw/messenger/video/InputSurface;->checkEglError(Ljava/lang/String;)V

    .line 80
    iget-object v6, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLContext:Landroid/opengl/EGLContext;

    if-eqz v6, :cond_70

    .line 84
    new-array v3, v3, [I

    const/16 v6, 0x3038

    aput v6, v3, v0

    .line 87
    .local v3, "surfaceAttribs":[I
    iget-object v6, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    aget-object v7, v2, v0

    iget-object v8, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mSurface:Landroid/view/Surface;

    invoke-static {v6, v7, v8, v3, v0}, Landroid/opengl/EGL14;->eglCreateWindowSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface;

    move-result-object v0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLSurface:Landroid/opengl/EGLSurface;

    .line 89
    const-string v0, "eglCreateWindowSurface"

    invoke-direct {p0, v0}, Lim/tpelyyftgw/messenger/video/InputSurface;->checkEglError(Ljava/lang/String;)V

    .line 90
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLSurface:Landroid/opengl/EGLSurface;

    if-eqz v0, :cond_67

    .line 93
    return-void

    .line 91
    :cond_67
    new-instance v0, Ljava/lang/RuntimeException;

    const-string/jumbo v6, "surface was null"

    invoke-direct {v0, v6}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 81
    .end local v3    # "surfaceAttribs":[I
    :cond_70
    new-instance v0, Ljava/lang/RuntimeException;

    const-string v3, "null context"

    invoke-direct {v0, v3}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 70
    .end local v4    # "attrib_list":[I
    :cond_78
    new-instance v0, Ljava/lang/RuntimeException;

    const-string/jumbo v3, "unable to find RGB888+recordable ES2 EGL config"

    invoke-direct {v0, v3}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 54
    .end local v2    # "configs":[Landroid/opengl/EGLConfig;
    .end local v5    # "attribList":[I
    .end local v12    # "numConfigs":[I
    :cond_81
    const/4 v0, 0x0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    .line 55
    new-instance v0, Ljava/lang/RuntimeException;

    const-string/jumbo v2, "unable to initialize EGL14"

    invoke-direct {v0, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    .line 50
    .end local v1    # "version":[I
    :cond_8d
    new-instance v0, Ljava/lang/RuntimeException;

    const-string/jumbo v1, "unable to get EGL14 display"

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0

    :array_96
    .array-data 4
        0x3024
        0x8
        0x3023
        0x8
        0x3022
        0x8
        0x3040
        0x4
        0x3142
        0x1
        0x3038
    .end array-data

    :array_b0
    .array-data 4
        0x3098
        0x2
        0x3038
    .end array-data
.end method


# virtual methods
.method public getSurface()Landroid/view/Surface;
    .registers 2

    .line 119
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mSurface:Landroid/view/Surface;

    return-object v0
.end method

.method public makeCurrent()V
    .registers 4

    .line 109
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLSurface:Landroid/opengl/EGLSurface;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLContext:Landroid/opengl/EGLContext;

    invoke-static {v0, v1, v1, v2}, Landroid/opengl/EGL14;->eglMakeCurrent(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)Z

    move-result v0

    if-eqz v0, :cond_d

    .line 112
    return-void

    .line 110
    :cond_d
    new-instance v0, Ljava/lang/RuntimeException;

    const-string v1, "eglMakeCurrent failed"

    invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

    throw v0
.end method

.method public release()V
    .registers 5

    .line 96
    invoke-static {}, Landroid/opengl/EGL14;->eglGetCurrentContext()Landroid/opengl/EGLContext;

    move-result-object v0

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLContext:Landroid/opengl/EGLContext;

    invoke-virtual {v0, v1}, Landroid/opengl/EGLContext;->equals(Ljava/lang/Object;)Z

    move-result v0

    if-eqz v0, :cond_17

    .line 97
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    sget-object v1, Landroid/opengl/EGL14;->EGL_NO_SURFACE:Landroid/opengl/EGLSurface;

    sget-object v2, Landroid/opengl/EGL14;->EGL_NO_SURFACE:Landroid/opengl/EGLSurface;

    sget-object v3, Landroid/opengl/EGL14;->EGL_NO_CONTEXT:Landroid/opengl/EGLContext;

    invoke-static {v0, v1, v2, v3}, Landroid/opengl/EGL14;->eglMakeCurrent(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;Landroid/opengl/EGLSurface;Landroid/opengl/EGLContext;)Z

    .line 99
    :cond_17
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLSurface:Landroid/opengl/EGLSurface;

    invoke-static {v0, v1}, Landroid/opengl/EGL14;->eglDestroySurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z

    .line 100
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLContext:Landroid/opengl/EGLContext;

    invoke-static {v0, v1}, Landroid/opengl/EGL14;->eglDestroyContext(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLContext;)Z

    .line 101
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mSurface:Landroid/view/Surface;

    invoke-virtual {v0}, Landroid/view/Surface;->release()V

    .line 102
    const/4 v0, 0x0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    .line 103
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLContext:Landroid/opengl/EGLContext;

    .line 104
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLSurface:Landroid/opengl/EGLSurface;

    .line 105
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mSurface:Landroid/view/Surface;

    .line 106
    return-void
.end method

.method public setPresentationTime(J)V
    .registers 5
    .param p1, "nsecs"    # J

    .line 124
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLSurface:Landroid/opengl/EGLSurface;

    invoke-static {v0, v1, p1, p2}, Landroid/opengl/EGLExt;->eglPresentationTimeANDROID(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;J)Z

    .line 125
    return-void
.end method

.method public swapBuffers()Z
    .registers 3

    .line 115
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLDisplay:Landroid/opengl/EGLDisplay;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/InputSurface;->mEGLSurface:Landroid/opengl/EGLSurface;

    invoke-static {v0, v1}, Landroid/opengl/EGL14;->eglSwapBuffers(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLSurface;)Z

    move-result v0

    return v0
.end method