RendererCommon$YuvUploader.smali
.class public Lorg/webrtc/ali/RendererCommon$YuvUploader;
.super Ljava/lang/Object;
.source "RendererCommon.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lorg/webrtc/ali/RendererCommon;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "YuvUploader"
.end annotation
# instance fields
.field private copyBuffer:Ljava/nio/ByteBuffer;
.field private yuvTextures:[I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 60
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public release()V
.registers 5
.line 119
const/4 v0, 0x0
iput-object v0, p0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
.line 120
iget-object v1, p0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->yuvTextures:[I
if-eqz v1, :cond_e
.line 121
const/4 v2, 0x3
const/4 v3, 0x0
invoke-static {v2, v1, v3}, Landroid/opengl/GLES20;->glDeleteTextures(I[II)V
.line 122
iput-object v0, p0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->yuvTextures:[I
.line 124
:cond_e
return-void
.end method
.method public uploadYuvData(II[I[Ljava/nio/ByteBuffer;)[I
.registers 22
.param p1, "width" # I
.param p2, "height" # I
.param p3, "strides" # [I
.param p4, "planes" # [Ljava/nio/ByteBuffer;
.line 73
move-object/from16 v0, p0
const/4 v1, 0x3
new-array v2, v1, [I
const/4 v3, 0x0
aput p1, v2, v3
div-int/lit8 v4, p1, 0x2
const/4 v5, 0x1
aput v4, v2, v5
div-int/lit8 v4, p1, 0x2
const/4 v6, 0x2
aput v4, v2, v6
.line 74
.local v2, "planeWidths":[I
new-array v4, v1, [I
aput p2, v4, v3
div-int/lit8 v3, p2, 0x2
aput v3, v4, v5
div-int/lit8 v3, p2, 0x2
aput v3, v4, v6
move-object v3, v4
.line 76
.local v3, "planeHeights":[I
const/4 v4, 0x0
.line 77
.local v4, "copyCapacityNeeded":I
const/4 v5, 0x0
.local v5, "i":I
:goto_21
if-ge v5, v1, :cond_36
.line 78
aget v6, p3, v5
aget v7, v2, v5
if-le v6, v7, :cond_33
.line 79
aget v6, v2, v5
aget v7, v3, v5
mul-int v6, v6, v7
invoke-static {v4, v6}, Ljava/lang/Math;->max(II)I
move-result v4
.line 77
:cond_33
add-int/lit8 v5, v5, 0x1
goto :goto_21
.line 83
.end local v5 # "i":I
:cond_36
if-lez v4, :cond_48
iget-object v5, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
if-eqz v5, :cond_42
.line 84
invoke-virtual {v5}, Ljava/nio/ByteBuffer;->capacity()I
move-result v5
if-ge v5, v4, :cond_48
.line 85
:cond_42
invoke-static {v4}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object v5
iput-object v5, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
.line 88
:cond_48
iget-object v5, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->yuvTextures:[I
const/16 v6, 0xde1
if-nez v5, :cond_60
.line 89
new-array v5, v1, [I
iput-object v5, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->yuvTextures:[I
.line 90
const/4 v5, 0x0
.restart local v5 # "i":I
:goto_53
if-ge v5, v1, :cond_60
.line 91
iget-object v7, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->yuvTextures:[I
invoke-static {v6}, Lorg/webrtc/ali/GlUtil;->generateTexture(I)I
move-result v8
aput v8, v7, v5
.line 90
add-int/lit8 v5, v5, 0x1
goto :goto_53
.line 95
.end local v5 # "i":I
:cond_60
const/4 v5, 0x0
.restart local v5 # "i":I
:goto_61
if-ge v5, v1, :cond_a1
.line 96
const v7, 0x84c0
add-int/2addr v7, v5
invoke-static {v7}, Landroid/opengl/GLES20;->glActiveTexture(I)V
.line 97
iget-object v7, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->yuvTextures:[I
aget v7, v7, v5
invoke-static {v6, v7}, Landroid/opengl/GLES20;->glBindTexture(II)V
.line 100
aget v7, p3, v5
aget v8, v2, v5
if-ne v7, v8, :cond_7a
.line 102
aget-object v7, p4, v5
.local v7, "packedByteBuffer":Ljava/nio/ByteBuffer;
goto :goto_8b
.line 104
.end local v7 # "packedByteBuffer":Ljava/nio/ByteBuffer;
:cond_7a
aget-object v8, p4, v5
aget v9, v2, v5
aget v10, v3, v5
aget v11, p3, v5
iget-object v12, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
aget v13, v2, v5
invoke-static/range {v8 .. v13}, Lorg/webrtc/ali/VideoRenderer;->nativeCopyPlane(Ljava/nio/ByteBuffer;IIILjava/nio/ByteBuffer;I)V
.line 106
iget-object v7, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
.line 108
.restart local v7 # "packedByteBuffer":Ljava/nio/ByteBuffer;
:goto_8b
const/16 v8, 0xde1
const/4 v9, 0x0
const/16 v10, 0x1909
aget v11, v2, v5
aget v12, v3, v5
const/4 v13, 0x0
const/16 v14, 0x1909
const/16 v15, 0x1401
move-object/from16 v16, v7
invoke-static/range {v8 .. v16}, Landroid/opengl/GLES20;->glTexImage2D(IIIIIIIILjava/nio/Buffer;)V
.line 95
.end local v7 # "packedByteBuffer":Ljava/nio/ByteBuffer;
add-int/lit8 v5, v5, 0x1
goto :goto_61
.line 111
.end local v5 # "i":I
:cond_a1
iget-object v1, v0, Lorg/webrtc/ali/RendererCommon$YuvUploader;->yuvTextures:[I
return-object v1
.end method