AudioPlayThread.smali

.class public Lcom/polly/mobile/audio/render/AudioPlayThread;
.super Ljava/lang/Thread;
.source "SourceFile"


# static fields
.field public static final PLAY_CHANNEL_MONO:I = 0x10

.field public static final PLAY_CHANNEL_STEREO:I = 0xc

.field public static final PLAY_SAMPLE_16BIT:I = 0x2

.field public static final PLAY_SAMPLE_8BIT:I = 0x3

.field private static final TAG:Ljava/lang/String; = "AudioPlayThread"

.field public static needResetAec:Z = false

.field private static final sPlayFromFile:Z = false

.field private static final sWavHeader:I = 0x2c


# instance fields
.field private audioDataWritePos:I

.field private bFirstNewAudioTrack:Z

.field private filedChannel:I

.field private filedChannelCount:I

.field private filedSampleBit:I

.field private filedSampleByteCount:I

.field private filedSampleRate:I

.field private filedStream:I

.field private fullSleepCnt:I

.field private mADM:Lcom/polly/mobile/audio/a;

.field private mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

.field private mPlayFile:Ljava/io/FileInputStream;

.field private mixPlayer:Landroid/media/AudioTrack;

.field private volatile mixPlaying:Z

.field private outChunk:[B

.field private outChunkSize:I

.field private play20msBuffSize:I

.field private playerBufferSize:I

.field private sPlayFileName:Ljava/lang/String;


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

    return-void
.end method

.method public constructor <init>(Z)V
    .registers 5

    const-string p1, "Audio Play Thread"

    .line 68
    invoke-direct {p0, p1}, Ljava/lang/Thread;-><init>(Ljava/lang/String;)V

    const/4 p1, 0x0

    .line 37
    iput-object p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mADM:Lcom/polly/mobile/audio/a;

    .line 38
    iput-object p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    const/4 v0, 0x0

    .line 40
    iput-boolean v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlaying:Z

    .line 41
    iput-object p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    .line 43
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    .line 44
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->audioDataWritePos:I

    .line 45
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->play20msBuffSize:I

    .line 47
    iput-object p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->outChunk:[B

    .line 48
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->outChunkSize:I

    .line 49
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->fullSleepCnt:I

    .line 53
    new-instance v1, Ljava/lang/StringBuilder;

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

    invoke-static {}, Landroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;

    move-result-object v2

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;

    const-string v2, "/audioorg.wav"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    iput-object v1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->sPlayFileName:Ljava/lang/String;

    .line 56
    iput-object p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mPlayFile:Ljava/io/FileInputStream;

    .line 58
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedStream:I

    .line 59
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedChannel:I

    .line 60
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleRate:I

    .line 61
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleBit:I

    .line 62
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedChannelCount:I

    .line 63
    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleByteCount:I

    const/4 p1, 0x1

    .line 65
    iput-boolean p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->bFirstNewAudioTrack:Z

    const-string v0, "AudioPlayThread"

    const-string v1, "AudioPlayThread constructor"

    .line 69
    invoke-static {v0, v1}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I

    .line 70
    iput-boolean p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlaying:Z

    return-void
.end method

.method private native createNativeMixAecm()V
.end method

.method private fileCurrentPlayParams(Landroid/media/AudioTrack;)V
    .registers 4

    .line 369
    invoke-virtual {p1}, Landroid/media/AudioTrack;->getStreamType()I

    move-result v0

    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedStream:I

    .line 370
    invoke-virtual {p1}, Landroid/media/AudioTrack;->getSampleRate()I

    move-result v0

    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleRate:I

    .line 371
    invoke-virtual {p1}, Landroid/media/AudioTrack;->getChannelConfiguration()I

    move-result v0

    iput v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedChannel:I

    .line 372
    invoke-virtual {p1}, Landroid/media/AudioTrack;->getAudioFormat()I

    move-result p1

    iput p1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleBit:I

    .line 373
    new-instance p1, Ljava/lang/StringBuilder;

    const-string v0, "cur play format "

    invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    iget v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleRate:I

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v0, " "

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedChannel:I

    invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedStream:I

    invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object p1

    const-string v0, "AudioPlayThread"

    invoke-static {v0, p1}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;)I

    return-void
.end method

.method private isParamsChanged()Z
    .registers 4

    .line 377
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    const/4 v1, 0x0

    if-nez v0, :cond_6

    return v1

    .line 8074
    :cond_6
    iget v0, v0, Lcom/polly/mobile/audio/render/a;->e:I

    .line 378
    iget v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedChannel:I

    if-ne v0, v2, :cond_26

    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 8078
    iget v0, v0, Lcom/polly/mobile/audio/render/a;->c:I

    .line 379
    iget v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedStream:I

    if-ne v0, v2, :cond_26

    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 9070
    iget v0, v0, Lcom/polly/mobile/audio/render/a;->d:I

    .line 380
    iget v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleRate:I

    if-ne v0, v2, :cond_26

    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 9086
    iget v0, v0, Lcom/polly/mobile/audio/render/a;->f:I

    .line 381
    iget v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleBit:I

    if-eq v0, v2, :cond_25

    goto :goto_26

    :cond_25
    return v1

    :cond_26
    :goto_26
    const/4 v0, 0x1

    return v0
.end method

.method private newAudioTrack()Z
    .registers 20

    move-object/from16 v1, p0

    const-string v2, "AudioPlayThread"

    const-string v0, "Creating new AudioTrack"

    .line 75
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;)I

    .line 76
    iget-boolean v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->bFirstNewAudioTrack:Z

    if-nez v0, :cond_10

    .line 77
    invoke-direct/range {p0 .. p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->releaseNativeMixAecm()V

    .line 80
    :cond_10
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    const/4 v3, 0x0

    if-nez v0, :cond_1b

    const-string v0, "Creating new AudioTrack mAudioPlayCon null"

    .line 81
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;)I

    return v3

    .line 1078
    :cond_1b
    iget v11, v0, Lcom/polly/mobile/audio/render/a;->c:I

    .line 85
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 2070
    iget v12, v0, Lcom/polly/mobile/audio/render/a;->d:I

    .line 86
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 2074
    iget v13, v0, Lcom/polly/mobile/audio/render/a;->e:I

    .line 87
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 2086
    iget v14, v0, Lcom/polly/mobile/audio/render/a;->f:I

    const/4 v0, 0x2

    const/16 v15, 0xc

    if-ne v13, v15, :cond_30

    const/4 v9, 0x2

    goto :goto_31

    :cond_30
    const/4 v9, 0x1

    :goto_31
    const/4 v4, 0x3

    if-ne v14, v4, :cond_36

    const/4 v8, 0x1

    goto :goto_37

    :cond_36
    const/4 v8, 0x2

    :goto_37
    const/16 v16, 0x0

    .line 95
    :goto_39
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    invoke-virtual {v0}, Lcom/polly/mobile/audio/render/a;->d()I

    move-result v0

    iput v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->play20msBuffSize:I

    .line 97
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 2259
    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->inst()Lcom/polly/mobile/audio/AudioParams;

    move-result-object v4

    .line 2260
    invoke-virtual {v0}, Lcom/polly/mobile/audio/render/a;->d()I

    move-result v5

    const/16 v6, 0x16

    .line 2261
    invoke-virtual {v4, v6}, Lcom/polly/mobile/audio/AudioParams;->getParamsFromIndex(I)I

    move-result v4

    mul-int v4, v4, v5

    .line 3070
    iget v6, v0, Lcom/polly/mobile/audio/render/a;->d:I

    .line 3074
    iget v7, v0, Lcom/polly/mobile/audio/render/a;->e:I

    .line 3086
    iget v10, v0, Lcom/polly/mobile/audio/render/a;->f:I

    .line 2262
    invoke-static {v6, v7, v10}, Landroid/media/AudioTrack;->getMinBufferSize(III)I

    move-result v6

    .line 2263
    sget-object v7, Lcom/polly/mobile/audio/render/a;->a:Ljava/lang/String;

    new-instance v10, Ljava/lang/StringBuilder;

    const-string v3, "playMinSize="

    invoke-direct {v10, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v10, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v3, "("

    invoke-virtual {v10, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    mul-int/lit16 v3, v6, 0x3e8

    .line 4070
    iget v15, v0, Lcom/polly/mobile/audio/render/a;->d:I

    .line 2263
    div-int/2addr v3, v15

    invoke-virtual {v0}, Lcom/polly/mobile/audio/render/a;->a()I

    move-result v15

    div-int/2addr v3, v15

    invoke-virtual {v10, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v3, "ms)"

    invoke-virtual {v10, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v10}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-static {v7, v3}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    if-le v6, v4, :cond_a3

    .line 2267
    sget-object v3, Lcom/polly/mobile/audio/render/a;->a:Ljava/lang/String;

    invoke-static {v6}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

    move-result-object v4

    const-string v7, "[audio]audio track minSize >= 120ms, actualSize="

    invoke-virtual {v7, v4}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v4

    invoke-static {v3, v4}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I

    .line 2268
    div-int v3, v6, v5

    rem-int/2addr v6, v5

    if-nez v6, :cond_9f

    const/4 v4, 0x0

    goto :goto_a0

    :cond_9f
    const/4 v4, 0x1

    :goto_a0
    add-int/2addr v3, v4

    mul-int v4, v3, v5

    .line 2270
    :cond_a3
    invoke-virtual {v0}, Lcom/polly/mobile/audio/render/a;->d()I

    move-result v0

    add-int/2addr v4, v0

    .line 97
    iput v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    const-string v0, "about to new an audiotrack"

    .line 99
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;)I

    const/4 v3, 0x0

    .line 100
    iput-object v3, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    .line 102
    :try_start_b2
    new-instance v0, Landroid/media/AudioTrack;

    iget v10, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I
    :try_end_b6
    .catch Ljava/lang/IllegalArgumentException; {:try_start_b2 .. :try_end_b6} :catch_d6
    .catch Ljava/lang/Exception; {:try_start_b2 .. :try_end_b6} :catch_cb

    const/4 v15, 0x1

    move-object v4, v0

    move v5, v11

    move v6, v12

    move v7, v13

    move/from16 v17, v8

    move v8, v14

    move/from16 v18, v9

    move v9, v10

    const/4 v3, 0x1

    move v10, v15

    :try_start_c3
    invoke-direct/range {v4 .. v10}, Landroid/media/AudioTrack;-><init>(IIIIII)V

    iput-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;
    :try_end_c8
    .catch Ljava/lang/IllegalArgumentException; {:try_start_c3 .. :try_end_c8} :catch_c9
    .catch Ljava/lang/Exception; {:try_start_c3 .. :try_end_c8} :catch_d0

    goto :goto_f1

    :catch_c9
    move-exception v0

    goto :goto_dc

    :catch_cb
    move/from16 v17, v8

    move/from16 v18, v9

    const/4 v3, 0x1

    :catch_d0
    const-string v0, "new AudioTrack encountered an unexpected exception"

    .line 107
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->f(Ljava/lang/String;Ljava/lang/String;)I

    goto :goto_f1

    :catch_d6
    move-exception v0

    move/from16 v17, v8

    move/from16 v18, v9

    const/4 v3, 0x1

    .line 104
    :goto_dc
    new-instance v4, Ljava/lang/StringBuilder;

    const-string v5, "AudioTrack: "

    invoke-direct {v4, v5}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v0}, Ljava/lang/IllegalArgumentException;->getMessage()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 109
    :goto_f1
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    if-eqz v0, :cond_141

    invoke-virtual {v0}, Landroid/media/AudioTrack;->getState()I

    move-result v0

    if-eq v0, v3, :cond_141

    .line 110
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v4, "Failed to create AudioTrack, "

    invoke-direct {v0, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    iget-object v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    invoke-virtual {v4}, Lcom/polly/mobile/audio/render/a;->c()Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v4, ", bufferSize="

    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 111
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v0}, Landroid/media/AudioTrack;->release()V

    const/4 v4, 0x0

    .line 112
    iput-object v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    add-int/lit8 v16, v16, 0x1

    .line 114
    invoke-static/range {v16 .. v16}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;

    move-result-object v0

    const-string v4, "Still trying, trytime="

    invoke-virtual {v4, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v0

    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 115
    invoke-static {}, Ljava/lang/System;->gc()V

    const-wide/16 v4, 0xc8

    .line 117
    :try_start_138
    invoke-static {v4, v5}, Ljava/lang/Thread;->sleep(J)V
    :try_end_13b
    .catch Ljava/lang/InterruptedException; {:try_start_138 .. :try_end_13b} :catch_141
    .catch Ljava/lang/Exception; {:try_start_138 .. :try_end_13b} :catch_13c

    goto :goto_141

    :catch_13c
    const-string v0, "sleep 200 encountered an unexpected exception"

    .line 122
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->f(Ljava/lang/String;Ljava/lang/String;)I

    :catch_141
    :cond_141
    :goto_141
    move/from16 v0, v16

    .line 125
    iget-object v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    if-nez v4, :cond_156

    const/4 v4, 0x5

    if-lt v0, v4, :cond_14b

    goto :goto_156

    :cond_14b
    move/from16 v16, v0

    move/from16 v8, v17

    move/from16 v9, v18

    const/4 v3, 0x0

    const/16 v15, 0xc

    goto/16 :goto_39

    .line 127
    :cond_156
    :goto_156
    invoke-static {}, Lcom/polly/mobile/c/a/a;->b()Lcom/polly/mobile/c/a/a;

    move-result-object v4

    .line 4084
    iget-boolean v4, v4, Lcom/polly/mobile/c/a/a;->f:Z

    if-eqz v4, :cond_1d0

    .line 128
    sget-object v4, Lcom/polly/mobile/audio/a/a;->a:Ljava/util/HashMap;

    const/16 v5, 0x9

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    invoke-virtual {v4, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 129
    sget-object v4, Lcom/polly/mobile/audio/a/a;->a:Ljava/util/HashMap;

    const/16 v5, 0xa

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    invoke-virtual {v4, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 130
    sget-object v4, Lcom/polly/mobile/audio/a/a;->a:Ljava/util/HashMap;

    const/16 v5, 0xb

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    invoke-static {v13}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    invoke-virtual {v4, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 131
    sget-object v4, Lcom/polly/mobile/audio/a/a;->a:Ljava/util/HashMap;

    const/16 v5, 0xc

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    invoke-static {v14}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    invoke-virtual {v4, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 132
    sget-object v4, Lcom/polly/mobile/audio/a/a;->a:Ljava/util/HashMap;

    const/16 v5, 0xd

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    iget v6, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    invoke-static {v6}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v6

    invoke-virtual {v4, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 133
    sget-object v4, Lcom/polly/mobile/audio/a/a;->a:Ljava/util/HashMap;

    const/16 v5, 0xf

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v0

    invoke-virtual {v4, v5, v0}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 134
    sget-object v0, Lcom/polly/mobile/audio/a/a;->a:Ljava/util/HashMap;

    const/16 v4, 0xe

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v4

    iget-object v5, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    if-eqz v5, :cond_1c8

    const/4 v10, 0x1

    goto :goto_1c9

    :cond_1c8
    const/4 v10, 0x0

    :goto_1c9
    invoke-static {v10}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    invoke-virtual {v0, v4, v5}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 136
    :cond_1d0
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    if-nez v0, :cond_1db

    const-string v0, "Failed to create an AudioTrack, the AudioPlayThread is exiting"

    .line 137
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    const/4 v2, 0x0

    return v2

    .line 140
    :cond_1db
    new-instance v0, Ljava/lang/StringBuilder;

    const-string v4, "mixPlayer created. "

    invoke-direct {v0, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    iget-object v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-static {v4}, Lcom/polly/mobile/audio/render/a;->a(Landroid/media/AudioTrack;)Ljava/lang/String;

    move-result-object v4

    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v4, ",buffersize="

    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I

    .line 141
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-direct {v1, v0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->fileCurrentPlayParams(Landroid/media/AudioTrack;)V

    move/from16 v10, v17

    .line 142
    iput v10, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleByteCount:I

    move/from16 v4, v18

    .line 143
    iput v4, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedChannelCount:I

    .line 144
    iget-boolean v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->bFirstNewAudioTrack:Z

    if-nez v0, :cond_210

    .line 145
    invoke-direct/range {p0 .. p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->createNativeMixAecm()V

    .line 147
    :cond_210
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    invoke-virtual {v0}, Lcom/polly/mobile/audio/render/a;->d()I

    move-result v0

    iput v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->outChunkSize:I

    .line 148
    new-array v0, v0, [B

    iput-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->outChunk:[B

    const-string v0, "read time = 0"

    .line 150
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;)I

    .line 151
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    iget v5, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    new-array v6, v5, [B

    const/4 v7, 0x0

    invoke-virtual {v0, v6, v7, v5}, Landroid/media/AudioTrack;->write([BII)I

    .line 153
    :try_start_22b
    iget-object v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v0}, Landroid/media/AudioTrack;->play()V

    .line 154
    invoke-static {}, Lcom/polly/mobile/util/c;->a()Lcom/polly/mobile/util/c;

    move-result-object v0

    invoke-virtual {v0}, Lcom/polly/mobile/util/c;->b()V
    :try_end_237
    .catch Ljava/lang/IllegalStateException; {:try_start_22b .. :try_end_237} :catch_25f
    .catch Ljava/lang/Exception; {:try_start_22b .. :try_end_237} :catch_238

    goto :goto_23d

    :catch_238
    const-string v0, "AudioTrack.play() encountered an unexpected exception"

    .line 159
    invoke-static {v2, v0}, Lcom/polly/mobile/util/f;->f(Ljava/lang/String;Ljava/lang/String;)I

    .line 161
    :goto_23d
    iget v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    div-int/2addr v0, v10

    div-int/2addr v0, v4

    iput v0, v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->audioDataWritePos:I

    .line 162
    invoke-static {}, Lcom/polly/mobile/audio/a;->a()Lcom/polly/mobile/audio/cap/a;

    move-result-object v0

    if-eqz v0, :cond_250

    .line 163
    invoke-static {}, Lcom/polly/mobile/audio/a;->a()Lcom/polly/mobile/audio/cap/a;

    move-result-object v0

    invoke-virtual {v0}, Lcom/polly/mobile/audio/cap/a;->d()V

    .line 165
    :cond_250
    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->inst()Lcom/polly/mobile/audio/AudioParams;

    move-result-object v0

    if-eqz v0, :cond_259

    .line 167
    invoke-virtual {v0, v12, v4}, Lcom/polly/mobile/audio/AudioParams;->setPlaySampleRateAndChannelCount(II)V

    :cond_259
    if-eqz v0, :cond_25e

    .line 169
    invoke-virtual {v0, v3}, Lcom/polly/mobile/audio/AudioParams;->writeAudioDeviceCommand(I)V

    :cond_25e
    return v3

    :catch_25f
    const/4 v2, 0x0

    return v2
.end method

.method private native readNativeDataWithInfo([I[BI)I
.end method

.method private native releaseNativeMixAecm()V
.end method

.method private native savePlayMinBufferSize(I)V
.end method

.method private stopMixPlayer()V
    .registers 3

    .line 175
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    if-eqz v0, :cond_2e

    .line 176
    invoke-virtual {v0}, Landroid/media/AudioTrack;->flush()V

    .line 178
    :try_start_7
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v0}, Landroid/media/AudioTrack;->stop()V
    :try_end_c
    .catch Ljava/lang/IllegalStateException; {:try_start_7 .. :try_end_c} :catch_1f
    .catch Ljava/lang/Exception; {:try_start_7 .. :try_end_c} :catch_f
    .catchall {:try_start_7 .. :try_end_c} :catchall_d

    goto :goto_1f

    :catchall_d
    move-exception v0

    goto :goto_17

    :catch_f
    :try_start_f
    const-string v0, "AudioPlayThread"

    const-string v1, "AudioTrack.stop() encountered an unexpected exception"

    .line 183
    invoke-static {v0, v1}, Lcom/polly/mobile/util/f;->f(Ljava/lang/String;Ljava/lang/String;)I
    :try_end_16
    .catchall {:try_start_f .. :try_end_16} :catchall_d

    goto :goto_1f

    .line 185
    :goto_17
    invoke-static {}, Lcom/polly/mobile/util/c;->a()Lcom/polly/mobile/util/c;

    move-result-object v1

    invoke-virtual {v1}, Lcom/polly/mobile/util/c;->c()V

    throw v0

    :catch_1f
    :goto_1f
    invoke-static {}, Lcom/polly/mobile/util/c;->a()Lcom/polly/mobile/util/c;

    move-result-object v0

    invoke-virtual {v0}, Lcom/polly/mobile/util/c;->c()V

    .line 187
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v0}, Landroid/media/AudioTrack;->release()V

    const/4 v0, 0x0

    .line 188
    iput-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    :cond_2e
    return-void
.end method


# virtual methods
.method public run()V
    .registers 16

    const-string v0, "mPlayFile.read encountered an unexpected exception!"

    const/16 v1, -0xe

    .line 193
    invoke-static {v1}, Landroid/os/Process;->setThreadPriority(I)V

    .line 195
    invoke-static {}, Lcom/polly/mobile/audio/a;->e()Lcom/polly/mobile/audio/a;

    move-result-object v1

    iput-object v1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mADM:Lcom/polly/mobile/audio/a;

    const/4 v1, 0x0

    .line 196
    sput-boolean v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->needResetAec:Z

    .line 198
    invoke-static {}, Lcom/polly/mobile/audio/a;->b()Lcom/polly/mobile/audio/render/a;

    move-result-object v2

    iput-object v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    const-string v3, "AudioPlayThread"

    if-nez v2, :cond_20

    const-string v0, "audiotrack play run init error with mAudioPlayCon null!"

    .line 200
    invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    return-void

    .line 218
    :cond_20
    invoke-direct {p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->newAudioTrack()Z

    move-result v2

    if-nez v2, :cond_27

    return-void

    .line 221
    :cond_27
    iget-object v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    const/4 v4, 0x1

    invoke-virtual {v2, v4}, Lcom/polly/mobile/audio/render/a;->a(Z)V

    .line 222
    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->inst()Lcom/polly/mobile/audio/AudioParams;

    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->getAudioStatisticsManager()Lcom/polly/mobile/audio/c/a;

    move-result-object v2

    .line 4132
    iget-object v2, v2, Lcom/polly/mobile/audio/c/a;->a:Lcom/polly/mobile/audio/c/a$b;

    invoke-virtual {v2}, Lcom/polly/mobile/audio/c/a$b;->a()V

    .line 224
    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->inst()Lcom/polly/mobile/audio/AudioParams;

    move-result-object v2

    const/16 v5, 0x14

    .line 225
    invoke-virtual {v2, v5}, Lcom/polly/mobile/audio/AudioParams;->getParamsFromIndex(I)I

    move-result v6

    .line 226
    iget-object v7, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    invoke-virtual {v7}, Lcom/polly/mobile/audio/render/a;->d()I

    move-result v7

    iput v7, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->play20msBuffSize:I

    .line 227
    iget v8, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    div-int/2addr v8, v7

    mul-int/lit8 v8, v8, 0x14

    sub-int/2addr v8, v5

    if-lez v6, :cond_af

    const/16 v7, 0x64

    if-gt v6, v7, :cond_af

    .line 230
    invoke-virtual {v2}, Lcom/polly/mobile/audio/AudioParams;->checkAudioParamsAecDelay()I

    move-result v7

    if-lez v7, :cond_a1

    sub-int/2addr v8, v6

    const/16 v2, 0x3c

    const-string v7, " with lowDelayMs = "

    if-ge v8, v2, :cond_89

    .line 235
    new-instance v2, Ljava/lang/StringBuilder;

    const-string v9, "error set runTimeBufferThresholdInMs = "

    invoke-direct {v2, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v8, ", playerBufferSize= "

    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v8, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->playerBufferSize:I

    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v3, v2}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    const/16 v2, 0x3c0

    const/16 v8, 0x3c0

    .line 238
    :cond_89
    new-instance v2, Ljava/lang/StringBuilder;

    const-string v9, "set runTimeBufferThresholdInMs = "

    invoke-direct {v2, v9}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v2, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v3, v2}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;)I

    goto :goto_af

    .line 242
    :cond_a1
    invoke-virtual {v2}, Lcom/polly/mobile/audio/AudioParams;->clearLowDelaySetting()V

    .line 243
    invoke-virtual {v2}, Lcom/polly/mobile/audio/AudioParams;->checkAudioParamsAecDelay()I

    move-result v2

    if-gtz v2, :cond_af

    const-string v2, "params[SYS_DELAY] error!"

    .line 245
    invoke-static {v3, v2}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 249
    :cond_af
    :goto_af
    iget v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleRate:I

    mul-int v8, v8, v2

    div-int/lit16 v8, v8, 0x3e8

    .line 250
    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v6

    const-string v2, "AACTEST, entering audioplaythread loop"

    .line 252
    invoke-static {v3, v2}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 253
    :goto_be
    iget-boolean v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlaying:Z

    const/4 v9, 0x0

    if-eqz v2, :cond_214

    .line 254
    iget-object v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    .line 4482
    iget-boolean v2, v2, Lcom/polly/mobile/audio/render/a;->j:Z

    if-nez v2, :cond_cf

    .line 254
    invoke-direct {p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->isParamsChanged()Z

    move-result v2

    if-eqz v2, :cond_e7

    :cond_cf
    const-string v2, "Switching mixplayer"

    .line 255
    invoke-static {v3, v2}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;)I

    .line 256
    invoke-direct {p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->stopMixPlayer()V

    .line 257
    invoke-direct {p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->newAudioTrack()Z

    move-result v2

    if-nez v2, :cond_de

    return-void

    .line 260
    :cond_de
    iget-boolean v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlaying:Z

    if-eqz v2, :cond_214

    .line 263
    iget-object v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    invoke-virtual {v2}, Lcom/polly/mobile/audio/render/a;->e()V

    .line 265
    :cond_e7
    sget-boolean v2, Lcom/polly/mobile/audio/render/AudioPlayThread;->needResetAec:Z

    if-eqz v2, :cond_fa

    const-string v2, "mark"

    const-string v10, "reset aec"

    .line 266
    invoke-static {v2, v10}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    .line 267
    invoke-direct {p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->releaseNativeMixAecm()V

    .line 268
    invoke-direct {p0}, Lcom/polly/mobile/audio/render/AudioPlayThread;->createNativeMixAecm()V

    .line 269
    sput-boolean v1, Lcom/polly/mobile/audio/render/AudioPlayThread;->needResetAec:Z

    .line 273
    :cond_fa
    :try_start_fa
    iget-object v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v2}, Landroid/media/AudioTrack;->getPlaybackHeadPosition()I

    move-result v2

    .line 274
    iget v10, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->audioDataWritePos:I

    sub-int/2addr v10, v2

    .line 275
    iget v11, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->play20msBuffSize:I

    const/4 v12, 0x2

    div-int/2addr v11, v12

    if-ge v10, v11, :cond_12e

    .line 276
    new-instance v11, Ljava/lang/StringBuilder;

    const-string v13, "[audio-player] before write,pos="

    invoke-direct {v11, v13}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v11, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v13, ",sysclock="

    invoke-virtual {v11, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    .line 277
    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v13

    invoke-virtual {v11, v13, v14}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    const-string v13, ",leftbytes="

    invoke-virtual {v11, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v11, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v11

    .line 276
    invoke-static {v3, v11}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    :cond_12e
    if-gtz v10, :cond_135

    .line 284
    iput v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->audioDataWritePos:I

    const/4 v2, 0x1

    const/4 v10, 0x0

    goto :goto_136

    :cond_135
    const/4 v2, 0x0

    .line 287
    :goto_136
    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v13

    sub-long/2addr v13, v6

    long-to-int v11, v13

    if-lt v10, v8, :cond_155

    .line 288
    iget v10, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->fullSleepCnt:I

    const/16 v13, 0x8

    if-ge v10, v13, :cond_155

    const/16 v10, 0x28

    if-lt v11, v10, :cond_149

    goto :goto_155

    :cond_149
    const-wide/16 v9, 0x5

    .line 337
    invoke-static {v9, v10}, Lcom/polly/mobile/audio/render/AudioPlayThread;->sleep(J)V

    .line 338
    iget v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->fullSleepCnt:I

    add-int/2addr v2, v4

    iput v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->fullSleepCnt:I

    goto/16 :goto_be

    .line 289
    :cond_155
    :goto_155
    iput v1, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->fullSleepCnt:I

    .line 290
    iget v10, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->play20msBuffSize:I

    .line 291
    invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J

    move-result-wide v6

    new-array v11, v12, [I

    .line 292
    iget-object v12, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v12}, Landroid/media/AudioTrack;->getSampleRate()I

    move-result v12

    aput v12, v11, v1

    iget-object v12, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v12}, Landroid/media/AudioTrack;->getChannelCount()I

    move-result v12

    aput v12, v11, v4

    .line 293
    iget-object v12, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->outChunk:[B

    invoke-direct {p0, v11, v12, v10}, Lcom/polly/mobile/audio/render/AudioPlayThread;->readNativeDataWithInfo([I[BI)I

    .line 296
    iget-object v11, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mPlayFile:Ljava/io/FileInputStream;
    :try_end_176
    .catch Ljava/lang/Exception; {:try_start_fa .. :try_end_176} :catch_20c

    if-eqz v11, :cond_1a0

    .line 299
    :try_start_178
    iget-object v11, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mPlayFile:Ljava/io/FileInputStream;

    iget-object v12, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->outChunk:[B

    invoke-virtual {v11, v12, v1, v10}, Ljava/io/FileInputStream;->read([BII)I

    move-result v11
    :try_end_180
    .catch Ljava/io/IOException; {:try_start_178 .. :try_end_180} :catch_184
    .catch Ljava/lang/Exception; {:try_start_178 .. :try_end_180} :catch_181

    goto :goto_185

    .line 304
    :catch_181
    :try_start_181
    invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->f(Ljava/lang/String;Ljava/lang/String;)I
    :try_end_184
    .catch Ljava/lang/Exception; {:try_start_181 .. :try_end_184} :catch_20c

    :catch_184
    const/4 v11, 0x0

    :goto_185
    if-eq v11, v10, :cond_1a0

    .line 309
    :try_start_187
    iget-object v11, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mPlayFile:Ljava/io/FileInputStream;

    invoke-virtual {v11}, Ljava/io/FileInputStream;->close()V

    .line 310
    iput-object v9, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mPlayFile:Ljava/io/FileInputStream;

    .line 311
    new-instance v9, Ljava/io/FileInputStream;

    iget-object v11, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->sPlayFileName:Ljava/lang/String;

    invoke-direct {v9, v11}, Ljava/io/FileInputStream;-><init>(Ljava/lang/String;)V

    iput-object v9, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mPlayFile:Ljava/io/FileInputStream;

    const-wide/16 v11, 0x2c

    .line 312
    invoke-virtual {v9, v11, v12}, Ljava/io/FileInputStream;->skip(J)J
    :try_end_19c
    .catch Ljava/io/IOException; {:try_start_187 .. :try_end_19c} :catch_1a0
    .catch Ljava/lang/Exception; {:try_start_187 .. :try_end_19c} :catch_19d

    goto :goto_1a0

    .line 317
    :catch_19d
    :try_start_19d
    invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->f(Ljava/lang/String;Ljava/lang/String;)I

    .line 322
    :catch_1a0
    :cond_1a0
    :goto_1a0
    iget-object v9, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v9}, Landroid/media/AudioTrack;->getPlaybackHeadPosition()I

    move-result v9

    .line 323
    iget v11, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->audioDataWritePos:I

    sub-int/2addr v11, v9

    mul-int/lit16 v11, v11, 0x3e8

    iget v9, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleRate:I

    div-int/2addr v11, v9

    if-gt v11, v5, :cond_1c8

    .line 325
    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->inst()Lcom/polly/mobile/audio/AudioParams;

    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->getAudioStatisticsManager()Lcom/polly/mobile/audio/c/a;

    move-result-object v9

    .line 5177
    iget-object v9, v9, Lcom/polly/mobile/audio/c/a;->c:Lcom/polly/mobile/audio/c/a$a;

    if-nez v11, :cond_1c1

    .line 6156
    iget v11, v9, Lcom/polly/mobile/audio/c/a$a;->a:I

    add-int/2addr v11, v4

    iput v11, v9, Lcom/polly/mobile/audio/c/a$a;->a:I

    goto :goto_1c8

    :cond_1c1
    if-gt v11, v5, :cond_1c8

    .line 6158
    iget v11, v9, Lcom/polly/mobile/audio/c/a$a;->b:I

    add-int/2addr v11, v4

    iput v11, v9, Lcom/polly/mobile/audio/c/a$a;->b:I

    .line 328
    :cond_1c8
    :goto_1c8
    iget-object v9, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    iget-object v11, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->outChunk:[B

    invoke-virtual {v9, v11, v1, v10}, Landroid/media/AudioTrack;->write([BII)I

    move-result v9

    .line 329
    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->inst()Lcom/polly/mobile/audio/AudioParams;

    invoke-static {}, Lcom/polly/mobile/audio/AudioParams;->getAudioStatisticsManager()Lcom/polly/mobile/audio/c/a;

    move-result-object v11

    invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J

    move-result-wide v12

    .line 7124
    iget-object v11, v11, Lcom/polly/mobile/audio/c/a;->a:Lcom/polly/mobile/audio/c/a$b;

    invoke-virtual {v11, v12, v13, v2}, Lcom/polly/mobile/audio/c/a$b;->a(JZ)V

    if-eq v9, v10, :cond_1ff

    .line 332
    new-instance v2, Ljava/lang/StringBuilder;

    const-string v10, "[audio-player] written error! written="

    invoke-direct {v2, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V

    invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    const-string v9, ", len="

    invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    iget v9, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->play20msBuffSize:I

    invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v3, v2}, Lcom/polly/mobile/util/f;->e(Ljava/lang/String;Ljava/lang/String;)I

    goto/16 :goto_be

    .line 335
    :cond_1ff
    iget v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->audioDataWritePos:I

    iget v10, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedSampleByteCount:I

    div-int/2addr v9, v10

    iget v10, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->filedChannelCount:I

    div-int/2addr v9, v10

    add-int/2addr v2, v9

    iput v2, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->audioDataWritePos:I
    :try_end_20a
    .catch Ljava/lang/Exception; {:try_start_19d .. :try_end_20a} :catch_20c

    goto/16 :goto_be

    :catch_20c
    move-exception v2

    const-string v9, "audio play encounter exception"

    .line 341
    invoke-static {v3, v9, v2}, Lcom/polly/mobile/util/f;->b(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

    goto/16 :goto_be

    .line 344
    :cond_214
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mAudioPlayCon:Lcom/polly/mobile/audio/render/a;

    invoke-virtual {v0, v1}, Lcom/polly/mobile/audio/render/a;->a(Z)V

    .line 346
    :try_start_219
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v0}, Landroid/media/AudioTrack;->flush()V

    .line 347
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v0}, Landroid/media/AudioTrack;->stop()V

    .line 348
    iget-object v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    invoke-virtual {v0}, Landroid/media/AudioTrack;->release()V
    :try_end_228
    .catch Ljava/lang/IllegalStateException; {:try_start_219 .. :try_end_228} :catch_239
    .catch Ljava/lang/Exception; {:try_start_219 .. :try_end_228} :catch_22b
    .catchall {:try_start_219 .. :try_end_228} :catchall_229

    goto :goto_239

    :catchall_229
    move-exception v0

    goto :goto_231

    :catch_22b
    :try_start_22b
    const-string v0, "AudioPlay.flush/stop/release() encountered an unexpected exception"

    .line 353
    invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->f(Ljava/lang/String;Ljava/lang/String;)I
    :try_end_230
    .catchall {:try_start_22b .. :try_end_230} :catchall_229

    goto :goto_239

    .line 355
    :goto_231
    invoke-static {}, Lcom/polly/mobile/util/c;->a()Lcom/polly/mobile/util/c;

    move-result-object v1

    invoke-virtual {v1}, Lcom/polly/mobile/util/c;->c()V

    throw v0

    :catch_239
    :goto_239
    invoke-static {}, Lcom/polly/mobile/util/c;->a()Lcom/polly/mobile/util/c;

    move-result-object v0

    invoke-virtual {v0}, Lcom/polly/mobile/util/c;->c()V

    .line 358
    iput-object v9, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlayer:Landroid/media/AudioTrack;

    const-string v0, "stop mix player thread."

    .line 359
    invoke-static {v3, v0}, Lcom/polly/mobile/util/f;->c(Ljava/lang/String;Ljava/lang/String;)I

    return-void
.end method

.method public stopPlay()V
    .registers 3

    const-string v0, "AudioPlayThread"

    const-string v1, "stopPlay is called"

    .line 363
    invoke-static {v0, v1}, Lcom/polly/mobile/util/f;->a(Ljava/lang/String;Ljava/lang/String;)I

    const/4 v0, 0x0

    .line 364
    iput-boolean v0, p0, Lcom/polly/mobile/audio/render/AudioPlayThread;->mixPlaying:Z

    return-void
.end method