OutputSurface.smali

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

# interfaces
.implements Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;


# static fields
.field private static final EGL_CONTEXT_CLIENT_VERSION:I

.field private static final EGL_OPENGL_ES2_BIT:I


# instance fields
.field private mEGL:Ljavax/microedition/khronos/egl/EGL10;

.field private mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

.field private mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

.field private mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

.field private mFrameAvailable:Z

.field private final mFrameSyncObject:Ljava/lang/Object;

.field private mHeight:I

.field private mPixelBuf:Ljava/nio/ByteBuffer;

.field private mSurface:Landroid/view/Surface;

.field private mSurfaceTexture:Landroid/graphics/SurfaceTexture;

.field private mTextureRender:Lim/tpelyyftgw/messenger/video/TextureRenderer;

.field private mWidth:I

.field private rotateRender:I


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

    const v0, 0x25f7

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

    move-result v0

    sput v0, Lim/tpelyyftgw/messenger/video/OutputSurface;->EGL_CONTEXT_CLIENT_VERSION:I

    const v0, 0x156b

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

    move-result v0

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

    return-void
.end method

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

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

    .line 37
    const/4 v0, 0x0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    .line 38
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

    .line 39
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

    .line 42
    new-instance v0, Ljava/lang/Object;

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

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameSyncObject:Ljava/lang/Object;

    .line 47
    const/4 v0, 0x0

    iput v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->rotateRender:I

    .line 65
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/video/OutputSurface;->setup()V

    .line 66
    return-void
.end method

.method public constructor <init>(III)V
    .registers 6
    .param p1, "width"    # I
    .param p2, "height"    # I
    .param p3, "rotate"    # I

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

    .line 37
    const/4 v0, 0x0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    .line 38
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

    .line 39
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

    .line 42
    new-instance v0, Ljava/lang/Object;

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

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameSyncObject:Ljava/lang/Object;

    .line 47
    const/4 v0, 0x0

    iput v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->rotateRender:I

    .line 51
    if-lez p1, :cond_37

    if-lez p2, :cond_37

    .line 54
    iput p1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mWidth:I

    .line 55
    iput p2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mHeight:I

    .line 56
    iput p3, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->rotateRender:I

    .line 57
    mul-int v0, p1, p2

    mul-int/lit8 v0, v0, 0x4

    invoke-static {v0}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;

    move-result-object v0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mPixelBuf:Ljava/nio/ByteBuffer;

    .line 58
    sget-object v1, Ljava/nio/ByteOrder;->LITTLE_ENDIAN:Ljava/nio/ByteOrder;

    invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;

    .line 59
    invoke-direct {p0, p1, p2}, Lim/tpelyyftgw/messenger/video/OutputSurface;->eglSetup(II)V

    .line 60
    invoke-virtual {p0}, Lim/tpelyyftgw/messenger/video/OutputSurface;->makeCurrent()V

    .line 61
    invoke-direct {p0}, Lim/tpelyyftgw/messenger/video/OutputSurface;->setup()V

    .line 62
    return-void

    .line 52
    :cond_37
    new-instance v0, Ljava/lang/IllegalArgumentException;

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

    throw v0
.end method

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

    .line 197
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    invoke-interface {v0}, Ljavax/microedition/khronos/egl/EGL10;->eglGetError()I

    move-result v0

    const/16 v1, 0x3000

    if-ne v0, v1, :cond_b

    .line 200
    return-void

    .line 198
    :cond_b
    new-instance v0, Ljava/lang/RuntimeException;

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

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

    throw v0
.end method

.method private eglSetup(II)V
    .registers 14
    .param p1, "width"    # I
    .param p2, "height"    # I

    .line 77
    invoke-static {}, Ljavax/microedition/khronos/egl/EGLContext;->getEGL()Ljavax/microedition/khronos/egl/EGL;

    move-result-object v0

    check-cast v0, Ljavax/microedition/khronos/egl/EGL10;

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    .line 78
    sget-object v1, Ljavax/microedition/khronos/egl/EGL10;->EGL_DEFAULT_DISPLAY:Ljava/lang/Object;

    invoke-interface {v0, v1}, Ljavax/microedition/khronos/egl/EGL10;->eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay;

    move-result-object v0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    .line 80
    sget-object v1, Ljavax/microedition/khronos/egl/EGL10;->EGL_NO_DISPLAY:Ljavax/microedition/khronos/egl/EGLDisplay;

    if-eq v0, v1, :cond_a7

    .line 84
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    const/4 v2, 0x0

    invoke-interface {v0, v1, v2}, Ljavax/microedition/khronos/egl/EGL10;->eglInitialize(Ljavax/microedition/khronos/egl/EGLDisplay;[I)Z

    move-result v0

    if-eqz v0, :cond_9c

    .line 89
    const/16 v0, 0xd

    new-array v3, v0, [I

    fill-array-data v3, :array_b0

    .line 98
    .local v3, "attribList":[I
    const/4 v0, 0x1

    new-array v7, v0, [Ljavax/microedition/khronos/egl/EGLConfig;

    .line 99
    .local v7, "configs":[Ljavax/microedition/khronos/egl/EGLConfig;
    new-array v8, v0, [I

    .line 100
    .local v8, "numConfigs":[I
    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    array-length v5, v7

    move-object v4, v7

    move-object v6, v8

    invoke-interface/range {v1 .. v6}, Ljavax/microedition/khronos/egl/EGL10;->eglChooseConfig(Ljavax/microedition/khronos/egl/EGLDisplay;[I[Ljavax/microedition/khronos/egl/EGLConfig;I[I)Z

    move-result v1

    if-eqz v1, :cond_93

    .line 103
    const/4 v1, 0x3

    new-array v2, v1, [I

    fill-array-data v2, :array_ce

    .line 107
    .local v2, "attrib_list":[I
    iget-object v4, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v5, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    const/4 v6, 0x0

    aget-object v9, v7, v6

    sget-object v10, Ljavax/microedition/khronos/egl/EGL10;->EGL_NO_CONTEXT:Ljavax/microedition/khronos/egl/EGLContext;

    invoke-interface {v4, v5, v9, v10, v2}, Ljavax/microedition/khronos/egl/EGL10;->eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext;

    move-result-object v4

    iput-object v4, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

    .line 108
    const-string v4, "eglCreateContext"

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

    .line 109
    iget-object v4, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

    if-eqz v4, :cond_8b

    .line 112
    const/4 v4, 0x5

    new-array v4, v4, [I

    const/16 v5, 0x3057

    aput v5, v4, v6

    aput p1, v4, v0

    const/4 v0, 0x2

    const/16 v5, 0x3056

    aput v5, v4, v0

    aput p2, v4, v1

    const/4 v0, 0x4

    const/16 v1, 0x3038

    aput v1, v4, v0

    move-object v0, v4

    .line 117
    .local v0, "surfaceAttribs":[I
    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v4, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    aget-object v5, v7, v6

    invoke-interface {v1, v4, v5, v0}, Ljavax/microedition/khronos/egl/EGL10;->eglCreatePbufferSurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;[I)Ljavax/microedition/khronos/egl/EGLSurface;

    move-result-object v1

    iput-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

    .line 118
    const-string v1, "eglCreatePbufferSurface"

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

    .line 119
    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

    if-eqz v1, :cond_82

    .line 122
    return-void

    .line 120
    :cond_82
    new-instance v1, Ljava/lang/RuntimeException;

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

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

    throw v1

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

    const-string v1, "null context"

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

    throw v0

    .line 101
    .end local v2    # "attrib_list":[I
    :cond_93
    new-instance v0, Ljava/lang/RuntimeException;

    const-string/jumbo v1, "unable to find RGB888+pbuffer EGL config"

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

    throw v0

    .line 85
    .end local v3    # "attribList":[I
    .end local v7    # "configs":[Ljavax/microedition/khronos/egl/EGLConfig;
    .end local v8    # "numConfigs":[I
    :cond_9c
    iput-object v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

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

    const-string/jumbo v1, "unable to initialize EGL10"

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

    throw v0

    .line 81
    :cond_a7
    new-instance v0, Ljava/lang/RuntimeException;

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

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

    throw v0

    :array_b0
    .array-data 4
        0x3024
        0x8
        0x3023
        0x8
        0x3022
        0x8
        0x3021
        0x8
        0x3033
        0x1
        0x3040
        0x4
        0x3038
    .end array-data

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

.method private setup()V
    .registers 3

    .line 69
    new-instance v0, Lim/tpelyyftgw/messenger/video/TextureRenderer;

    iget v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->rotateRender:I

    invoke-direct {v0, v1}, Lim/tpelyyftgw/messenger/video/TextureRenderer;-><init>(I)V

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mTextureRender:Lim/tpelyyftgw/messenger/video/TextureRenderer;

    .line 70
    invoke-virtual {v0}, Lim/tpelyyftgw/messenger/video/TextureRenderer;->surfaceCreated()V

    .line 71
    new-instance v0, Landroid/graphics/SurfaceTexture;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mTextureRender:Lim/tpelyyftgw/messenger/video/TextureRenderer;

    invoke-virtual {v1}, Lim/tpelyyftgw/messenger/video/TextureRenderer;->getTextureId()I

    move-result v1

    invoke-direct {v0, v1}, Landroid/graphics/SurfaceTexture;-><init>(I)V

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mSurfaceTexture:Landroid/graphics/SurfaceTexture;

    .line 72
    invoke-virtual {v0, p0}, Landroid/graphics/SurfaceTexture;->setOnFrameAvailableListener(Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;)V

    .line 73
    new-instance v0, Landroid/view/Surface;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mSurfaceTexture:Landroid/graphics/SurfaceTexture;

    invoke-direct {v0, v1}, Landroid/view/Surface;-><init>(Landroid/graphics/SurfaceTexture;)V

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mSurface:Landroid/view/Surface;

    .line 74
    return-void
.end method


# virtual methods
.method public awaitNewImage()V
    .registers 6

    .line 157
    const/16 v0, 0x9c4

    .line 158
    .local v0, "TIMEOUT_MS":I
    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameSyncObject:Ljava/lang/Object;

    monitor-enter v1

    .line 159
    :goto_5
    :try_start_5
    iget-boolean v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameAvailable:Z
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_35

    if-nez v2, :cond_24

    .line 161
    :try_start_9
    iget-object v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameSyncObject:Ljava/lang/Object;

    const-wide/16 v3, 0x9c4

    invoke-virtual {v2, v3, v4}, Ljava/lang/Object;->wait(J)V

    .line 162
    iget-boolean v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameAvailable:Z

    if-eqz v2, :cond_15

    .line 167
    goto :goto_5

    .line 163
    :cond_15
    new-instance v2, Ljava/lang/RuntimeException;

    const-string v3, "Surface frame wait timed out"

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

    .end local v0    # "TIMEOUT_MS":I
    throw v2
    :try_end_1d
    .catch Ljava/lang/InterruptedException; {:try_start_9 .. :try_end_1d} :catch_1d
    .catchall {:try_start_9 .. :try_end_1d} :catchall_35

    .line 165
    .restart local v0    # "TIMEOUT_MS":I
    :catch_1d
    move-exception v2

    .line 166
    .local v2, "ie":Ljava/lang/InterruptedException;
    :try_start_1e
    new-instance v3, Ljava/lang/RuntimeException;

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

    .end local v0    # "TIMEOUT_MS":I
    throw v3

    .line 169
    .end local v2    # "ie":Ljava/lang/InterruptedException;
    .restart local v0    # "TIMEOUT_MS":I
    :cond_24
    const/4 v2, 0x0

    iput-boolean v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameAvailable:Z

    .line 170
    monitor-exit v1
    :try_end_28
    .catchall {:try_start_1e .. :try_end_28} :catchall_35

    .line 171
    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mTextureRender:Lim/tpelyyftgw/messenger/video/TextureRenderer;

    const-string v2, "before updateTexImage"

    invoke-virtual {v1, v2}, Lim/tpelyyftgw/messenger/video/TextureRenderer;->checkGlError(Ljava/lang/String;)V

    .line 172
    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mSurfaceTexture:Landroid/graphics/SurfaceTexture;

    invoke-virtual {v1}, Landroid/graphics/SurfaceTexture;->updateTexImage()V

    .line 173
    return-void

    .line 170
    :catchall_35
    move-exception v2

    :try_start_36
    monitor-exit v1
    :try_end_37
    .catchall {:try_start_36 .. :try_end_37} :catchall_35

    goto :goto_39

    :goto_38
    throw v2

    :goto_39
    goto :goto_38
.end method

.method public drawImage(Z)V
    .registers 4
    .param p1, "invert"    # Z

    .line 176
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mTextureRender:Lim/tpelyyftgw/messenger/video/TextureRenderer;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mSurfaceTexture:Landroid/graphics/SurfaceTexture;

    invoke-virtual {v0, v1, p1}, Lim/tpelyyftgw/messenger/video/TextureRenderer;->drawFrame(Landroid/graphics/SurfaceTexture;Z)V

    .line 177
    return-void
.end method

.method public getFrame()Ljava/nio/ByteBuffer;
    .registers 9

    .line 191
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mPixelBuf:Ljava/nio/ByteBuffer;

    invoke-virtual {v0}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;

    .line 192
    iget v3, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mWidth:I

    iget v4, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mHeight:I

    iget-object v7, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mPixelBuf:Ljava/nio/ByteBuffer;

    const/4 v1, 0x0

    const/4 v2, 0x0

    const/16 v5, 0x1908

    const/16 v6, 0x1401

    invoke-static/range {v1 .. v7}, Landroid/opengl/GLES20;->glReadPixels(IIIIIILjava/nio/Buffer;)V

    .line 193
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mPixelBuf:Ljava/nio/ByteBuffer;

    return-object v0
.end method

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

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

    return-object v0
.end method

.method public makeCurrent()V
    .registers 5

    .line 143
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    if-eqz v0, :cond_20

    .line 146
    const-string v0, "before makeCurrent"

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

    .line 147
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

    iget-object v3, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

    invoke-interface {v0, v1, v2, v2, v3}, Ljavax/microedition/khronos/egl/EGL10;->eglMakeCurrent(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLContext;)Z

    move-result v0

    if-eqz v0, :cond_18

    .line 150
    return-void

    .line 148
    :cond_18
    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

    .line 144
    :cond_20
    new-instance v0, Ljava/lang/RuntimeException;

    const-string v1, "not configured for makeCurrent"

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

    throw v0
.end method

.method public onFrameAvailable(Landroid/graphics/SurfaceTexture;)V
    .registers 5
    .param p1, "st"    # Landroid/graphics/SurfaceTexture;

    .line 181
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameSyncObject:Ljava/lang/Object;

    monitor-enter v0

    .line 182
    :try_start_3
    iget-boolean v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameAvailable:Z

    if-nez v1, :cond_11

    .line 185
    const/4 v1, 0x1

    iput-boolean v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameAvailable:Z

    .line 186
    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mFrameSyncObject:Ljava/lang/Object;

    invoke-virtual {v1}, Ljava/lang/Object;->notifyAll()V

    .line 187
    monitor-exit v0

    .line 188
    return-void

    .line 183
    :cond_11
    new-instance v1, Ljava/lang/RuntimeException;

    const-string v2, "mFrameAvailable already set, frame could be dropped"

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

    .end local p1    # "st":Landroid/graphics/SurfaceTexture;
    throw v1

    .line 187
    .restart local p1    # "st":Landroid/graphics/SurfaceTexture;
    :catchall_19
    move-exception v1

    monitor-exit v0
    :try_end_1b
    .catchall {:try_start_3 .. :try_end_1b} :catchall_19

    throw v1
.end method

.method public release()V
    .registers 6

    .line 125
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    if-eqz v0, :cond_2f

    .line 126
    invoke-interface {v0}, Ljavax/microedition/khronos/egl/EGL10;->eglGetCurrentContext()Ljavax/microedition/khronos/egl/EGLContext;

    move-result-object v0

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

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

    move-result v0

    if-eqz v0, :cond_1d

    .line 127
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    sget-object v2, Ljavax/microedition/khronos/egl/EGL10;->EGL_NO_SURFACE:Ljavax/microedition/khronos/egl/EGLSurface;

    sget-object v3, Ljavax/microedition/khronos/egl/EGL10;->EGL_NO_SURFACE:Ljavax/microedition/khronos/egl/EGLSurface;

    sget-object v4, Ljavax/microedition/khronos/egl/EGL10;->EGL_NO_CONTEXT:Ljavax/microedition/khronos/egl/EGLContext;

    invoke-interface {v0, v1, v2, v3, v4}, Ljavax/microedition/khronos/egl/EGL10;->eglMakeCurrent(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLSurface;Ljavax/microedition/khronos/egl/EGLContext;)Z

    .line 129
    :cond_1d
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

    invoke-interface {v0, v1, v2}, Ljavax/microedition/khronos/egl/EGL10;->eglDestroySurface(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLSurface;)Z

    .line 130
    iget-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    iget-object v1, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    iget-object v2, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

    invoke-interface {v0, v1, v2}, Ljavax/microedition/khronos/egl/EGL10;->eglDestroyContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLContext;)Z

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

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

    .line 133
    const/4 v0, 0x0

    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLDisplay:Ljavax/microedition/khronos/egl/EGLDisplay;

    .line 134
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLContext:Ljavax/microedition/khronos/egl/EGLContext;

    .line 135
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGLSurface:Ljavax/microedition/khronos/egl/EGLSurface;

    .line 136
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mEGL:Ljavax/microedition/khronos/egl/EGL10;

    .line 137
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mTextureRender:Lim/tpelyyftgw/messenger/video/TextureRenderer;

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

    .line 139
    iput-object v0, p0, Lim/tpelyyftgw/messenger/video/OutputSurface;->mSurfaceTexture:Landroid/graphics/SurfaceTexture;

    .line 140
    return-void
.end method