YuvHelper$YuvUploader.smali
.class Lcom/mmc/player/render/YuvHelper$YuvUploader;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/mmc/player/render/YuvHelper;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x9
name = "YuvUploader"
.end annotation
# instance fields
.field private copyBuffer:Ljava/nio/ByteBuffer;
.field private dumpInfo:Z
.field private yuvTextures:[I
# direct methods
.method private constructor <init>()V
.registers 2
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x0
.line 2
iput-boolean v0, p0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->dumpInfo:Z
return-void
.end method
.method public synthetic constructor <init>(Lcom/mmc/player/render/YuvHelper$1;)V
.registers 2
.line 3
invoke-direct {p0}, Lcom/mmc/player/render/YuvHelper$YuvUploader;-><init>()V
return-void
.end method
# virtual methods
.method public getYuvTextures()[I
.registers 2
iget-object v0, p0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
return-object v0
.end method
.method public release()V
.registers 5
const/4 v0, 0x0
.line 1
iput-object v0, p0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
.line 2
iget-object v1, p0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
if-eqz v1, :cond_e
const/4 v2, 0x3
const/4 v3, 0x0
.line 3
invoke-static {v2, v1, v3}, Landroid/opengl/GLES20;->glDeleteTextures(I[II)V
.line 4
iput-object v0, p0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
:cond_e
return-void
.end method
.method public uploadFromBuffer(Lcom/mmc/player/render/VideoFrame$I420Buffer;)[I
.registers 8
const/4 v0, 0x3
new-array v1, v0, [I
.line 1
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$I420Buffer;->getStrideY()I
move-result v2
const/4 v3, 0x0
aput v2, v1, v3
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$I420Buffer;->getStrideU()I
move-result v2
const/4 v4, 0x1
aput v2, v1, v4
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$I420Buffer;->getStrideV()I
move-result v2
const/4 v5, 0x2
aput v2, v1, v5
new-array v0, v0, [Ljava/nio/ByteBuffer;
.line 2
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$I420Buffer;->getDataY()Ljava/nio/ByteBuffer;
move-result-object v2
aput-object v2, v0, v3
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$I420Buffer;->getDataU()Ljava/nio/ByteBuffer;
move-result-object v2
aput-object v2, v0, v4
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$I420Buffer;->getDataV()Ljava/nio/ByteBuffer;
move-result-object v2
aput-object v2, v0, v5
.line 3
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$Buffer;->getWidth()I
move-result v2
invoke-interface {p1}, Lcom/mmc/player/render/VideoFrame$Buffer;->getHeight()I
move-result p1
invoke-virtual {p0, v2, p1, v1, v0}, Lcom/mmc/player/render/YuvHelper$YuvUploader;->uploadYuvData(II[I[Ljava/nio/ByteBuffer;)[I
move-result-object p1
return-object p1
.end method
.method public uploadYuvData(II[I[Ljava/nio/ByteBuffer;)[I
.registers 22
move-object/from16 v0, p0
move/from16 v1, p1
move/from16 v2, p2
.line 1
iget-boolean v3, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->dumpInfo:Z
const/4 v4, 0x2
const/4 v5, 0x0
const/4 v6, 0x1
if-nez v3, :cond_3d
.line 2
iput-boolean v6, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->dumpInfo:Z
.line 3
# getter for: Lcom/mmc/player/render/YuvHelper;->TAG:Ljava/lang/String;
invoke-static {}, Lcom/mmc/player/render/YuvHelper;->access$100()Ljava/lang/String;
move-result-object v3
const-string v7, "YuvUploader: Width = "
const-string v8, " Height = "
const-string v9, " stride[0] = "
.line 4
invoke-static {v7, v1, v8, v2, v9}, Landroidx/appcompat/g;->f(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v7
.line 5
aget v8, p3, v5
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v8, " stride[1] = "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aget v8, p3, v6
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v8, " strides[2] = "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aget v8, p3, v4
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-static {v3, v7}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
:cond_3d
const/4 v3, 0x3
new-array v7, v3, [I
aput v1, v7, v5
.line 6
div-int/2addr v1, v4
aput v1, v7, v6
aput v1, v7, v4
new-array v1, v3, [I
aput v2, v1, v5
.line 7
div-int/2addr v2, v4
aput v2, v1, v6
aput v2, v1, v4
const/4 v2, 0x0
const/4 v4, 0x0
:goto_52
if-ge v2, v3, :cond_67
.line 8
aget v8, p3, v2
aget v9, v7, v2
if-le v8, v9, :cond_64
.line 9
aget v8, v7, v2
aget v9, v1, v2
mul-int v8, v8, v9
.line 10
invoke-static {v4, v8}, Ljava/lang/Math;->max(II)I
move-result v4
:cond_64
add-int/lit8 v2, v2, 0x1
goto :goto_52
:cond_67
if-lez v4, :cond_79
.line 11
iget-object v2, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
if-eqz v2, :cond_73
.line 12
invoke-virtual {v2}, Ljava/nio/Buffer;->capacity()I
move-result v2
if-ge v2, v4, :cond_79
.line 13
:cond_73
invoke-static {v4}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object v2
iput-object v2, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
:cond_79
const/16 v2, 0xcf5
.line 14
invoke-static {v2, v6}, Landroid/opengl/GLES20;->glPixelStorei(II)V
.line 15
iget-object v2, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
const/16 v4, 0xde1
if-nez v2, :cond_96
new-array v2, v3, [I
.line 16
iput-object v2, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
const/4 v2, 0x0
:goto_89
if-ge v2, v3, :cond_96
.line 17
iget-object v6, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
invoke-static {v4}, Lcom/mmc/player/opengles/GlUtil;->generateTexture(I)I
move-result v8
aput v8, v6, v2
add-int/lit8 v2, v2, 0x1
goto :goto_89
:cond_96
:goto_96
if-ge v5, v3, :cond_d6
const v2, 0x84c0
add-int/2addr v2, v5
.line 18
invoke-static {v2}, Landroid/opengl/GLES20;->glActiveTexture(I)V
.line 19
iget-object v2, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
aget v2, v2, v5
invoke-static {v4, v2}, Landroid/opengl/GLES20;->glBindTexture(II)V
.line 20
aget v2, p3, v5
aget v6, v7, v5
if-ne v2, v6, :cond_af
.line 21
aget-object v2, p4, v5
goto :goto_c0
.line 22
:cond_af
aget-object v8, p4, v5
aget v9, p3, v5
iget-object v10, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
aget v11, v7, v5
aget v12, v7, v5
aget v13, v1, v5
invoke-static/range {v8 .. v13}, Lcom/mmc/player/render/YuvHelper;->copyPlane(Ljava/nio/ByteBuffer;ILjava/nio/ByteBuffer;III)V
.line 23
iget-object v2, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->copyBuffer:Ljava/nio/ByteBuffer;
:goto_c0
move-object/from16 v16, v2
const/16 v8, 0xde1
const/4 v9, 0x0
const/16 v10, 0x1909
.line 24
aget v11, v7, v5
aget v12, v1, v5
const/4 v13, 0x0
const/16 v14, 0x1909
const/16 v15, 0x1401
invoke-static/range {v8 .. v16}, Landroid/opengl/GLES20;->glTexImage2D(IIIIIIIILjava/nio/Buffer;)V
add-int/lit8 v5, v5, 0x1
goto :goto_96
.line 25
:cond_d6
iget-object v1, v0, Lcom/mmc/player/render/YuvHelper$YuvUploader;->yuvTextures:[I
return-object v1
.end method