VideoRenderer$I420Frame.smali

.class public Lorg/webrtc/ali/VideoRenderer$I420Frame;
.super Ljava/lang/Object;
.source "VideoRenderer.java"


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lorg/webrtc/ali/VideoRenderer;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x9
    name = "I420Frame"
.end annotation


# instance fields
.field public final height:I

.field private nativeFramePointer:J

.field public rotationDegree:I

.field public final samplingMatrix:[F

.field public textureId:I

.field public final width:I

.field public final yuvFrame:Z

.field public yuvPlanes:[Ljava/nio/ByteBuffer;

.field public final yuvStrides:[I


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

    return-void
.end method

.method public constructor <init>(IIII[FJ)V
    .registers 11
    .param p1, "width"    # I
    .param p2, "height"    # I
    .param p3, "rotationDegree"    # I
    .param p4, "textureId"    # I
    .param p5, "samplingMatrix"    # [F
    .param p6, "nativeFramePointer"    # J

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

    .line 72
    iput p1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->width:I

    .line 73
    iput p2, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->height:I

    .line 74
    const/4 v0, 0x0

    iput-object v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvStrides:[I

    .line 75
    iput-object v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvPlanes:[Ljava/nio/ByteBuffer;

    .line 76
    iput-object p5, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->samplingMatrix:[F

    .line 77
    iput p4, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->textureId:I

    .line 78
    const/4 v0, 0x0

    iput-boolean v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvFrame:Z

    .line 79
    iput p3, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->rotationDegree:I

    .line 80
    iput-wide p6, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->nativeFramePointer:J

    .line 81
    rem-int/lit8 v0, p3, 0x5a

    if-nez v0, :cond_1c

    .line 84
    return-void

    .line 82
    :cond_1c
    new-instance v0, Ljava/lang/IllegalArgumentException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "Rotation degree not multiple of 90: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

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

    throw v0
.end method

.method public constructor <init>(III[FLorg/webrtc/ali/VideoFrame$Buffer;J)V
    .registers 15
    .param p1, "width"    # I
    .param p2, "height"    # I
    .param p3, "rotationDegree"    # I
    .param p4, "samplingMatrix"    # [F
    .param p5, "buffer"    # Lorg/webrtc/ali/VideoFrame$Buffer;
    .param p6, "nativeFramePointer"    # J

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

    .line 91
    iput p1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->width:I

    .line 92
    iput p2, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->height:I

    .line 93
    iput p3, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->rotationDegree:I

    .line 94
    rem-int/lit8 v0, p3, 0x5a

    if-nez v0, :cond_6a

    .line 97
    instance-of v0, p5, Lorg/webrtc/ali/VideoFrame$TextureBuffer;

    const/4 v1, 0x0

    if-eqz v0, :cond_25

    .line 98
    move-object v0, p5

    check-cast v0, Lorg/webrtc/ali/VideoFrame$TextureBuffer;

    .line 99
    .local v0, "textureBuffer":Lorg/webrtc/ali/VideoFrame$TextureBuffer;
    iput-boolean v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvFrame:Z

    .line 100
    invoke-interface {v0}, Lorg/webrtc/ali/VideoFrame$TextureBuffer;->getTextureId()I

    move-result v1

    iput v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->textureId:I

    .line 101
    iput-object p4, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->samplingMatrix:[F

    .line 103
    const/4 v1, 0x0

    iput-object v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvStrides:[I

    .line 104
    iput-object v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvPlanes:[Ljava/nio/ByteBuffer;

    .line 105
    .end local v0    # "textureBuffer":Lorg/webrtc/ali/VideoFrame$TextureBuffer;
    goto :goto_67

    .line 106
    :cond_25
    invoke-interface {p5}, Lorg/webrtc/ali/VideoFrame$Buffer;->toI420()Lorg/webrtc/ali/VideoFrame$I420Buffer;

    move-result-object v0

    .line 107
    .local v0, "i420Buffer":Lorg/webrtc/ali/VideoFrame$I420Buffer;
    const/4 v2, 0x1

    iput-boolean v2, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvFrame:Z

    .line 108
    const/4 v3, 0x3

    new-array v4, v3, [I

    .line 109
    invoke-interface {v0}, Lorg/webrtc/ali/VideoFrame$I420Buffer;->getStrideY()I

    move-result v5

    aput v5, v4, v1

    invoke-interface {v0}, Lorg/webrtc/ali/VideoFrame$I420Buffer;->getStrideU()I

    move-result v5

    aput v5, v4, v2

    invoke-interface {v0}, Lorg/webrtc/ali/VideoFrame$I420Buffer;->getStrideV()I

    move-result v5

    const/4 v6, 0x2

    aput v5, v4, v6

    iput-object v4, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvStrides:[I

    .line 110
    new-array v3, v3, [Ljava/nio/ByteBuffer;

    .line 111
    invoke-interface {v0}, Lorg/webrtc/ali/VideoFrame$I420Buffer;->getDataY()Ljava/nio/ByteBuffer;

    move-result-object v4

    aput-object v4, v3, v1

    invoke-interface {v0}, Lorg/webrtc/ali/VideoFrame$I420Buffer;->getDataU()Ljava/nio/ByteBuffer;

    move-result-object v4

    aput-object v4, v3, v2

    invoke-interface {v0}, Lorg/webrtc/ali/VideoFrame$I420Buffer;->getDataV()Ljava/nio/ByteBuffer;

    move-result-object v2

    aput-object v2, v3, v6

    iput-object v3, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvPlanes:[Ljava/nio/ByteBuffer;

    .line 116
    nop

    .line 117
    invoke-static {}, Lorg/webrtc/ali/RendererCommon;->verticalFlipMatrix()[F

    move-result-object v2

    invoke-static {p4, v2}, Lorg/webrtc/ali/RendererCommon;->multiplyMatrices([F[F)[F

    move-result-object v2

    iput-object v2, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->samplingMatrix:[F

    .line 119
    iput v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->textureId:I

    .line 121
    .end local v0    # "i420Buffer":Lorg/webrtc/ali/VideoFrame$I420Buffer;
    :goto_67
    iput-wide p6, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->nativeFramePointer:J

    .line 122
    return-void

    .line 95
    :cond_6a
    new-instance v0, Ljava/lang/IllegalArgumentException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "Rotation degree not multiple of 90: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

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

    throw v0
.end method

.method public constructor <init>(III[I[Ljava/nio/ByteBuffer;J)V
    .registers 11
    .param p1, "width"    # I
    .param p2, "height"    # I
    .param p3, "rotationDegree"    # I
    .param p4, "yuvStrides"    # [I
    .param p5, "yuvPlanes"    # [Ljava/nio/ByteBuffer;
    .param p6, "nativeFramePointer"    # J

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

    .line 50
    iput p1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->width:I

    .line 51
    iput p2, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->height:I

    .line 52
    iput-object p4, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvStrides:[I

    .line 53
    iput-object p5, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvPlanes:[Ljava/nio/ByteBuffer;

    .line 54
    const/4 v0, 0x1

    iput-boolean v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvFrame:Z

    .line 55
    iput p3, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->rotationDegree:I

    .line 56
    iput-wide p6, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->nativeFramePointer:J

    .line 57
    rem-int/lit8 v0, p3, 0x5a

    if-nez v0, :cond_1d

    .line 64
    invoke-static {}, Lorg/webrtc/ali/RendererCommon;->verticalFlipMatrix()[F

    move-result-object v0

    iput-object v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->samplingMatrix:[F

    .line 65
    return-void

    .line 58
    :cond_1d
    new-instance v0, Ljava/lang/IllegalArgumentException;

    new-instance v1, Ljava/lang/StringBuilder;

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

    const-string v2, "Rotation degree not multiple of 90: "

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

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

    throw v0
.end method

.method static synthetic access$000(Lorg/webrtc/ali/VideoRenderer$I420Frame;)J
    .registers 3
    .param p0, "x0"    # Lorg/webrtc/ali/VideoRenderer$I420Frame;

    .line 26
    iget-wide v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->nativeFramePointer:J

    return-wide v0
.end method

.method static synthetic access$002(Lorg/webrtc/ali/VideoRenderer$I420Frame;J)J
    .registers 3
    .param p0, "x0"    # Lorg/webrtc/ali/VideoRenderer$I420Frame;
    .param p1, "x1"    # J

    .line 26
    iput-wide p1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->nativeFramePointer:J

    return-wide p1
.end method


# virtual methods
.method public rotatedHeight()I
    .registers 2

    .line 129
    iget v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->rotationDegree:I

    rem-int/lit16 v0, v0, 0xb4

    if-nez v0, :cond_9

    iget v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->height:I

    goto :goto_b

    :cond_9
    iget v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->width:I

    :goto_b
    return v0
.end method

.method public rotatedWidth()I
    .registers 2

    .line 125
    iget v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->rotationDegree:I

    rem-int/lit16 v0, v0, 0xb4

    if-nez v0, :cond_9

    iget v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->width:I

    goto :goto_b

    :cond_9
    iget v0, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->height:I

    :goto_b
    return v0
.end method

.method public toString()Ljava/lang/String;
    .registers 5

    .line 134
    new-instance v0, Ljava/lang/StringBuilder;

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

    iget v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->width:I

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v1, "x"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->height:I

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v1, ":"

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget-object v2, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvStrides:[I

    const/4 v3, 0x0

    aget v2, v2, v3

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget-object v2, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvStrides:[I

    const/4 v3, 0x1

    aget v2, v2, v3

    invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget-object v1, p0, Lorg/webrtc/ali/VideoRenderer$I420Frame;->yuvStrides:[I

    const/4 v2, 0x2

    aget v1, v1, v2

    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

    return-object v0
.end method