VideoSlimEncoder.smali
.class public Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;
.super Ljava/lang/Object;
.source "VideoSlimEncoder.java"
# static fields
.field private static FRAME_RATE:I = 0x19
.field private static IFRAME_INTERVAL:I = 0xa
.field private static final MEDIATYPE_NOT_AUDIO_VIDEO:I = -0xe9
.field private static final MIME_TYPE:Ljava/lang/String; = "video/avc"
.field private static final TAG:Ljava/lang/String; = "VideoSlimEncoder"
.field private static final VERBOSE:Z = true
# instance fields
.field private final TIMEOUT_USEC:I
.field private mBitRate:I
.field private mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
.field private mDecoder:Landroid/media/MediaCodec;
.field private mEncoder:Landroid/media/MediaCodec;
.field private mHeight:I
.field private mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
.field private mMuxer:Landroid/media/MediaMuxer;
.field private mTrackIndex:I
.field private mWidth:I
.field private outputPath:Ljava/lang/String;
.field private path:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 0
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, -0x1
.line 2
iput v0, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mWidth:I
.line 3
iput v0, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mHeight:I
.line 4
iput v0, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBitRate:I
const/16 v0, 0x9c4
.line 5
iput v0, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->TIMEOUT_USEC:I
return-void
.end method
.method private checkParmsError(III)Z
.registers 4
if-lez p1, :cond_9
if-lez p2, :cond_9
if-gtz p3, :cond_7
goto :goto_9
:cond_7
const/4 p1, 0x0
return p1
:cond_9
:goto_9
const/4 p1, 0x1
return p1
.end method
.method private prepareEncoder(Landroid/media/MediaFormat;)V
.registers 8
const-string v0, "prepareEncoder:"
.line 1
new-instance v1, Landroid/media/MediaCodec$BufferInfo;
invoke-direct {v1}, Landroid/media/MediaCodec$BufferInfo;-><init>()V
iput-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
.line 2
iget v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mWidth:I
iget v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mHeight:I
const-string v3, "video/avc"
invoke-static {v3, v1, v2}, Landroid/media/MediaFormat;->createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;
move-result-object v1
const-string v2, "color-format"
const v4, 0x7f000789
.line 3
invoke-virtual {v1, v2, v4}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 4
iget v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBitRate:I
const-string v4, "bitrate"
invoke-virtual {v1, v4, v2}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 5
sget v2, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->FRAME_RATE:I
const-string v4, "frame-rate"
invoke-virtual {v1, v4, v2}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 6
sget v2, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->IFRAME_INTERVAL:I
const-string v4, "i-frame-interval"
invoke-virtual {v1, v4, v2}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 7
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "format: "
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
const-string v4, "VideoSlimEncoder"
invoke-static {v4, v2}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 8
:try_start_46
invoke-static {v3}, Landroid/media/MediaCodec;->createEncoderByType(Ljava/lang/String;)Landroid/media/MediaCodec;
move-result-object v2
iput-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
:try_end_4c
.catch Ljava/io/IOException; {:try_start_46 .. :try_end_4c} :catch_4d
goto :goto_60
:catch_4d
move-exception v2
.line 9
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v4, v2}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 10
:goto_60
iget-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
const/4 v3, 0x1
const/4 v5, 0x0
invoke-virtual {v2, v1, v5, v5, v3}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 11
new-instance v1, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
iget-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v2}, Landroid/media/MediaCodec;->createInputSurface()Landroid/view/Surface;
move-result-object v2
invoke-direct {v1, v2}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;-><init>(Landroid/view/Surface;)V
iput-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
.line 12
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
invoke-virtual {v1}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->makeCurrent()V
.line 13
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->start()V
:try_start_7e
const-string v1, "mime"
.line 14
invoke-virtual {p1, v1}, Landroid/media/MediaFormat;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Landroid/media/MediaCodec;->createDecoderByType(Ljava/lang/String;)Landroid/media/MediaCodec;
move-result-object v1
iput-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
:try_end_8a
.catch Ljava/io/IOException; {:try_start_7e .. :try_end_8a} :catch_8b
goto :goto_9e
:catch_8b
move-exception v1
.line 15
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v4, v0}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 16
:goto_9e
iget-object v0, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
invoke-virtual {v0}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->createRender()V
.line 17
iget-object v0, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
invoke-virtual {v1}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->getSurface()Landroid/view/Surface;
move-result-object v1
const/4 v2, 0x0
invoke-virtual {v0, p1, v1, v5, v2}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 18
iget-object p1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
invoke-virtual {p1}, Landroid/media/MediaCodec;->start()V
const/4 p1, -0x1
.line 19
iput p1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mTrackIndex:I
return-void
.end method
.method private releaseCoder()Z
.registers 4
const-string v0, "VideoSlimEncoder"
const-string v1, "releasing encoder objects"
.line 1
invoke-static {v0, v1}, Lio/rong/common/RLog;->d(Ljava/lang/String;Ljava/lang/String;)I
.line 2
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
const/4 v2, 0x0
if-eqz v1, :cond_16
.line 3
invoke-virtual {v1}, Landroid/media/MediaCodec;->stop()V
.line 4
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->release()V
.line 5
iput-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
.line 6
:cond_16
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
if-eqz v1, :cond_24
.line 7
invoke-virtual {v1}, Landroid/media/MediaCodec;->stop()V
.line 8
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->release()V
.line 9
iput-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
.line 10
:cond_24
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
if-eqz v1, :cond_2d
.line 11
invoke-virtual {v1}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->release()V
.line 12
iput-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
.line 13
:cond_2d
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
if-eqz v1, :cond_4a
.line 14
:try_start_31
invoke-virtual {v1}, Landroid/media/MediaMuxer;->stop()V
.line 15
iget-object v1, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
invoke-virtual {v1}, Landroid/media/MediaMuxer;->release()V
:try_end_39
.catch Ljava/lang/Exception; {:try_start_31 .. :try_end_39} :catch_3e
.catchall {:try_start_31 .. :try_end_39} :catchall_3c
.line 16
iput-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
goto :goto_4a
:catchall_3c
move-exception v0
goto :goto_47
:catch_3e
:try_start_3e
const-string v1, "mMuxer fail"
.line 17
invoke-static {v0, v1}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
:try_end_43
.catchall {:try_start_3e .. :try_end_43} :catchall_3c
const/4 v0, 0x0
.line 18
iput-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
return v0
:goto_47
iput-object v2, p0, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
throw v0
:cond_4a
:goto_4a
const/4 v0, 0x1
return v0
.end method
.method private selectTrack(Landroid/media/MediaExtractor;Z)I
.registers 7
.line 1
invoke-virtual {p1}, Landroid/media/MediaExtractor;->getTrackCount()I
move-result v0
const/4 v1, 0x0
:goto_5
if-ge v1, v0, :cond_28
.line 2
invoke-virtual {p1, v1}, Landroid/media/MediaExtractor;->getTrackFormat(I)Landroid/media/MediaFormat;
move-result-object v2
const-string v3, "mime"
.line 3
invoke-virtual {v2, v3}, Landroid/media/MediaFormat;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v2
if-eqz p2, :cond_1c
const-string v3, "audio/"
.line 4
invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_25
return v1
:cond_1c
const-string v3, "video/"
.line 5
invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v2
if-eqz v2, :cond_25
return v1
:cond_25
add-int/lit8 v1, v1, 0x1
goto :goto_5
:cond_28
const/16 p1, -0xe9
return p1
.end method
.method private simpleReadAndWriteTrack(Landroid/media/MediaExtractor;Landroid/media/MediaMuxer;Landroid/media/MediaCodec$BufferInfo;JJZ)J
.registers 26
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
move-object/from16 v0, p1
move-object/from16 v1, p2
move-object/from16 v2, p3
move-wide/from16 v3, p4
move-object/from16 v5, p0
move/from16 v6, p8
.line 1
invoke-direct {v5, v0, v6}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->selectTrack(Landroid/media/MediaExtractor;Z)I
move-result v7
if-ltz v7, :cond_96
.line 2
invoke-virtual {v0, v7}, Landroid/media/MediaExtractor;->selectTrack(I)V
.line 3
invoke-virtual {v0, v7}, Landroid/media/MediaExtractor;->getTrackFormat(I)Landroid/media/MediaFormat;
move-result-object v10
.line 4
invoke-virtual {v1, v10}, Landroid/media/MediaMuxer;->addTrack(Landroid/media/MediaFormat;)I
move-result v11
if-nez v6, :cond_22
.line 5
invoke-virtual/range {p2 .. p2}, Landroid/media/MediaMuxer;->start()V
:cond_22
const-string v6, "max-input-size"
.line 6
invoke-virtual {v10, v6}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v6
const-wide/16 v12, 0x0
const/4 v10, 0x0
cmp-long v14, v3, v12
if-lez v14, :cond_33
.line 7
invoke-virtual {v0, v3, v4, v10}, Landroid/media/MediaExtractor;->seekTo(JI)V
goto :goto_36
.line 8
:cond_33
invoke-virtual {v0, v12, v13, v10}, Landroid/media/MediaExtractor;->seekTo(JI)V
.line 9
:goto_36
invoke-static {v6}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object v6
const/4 v14, 0x0
const-wide/16 v15, -0x1
:goto_3d
if-nez v14, :cond_92
.line 10
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->getSampleTrackIndex()I
move-result v8
if-ne v8, v7, :cond_86
.line 11
invoke-virtual {v0, v6, v10}, Landroid/media/MediaExtractor;->readSampleData(Ljava/nio/ByteBuffer;I)I
move-result v8
iput v8, v2, Landroid/media/MediaCodec$BufferInfo;->size:I
.line 12
iget v8, v2, Landroid/media/MediaCodec$BufferInfo;->size:I
if-gez v8, :cond_52
.line 13
iput v10, v2, Landroid/media/MediaCodec$BufferInfo;->size:I
goto :goto_89
.line 14
:cond_52
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->getSampleTime()J
move-result-wide v9
iput-wide v9, v2, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
cmp-long v8, v3, v12
if-lez v8, :cond_65
const-wide/16 v8, -0x1
cmp-long v10, v15, v8
if-nez v10, :cond_65
.line 15
iget-wide v8, v2, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
goto :goto_66
:cond_65
move-wide v8, v15
:goto_66
cmp-long v10, p6, v12
if-ltz v10, :cond_75
.line 16
iget-wide v12, v2, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
cmp-long v10, v12, p6
if-gez v10, :cond_71
goto :goto_75
:cond_71
move-wide v15, v8
const/4 v9, 0x1
const/4 v10, 0x0
goto :goto_8c
:cond_75
:goto_75
const/4 v10, 0x0
.line 17
iput v10, v2, Landroid/media/MediaCodec$BufferInfo;->offset:I
.line 18
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->getSampleFlags()I
move-result v12
iput v12, v2, Landroid/media/MediaCodec$BufferInfo;->flags:I
.line 19
invoke-virtual {v1, v11, v6, v2}, Landroid/media/MediaMuxer;->writeSampleData(ILjava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)V
.line 20
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->advance()Z
move-wide v15, v8
goto :goto_8b
:cond_86
const/4 v9, -0x1
if-ne v8, v9, :cond_8b
:goto_89
const/4 v9, 0x1
goto :goto_8c
:cond_8b
:goto_8b
const/4 v9, 0x0
:goto_8c
if-eqz v9, :cond_8f
const/4 v14, 0x1
:cond_8f
const-wide/16 v12, 0x0
goto :goto_3d
.line 21
:cond_92
invoke-virtual {v0, v7}, Landroid/media/MediaExtractor;->unselectTrack(I)V
return-wide v15
:cond_96
const-wide/16 v0, -0x1
return-wide v0
.end method
.method private writeAudioTrack(Landroid/media/MediaExtractor;Landroid/media/MediaMuxer;Landroid/media/MediaCodec$BufferInfo;JJLjava/io/File;I)J
.registers 27
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
move-object/from16 v0, p1
move-object/from16 v1, p3
move-wide/from16 v2, p4
const/4 v4, 0x1
move-object/from16 v5, p0
.line 1
invoke-direct {v5, v0, v4}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->selectTrack(Landroid/media/MediaExtractor;Z)I
move-result v6
const-wide/16 v7, -0x1
if-ltz v6, :cond_9a
.line 2
invoke-virtual {v0, v6}, Landroid/media/MediaExtractor;->selectTrack(I)V
.line 3
invoke-virtual {v0, v6}, Landroid/media/MediaExtractor;->getTrackFormat(I)Landroid/media/MediaFormat;
move-result-object v9
const-string v10, "max-input-size"
.line 4
invoke-virtual {v9, v10}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v9
const-wide/16 v10, 0x0
const/4 v12, 0x0
cmp-long v13, v2, v10
if-lez v13, :cond_29
.line 5
invoke-virtual {v0, v2, v3, v12}, Landroid/media/MediaExtractor;->seekTo(JI)V
goto :goto_2c
.line 6
:cond_29
invoke-virtual {v0, v10, v11, v12}, Landroid/media/MediaExtractor;->seekTo(JI)V
.line 7
:goto_2c
invoke-static {v9}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object v9
move-wide v14, v7
const/4 v13, 0x0
:goto_32
if-nez v13, :cond_96
.line 8
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->getSampleTrackIndex()I
move-result v4
if-ne v4, v6, :cond_82
.line 9
invoke-virtual {v0, v9, v12}, Landroid/media/MediaExtractor;->readSampleData(Ljava/nio/ByteBuffer;I)I
move-result v4
iput v4, v1, Landroid/media/MediaCodec$BufferInfo;->size:I
.line 10
iget v4, v1, Landroid/media/MediaCodec$BufferInfo;->size:I
if-gez v4, :cond_4c
.line 11
iput v12, v1, Landroid/media/MediaCodec$BufferInfo;->size:I
move/from16 v16, v13
const/4 v4, 0x1
move-object/from16 v13, p2
goto :goto_8c
:cond_4c
move/from16 v16, v13
.line 12
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->getSampleTime()J
move-result-wide v12
iput-wide v12, v1, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
cmp-long v4, v2, v10
if-lez v4, :cond_5e
cmp-long v4, v14, v7
if-nez v4, :cond_5e
.line 13
iget-wide v14, v1, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
:cond_5e
cmp-long v4, p6, v10
if-ltz v4, :cond_6e
.line 14
iget-wide v12, v1, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
cmp-long v4, v12, p6
if-gez v4, :cond_69
goto :goto_6e
:cond_69
move-object/from16 v13, p2
const/4 v4, 0x1
const/4 v12, 0x0
goto :goto_8c
:cond_6e
:goto_6e
const/4 v12, 0x0
.line 15
iput v12, v1, Landroid/media/MediaCodec$BufferInfo;->offset:I
.line 16
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->getSampleFlags()I
move-result v4
iput v4, v1, Landroid/media/MediaCodec$BufferInfo;->flags:I
move-object/from16 v13, p2
move/from16 v4, p9
.line 17
invoke-virtual {v13, v4, v9, v1}, Landroid/media/MediaMuxer;->writeSampleData(ILjava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)V
.line 18
invoke-virtual/range {p1 .. p1}, Landroid/media/MediaExtractor;->advance()Z
goto :goto_8b
:cond_82
move/from16 v16, v13
move-object/from16 v13, p2
const/4 v10, -0x1
if-ne v4, v10, :cond_8b
const/4 v4, 0x1
goto :goto_8c
:cond_8b
:goto_8b
const/4 v4, 0x0
:goto_8c
if-eqz v4, :cond_90
const/16 v16, 0x1
:cond_90
move/from16 v13, v16
const/4 v4, 0x1
const-wide/16 v10, 0x0
goto :goto_32
.line 19
:cond_96
invoke-virtual {v0, v6}, Landroid/media/MediaExtractor;->unselectTrack(I)V
return-wide v14
:cond_9a
return-wide v7
.end method
# virtual methods
.method public convertVideo(Ljava/lang/String;Ljava/lang/String;IIILio/rong/imkit/utilities/videocompressor/videoslimmer/listner/SlimProgressListener;)Z
.registers 37
move-object/from16 v11, p0
move-object/from16 v0, p2
move/from16 v1, p3
move/from16 v2, p4
move/from16 v3, p5
move-object/from16 v4, p6
const-string v12, "VideoSlimEncoder"
move-object/from16 v5, p1
.line 1
iput-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->path:Ljava/lang/String;
.line 2
iput-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->outputPath:Ljava/lang/String;
.line 3
invoke-direct {v11, v1, v2, v3}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->checkParmsError(III)Z
move-result v5
const/4 v13, 0x0
if-eqz v5, :cond_1c
return v13
.line 4
:cond_1c
new-instance v5, Landroid/media/MediaMetadataRetriever;
invoke-direct {v5}, Landroid/media/MediaMetadataRetriever;-><init>()V
.line 5
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->path:Ljava/lang/String;
invoke-virtual {v5, v6}, Landroid/media/MediaMetadataRetriever;->setDataSource(Ljava/lang/String;)V
const/16 v6, 0x12
.line 6
invoke-virtual {v5, v6}, Landroid/media/MediaMetadataRetriever;->extractMetadata(I)Ljava/lang/String;
move-result-object v6
const/16 v7, 0x13
.line 7
invoke-virtual {v5, v7}, Landroid/media/MediaMetadataRetriever;->extractMetadata(I)Ljava/lang/String;
move-result-object v7
const/16 v8, 0x18
.line 8
invoke-virtual {v5, v8}, Landroid/media/MediaMetadataRetriever;->extractMetadata(I)Ljava/lang/String;
const/16 v8, 0x9
.line 9
invoke-virtual {v5, v8}, Landroid/media/MediaMetadataRetriever;->extractMetadata(I)Ljava/lang/String;
move-result-object v5
invoke-static {v5}, Ljava/lang/Long;->valueOf(Ljava/lang/String;)Ljava/lang/Long;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/Long;->longValue()J
move-result-wide v8
const-wide/16 v14, 0x3e8
mul-long v8, v8, v14
.line 10
invoke-static {v6}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
move-result-object v5
invoke-virtual {v5}, Ljava/lang/Integer;->intValue()I
move-result v5
.line 11
invoke-static {v7}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
move-result-object v6
invoke-virtual {v6}, Ljava/lang/Integer;->intValue()I
move-result v6
.line 12
iput v3, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBitRate:I
.line 13
iput v1, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mWidth:I
.line 14
iput v2, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mHeight:I
.line 15
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
.line 16
new-instance v10, Ljava/io/File;
invoke-direct {v10, v0}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 17
new-instance v0, Ljava/io/File;
iget-object v3, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->path:Ljava/lang/String;
invoke-direct {v0, v3}, Ljava/io/File;-><init>(Ljava/lang/String;)V
.line 18
invoke-virtual {v0}, Ljava/io/File;->canRead()Z
move-result v3
if-nez v3, :cond_75
return v13
:cond_75
const/4 v7, 0x1
.line 19
:try_start_76
new-instance v14, Landroid/media/MediaExtractor;
invoke-direct {v14}, Landroid/media/MediaExtractor;-><init>()V
:try_end_7b
.catch Ljava/lang/Exception; {:try_start_76 .. :try_end_7b} :catch_3f8
.catchall {:try_start_76 .. :try_end_7b} :catchall_3f4
.line 20
:try_start_7b
invoke-virtual {v0}, Ljava/io/File;->toString()Ljava/lang/String;
move-result-object v15
invoke-virtual {v14, v15}, Landroid/media/MediaExtractor;->setDataSource(Ljava/lang/String;)V
.line 21
new-instance v15, Landroid/media/MediaExtractor;
invoke-direct {v15}, Landroid/media/MediaExtractor;-><init>()V
:try_end_87
.catch Ljava/lang/Exception; {:try_start_7b .. :try_end_87} :catch_3ef
.catchall {:try_start_7b .. :try_end_87} :catchall_3ec
.line 22
:try_start_87
invoke-virtual {v0}, Ljava/io/File;->toString()Ljava/lang/String;
move-result-object v0
invoke-virtual {v15, v0}, Landroid/media/MediaExtractor;->setDataSource(Ljava/lang/String;)V
:try_end_8e
.catch Ljava/lang/Exception; {:try_start_87 .. :try_end_8e} :catch_3e7
.catchall {:try_start_87 .. :try_end_8e} :catchall_3e4
.line 23
:try_start_8e
new-instance v0, Landroid/media/MediaMuxer;
iget-object v3, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->outputPath:Ljava/lang/String;
invoke-direct {v0, v3, v13}, Landroid/media/MediaMuxer;-><init>(Ljava/lang/String;I)V
iput-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
:try_end_97
.catch Ljava/io/IOException; {:try_start_8e .. :try_end_97} :catch_3d5
.catch Ljava/lang/Exception; {:try_start_8e .. :try_end_97} :catch_3e7
.catchall {:try_start_8e .. :try_end_97} :catchall_3e4
.line 24
:try_start_97
invoke-direct {v11, v15, v7}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->selectTrack(Landroid/media/MediaExtractor;Z)I
move-result v0
:try_end_9b
.catch Ljava/lang/Exception; {:try_start_97 .. :try_end_9b} :catch_3e7
.catchall {:try_start_97 .. :try_end_9b} :catchall_3e4
move-wide/from16 v18, v8
const-wide/16 v7, 0x0
if-ltz v0, :cond_b9
.line 25
:try_start_a1
invoke-virtual {v15, v0}, Landroid/media/MediaExtractor;->selectTrack(I)V
.line 26
invoke-virtual {v15, v7, v8, v13}, Landroid/media/MediaExtractor;->seekTo(JI)V
.line 27
invoke-virtual {v15, v0}, Landroid/media/MediaExtractor;->getTrackFormat(I)Landroid/media/MediaFormat;
move-result-object v0
.line 28
iget-object v3, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
invoke-virtual {v3, v0}, Landroid/media/MediaMuxer;->addTrack(Landroid/media/MediaFormat;)I
move-result v0
move/from16 v20, v0
goto :goto_bb
:catch_b4
move-exception v0
move-object v3, v14
:goto_b6
const/4 v14, 0x1
goto/16 :goto_3fc
:cond_b9
const/16 v20, 0x0
:goto_bb
const-wide/16 v21, -0x1
if-ne v1, v5, :cond_dd
if-eq v2, v6, :cond_c2
goto :goto_dd
.line 29
:cond_c2
iget-object v3, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
iget-object v4, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
const/4 v9, 0x0
const-wide/16 v5, -0x1
const-wide/16 v7, -0x1
move-object/from16 v1, p0
move-object v2, v14
invoke-direct/range {v1 .. v9}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->simpleReadAndWriteTrack(Landroid/media/MediaExtractor;Landroid/media/MediaMuxer;Landroid/media/MediaCodec$BufferInfo;JJZ)J
move-result-wide v0
:try_end_d2
.catch Ljava/lang/Exception; {:try_start_a1 .. :try_end_d2} :catch_b4
.catchall {:try_start_a1 .. :try_end_d2} :catchall_3e4
cmp-long v2, v0, v21
if-eqz v2, :cond_da
move-wide v5, v0
move-object v13, v14
goto/16 :goto_3bb
:cond_da
move-object v13, v14
goto/16 :goto_3b9
.line 30
:cond_dd
:goto_dd
:try_start_dd
invoke-direct {v11, v14, v13}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->selectTrack(Landroid/media/MediaExtractor;Z)I
move-result v3
:try_end_e1
.catch Ljava/lang/Exception; {:try_start_dd .. :try_end_e1} :catch_3e7
.catchall {:try_start_dd .. :try_end_e1} :catchall_3e4
if-ltz v3, :cond_3af
.line 31
:try_start_e3
invoke-virtual {v14, v3}, Landroid/media/MediaExtractor;->selectTrack(I)V
.line 32
invoke-virtual {v14, v7, v8, v13}, Landroid/media/MediaExtractor;->seekTo(JI)V
.line 33
invoke-virtual {v14, v3}, Landroid/media/MediaExtractor;->getTrackFormat(I)Landroid/media/MediaFormat;
move-result-object v0
.line 34
invoke-direct {v11, v0}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->prepareEncoder(Landroid/media/MediaFormat;)V
.line 35
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
invoke-virtual {v0}, Landroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v5
.line 36
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v0}, Landroid/media/MediaCodec;->getOutputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v0
:try_end_fc
.catch Ljava/lang/Exception; {:try_start_e3 .. :try_end_fc} :catch_3b1
.catchall {:try_start_e3 .. :try_end_fc} :catchall_3e4
move-object v9, v0
const/4 v0, 0x0
const/4 v7, 0x0
const/16 v8, -0xe9
:goto_101
if-nez v0, :cond_3af
move-object/from16 p5, v14
const-wide/16 v13, 0x9c4
if-nez v7, :cond_199
.line 37
:try_start_109
invoke-virtual/range {p5 .. p5}, Landroid/media/MediaExtractor;->getSampleTrackIndex()I
move-result v6
if-ne v6, v3, :cond_164
.line 38
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
invoke-virtual {v6, v13, v14}, Landroid/media/MediaCodec;->dequeueInputBuffer(J)I
move-result v6
if-ltz v6, :cond_15f
.line 39
sget v13, Landroid/os/Build$VERSION;->SDK_INT:I
:try_end_119
.catch Ljava/lang/Exception; {:try_start_109 .. :try_end_119} :catch_194
.catchall {:try_start_109 .. :try_end_119} :catchall_18f
const/16 v14, 0x15
if-ge v13, v14, :cond_12a
.line 40
:try_start_11d
aget-object v13, v5, v6
:try_end_11f
.catch Ljava/lang/Exception; {:try_start_11d .. :try_end_11f} :catch_126
.catchall {:try_start_11d .. :try_end_11f} :catchall_18f
:goto_11f
move-object v14, v13
move-object/from16 v13, p5
move-object/from16 p5, v5
const/4 v5, 0x0
goto :goto_131
:catch_126
move-exception v0
move-object/from16 v3, p5
goto :goto_b6
.line 41
:cond_12a
:try_start_12a
iget-object v13, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
invoke-virtual {v13, v6}, Landroid/media/MediaCodec;->getInputBuffer(I)Ljava/nio/ByteBuffer;
move-result-object v13
:try_end_130
.catch Ljava/lang/Exception; {:try_start_12a .. :try_end_130} :catch_194
.catchall {:try_start_12a .. :try_end_130} :catchall_18f
goto :goto_11f
.line 42
:goto_131
:try_start_131
invoke-virtual {v13, v14, v5}, Landroid/media/MediaExtractor;->readSampleData(Ljava/nio/ByteBuffer;I)I
move-result v26
if-gez v26, :cond_14a
.line 43
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
const/16 v25, 0x0
const/16 v26, 0x0
const-wide/16 v27, 0x0
const/16 v29, 0x4
move-object/from16 v23, v5
move/from16 v24, v6
invoke-virtual/range {v23 .. v29}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
const/4 v7, 0x1
goto :goto_16d
.line 44
:cond_14a
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
const/16 v25, 0x0
invoke-virtual {v13}, Landroid/media/MediaExtractor;->getSampleTime()J
move-result-wide v27
const/16 v29, 0x0
move-object/from16 v23, v5
move/from16 v24, v6
invoke-virtual/range {v23 .. v29}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
.line 45
invoke-virtual {v13}, Landroid/media/MediaExtractor;->advance()Z
goto :goto_16d
:cond_15f
move-object/from16 v13, p5
move-object/from16 p5, v5
goto :goto_16d
:cond_164
move-object/from16 v13, p5
move-object/from16 p5, v5
const/4 v5, -0x1
if-ne v6, v5, :cond_16d
const/4 v5, 0x1
goto :goto_16e
:cond_16d
:goto_16d
const/4 v5, 0x0
:goto_16e
if-eqz v5, :cond_18c
.line 46
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
move v14, v7
const-wide/16 v6, 0x9c4
invoke-virtual {v5, v6, v7}, Landroid/media/MediaCodec;->dequeueInputBuffer(J)I
move-result v24
if-ltz v24, :cond_18d
.line 47
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
const/16 v25, 0x0
const/16 v26, 0x0
const-wide/16 v27, 0x0
const/16 v29, 0x4
move-object/from16 v23, v5
invoke-virtual/range {v23 .. v29}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
const/4 v7, 0x1
goto :goto_19d
:cond_18c
move v14, v7
:cond_18d
move v7, v14
goto :goto_19d
:catchall_18f
move-exception v0
move-object/from16 v13, p5
goto/16 :goto_41b
:catch_194
move-exception v0
move-object/from16 v13, p5
goto/16 :goto_3b3
:cond_199
move-object/from16 v13, p5
move-object/from16 p5, v5
:goto_19d
move v6, v0
const/4 v0, 0x1
const/4 v5, 0x1
:goto_1a0
if-nez v5, :cond_1ac
if-eqz v0, :cond_1a5
goto :goto_1ac
:cond_1a5
move-object/from16 v5, p5
move v0, v6
move-object v14, v13
const/4 v13, 0x0
goto/16 :goto_101
.line 48
:cond_1ac
:goto_1ac
iget-object v14, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
move/from16 v23, v0
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
move/from16 v24, v5
move/from16 v25, v6
const-wide/16 v5, 0x9c4
invoke-virtual {v14, v0, v5, v6}, Landroid/media/MediaCodec;->dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I
move-result v0
const/4 v5, -0x2
const/4 v6, -0x3
const/4 v14, -0x1
if-ne v0, v14, :cond_1ca
move/from16 v6, v25
const/4 v5, -0x1
const/16 v23, 0x0
:goto_1c6
move/from16 v25, v7
goto/16 :goto_2ca
:cond_1ca
if-ne v0, v6, :cond_1dc
.line 49
sget v14, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v6, 0x15
if-ge v14, v6, :cond_1d8
.line 50
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v6}, Landroid/media/MediaCodec;->getOutputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v9
:cond_1d8
:goto_1d8
move/from16 v6, v25
const/4 v5, -0x1
goto :goto_1c6
:cond_1dc
if-ne v0, v5, :cond_1f6
.line 51
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v6}, Landroid/media/MediaCodec;->getOutputFormat()Landroid/media/MediaFormat;
move-result-object v6
const/16 v14, -0xe9
if-ne v8, v14, :cond_1d8
.line 52
iget-object v8, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
invoke-virtual {v8, v6}, Landroid/media/MediaMuxer;->addTrack(Landroid/media/MediaFormat;)I
move-result v8
.line 53
iput v8, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mTrackIndex:I
.line 54
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
invoke-virtual {v6}, Landroid/media/MediaMuxer;->start()V
goto :goto_1d8
:cond_1f6
if-ltz v0, :cond_396
.line 55
sget v6, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v14, 0x15
if-ge v6, v14, :cond_201
.line 56
aget-object v6, v9, v0
goto :goto_207
.line 57
:cond_201
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v6, v0}, Landroid/media/MediaCodec;->getOutputBuffer(I)Ljava/nio/ByteBuffer;
move-result-object v6
:goto_207
if-eqz v6, :cond_37a
.line 58
iget-object v14, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v14, v14, Landroid/media/MediaCodec$BufferInfo;->size:I
move/from16 v25, v7
const/4 v7, 0x1
if-le v14, v7, :cond_2b4
.line 59
iget-object v14, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v14, v14, Landroid/media/MediaCodec$BufferInfo;->flags:I
and-int/lit8 v14, v14, 0x2
if-nez v14, :cond_223
.line 60
iget-object v14, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
invoke-virtual {v14, v8, v6, v5}, Landroid/media/MediaMuxer;->writeSampleData(ILjava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;)V
goto/16 :goto_2b4
:cond_223
const/16 v5, -0xe9
if-ne v8, v5, :cond_2b4
.line 61
iget-object v8, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v8, v8, Landroid/media/MediaCodec$BufferInfo;->size:I
new-array v8, v8, [B
.line 62
iget-object v14, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v14, v14, Landroid/media/MediaCodec$BufferInfo;->offset:I
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v5, v5, Landroid/media/MediaCodec$BufferInfo;->size:I
add-int/2addr v14, v5
invoke-virtual {v6, v14}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;
.line 63
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v5, v5, Landroid/media/MediaCodec$BufferInfo;->offset:I
invoke-virtual {v6, v5}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 64
invoke-virtual {v6, v8}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
.line 65
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v5, v5, Landroid/media/MediaCodec$BufferInfo;->size:I
sub-int/2addr v5, v7
:goto_248
if-ltz v5, :cond_28f
const/4 v6, 0x3
if-le v5, v6, :cond_28f
.line 66
aget-byte v6, v8, v5
if-ne v6, v7, :cond_287
add-int/lit8 v6, v5, -0x1
aget-byte v6, v8, v6
if-nez v6, :cond_287
add-int/lit8 v6, v5, -0x2
aget-byte v6, v8, v6
if-nez v6, :cond_287
add-int/lit8 v6, v5, -0x3
aget-byte v14, v8, v6
if-nez v14, :cond_287
.line 67
invoke-static {v6}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v5
.line 68
iget-object v14, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v14, v14, Landroid/media/MediaCodec$BufferInfo;->size:I
sub-int/2addr v14, v6
invoke-static {v14}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v14
move-object/from16 v28, v9
const/4 v7, 0x0
.line 69
invoke-virtual {v5, v8, v7, v6}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
move-result-object v9
invoke-virtual {v9, v7}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 70
iget-object v9, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v9, v9, Landroid/media/MediaCodec$BufferInfo;->size:I
sub-int/2addr v9, v6
invoke-virtual {v14, v8, v6, v9}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
move-result-object v6
invoke-virtual {v6, v7}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
goto :goto_293
:cond_287
move-object/from16 v28, v9
add-int/lit8 v5, v5, -0x1
move-object/from16 v9, v28
const/4 v7, 0x1
goto :goto_248
:cond_28f
move-object/from16 v28, v9
const/4 v5, 0x0
const/4 v14, 0x0
:goto_293
const-string v6, "video/avc"
.line 71
invoke-static {v6, v1, v2}, Landroid/media/MediaFormat;->createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;
move-result-object v6
if-eqz v5, :cond_2a7
if-eqz v14, :cond_2a7
const-string v7, "csd-0"
.line 72
invoke-virtual {v6, v7, v5}, Landroid/media/MediaFormat;->setByteBuffer(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
const-string v5, "csd-1"
.line 73
invoke-virtual {v6, v5, v14}, Landroid/media/MediaFormat;->setByteBuffer(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
.line 74
:cond_2a7
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
invoke-virtual {v5, v6}, Landroid/media/MediaMuxer;->addTrack(Landroid/media/MediaFormat;)I
move-result v5
.line 75
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
invoke-virtual {v6}, Landroid/media/MediaMuxer;->start()V
move v8, v5
goto :goto_2b6
:cond_2b4
:goto_2b4
move-object/from16 v28, v9
.line 76
:goto_2b6
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v5, v5, Landroid/media/MediaCodec$BufferInfo;->flags:I
and-int/lit8 v5, v5, 0x4
if-eqz v5, :cond_2c0
const/4 v6, 0x1
goto :goto_2c1
:cond_2c0
const/4 v6, 0x0
.line 77
:goto_2c1
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
const/4 v7, 0x0
invoke-virtual {v5, v0, v7}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
move-object/from16 v9, v28
const/4 v5, -0x1
:goto_2ca
if-eq v0, v5, :cond_2d4
:goto_2cc
move/from16 v0, v23
move/from16 v5, v24
move/from16 v7, v25
goto/16 :goto_1a0
.line 78
:cond_2d4
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
iget-object v7, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
move v14, v6
const-wide/16 v5, 0x9c4
invoke-virtual {v0, v7, v5, v6}, Landroid/media/MediaCodec;->dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I
move-result v0
const/4 v7, -0x1
if-ne v0, v7, :cond_2ea
move-wide/from16 v5, v18
const-wide/16 v16, 0x3e8
:goto_2e6
const/16 v24, 0x0
goto/16 :goto_35e
:cond_2ea
const/4 v5, -0x3
if-ne v0, v5, :cond_2ee
goto :goto_2f6
:cond_2ee
const/4 v5, -0x2
if-ne v0, v5, :cond_2fb
.line 79
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
invoke-virtual {v0}, Landroid/media/MediaCodec;->getOutputFormat()Landroid/media/MediaFormat;
:goto_2f6
move-wide/from16 v5, v18
const-wide/16 v16, 0x3e8
goto :goto_35e
:cond_2fb
if-ltz v0, :cond_363
.line 80
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v5, v5, Landroid/media/MediaCodec$BufferInfo;->size:I
if-eqz v5, :cond_305
const/4 v5, 0x1
goto :goto_306
:cond_305
const/4 v5, 0x0
.line 81
:goto_306
iget-object v6, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mDecoder:Landroid/media/MediaCodec;
invoke-virtual {v6, v0, v5}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
:try_end_30b
.catch Ljava/lang/Exception; {:try_start_131 .. :try_end_30b} :catch_3ad
.catchall {:try_start_131 .. :try_end_30b} :catchall_3e0
if-eqz v5, :cond_34c
.line 82
:try_start_30d
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
invoke-virtual {v0}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->awaitNewImage()V
:try_end_312
.catch Ljava/lang/Exception; {:try_start_30d .. :try_end_312} :catch_314
.catchall {:try_start_30d .. :try_end_312} :catchall_3e0
const/4 v0, 0x0
goto :goto_31d
:catch_314
move-exception v0
.line 83
:try_start_315
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-static {v12, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
const/4 v0, 0x1
:goto_31d
if-nez v0, :cond_34c
.line 84
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
invoke-virtual {v0}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->drawImage()V
.line 85
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
iget-object v5, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget-wide v5, v5, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
const-wide/16 v16, 0x3e8
mul-long v5, v5, v16
invoke-virtual {v0, v5, v6}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->setPresentationTime(J)V
if-eqz v4, :cond_344
.line 86
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget-wide v5, v0, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J
long-to-float v0, v5
move-wide/from16 v5, v18
long-to-float v7, v5
div-float/2addr v0, v7
const/high16 v7, 0x42c80000 # 100.0f
mul-float v0, v0, v7
invoke-interface {v4, v0}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/listner/SlimProgressListener;->onProgress(F)V
goto :goto_346
:cond_344
move-wide/from16 v5, v18
.line 87
:goto_346
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mInputSurface:Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;
invoke-virtual {v0}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/muxer/CodecInputSurface;->swapBuffers()Z
goto :goto_350
:cond_34c
move-wide/from16 v5, v18
const-wide/16 v16, 0x3e8
.line 88
:goto_350
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
iget v0, v0, Landroid/media/MediaCodec$BufferInfo;->flags:I
and-int/lit8 v0, v0, 0x4
if-eqz v0, :cond_35e
.line 89
iget-object v0, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mEncoder:Landroid/media/MediaCodec;
invoke-virtual {v0}, Landroid/media/MediaCodec;->signalEndOfInputStream()V
goto :goto_2e6
:cond_35e
:goto_35e
move-wide/from16 v18, v5
move v6, v14
goto/16 :goto_2cc
.line 90
:cond_363
new-instance v1, Ljava/lang/RuntimeException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "unexpected result from mDecoder.dequeueOutputBuffer: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v1
.line 91
:cond_37a
new-instance v1, Ljava/lang/RuntimeException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "encoderOutputBuffer "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v0, " was null"
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v1
.line 92
:cond_396
new-instance v1, Ljava/lang/RuntimeException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "unexpected result from mEncoder.dequeueOutputBuffer: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {v1, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v1
:try_end_3ad
.catch Ljava/lang/Exception; {:try_start_315 .. :try_end_3ad} :catch_3ad
.catchall {:try_start_315 .. :try_end_3ad} :catchall_3e0
:catch_3ad
move-exception v0
goto :goto_3b3
:cond_3af
move-object v13, v14
goto :goto_3b6
:catch_3b1
move-exception v0
move-object v13, v14
:goto_3b3
move-object v3, v13
goto/16 :goto_b6
.line 93
:goto_3b6
:try_start_3b6
invoke-virtual {v13, v3}, Landroid/media/MediaExtractor;->unselectTrack(I)V
:goto_3b9
move-wide/from16 v5, v21
.line 94
:goto_3bb
iget-object v3, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mMuxer:Landroid/media/MediaMuxer;
iget-object v4, v11, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->mBufferInfo:Landroid/media/MediaCodec$BufferInfo;
:try_end_3bf
.catch Ljava/lang/Exception; {:try_start_3b6 .. :try_end_3bf} :catch_3d3
.catchall {:try_start_3b6 .. :try_end_3bf} :catchall_3e0
const-wide/16 v7, -0x1
move-object/from16 v1, p0
move-object v2, v15
const/4 v14, 0x1
move-object v9, v10
move/from16 v10, v20
:try_start_3c8
invoke-direct/range {v1 .. v10}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->writeAudioTrack(Landroid/media/MediaExtractor;Landroid/media/MediaMuxer;Landroid/media/MediaCodec$BufferInfo;JJLjava/io/File;I)J
:try_end_3cb
.catch Ljava/lang/Exception; {:try_start_3c8 .. :try_end_3cb} :catch_3e2
.catchall {:try_start_3c8 .. :try_end_3cb} :catchall_3e0
.line 95
invoke-virtual {v13}, Landroid/media/MediaExtractor;->release()V
.line 96
invoke-virtual {v15}, Landroid/media/MediaExtractor;->release()V
const/4 v0, 0x0
goto :goto_40e
:catch_3d3
move-exception v0
goto :goto_3e9
:catch_3d5
move-exception v0
move-object v13, v14
const/4 v14, 0x1
.line 97
:try_start_3d8
new-instance v1, Ljava/lang/RuntimeException;
const-string v2, "MediaMuxer creation failed"
invoke-direct {v1, v2, v0}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
throw v1
:try_end_3e0
.catch Ljava/lang/Exception; {:try_start_3d8 .. :try_end_3e0} :catch_3e2
.catchall {:try_start_3d8 .. :try_end_3e0} :catchall_3e0
:catchall_3e0
move-exception v0
goto :goto_41b
:catch_3e2
move-exception v0
goto :goto_3ea
:catchall_3e4
move-exception v0
move-object v13, v14
goto :goto_41b
:catch_3e7
move-exception v0
move-object v13, v14
:goto_3e9
const/4 v14, 0x1
:goto_3ea
move-object v3, v13
goto :goto_3fc
:catchall_3ec
move-exception v0
move-object v13, v14
goto :goto_3f6
:catch_3ef
move-exception v0
move-object v13, v14
const/4 v14, 0x1
move-object v3, v13
goto :goto_3fb
:catchall_3f4
move-exception v0
const/4 v13, 0x0
:goto_3f6
const/4 v15, 0x0
goto :goto_41b
:catch_3f8
move-exception v0
const/4 v14, 0x1
const/4 v3, 0x0
:goto_3fb
const/4 v15, 0x0
.line 98
:goto_3fc
:try_start_3fc
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-static {v12, v0}, Lio/rong/common/RLog;->e(Ljava/lang/String;Ljava/lang/String;)I
:try_end_403
.catchall {:try_start_3fc .. :try_end_403} :catchall_419
if-eqz v3, :cond_408
.line 99
invoke-virtual {v3}, Landroid/media/MediaExtractor;->release()V
:cond_408
if-eqz v15, :cond_40d
.line 100
invoke-virtual {v15}, Landroid/media/MediaExtractor;->release()V
:cond_40d
const/4 v0, 0x1
.line 101
:goto_40e
invoke-direct/range {p0 .. p0}, Lio/rong/imkit/utilities/videocompressor/videoslimmer/VideoSlimEncoder;->releaseCoder()Z
move-result v1
if-eqz v0, :cond_418
if-nez v1, :cond_418
const/4 v1, 0x0
return v1
:cond_418
return v14
:catchall_419
move-exception v0
move-object v13, v3
:goto_41b
if-eqz v13, :cond_420
.line 102
invoke-virtual {v13}, Landroid/media/MediaExtractor;->release()V
:cond_420
if-eqz v15, :cond_425
.line 103
invoke-virtual {v15}, Landroid/media/MediaExtractor;->release()V
.line 104
:cond_425
goto :goto_427
:goto_426
throw v0
:goto_427
goto :goto_426
.end method