MediaVideoDecoder21$4.smali

.class Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;
.super Landroid/media/MediaCodec$Callback;
.source "MediaVideoDecoder21.java"


# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->setVideoDecoderCallback()V
.end annotation

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


# instance fields
.field final synthetic this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;


# direct methods
.method constructor <init>(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)V
    .registers 2

    .line 1
    iput-object p1, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    invoke-direct {p0}, Landroid/media/MediaCodec$Callback;-><init>()V

    return-void
.end method


# virtual methods
.method public onError(Landroid/media/MediaCodec;Landroid/media/MediaCodec$CodecException;)V
    .registers 3

    return-void
.end method

.method public onInputBufferAvailable(Landroid/media/MediaCodec;I)V
    .registers 13

    .line 1
    iget-object v0, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    # getter for: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->stopped:Z
    invoke-static {v0}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$1000(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)Z

    move-result v0

    if-eqz v0, :cond_9

    return-void

    .line 2
    :cond_9
    invoke-virtual {p1, p2}, Landroid/media/MediaCodec;->getInputBuffer(I)Ljava/nio/ByteBuffer;

    move-result-object v0

    if-nez v0, :cond_10

    return-void

    .line 3
    :cond_10
    invoke-virtual {v0}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;

    .line 4
    iget-object v1, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    # getter for: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->mVideoExtractor:Landroid/media/MediaExtractor;
    invoke-static {v1}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$100(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)Landroid/media/MediaExtractor;

    move-result-object v1

    const/4 v2, 0x0

    invoke-virtual {v1, v0, v2}, Landroid/media/MediaExtractor;->readSampleData(Ljava/nio/ByteBuffer;I)I

    move-result v6

    if-ltz v6, :cond_44

    const/4 v5, 0x0

    .line 5
    iget-object v0, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    .line 6
    # getter for: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->mVideoExtractor:Landroid/media/MediaExtractor;
    invoke-static {v0}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$100(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)Landroid/media/MediaExtractor;

    move-result-object v0

    invoke-virtual {v0}, Landroid/media/MediaExtractor;->getSampleTime()J

    move-result-wide v7

    iget-object v0, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    .line 7
    # getter for: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->mVideoExtractor:Landroid/media/MediaExtractor;
    invoke-static {v0}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$100(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)Landroid/media/MediaExtractor;

    move-result-object v0

    invoke-virtual {v0}, Landroid/media/MediaExtractor;->getSampleFlags()I

    move-result v9

    move-object v3, p1

    move v4, p2

    .line 8
    invoke-virtual/range {v3 .. v9}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V

    .line 9
    iget-object p1, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    # getter for: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->mVideoExtractor:Landroid/media/MediaExtractor;
    invoke-static {p1}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$100(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)Landroid/media/MediaExtractor;

    move-result-object p1

    invoke-virtual {p1}, Landroid/media/MediaExtractor;->advance()Z

    goto :goto_4e

    :cond_44
    const/4 v2, 0x0

    const/4 v3, 0x0

    const-wide/16 v4, 0x0

    const/4 v6, 0x4

    move-object v0, p1

    move v1, p2

    .line 10
    invoke-virtual/range {v0 .. v6}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V

    :goto_4e
    return-void
.end method

.method public onOutputBufferAvailable(Landroid/media/MediaCodec;ILandroid/media/MediaCodec$BufferInfo;)V
    .registers 9

    .line 1
    iget-object v0, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    # getter for: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->stopped:Z
    invoke-static {v0}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$1000(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)Z

    move-result v0

    if-eqz v0, :cond_9

    return-void

    .line 2
    :cond_9
    invoke-virtual {p1, p2}, Landroid/media/MediaCodec;->getOutputBuffer(I)Ljava/nio/ByteBuffer;

    move-result-object v0

    if-eqz v0, :cond_4a

    .line 3
    iget v0, p3, Landroid/media/MediaCodec$BufferInfo;->flags:I

    and-int/lit8 v0, v0, 0x4

    if-eqz v0, :cond_1f

    .line 4
    iget-object p1, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    iget-object p1, p1, Lcn/rongcloud/rtc/custom/MediaVideoDecoder;->mOnFrameAvailableListener:Lcn/rongcloud/rtc/custom/OnFrameAvailableListener;

    if-eqz p1, :cond_1e

    .line 5
    invoke-interface {p1}, Lcn/rongcloud/rtc/custom/OnFrameAvailableListener;->onFrameEnd()V

    :cond_1e
    return-void

    .line 6
    :cond_1f
    new-instance v0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$DecoderData;

    iget-object v1, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    const/4 v2, 0x0

    invoke-direct {v0, v1, v2}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$DecoderData;-><init>(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$1;)V

    .line 7
    invoke-virtual {p1, p2}, Landroid/media/MediaCodec;->getOutputImage(I)Landroid/media/Image;

    move-result-object v1

    # invokes: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->getDataFromImage(Landroid/media/Image;)[B
    invoke-static {v1}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$1200(Landroid/media/Image;)[B

    move-result-object v1

    iput-object v1, v0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$DecoderData;->data:[B

    .line 8
    iget-wide v1, p3, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J

    const-wide/16 v3, 0x3e8

    div-long/2addr v1, v3

    iput-wide v1, v0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$DecoderData;->presentationTime:J

    .line 9
    :try_start_38
    iget-object p3, p0, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21$4;->this$0:Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;

    # getter for: Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->mBufferQueue:Ljava/util/concurrent/BlockingQueue;
    invoke-static {p3}, Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;->access$800(Lcn/rongcloud/rtc/custom/MediaVideoDecoder21;)Ljava/util/concurrent/BlockingQueue;

    move-result-object p3

    invoke-interface {p3, v0}, Ljava/util/concurrent/BlockingQueue;->put(Ljava/lang/Object;)V
    :try_end_41
    .catch Ljava/lang/InterruptedException; {:try_start_38 .. :try_end_41} :catch_42

    goto :goto_46

    :catch_42
    move-exception p3

    .line 10
    invoke-virtual {p3}, Ljava/lang/InterruptedException;->printStackTrace()V

    :goto_46
    const/4 p3, 0x0

    .line 11
    invoke-virtual {p1, p2, p3}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V

    :cond_4a
    return-void
.end method

.method public onOutputFormatChanged(Landroid/media/MediaCodec;Landroid/media/MediaFormat;)V
    .registers 3

    return-void
.end method