ViEAndroidGLES20.smali

.class public Lorg/webrtc/videoengine/ViEAndroidGLES20;
.super Landroid/opengl/GLSurfaceView;
.source "SourceFile"

# interfaces
.implements Landroid/opengl/GLSurfaceView$Renderer;


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lorg/webrtc/videoengine/ViEAndroidGLES20$a;,
        Lorg/webrtc/videoengine/ViEAndroidGLES20$b;
    }
.end annotation


# static fields
.field private static a:Ljava/lang/String; = "WEBRTC-JR"


# instance fields
.field private b:Z

.field private c:Z

.field private d:Z

.field private e:Ljava/util/concurrent/locks/ReentrantLock;

.field private f:J

.field private g:I

.field private h:I


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

    return-void
.end method

.method public constructor <init>(Landroid/content/Context;)V
    .registers 4

    .line 48
    invoke-direct {p0, p1}, Landroid/opengl/GLSurfaceView;-><init>(Landroid/content/Context;)V

    const/4 p1, 0x0

    .line 33
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->b:Z

    .line 34
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->c:Z

    .line 36
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->d:Z

    .line 37
    new-instance v0, Ljava/util/concurrent/locks/ReentrantLock;

    invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantLock;-><init>()V

    iput-object v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->e:Ljava/util/concurrent/locks/ReentrantLock;

    const-wide/16 v0, 0x0

    .line 39
    iput-wide v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->f:J

    .line 40
    iput p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->g:I

    .line 41
    iput p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->h:I

    .line 49
    invoke-direct {p0, p1, p1, p1}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->a(ZII)V

    return-void
.end method

.method public constructor <init>(Landroid/content/Context;ZII)V
    .registers 7

    .line 54
    invoke-direct {p0, p1}, Landroid/opengl/GLSurfaceView;-><init>(Landroid/content/Context;)V

    const/4 p1, 0x0

    .line 33
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->b:Z

    .line 34
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->c:Z

    .line 36
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->d:Z

    .line 37
    new-instance v0, Ljava/util/concurrent/locks/ReentrantLock;

    invoke-direct {v0}, Ljava/util/concurrent/locks/ReentrantLock;-><init>()V

    iput-object v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->e:Ljava/util/concurrent/locks/ReentrantLock;

    const-wide/16 v0, 0x0

    .line 39
    iput-wide v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->f:J

    .line 40
    iput p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->g:I

    .line 41
    iput p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->h:I

    .line 55
    invoke-direct {p0, p2, p3, p4}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->a(ZII)V

    return-void
.end method

.method private native CreateOpenGLNative(JII)I
.end method

.method private native DrawNative(J)V
.end method

.method static synthetic a()Ljava/lang/String;
    .registers 1

    .line 28
    sget-object v0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->a:Ljava/lang/String;

    return-object v0
.end method

.method static synthetic a(Ljava/lang/String;Ljavax/microedition/khronos/egl/EGL10;)V
    .registers 6

    .line 1104
    :goto_0
    invoke-interface {p1}, Ljavax/microedition/khronos/egl/EGL10;->eglGetError()I

    move-result v0

    const/16 v1, 0x3000

    if-eq v0, v1, :cond_21

    .line 1105
    sget-object v1, Lorg/webrtc/videoengine/ViEAndroidGLES20;->a:Ljava/lang/String;

    const/4 v2, 0x2

    new-array v2, v2, [Ljava/lang/Object;

    const/4 v3, 0x0

    aput-object p0, v2, v3

    const/4 v3, 0x1

    invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v0

    aput-object v0, v2, v3

    const-string v0, "%s: EGL error: 0x%x"

    invoke-static {v0, v2}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I

    goto :goto_0

    :cond_21
    return-void
.end method

.method private a(ZII)V
    .registers 19

    move-object v0, p0

    if-eqz p1, :cond_b

    .line 65
    invoke-virtual {p0}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->getHolder()Landroid/view/SurfaceHolder;

    move-result-object v1

    const/4 v2, -0x3

    invoke-interface {v1, v2}, Landroid/view/SurfaceHolder;->setFormat(I)V

    .line 70
    :cond_b
    new-instance v1, Lorg/webrtc/videoengine/ViEAndroidGLES20$b;

    const/4 v2, 0x0

    invoke-direct {v1, v2}, Lorg/webrtc/videoengine/ViEAndroidGLES20$b;-><init>(B)V

    invoke-virtual {p0, v1}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->setEGLContextFactory(Landroid/opengl/GLSurfaceView$EGLContextFactory;)V

    .line 76
    new-instance v1, Lorg/webrtc/videoengine/ViEAndroidGLES20$a;

    if-eqz p1, :cond_29

    const/16 v4, 0x8

    const/16 v5, 0x8

    const/16 v6, 0x8

    const/16 v7, 0x8

    move-object v3, v1

    move/from16 v8, p2

    move/from16 v9, p3

    invoke-direct/range {v3 .. v9}, Lorg/webrtc/videoengine/ViEAndroidGLES20$a;-><init>(IIIIII)V

    goto :goto_35

    :cond_29
    const/4 v9, 0x5

    const/4 v10, 0x6

    const/4 v11, 0x5

    const/4 v12, 0x0

    move-object v8, v1

    move/from16 v13, p2

    move/from16 v14, p3

    invoke-direct/range {v8 .. v14}, Lorg/webrtc/videoengine/ViEAndroidGLES20$a;-><init>(IIIIII)V

    :goto_35
    invoke-virtual {p0, v1}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->setEGLConfigChooser(Landroid/opengl/GLSurfaceView$EGLConfigChooser;)V

    .line 81
    invoke-virtual {p0, p0}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->setRenderer(Landroid/opengl/GLSurfaceView$Renderer;)V

    .line 82
    invoke-virtual {p0, v2}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->setRenderMode(I)V

    return-void
.end method


# virtual methods
.method public onDrawFrame(Ljavax/microedition/khronos/opengles/GL10;)V
    .registers 5

    .line 312
    iget-object p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->e:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {p1}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 313
    iget-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->d:Z

    if-eqz p1, :cond_2d

    iget-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->b:Z

    if-nez p1, :cond_e

    goto :goto_2d

    .line 318
    :cond_e
    iget-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->c:Z

    if-nez p1, :cond_22

    .line 319
    iget-wide v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->f:J

    iget p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->g:I

    iget v2, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->h:I

    invoke-direct {p0, v0, v1, p1, v2}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->CreateOpenGLNative(JII)I

    move-result p1

    if-eqz p1, :cond_1f

    return-void

    :cond_1f
    const/4 p1, 0x1

    .line 322
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->c:Z

    .line 324
    :cond_22
    iget-wide v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->f:J

    invoke-direct {p0, v0, v1}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->DrawNative(J)V

    .line 325
    iget-object p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->e:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {p1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    return-void

    .line 314
    :cond_2d
    :goto_2d
    iget-object p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->e:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {p1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    return-void
.end method

.method public onSurfaceChanged(Ljavax/microedition/khronos/opengles/GL10;II)V
    .registers 6

    const/4 p1, 0x1

    .line 329
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->b:Z

    .line 330
    iput p2, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->g:I

    .line 331
    iput p3, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->h:I

    .line 333
    iget-object v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->e:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {v0}, Ljava/util/concurrent/locks/ReentrantLock;->lock()V

    .line 334
    iget-boolean v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->d:Z

    if-eqz v0, :cond_1a

    .line 335
    iget-wide v0, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->f:J

    invoke-direct {p0, v0, v1, p2, p3}, Lorg/webrtc/videoengine/ViEAndroidGLES20;->CreateOpenGLNative(JII)I

    move-result p2

    if-nez p2, :cond_1a

    .line 336
    iput-boolean p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->c:Z

    .line 338
    :cond_1a
    iget-object p1, p0, Lorg/webrtc/videoengine/ViEAndroidGLES20;->e:Ljava/util/concurrent/locks/ReentrantLock;

    invoke-virtual {p1}, Ljava/util/concurrent/locks/ReentrantLock;->unlock()V

    return-void
.end method

.method public onSurfaceCreated(Ljavax/microedition/khronos/opengles/GL10;Ljavax/microedition/khronos/egl/EGLConfig;)V
    .registers 3

    return-void
.end method