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