MMCHardwareDecoder.smali
.class public Lcom/mmc/player/decoder/MMCHardwareDecoder;
.super Ljava/lang/Object;
.source "SourceFile"
# static fields
.field private static final CODEC_DECODER_BUFFER_INAVAILABLE:I = 0x3ea
.field private static final CODEC_DECODER_EXCEPTION:I = 0x3e9
.field private static final CODEC_ERR_NOT_INITIALIZED:I = 0x3e8
.field private static final DEFAULT_TIMEOUT_US:I = 0x7d0
.field private static final INPUT_EXTRA_DATA_TIMEOUT_MS:I = 0x1388
.field private static final TAG:Ljava/lang/String; = "MMCHardwareDecoder"
# instance fields
.field private final H264_NAL_EOPIC:[B
.field private mColorFormat:I
.field private mExtraData:[B
.field private mInputBuffers:[Ljava/nio/ByteBuffer;
.field private mInputFormat:Landroid/media/MediaFormat;
.field private mIsExceptionOccur:Z
.field private mIsInputExtraData:Z
.field private mLowDelayMode:Z
.field private mMediaCodec:Landroid/media/MediaCodec;
.field private mMimeType:Ljava/lang/String;
.field private mOutputSurface:Landroid/view/Surface;
.field private mRotateAngle:I
# direct methods
.method public constructor <init>(Ljava/lang/String;)V
.registers 4
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, -0x1
.line 2
iput v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mColorFormat:I
const/4 v0, 0x0
.line 3
iput-boolean v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsInputExtraData:Z
.line 4
iput-boolean v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsExceptionOccur:Z
.line 5
iput-boolean v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mLowDelayMode:Z
.line 6
iput v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mRotateAngle:I
const/16 v0, 0x10
new-array v0, v0, [B
.line 7
fill-array-data v0, :array_22
iput-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->H264_NAL_EOPIC:[B
.line 8
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "new MMCAndroidHardDecoder "
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 9
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMimeType:Ljava/lang/String;
return-void
:array_22
.array-data 1
0x0t
0x0t
0x1t
0x1dt
0x0t
0x0t
0x1t
0x1et
0x48t
0x53t
0x50t
0x49t
0x43t
0x45t
0x4et
0x44t
.end array-data
.end method
.method private createMediaCodec()V
.registers 8
const/4 v0, 0x0
.line 1
:try_start_1
iget-boolean v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mLowDelayMode:Z
const/16 v2, 0x17
if-eqz v1, :cond_3a
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
if-lt v1, v2, :cond_3a
.line 2
sget-object v3, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v4, "Set KEY_OPERATING_RATE MAX"
invoke-static {v3, v4}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 3
iget-object v4, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v5, "operating-rate"
const/16 v6, 0x7fff
invoke-virtual {v4, v5, v6}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
const/16 v4, 0x1c
if-le v1, v4, :cond_3a
.line 4
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->isHuawei()Z
move-result v1
if-eqz v1, :cond_3a
.line 5
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v4, "vendor.hisi-ext-low-latency-video-dec.video-scene-for-low-latency-req"
const/4 v5, 0x1
invoke-virtual {v1, v4, v5}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 6
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v4, "vendor.hisi-ext-low-latency-video-dec.video-scene-for-low-latency-rdy"
const/4 v5, -0x1
invoke-virtual {v1, v4, v5}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
const-string v1, "format enable hisi-ext-low-latency-video-dec"
.line 7
invoke-static {v3, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 8
:cond_3a
iget v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mRotateAngle:I
if-lez v1, :cond_4f
.line 9
sget v3, Landroid/os/Build$VERSION;->SDK_INT:I
:try_end_40
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_40} :catch_c6
const-string v4, "rotation-degrees"
if-lt v3, v2, :cond_4a
.line 10
:try_start_44
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
invoke-virtual {v2, v4, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
goto :goto_4f
.line 11
:cond_4a
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
invoke-virtual {v2, v4, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 12
:cond_4f
:goto_4f
iget v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mColorFormat:I
if-lez v1, :cond_5a
.line 13
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v3, "color-format"
invoke-virtual {v2, v3, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 14
:cond_5a
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v2, "mime"
.line 15
invoke-virtual {v1, v2}, 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, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
.line 16
sget-object v1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "createMediaCodec format:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
invoke-virtual {v3}, Landroid/media/MediaFormat;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, ", manufacturer:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, ", cpu:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v3, Landroid/os/Build;->HARDWARE:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 17
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
iget-object v3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
iget-object v4, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mOutputSurface:Landroid/view/Surface;
const/4 v5, 0x0
invoke-virtual {v2, v3, v4, v0, v5}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 18
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v2}, Landroid/media/MediaCodec;->start()V
.line 19
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v2}, Landroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v2
iput-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 20
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "createMediaCodec success surface:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mOutputSurface:Landroid/view/Surface;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
:try_end_c5
.catch Ljava/lang/Exception; {:try_start_44 .. :try_end_c5} :catch_c6
goto :goto_fb
:catch_c6
move-exception v1
.line 21
sget-object v2, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v3, "createMediaCodec failed:"
.line 22
invoke-static {v3}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
.line 23
invoke-static {v1}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v2, v3}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 24
:try_start_dd
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v2}, Landroid/media/MediaCodec;->release()V
:try_end_e2
.catch Ljava/lang/Exception; {:try_start_dd .. :try_end_e2} :catch_e3
goto :goto_f9
.line 25
:catch_e3
sget-object v2, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v3, "releaseMediaCodec failed:"
.line 26
invoke-static {v3}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v3
.line 27
invoke-static {v1}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v2, v1}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 28
:goto_f9
iput-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
:goto_fb
return-void
.end method
.method private createMediaCodec(Landroid/media/MediaCodec$OnFrameRenderedListener;)V
.registers 9
const/4 v0, 0x0
.line 35
:try_start_1
iget-boolean v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mLowDelayMode:Z
const/16 v2, 0x17
if-eqz v1, :cond_3a
sget v1, Landroid/os/Build$VERSION;->SDK_INT:I
if-lt v1, v2, :cond_3a
.line 36
sget-object v3, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v4, "Set KEY_OPERATING_RATE MAX"
invoke-static {v3, v4}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 37
iget-object v4, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v5, "operating-rate"
const/16 v6, 0x7fff
invoke-virtual {v4, v5, v6}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
const/16 v4, 0x1c
if-le v1, v4, :cond_3a
.line 38
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->isHuawei()Z
move-result v1
if-eqz v1, :cond_3a
.line 39
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v4, "vendor.hisi-ext-low-latency-video-dec.video-scene-for-low-latency-req"
const/4 v5, 0x1
invoke-virtual {v1, v4, v5}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 40
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v4, "vendor.hisi-ext-low-latency-video-dec.video-scene-for-low-latency-rdy"
const/4 v5, -0x1
invoke-virtual {v1, v4, v5}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
const-string v1, "format enable hisi-ext-low-latency-video-dec"
.line 41
invoke-static {v3, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 42
:cond_3a
iget v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mRotateAngle:I
if-lez v1, :cond_4f
.line 43
sget v3, Landroid/os/Build$VERSION;->SDK_INT:I
:try_end_40
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_40} :catch_c9
const-string v4, "rotation-degrees"
if-lt v3, v2, :cond_4a
.line 44
:try_start_44
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
invoke-virtual {v2, v4, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
goto :goto_4f
.line 45
:cond_4a
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
invoke-virtual {v2, v4, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 46
:cond_4f
:goto_4f
iget v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mColorFormat:I
if-lez v1, :cond_5a
.line 47
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v3, "color-format"
invoke-virtual {v2, v3, v1}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
.line 48
:cond_5a
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
const-string v2, "mime"
.line 49
invoke-virtual {v1, v2}, 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, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
.line 50
sget-object v1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "createMediaCodec format:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
invoke-virtual {v3}, Landroid/media/MediaFormat;->toString()Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, ", manufacturer:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v3, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v3, ", cpu:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v3, Landroid/os/Build;->HARDWARE:Ljava/lang/String;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 51
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
iget-object v3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
iget-object v4, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mOutputSurface:Landroid/view/Surface;
const/4 v5, 0x0
invoke-virtual {v2, v3, v4, v0, v5}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 52
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v2}, Landroid/media/MediaCodec;->start()V
.line 53
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v2}, Landroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object v2
iput-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 54
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "createMediaCodec success surface:"
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mOutputSurface:Landroid/view/Surface;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 55
invoke-direct {p0, p1}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->setFrameListener(Landroid/media/MediaCodec$OnFrameRenderedListener;)V
:try_end_c8
.catch Ljava/lang/Exception; {:try_start_44 .. :try_end_c8} :catch_c9
goto :goto_fe
:catch_c9
move-exception p1
.line 56
sget-object v1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v2, "createMediaCodec failed:"
.line 57
invoke-static {v2}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
.line 58
invoke-static {p1}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
move-result-object v3
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 59
:try_start_e0
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v1}, Landroid/media/MediaCodec;->release()V
:try_end_e5
.catch Ljava/lang/Exception; {:try_start_e0 .. :try_end_e5} :catch_e6
goto :goto_fc
.line 60
:catch_e6
sget-object v1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v2, "releaseMediaCodec failed:"
.line 61
invoke-static {v2}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
.line 62
invoke-static {p1}, Landroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
move-result-object p1
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {v1, p1}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 63
:goto_fc
iput-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
:goto_fe
return-void
.end method
.method private innerSetExtraHeader([BI)V
.registers 15
.line 1
iget-boolean v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsInputExtraData:Z
if-eqz v0, :cond_5
return-void
.line 2
:cond_5
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-nez v0, :cond_11
.line 3
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string p2, "innerSetExtraHeader no mDecoder"
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
return-void
:cond_11
if-nez p1, :cond_1b
.line 4
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string p2, "innerSetExtraHeader extraData == null"
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 5
:cond_1b
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 6
:cond_1f
:try_start_1f
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
const-wide/16 v3, 0x7d0
invoke-virtual {v2, v3, v4}, Landroid/media/MediaCodec;->dequeueInputBuffer(J)I
move-result v2
if-ltz v2, :cond_aa
.line 7
iget-object p2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
aget-object p2, p2, v2
if-eqz p2, :cond_63
.line 8
invoke-virtual {p2}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
.line 9
invoke-virtual {p2, p1}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 10
iget-object v5, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
const/4 v7, 0x0
array-length v8, p1
const-wide/16 v9, 0x0
const/4 v11, 0x2
move v6, v2
invoke-virtual/range {v5 .. v11}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
const/4 p2, 0x1
.line 11
iput-boolean p2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsInputExtraData:Z
.line 12
sget-object p2, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "innerSetExtraHeader done index:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " len:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
array-length p1, p1
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {p2, p1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_c3
.line 13
:cond_63
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "innerSetExtraHeader buf==null inputBuffers:"
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 14
invoke-static {v0}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, " index:"
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
.line 15
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 16
iget-object p2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {p2}, Landroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object p2
iput-object p2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 17
new-instance p2, Ljava/lang/StringBuilder;
invoke-direct {p2}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "innerSetExtraHeader getInputBuffers:"
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 18
invoke-static {v0}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
move-result-object v0
invoke-virtual {p2, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
.line 19
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->d(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_c3
.line 20
:cond_aa
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v2
sub-long/2addr v2, v0
int-to-long v4, p2
cmp-long v6, v2, v4
if-lez v6, :cond_1f
.line 21
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string p2, "innerSetExtraHeader fail timeout"
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
:try_end_bb
.catch Ljava/lang/Exception; {:try_start_1f .. :try_end_bb} :catch_bc
return-void
.line 22
:catch_bc
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string p2, "innerSetExtraHeader fail"
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
:goto_c3
return-void
.end method
.method public static isCodecSupported(Ljava/lang/String;)Z
.registers 8
.line 1
invoke-static {}, Landroid/media/MediaCodecList;->getCodecCount()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x0
:goto_6
if-ge v2, v0, :cond_2b
.line 2
invoke-static {v2}, Landroid/media/MediaCodecList;->getCodecInfoAt(I)Landroid/media/MediaCodecInfo;
move-result-object v3
.line 3
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->isEncoder()Z
move-result v4
if-eqz v4, :cond_13
goto :goto_28
.line 4
:cond_13
invoke-virtual {v3}, Landroid/media/MediaCodecInfo;->getSupportedTypes()[Ljava/lang/String;
move-result-object v3
.line 5
array-length v4, v3
const/4 v5, 0x0
:goto_19
if-ge v5, v4, :cond_28
aget-object v6, v3, v5
.line 6
invoke-virtual {v6, p0}, Ljava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z
move-result v6
if-eqz v6, :cond_25
const/4 p0, 0x1
return p0
:cond_25
add-int/lit8 v5, v5, 0x1
goto :goto_19
:cond_28
:goto_28
add-int/lit8 v2, v2, 0x1
goto :goto_6
:cond_2b
return v1
.end method
.method private isHuawei()Z
.registers 3
.line 1
sget-object v0, Landroid/os/Build;->MANUFACTURER:Ljava/lang/String;
if-eqz v0, :cond_15
.line 2
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v1
if-lez v1, :cond_15
.line 3
invoke-virtual {v0}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object v0
const-string v1, "huawei"
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
return v0
:cond_15
const/4 v0, 0x0
return v0
.end method
.method private isSupportsQcomLowLatency(Ljava/lang/String;)Z
.registers 4
.line 1
invoke-virtual {p1}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object v0
const-string v1, "omx.qcom"
invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_1b
.line 2
invoke-virtual {p1}, Ljava/lang/String;->toLowerCase()Ljava/lang/String;
move-result-object p1
const-string v0, "c2.qti"
invoke-virtual {p1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result p1
if-eqz p1, :cond_19
goto :goto_1b
:cond_19
const/4 p1, 0x0
goto :goto_1c
:cond_1b
:goto_1b
const/4 p1, 0x1
:goto_1c
return p1
.end method
.method private releaseMediaCodec()V
.registers 5
const-string v0, "releaseMediaCodec:release fail"
.line 1
sget-object v1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v2, "releaseMediaCodec:"
.line 2
invoke-static {v2}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v2
.line 3
iget-object v3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 4
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v1, :cond_45
.line 5
:try_start_1a
invoke-virtual {v1}, Landroid/media/MediaCodec;->stop()V
:try_end_1d
.catch Ljava/lang/Exception; {:try_start_1a .. :try_end_1d} :catch_22
.catchall {:try_start_1a .. :try_end_1d} :catchall_20
.line 6
:goto_1d
:try_start_1d
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
:try_end_1f
.catch Ljava/lang/Exception; {:try_start_1d .. :try_end_1f} :catch_2e
goto :goto_2a
:catchall_20
move-exception v1
goto :goto_39
.line 7
:catch_22
:try_start_22
sget-object v1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v2, "releaseMediaCodec:stop fail"
invoke-static {v1, v2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
:try_end_29
.catchall {:try_start_22 .. :try_end_29} :catchall_20
goto :goto_1d
.line 8
:goto_2a
:try_start_2a
invoke-virtual {v1}, Landroid/media/MediaCodec;->release()V
:try_end_2d
.catch Ljava/lang/Exception; {:try_start_2a .. :try_end_2d} :catch_2e
goto :goto_33
.line 9
:catch_2e
sget-object v1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
invoke-static {v1, v0}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
:goto_33
const/4 v0, 0x0
.line 10
iput-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
.line 11
iput-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
goto :goto_45
.line 12
:goto_39
:try_start_39
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v2}, Landroid/media/MediaCodec;->release()V
:try_end_3e
.catch Ljava/lang/Exception; {:try_start_39 .. :try_end_3e} :catch_3f
goto :goto_44
.line 13
:catch_3f
sget-object v2, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
invoke-static {v2, v0}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
.line 14
:goto_44
throw v1
:cond_45
:goto_45
return-void
.end method
.method private setFrameListener(Landroid/media/MediaCodec$OnFrameRenderedListener;)V
.registers 5
.line 1
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x17
if-lt v0, v1, :cond_18
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v0, :cond_18
if-eqz p1, :cond_18
.line 2
new-instance v1, Landroid/os/Handler;
invoke-static {}, Landroid/os/Looper;->getMainLooper()Landroid/os/Looper;
move-result-object v2
invoke-direct {v1, v2}, Landroid/os/Handler;-><init>(Landroid/os/Looper;)V
invoke-virtual {v0, p1, v1}, Landroid/media/MediaCodec;->setOnFrameRenderedListener(Landroid/media/MediaCodec$OnFrameRenderedListener;Landroid/os/Handler;)V
:cond_18
return-void
.end method
# virtual methods
.method public dequeueInputBuffer()I
.registers 4
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v0, :cond_26
iget-boolean v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsExceptionOccur:Z
if-eqz v0, :cond_9
goto :goto_26
.line 2
:cond_9
:try_start_9
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mExtraData:[B
const/16 v1, 0x1388
invoke-direct {p0, v0, v1}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->innerSetExtraHeader([BI)V
.line 3
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
const-wide/16 v1, 0x7d0
invoke-virtual {v0, v1, v2}, Landroid/media/MediaCodec;->dequeueInputBuffer(J)I
move-result v0
:try_end_18
.catch Ljava/lang/Exception; {:try_start_9 .. :try_end_18} :catch_19
goto :goto_25
.line 4
:catch_19
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "dequeueInputBuffer exception"
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
const/4 v0, 0x1
.line 5
iput-boolean v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsExceptionOccur:Z
const/16 v0, 0x3e9
:goto_25
return v0
:cond_26
:goto_26
const/16 v0, 0x3e8
return v0
.end method
.method public dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;)I
.registers 5
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v0, :cond_1d
iget-boolean v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsExceptionOccur:Z
if-eqz v1, :cond_9
goto :goto_1d
:cond_9
const-wide/16 v1, 0x7d0
.line 2
:try_start_b
invoke-virtual {v0, p1, v1, v2}, Landroid/media/MediaCodec;->dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I
move-result p1
:try_end_f
.catch Ljava/lang/Exception; {:try_start_b .. :try_end_f} :catch_10
return p1
.line 3
:catch_10
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v0, "dequeueOutputBuffer exception"
invoke-static {p1, v0}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
const/4 p1, 0x1
.line 4
iput-boolean p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsExceptionOccur:Z
const/16 p1, 0x3e9
return p1
:cond_1d
:goto_1d
const/16 p1, 0x3e8
return p1
.end method
.method public enableLowDelayMode(Z)V
.registers 5
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "enableLowDelayMode enable= "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 2
iput-boolean p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mLowDelayMode:Z
return-void
.end method
.method public flush()V
.registers 4
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-nez v0, :cond_c
.line 2
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "mMediaCodec is null"
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
return-void
.line 3
:cond_c
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "flush: done, mediacodec = "
.line 4
invoke-static {v1}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
.line 5
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 6
:try_start_20
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v0}, Landroid/media/MediaCodec;->flush()V
:try_end_25
.catch Ljava/lang/Exception; {:try_start_20 .. :try_end_25} :catch_26
goto :goto_2d
.line 7
:catch_26
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "flush: fail"
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
:goto_2d
return-void
.end method
.method public getCodecInfo()Landroid/media/MediaCodecInfo;
.registers 2
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v0, :cond_9
.line 2
invoke-virtual {v0}, Landroid/media/MediaCodec;->getCodecInfo()Landroid/media/MediaCodecInfo;
move-result-object v0
return-object v0
:cond_9
const/4 v0, 0x0
return-object v0
.end method
.method public getOutputBuffer(I)Ljava/nio/ByteBuffer;
.registers 5
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
const/4 v1, 0x0
if-nez v0, :cond_6
return-object v1
.line 2
:cond_6
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mOutputSurface:Landroid/view/Surface;
if-nez v2, :cond_f
.line 3
invoke-virtual {v0, p1}, Landroid/media/MediaCodec;->getOutputBuffer(I)Ljava/nio/ByteBuffer;
move-result-object p1
return-object p1
:cond_f
return-object v1
.end method
.method public getOutputBufferData(I)[B
.registers 4
.line 1
invoke-virtual {p0, p1}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->getOutputBuffer(I)Ljava/nio/ByteBuffer;
move-result-object p1
.line 2
invoke-virtual {p1}, Ljava/nio/Buffer;->limit()I
move-result v0
invoke-virtual {p1}, Ljava/nio/Buffer;->position()I
move-result v1
sub-int/2addr v0, v1
.line 3
new-array v0, v0, [B
.line 4
invoke-virtual {p1, v0}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
return-object v0
.end method
.method public getOutputFormat()Landroid/media/MediaFormat;
.registers 2
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v0, :cond_9
.line 2
invoke-virtual {v0}, Landroid/media/MediaCodec;->getOutputFormat()Landroid/media/MediaFormat;
move-result-object v0
return-object v0
:cond_9
const/4 v0, 0x0
return-object v0
.end method
.method public getOutputImage(I)Landroid/media/Image;
.registers 3
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v0, p1}, Landroid/media/MediaCodec;->getOutputImage(I)Landroid/media/Image;
move-result-object p1
return-object p1
.end method
.method public openDecoder(II)Z
.registers 6
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "openDecoder width:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v2, ", height:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 2
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMimeType:Ljava/lang/String;
invoke-static {v0, p1, p2}, Landroid/media/MediaFormat;->createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;
move-result-object p1
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
.line 3
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->releaseMediaCodec()V
.line 4
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->createMediaCodec()V
.line 5
iget-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz p1, :cond_32
const/4 p1, 0x1
goto :goto_33
:cond_32
const/4 p1, 0x0
:goto_33
return p1
.end method
.method public openDecoder(IILandroid/media/MediaCodec$OnFrameRenderedListener;)Z
.registers 8
.line 6
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "openDecoderListener width:"
const-string v2, ", height:"
const-string v3, " "
.line 7
invoke-static {v1, p1, v2, p2, v3}, Landroidx/appcompat/g;->f(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
.line 8
invoke-virtual {v1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 9
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMimeType:Ljava/lang/String;
invoke-static {v0, p1, p2}, Landroid/media/MediaFormat;->createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;
move-result-object p1
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
.line 10
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->releaseMediaCodec()V
.line 11
invoke-direct {p0, p3}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->createMediaCodec(Landroid/media/MediaCodec$OnFrameRenderedListener;)V
.line 12
iget-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz p1, :cond_2a
const/4 p1, 0x1
goto :goto_2b
:cond_2a
const/4 p1, 0x0
:goto_2b
return p1
.end method
.method public queueInputBuffer(I[BIJI)I
.registers 14
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v0, :cond_8c
iget-boolean v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsExceptionOccur:Z
if-eqz v0, :cond_a
goto/16 :goto_8c
:cond_a
const/16 v0, 0x3ea
if-ltz p1, :cond_8b
.line 2
:try_start_e
iget-object v1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
aget-object v1, v1, p1
if-eqz v1, :cond_37
.line 3
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
.line 4
invoke-virtual {v1, p2}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 5
iget-boolean p2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mLowDelayMode:Z
if-eqz p2, :cond_2b
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->isHuawei()Z
move-result p2
if-eqz p2, :cond_2b
.line 6
iget-object p2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->H264_NAL_EOPIC:[B
invoke-virtual {v1, p2}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
add-int/lit8 p3, p3, 0x10
:cond_2b
move v3, p3
.line 7
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
const/4 v2, 0x0
move v1, p1
move-wide v4, p4
move v6, p6
invoke-virtual/range {v0 .. v6}, Landroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
const/4 p1, 0x0
return p1
.line 8
:cond_37
sget-object p2, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance p3, Ljava/lang/StringBuilder;
invoke-direct {p3}, Ljava/lang/StringBuilder;-><init>()V
const-string p4, "decode buf==null inputBuffers:"
invoke-virtual {p3, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object p4, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 9
invoke-static {p4}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
move-result-object p4
invoke-virtual {p3, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p4, " index:"
invoke-virtual {p3, p4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p3, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 10
invoke-static {p2, p1}, Lcom/mmc/player/log/MMCLogDelegate;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 11
iget-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {p1}, Landroid/media/MediaCodec;->getInputBuffers()[Ljava/nio/ByteBuffer;
move-result-object p1
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 12
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string p3, "decode getInputBuffers:"
invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object p3, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputBuffers:[Ljava/nio/ByteBuffer;
.line 13
invoke-static {p3}, Ljava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
move-result-object p3
invoke-virtual {p1, p3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 14
invoke-static {p2, p1}, Lcom/mmc/player/log/MMCLogDelegate;->d(Ljava/lang/String;Ljava/lang/String;)V
:try_end_7d
.catch Ljava/lang/Exception; {:try_start_e .. :try_end_7d} :catch_7e
return v0
.line 15
:catch_7e
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string p2, "queueInputBuffer exception"
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
const/4 p1, 0x1
.line 16
iput-boolean p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsExceptionOccur:Z
const/16 p1, 0x3e9
return p1
:cond_8b
return v0
:cond_8c
:goto_8c
const/16 p1, 0x3e8
return p1
.end method
.method public rebootDecoder(Ljava/lang/String;II)Z
.registers 7
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "rebootDecoder mime:"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v2, "width: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v2, ", height:"
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-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 2
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMimeType:Ljava/lang/String;
.line 3
invoke-static {p1, p2, p3}, Landroid/media/MediaFormat;->createVideoFormat(Ljava/lang/String;II)Landroid/media/MediaFormat;
move-result-object p1
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
.line 4
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->releaseMediaCodec()V
.line 5
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->createMediaCodec()V
.line 6
iget-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz p1, :cond_3a
const/4 p1, 0x1
goto :goto_3b
:cond_3a
const/4 p1, 0x0
:goto_3b
return p1
.end method
.method public release()V
.registers 4
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "release:"
.line 2
invoke-static {v1}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
.line 3
iget-object v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 4
invoke-direct {p0}, Lcom/mmc/player/decoder/MMCHardwareDecoder;->releaseMediaCodec()V
const/4 v0, 0x0
.line 5
iput-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mOutputSurface:Landroid/view/Surface;
.line 6
iput-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mInputFormat:Landroid/media/MediaFormat;
return-void
.end method
.method public releaseBuffer(IZ)V
.registers 5
.line 1
iget-object v0, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz v0, :cond_13
if-gez p1, :cond_7
goto :goto_13
.line 2
:cond_7
:try_start_7
invoke-virtual {v0, p1, p2}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
:try_end_a
.catch Ljava/lang/Exception; {:try_start_7 .. :try_end_a} :catch_b
goto :goto_12
.line 3
:catch_b
sget-object p1, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string p2, "releaseBuffer exception"
invoke-static {p1, p2}, Lcom/mmc/player/log/MMCLogDelegate;->e(Ljava/lang/String;Ljava/lang/String;)V
:goto_12
return-void
.line 4
:cond_13
:goto_13
sget-object p2, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "mediacodec is null or index wrong:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-static {p2, p1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method public setColorFormat(I)V
.registers 5
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "setColorFormat format:"
.line 2
invoke-static {v1}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
.line 3
iget v2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mColorFormat:I
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 4
iput p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mColorFormat:I
return-void
.end method
.method public setExtraHeader([B)V
.registers 5
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
const-string v1, "setExtraHeader head len = "
.line 2
invoke-static {v1}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
.line 3
array-length v2, p1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 4
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mExtraData:[B
const/4 p1, 0x0
.line 5
iput-boolean p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mIsInputExtraData:Z
return-void
.end method
.method public setOutputSurface(Landroid/view/Surface;Z)V
.registers 6
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "setOutputSurface surface = "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 2
iput-object p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mOutputSurface:Landroid/view/Surface;
if-eqz p2, :cond_27
.line 3
iget-object p2, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mMediaCodec:Landroid/media/MediaCodec;
if-eqz p2, :cond_27
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x17
if-lt v0, v1, :cond_27
.line 4
invoke-virtual {p2, p1}, Landroid/media/MediaCodec;->setOutputSurface(Landroid/view/Surface;)V
:cond_27
return-void
.end method
.method public setRotateAngle(I)V
.registers 5
.line 1
sget-object v0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->TAG:Ljava/lang/String;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "setRotateAngle angle="
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-static {v0, v1}, Lcom/mmc/player/log/MMCLogDelegate;->i(Ljava/lang/String;Ljava/lang/String;)V
.line 2
iput p1, p0, Lcom/mmc/player/decoder/MMCHardwareDecoder;->mRotateAngle:I
return-void
.end method