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