HardwareVideoDecoder$2.smali

.class Lorg/webrtc/ali/HardwareVideoDecoder$2;
.super Ljava/lang/Object;
.source "HardwareVideoDecoder.java"

# interfaces
.implements Lorg/webrtc/ali/VideoFrame$I420Buffer;


# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = Lorg/webrtc/ali/HardwareVideoDecoder;->createBufferFromI420(Ljava/nio/ByteBuffer;IIIIII)Lorg/webrtc/ali/VideoFrame$I420Buffer;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation


# instance fields
.field private refCount:I

.field final synthetic this$0:Lorg/webrtc/ali/HardwareVideoDecoder;

.field final synthetic val$buffer:Ljava/nio/ByteBuffer;

.field final synthetic val$chromaHeight:I

.field final synthetic val$height:I

.field final synthetic val$outputBufferIndex:I

.field final synthetic val$stride:I

.field final synthetic val$uPos:I

.field final synthetic val$uvStride:I

.field final synthetic val$vPos:I

.field final synthetic val$width:I

.field final synthetic val$yPos:I


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

    return-void
.end method

.method constructor <init>(Lorg/webrtc/ali/HardwareVideoDecoder;Ljava/nio/ByteBuffer;IIIIIIIII)V
    .registers 12
    .param p1, "this$0"    # Lorg/webrtc/ali/HardwareVideoDecoder;

    .line 522
    iput-object p1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->this$0:Lorg/webrtc/ali/HardwareVideoDecoder;

    iput-object p2, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$buffer:Ljava/nio/ByteBuffer;

    iput p3, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$yPos:I

    iput p4, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$height:I

    iput p5, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$uPos:I

    iput p6, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$chromaHeight:I

    iput p7, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$vPos:I

    iput p8, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$stride:I

    iput p9, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$uvStride:I

    iput p10, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$width:I

    iput p11, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$outputBufferIndex:I

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

    .line 523
    const/4 p2, 0x1

    iput p2, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->refCount:I

    return-void
.end method


# virtual methods
.method public getDataU()Ljava/nio/ByteBuffer;
    .registers 5

    .line 535
    iget-object v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$buffer:Ljava/nio/ByteBuffer;

    invoke-virtual {v0}, Ljava/nio/ByteBuffer;->slice()Ljava/nio/ByteBuffer;

    move-result-object v0

    .line 536
    .local v0, "data":Ljava/nio/ByteBuffer;
    iget v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$uPos:I

    invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;

    .line 537
    iget v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$uPos:I

    invoke-virtual {p0}, Lorg/webrtc/ali/HardwareVideoDecoder$2;->getStrideU()I

    move-result v2

    iget v3, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$chromaHeight:I

    mul-int v2, v2, v3

    add-int/2addr v1, v2

    invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;

    .line 538
    return-object v0
.end method

.method public getDataV()Ljava/nio/ByteBuffer;
    .registers 5

    .line 543
    iget-object v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$buffer:Ljava/nio/ByteBuffer;

    invoke-virtual {v0}, Ljava/nio/ByteBuffer;->slice()Ljava/nio/ByteBuffer;

    move-result-object v0

    .line 544
    .local v0, "data":Ljava/nio/ByteBuffer;
    iget v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$vPos:I

    invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;

    .line 545
    iget v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$vPos:I

    invoke-virtual {p0}, Lorg/webrtc/ali/HardwareVideoDecoder$2;->getStrideV()I

    move-result v2

    iget v3, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$chromaHeight:I

    mul-int v2, v2, v3

    add-int/2addr v1, v2

    invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;

    .line 546
    return-object v0
.end method

.method public getDataY()Ljava/nio/ByteBuffer;
    .registers 5

    .line 527
    iget-object v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$buffer:Ljava/nio/ByteBuffer;

    invoke-virtual {v0}, Ljava/nio/ByteBuffer;->slice()Ljava/nio/ByteBuffer;

    move-result-object v0

    .line 528
    .local v0, "data":Ljava/nio/ByteBuffer;
    iget v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$yPos:I

    invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;

    .line 529
    iget v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$yPos:I

    invoke-virtual {p0}, Lorg/webrtc/ali/HardwareVideoDecoder$2;->getStrideY()I

    move-result v2

    iget v3, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$height:I

    mul-int v2, v2, v3

    add-int/2addr v1, v2

    invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;

    .line 530
    return-object v0
.end method

.method public getHeight()I
    .registers 2

    .line 571
    iget v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$height:I

    return v0
.end method

.method public getStrideU()I
    .registers 2

    .line 556
    iget v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$uvStride:I

    return v0
.end method

.method public getStrideV()I
    .registers 2

    .line 561
    iget v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$uvStride:I

    return v0
.end method

.method public getStrideY()I
    .registers 2

    .line 551
    iget v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$stride:I

    return v0
.end method

.method public getWidth()I
    .registers 2

    .line 566
    iget v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$width:I

    return v0
.end method

.method public release()V
    .registers 4

    .line 586
    iget v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->refCount:I

    add-int/lit8 v0, v0, -0x1

    iput v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->refCount:I

    .line 588
    if-nez v0, :cond_2e

    .line 589
    iget-object v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->this$0:Lorg/webrtc/ali/HardwareVideoDecoder;

    invoke-static {v0}, Lorg/webrtc/ali/HardwareVideoDecoder;->access$400(Lorg/webrtc/ali/HardwareVideoDecoder;)Landroid/media/MediaCodec;

    move-result-object v0

    iget v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->val$outputBufferIndex:I

    const/4 v2, 0x0

    invoke-virtual {v0, v1, v2}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V

    .line 590
    iget-object v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->this$0:Lorg/webrtc/ali/HardwareVideoDecoder;

    invoke-static {v0}, Lorg/webrtc/ali/HardwareVideoDecoder;->access$500(Lorg/webrtc/ali/HardwareVideoDecoder;)Ljava/lang/Object;

    move-result-object v0

    monitor-enter v0

    .line 591
    :try_start_1b
    iget-object v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->this$0:Lorg/webrtc/ali/HardwareVideoDecoder;

    invoke-static {v1}, Lorg/webrtc/ali/HardwareVideoDecoder;->access$610(Lorg/webrtc/ali/HardwareVideoDecoder;)I

    .line 592
    iget-object v1, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->this$0:Lorg/webrtc/ali/HardwareVideoDecoder;

    invoke-static {v1}, Lorg/webrtc/ali/HardwareVideoDecoder;->access$500(Lorg/webrtc/ali/HardwareVideoDecoder;)Ljava/lang/Object;

    move-result-object v1

    invoke-virtual {v1}, Ljava/lang/Object;->notifyAll()V

    .line 593
    monitor-exit v0

    goto :goto_2e

    :catchall_2b
    move-exception v1

    monitor-exit v0
    :try_end_2d
    .catchall {:try_start_1b .. :try_end_2d} :catchall_2b

    throw v1

    .line 595
    :cond_2e
    :goto_2e
    return-void
.end method

.method public retain()V
    .registers 2

    .line 581
    iget v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->refCount:I

    add-int/lit8 v0, v0, 0x1

    iput v0, p0, Lorg/webrtc/ali/HardwareVideoDecoder$2;->refCount:I

    .line 582
    return-void
.end method

.method public toI420()Lorg/webrtc/ali/VideoFrame$I420Buffer;
    .registers 1

    .line 576
    return-object p0
.end method