PixelFrameFactory.smali
.class public Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation runtime Lcom/tencent/liteav/base/annotations/JNINamespace;
value = "liteav::video"
.end annotation
# instance fields
.field private mCallerEGLContext:Landroid/opengl/EGLContext;
.field private mCallerEGLDisplay:Landroid/opengl/EGLDisplay;
.field private mCallerEGLDrawSurface:Landroid/opengl/EGLSurface;
.field private mCallerEGLReadSurface:Landroid/opengl/EGLSurface;
.field private mGLTexturePool:Lcom/tencent/liteav/videobase/frame/e;
.field private final mLastFrameSize:Lcom/tencent/liteav/base/util/Size;
.field private mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
.field private mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
.field private mSharedEGLContext:Ljava/lang/Object;
.field private final mTAG:Ljava/lang/String;
.field private final mThrottlers:Lcom/tencent/liteav/base/b/b;
# direct methods
.method public constructor <init>()V
.registers 3
.line 42
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 27
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "PixelFrameFactory_"
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p0}, Ljava/lang/Object;->hashCode()I
move-result v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mTAG:Ljava/lang/String;
const/4 v0, 0x0
.line 29
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mSharedEGLContext:Ljava/lang/Object;
.line 31
sget-object v0, Landroid/opengl/EGL14;->EGL_NO_DISPLAY:Landroid/opengl/EGLDisplay;
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLDisplay:Landroid/opengl/EGLDisplay;
.line 32
sget-object v0, Landroid/opengl/EGL14;->EGL_NO_CONTEXT:Landroid/opengl/EGLContext;
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLContext:Landroid/opengl/EGLContext;
.line 33
sget-object v0, Landroid/opengl/EGL14;->EGL_NO_SURFACE:Landroid/opengl/EGLSurface;
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLReadSurface:Landroid/opengl/EGLSurface;
.line 34
sget-object v0, Landroid/opengl/EGL14;->EGL_NO_SURFACE:Landroid/opengl/EGLSurface;
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLDrawSurface:Landroid/opengl/EGLSurface;
.line 38
new-instance v0, Lcom/tencent/liteav/base/util/Size;
invoke-direct {v0}, Lcom/tencent/liteav/base/util/Size;-><init>()V
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mLastFrameSize:Lcom/tencent/liteav/base/util/Size;
.line 39
new-instance v0, Lcom/tencent/liteav/base/b/b;
invoke-direct {v0}, Lcom/tencent/liteav/base/b/b;-><init>()V
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mThrottlers:Lcom/tencent/liteav/base/b/b;
return-void
.end method
.method private copyTexture(Lcom/tencent/liteav/videobase/frame/PixelFrame;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
.registers 6
.line 173
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mGLTexturePool:Lcom/tencent/liteav/videobase/frame/e;
if-nez v0, :cond_b
.line 174
new-instance v0, Lcom/tencent/liteav/videobase/frame/e;
invoke-direct {v0}, Lcom/tencent/liteav/videobase/frame/e;-><init>()V
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mGLTexturePool:Lcom/tencent/liteav/videobase/frame/e;
.line 177
:cond_b
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mGLTexturePool:Lcom/tencent/liteav/videobase/frame/e;
.line 178
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getWidth()I
move-result v1
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getHeight()I
move-result v2
invoke-virtual {v0, v1, v2}, Lcom/tencent/liteav/videobase/frame/e;->a(II)Lcom/tencent/liteav/videobase/frame/d;
move-result-object v0
.line 180
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mLastFrameSize:Lcom/tencent/liteav/base/util/Size;
iget v1, v1, Lcom/tencent/liteav/base/util/Size;->width:I
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getWidth()I
move-result v2
if-ne v1, v2, :cond_2d
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mLastFrameSize:Lcom/tencent/liteav/base/util/Size;
iget v1, v1, Lcom/tencent/liteav/base/util/Size;->height:I
.line 181
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getHeight()I
move-result v2
if-eq v1, v2, :cond_47
.line 182
:cond_2d
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
if-eqz v1, :cond_37
.line 183
invoke-virtual {v1}, Lcom/tencent/liteav/videobase/frame/j;->a()V
const/4 v1, 0x0
.line 184
iput-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
.line 186
:cond_37
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mLastFrameSize:Lcom/tencent/liteav/base/util/Size;
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getWidth()I
move-result v2
iput v2, v1, Lcom/tencent/liteav/base/util/Size;->width:I
.line 187
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mLastFrameSize:Lcom/tencent/liteav/base/util/Size;
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getHeight()I
move-result v2
iput v2, v1, Lcom/tencent/liteav/base/util/Size;->height:I
.line 189
:cond_47
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
if-nez v1, :cond_5a
.line 190
new-instance v1, Lcom/tencent/liteav/videobase/frame/j;
.line 191
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getWidth()I
move-result v2
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getHeight()I
move-result v3
invoke-direct {v1, v2, v3}, Lcom/tencent/liteav/videobase/frame/j;-><init>(II)V
iput-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
.line 193
:cond_5a
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
sget-object v2, Lcom/tencent/liteav/videobase/base/GLConstants$GLScaleType;->c:Lcom/tencent/liteav/videobase/base/GLConstants$GLScaleType;
invoke-virtual {v1, p1, v2, v0}, Lcom/tencent/liteav/videobase/frame/j;->a(Lcom/tencent/liteav/videobase/frame/PixelFrame;Lcom/tencent/liteav/videobase/base/GLConstants$GLScaleType;Lcom/tencent/liteav/videobase/frame/d;)V
.line 194
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getGLContext()Ljava/lang/Object;
move-result-object p1
invoke-virtual {v0, p1}, Lcom/tencent/liteav/videobase/frame/d;->a(Ljava/lang/Object;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
move-result-object p1
.line 195
invoke-virtual {v0}, Lcom/tencent/liteav/videobase/frame/d;->release()V
return-object p1
.end method
.method private deepCopyDataToPixelFrame(Lcom/tencent/liteav/videobase/frame/PixelFrame;Ljava/lang/Object;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
.registers 6
.line 106
instance-of v0, p2, [B
const/4 v1, 0x0
if-eqz v0, :cond_1b
.line 107
move-object v0, p2
check-cast v0, [B
check-cast v0, [B
array-length v0, v0
invoke-static {v0}, Lcom/tencent/liteav/videobase/utils/j;->a(I)[B
move-result-object v0
if-nez v0, :cond_12
return-object v1
.line 111
:cond_12
array-length v1, v0
const/4 v2, 0x0
invoke-static {p2, v2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 112
invoke-virtual {p1, v0}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setData([B)V
goto :goto_38
.line 113
:cond_1b
instance-of v0, p2, Ljava/nio/ByteBuffer;
if-eqz v0, :cond_38
.line 114
check-cast p2, Ljava/nio/ByteBuffer;
invoke-virtual {p2}, Ljava/nio/ByteBuffer;->capacity()I
move-result v0
invoke-static {v0}, Lcom/tencent/liteav/videobase/utils/j;->b(I)Ljava/nio/ByteBuffer;
move-result-object v0
if-nez v0, :cond_2c
return-object v1
.line 118
:cond_2c
invoke-virtual {p2}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
.line 119
invoke-virtual {v0, p2}, Ljava/nio/ByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
.line 120
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
.line 121
invoke-virtual {p1, v0}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setBuffer(Ljava/nio/ByteBuffer;)V
.line 123
:cond_38
:goto_38
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->retain()I
return-object p1
.end method
.method private deepCopyTextureToPixelFrame(Lcom/tencent/liteav/videobase/frame/PixelFrame;Ljava/lang/Object;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
.registers 6
.line 128
invoke-direct {p0}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->saveCallerEGLContext()V
.line 130
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mSharedEGLContext:Ljava/lang/Object;
invoke-static {v0, p2}, Lcom/tencent/liteav/base/util/CommonUtil;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_11
.line 131
invoke-virtual {p0}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->uninitOpenGLComponents()V
.line 132
invoke-direct {p0, p2}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->initRenderEGLContext(Ljava/lang/Object;)V
.line 135
:cond_11
invoke-direct {p0}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->makeCurrent()Z
move-result p2
if-nez p2, :cond_2d
.line 136
iget-object p2, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mThrottlers:Lcom/tencent/liteav/base/b/b;
const-string v0, "makeCurrent"
invoke-virtual {p2, v0}, Lcom/tencent/liteav/base/b/b;->a(Ljava/lang/String;)Lcom/tencent/liteav/base/b/a;
move-result-object p2
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mTAG:Ljava/lang/String;
const/4 v1, 0x0
new-array v1, v1, [Ljava/lang/Object;
const-string v2, "use origin texture when makeCurrent error"
invoke-static {p2, v0, v2, v1}, Lcom/tencent/liteav/base/util/LiteavLog;->e(Lcom/tencent/liteav/base/b/a;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
.line 138
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->retain()I
return-object p1
.line 142
:cond_2d
invoke-direct {p0, p1}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->copyTexture(Lcom/tencent/liteav/videobase/frame/PixelFrame;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
move-result-object p1
.line 144
invoke-direct {p0}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->restoreCallerEGLContext()V
return-object p1
.end method
.method private initRenderEGLContext(Ljava/lang/Object;)V
.registers 5
.line 201
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
if-eqz v0, :cond_5
return-void
.line 204
:cond_5
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mTAG:Ljava/lang/String;
const-string v1, "initRenderEGLContext"
invoke-static {v0, v1}, Lcom/tencent/liteav/base/util/LiteavLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 205
iput-object p1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mSharedEGLContext:Ljava/lang/Object;
.line 206
new-instance v0, Lcom/tencent/liteav/videobase/egl/EGLCore;
invoke-direct {v0}, Lcom/tencent/liteav/videobase/egl/EGLCore;-><init>()V
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
const/16 v1, 0x80
const/4 v2, 0x0
.line 208
:try_start_18
invoke-virtual {v0, p1, v2, v1, v1}, Lcom/tencent/liteav/videobase/egl/EGLCore;->initialize(Ljava/lang/Object;Landroid/view/Surface;II)V
:try_end_1b
.catch Lcom/tencent/liteav/videobase/egl/f; {:try_start_18 .. :try_end_1b} :catch_1c
return-void
:catch_1c
move-exception p1
.line 211
iput-object v2, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
.line 212
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mThrottlers:Lcom/tencent/liteav/base/b/b;
const-string v1, "initEGLCore"
invoke-virtual {v0, v1}, Lcom/tencent/liteav/base/b/b;->a(Ljava/lang/String;)Lcom/tencent/liteav/base/b/a;
move-result-object v0
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mTAG:Ljava/lang/String;
const-string v2, "create EGLCore failed."
invoke-static {v0, v1, v2, p1}, Lcom/tencent/liteav/base/util/LiteavLog;->e(Lcom/tencent/liteav/base/b/a;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
return-void
.end method
.method private makeCurrent()Z
.registers 6
.line 217
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
const/4 v1, 0x0
if-nez v0, :cond_17
.line 218
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mThrottlers:Lcom/tencent/liteav/base/b/b;
const-string v2, "makeCurrentNull"
.line 219
invoke-virtual {v0, v2}, Lcom/tencent/liteav/base/b/b;->a(Ljava/lang/String;)Lcom/tencent/liteav/base/b/a;
move-result-object v0
iget-object v2, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mTAG:Ljava/lang/String;
new-array v3, v1, [Ljava/lang/Object;
const-string v4, "makeCurrent on mEGLCore is null"
.line 218
invoke-static {v0, v2, v4, v3}, Lcom/tencent/liteav/base/util/LiteavLog;->e(Lcom/tencent/liteav/base/b/a;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
return v1
.line 224
:cond_17
:try_start_17
invoke-virtual {v0}, Lcom/tencent/liteav/videobase/egl/EGLCore;->makeCurrent()V
:try_end_1a
.catch Lcom/tencent/liteav/videobase/egl/f; {:try_start_17 .. :try_end_1a} :catch_1c
const/4 v0, 0x1
return v0
:catch_1c
move-exception v0
.line 226
iget-object v2, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mThrottlers:Lcom/tencent/liteav/base/b/b;
const-string v3, "makeCurrentError"
invoke-virtual {v2, v3}, Lcom/tencent/liteav/base/b/b;->a(Ljava/lang/String;)Lcom/tencent/liteav/base/b/a;
move-result-object v2
iget-object v3, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mTAG:Ljava/lang/String;
const-string v4, "make current failed."
invoke-static {v2, v3, v4, v0}, Lcom/tencent/liteav/base/util/LiteavLog;->e(Lcom/tencent/liteav/base/b/a;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
return v1
.end method
.method private restoreCallerEGLContext()V
.registers 5
.line 162
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLContext:Landroid/opengl/EGLContext;
sget-object v1, Landroid/opengl/EGL14;->EGL_NO_CONTEXT:Landroid/opengl/EGLContext;
invoke-static {v0, v1}, Lcom/tencent/liteav/base/util/CommonUtil;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_16
.line 163
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLDisplay:Landroid/opengl/EGLDisplay;
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLDrawSurface:Landroid/opengl/EGLSurface;
iget-object v2, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLReadSurface:Landroid/opengl/EGLSurface;
iget-object v3, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLContext: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
return-void
.line 166
:cond_16
invoke-static {}, Landroid/opengl/EGL14;->eglGetCurrentDisplay()Landroid/opengl/EGLDisplay;
move-result-object v0
sget-object v1, Landroid/opengl/EGL14;->EGL_NO_SURFACE:Landroid/opengl/EGLSurface;
sget-object v2, Landroid/opengl/EGL14;->EGL_NO_CONTEXT: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
return-void
.end method
.method private saveCallerEGLContext()V
.registers 4
.line 150
invoke-static {}, Landroid/opengl/EGL14;->eglGetCurrentContext()Landroid/opengl/EGLContext;
move-result-object v0
.line 151
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLContext:Landroid/opengl/EGLContext;
sget-object v2, Landroid/opengl/EGL14;->EGL_NO_CONTEXT:Landroid/opengl/EGLContext;
invoke-static {v1, v2}, Lcom/tencent/liteav/base/util/CommonUtil;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_16
iget-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLContext:Landroid/opengl/EGLContext;
.line 152
invoke-static {v0, v1}, Lcom/tencent/liteav/base/util/CommonUtil;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v1
if-nez v1, :cond_2e
.line 153
:cond_16
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLContext:Landroid/opengl/EGLContext;
.line 154
invoke-static {}, Landroid/opengl/EGL14;->eglGetCurrentDisplay()Landroid/opengl/EGLDisplay;
move-result-object v0
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLDisplay:Landroid/opengl/EGLDisplay;
const/16 v0, 0x305a
.line 155
invoke-static {v0}, Landroid/opengl/EGL14;->eglGetCurrentSurface(I)Landroid/opengl/EGLSurface;
move-result-object v0
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLReadSurface:Landroid/opengl/EGLSurface;
const/16 v0, 0x3059
.line 156
invoke-static {v0}, Landroid/opengl/EGL14;->eglGetCurrentSurface(I)Landroid/opengl/EGLSurface;
move-result-object v0
iput-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mCallerEGLDrawSurface:Landroid/opengl/EGLSurface;
:cond_2e
return-void
.end method
.method private shallowCopyDataToPixelFrame(Lcom/tencent/liteav/videobase/frame/PixelFrame;Ljava/lang/Object;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
.registers 4
.line 96
instance-of v0, p2, [B
if-eqz v0, :cond_c
.line 97
check-cast p2, [B
check-cast p2, [B
invoke-virtual {p1, p2}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setData([B)V
goto :goto_15
.line 98
:cond_c
instance-of v0, p2, Ljava/nio/ByteBuffer;
if-eqz v0, :cond_15
.line 99
check-cast p2, Ljava/nio/ByteBuffer;
invoke-virtual {p1, p2}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setBuffer(Ljava/nio/ByteBuffer;)V
.line 101
:cond_15
:goto_15
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->retain()I
return-object p1
.end method
# virtual methods
.method public declared-synchronized create(IIJIIILjava/lang/Object;Ljava/lang/Object;Z)Lcom/tencent/liteav/videobase/frame/PixelFrame;
.registers 12
monitor-enter p0
.line 48
:try_start_1
new-instance v0, Lcom/tencent/liteav/videobase/frame/PixelFrame;
invoke-direct {v0}, Lcom/tencent/liteav/videobase/frame/PixelFrame;-><init>()V
.line 49
invoke-virtual {v0, p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setWidth(I)V
.line 50
invoke-virtual {v0, p2}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setHeight(I)V
.line 51
invoke-virtual {v0, p3, p4}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setTimestamp(J)V
.line 52
invoke-virtual {v0, p8}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setGLContext(Ljava/lang/Object;)V
.line 53
invoke-virtual {v0, p7}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setTextureId(I)V
.line 54
invoke-static {p5}, Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;->a(I)Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;
move-result-object p1
invoke-virtual {v0, p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setPixelBufferType(Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;)V
.line 55
invoke-static {p6}, Lcom/tencent/liteav/videobase/base/GLConstants$PixelFormatType;->a(I)Lcom/tencent/liteav/videobase/base/GLConstants$PixelFormatType;
move-result-object p1
invoke-virtual {v0, p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->setPixelFormatType(Lcom/tencent/liteav/videobase/base/GLConstants$PixelFormatType;)V
.line 57
invoke-virtual {v0}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getPixelBufferType()Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;
move-result-object p1
sget-object p2, Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;->d:Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;
if-eq p1, p2, :cond_39
.line 58
invoke-virtual {v0}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->getPixelBufferType()Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;
move-result-object p1
sget-object p2, Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;->a:Lcom/tencent/liteav/videobase/base/GLConstants$PixelBufferType;
if-ne p1, p2, :cond_34
goto :goto_39
.line 62
:cond_34
invoke-direct {p0, v0, p8}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->deepCopyTextureToPixelFrame(Lcom/tencent/liteav/videobase/frame/PixelFrame;Ljava/lang/Object;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
move-result-object p1
goto :goto_44
:cond_39
:goto_39
if-eqz p10, :cond_40
.line 59
invoke-direct {p0, v0, p9}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->deepCopyDataToPixelFrame(Lcom/tencent/liteav/videobase/frame/PixelFrame;Ljava/lang/Object;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
move-result-object p1
goto :goto_44
.line 60
:cond_40
invoke-direct {p0, v0, p9}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->shallowCopyDataToPixelFrame(Lcom/tencent/liteav/videobase/frame/PixelFrame;Ljava/lang/Object;)Lcom/tencent/liteav/videobase/frame/PixelFrame;
move-result-object p1
:try_end_44
.catchall {:try_start_1 .. :try_end_44} :catchall_46
.line 64
:goto_44
monitor-exit p0
return-object p1
:catchall_46
move-exception p1
monitor-exit p0
throw p1
.end method
.method public declared-synchronized release(Lcom/tencent/liteav/videobase/frame/PixelFrame;)V
.registers 2
monitor-enter p0
if-eqz p1, :cond_a
.line 70
:try_start_3
invoke-virtual {p1}, Lcom/tencent/liteav/videobase/frame/PixelFrame;->release()V
:try_end_6
.catchall {:try_start_3 .. :try_end_6} :catchall_7
goto :goto_a
:catchall_7
move-exception p1
monitor-exit p0
throw p1
.line 72
:cond_a
:goto_a
monitor-exit p0
return-void
.end method
.method public declared-synchronized uninitOpenGLComponents()V
.registers 3
monitor-enter p0
.line 76
:try_start_1
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
:try_end_3
.catchall {:try_start_1 .. :try_end_3} :catchall_35
if-nez v0, :cond_7
.line 77
monitor-exit p0
return-void
.line 79
:cond_7
:try_start_7
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mTAG:Ljava/lang/String;
const-string v1, "uninitOpenGLComponents"
invoke-static {v0, v1}, Lcom/tencent/liteav/base/util/LiteavLog;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 80
invoke-direct {p0}, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->makeCurrent()Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_2c
.line 81
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mGLTexturePool:Lcom/tencent/liteav/videobase/frame/e;
if-eqz v0, :cond_23
.line 82
invoke-virtual {v0}, Lcom/tencent/liteav/videobase/frame/e;->a()V
.line 83
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mGLTexturePool:Lcom/tencent/liteav/videobase/frame/e;
invoke-virtual {v0}, Lcom/tencent/liteav/videobase/frame/e;->b()V
.line 84
iput-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mGLTexturePool:Lcom/tencent/liteav/videobase/frame/e;
.line 86
:cond_23
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
if-eqz v0, :cond_2c
.line 87
invoke-virtual {v0}, Lcom/tencent/liteav/videobase/frame/j;->a()V
.line 88
iput-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mPixelFrameRenderer:Lcom/tencent/liteav/videobase/frame/j;
.line 91
:cond_2c
iget-object v0, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
invoke-static {v0}, Lcom/tencent/liteav/videobase/egl/EGLCore;->destroy(Lcom/tencent/liteav/videobase/egl/EGLCore;)V
.line 92
iput-object v1, p0, Lcom/tencent/liteav/videobase/frame/PixelFrameFactory;->mRenderEGLCore:Lcom/tencent/liteav/videobase/egl/EGLCore;
:try_end_33
.catchall {:try_start_7 .. :try_end_33} :catchall_35
.line 93
monitor-exit p0
return-void
:catchall_35
move-exception v0
monitor-exit p0
throw v0
.end method