AudioPlayer.smali
.class public Lcom/FF/voiceengine/AudioPlayer;
.super Ljava/lang/Object;
.source "SourceFile"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/FF/voiceengine/AudioPlayer$AudioPlayerRunnable;
}
.end annotation
# static fields
.field private static final DEFAULT_BYTES_PER_SAMPLE:I = 0x2
.field private static final DEFAULT_CHANNEL_NUM:I = 0x2
.field private static final DEFAULT_MODE:I = 0x1
.field private static final DEFAULT_SAMPLE_RATE:I = 0xac44
.field private static final DEFAULT_STREAM_TYPE:I = 0x3
.field private static final DEFAULT_USAGE:I
.field private static final TAG:Ljava/lang/String; = "FFVoiceAudioPlayer"
.field private static audioRecordSessionID:I = 0x0
.field private static mAudioTrack:Landroid/media/AudioTrack; = null
.field private static mBytesPerSample:I = 0x0
.field private static mChannelNum:I = 0x0
.field public static mInBuffer:Ljava/nio/ByteBuffer; = null
.field private static mInitStatus:I = 0x64
.field private static mIsLoopExit:Z
.field private static mIsPlayerStarted:Z
.field private static mIsStreamVoice:Z
.field private static mMinBufferSize:I
.field private static mMode:I
.field private static mPlayStatus:I
.field private static mPlayerThread:Ljava/lang/Thread;
.field private static mSamplerate:I
.field private static mStreamType:I
.field private static usageAttribute:I
# direct methods
.method static constructor <clinit>()V
.registers 1
invoke-static {}, Lcom/FF/voiceengine/AudioPlayer;->getDefaultUsageAttribute()I
move-result v0
sput v0, Lcom/FF/voiceengine/AudioPlayer;->DEFAULT_USAGE:I
const/4 v0, -0x1
sput v0, Lcom/FF/voiceengine/AudioPlayer;->audioRecordSessionID:I
const/4 v0, 0x1
sput-boolean v0, Lcom/FF/voiceengine/AudioPlayer;->mIsStreamVoice:Z
return-void
.end method
.method public constructor <init>()V
.registers 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
.method public static OnAudioPlayer(I)V
.registers 3
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "AudioRecorder : "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "AudioRecorder"
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
if-eqz p0, :cond_1c
invoke-static {}, Lcom/FF/voiceengine/AudioPlayer;->startPlayer()Z
goto :goto_1f
:cond_1c
invoke-static {}, Lcom/FF/voiceengine/AudioPlayer;->stopPlayer()V
:goto_1f
return-void
.end method
.method public static OnAudioPlayerRefresh(Ljava/nio/ByteBuffer;III)V
.registers 4
invoke-static {p0, p1, p2, p3}, Lcom/FF/voiceengine/NativeEngine;->AudioPlayerBufRefresh(Ljava/nio/ByteBuffer;III)V
return-void
.end method
.method static synthetic access$100()I
.registers 1
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
return v0
.end method
.method static synthetic access$200()I
.registers 1
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mChannelNum:I
return v0
.end method
.method static synthetic access$300()I
.registers 1
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mBytesPerSample:I
return v0
.end method
.method static synthetic access$400()Z
.registers 1
sget-boolean v0, Lcom/FF/voiceengine/AudioPlayer;->mIsLoopExit:Z
return v0
.end method
.method static synthetic access$500()I
.registers 1
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mMinBufferSize:I
return v0
.end method
.method static synthetic access$600()Landroid/media/AudioTrack;
.registers 1
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
return-object v0
.end method
.method static synthetic access$702(I)I
.registers 1
sput p0, Lcom/FF/voiceengine/AudioPlayer;->mPlayStatus:I
return p0
.end method
.method private static createAudioTrackOnLollipopOrHigher(IIII)Landroid/media/AudioTrack;
.registers 14
.annotation build Landroid/annotation/TargetApi;
value = 0x15
.end annotation
const-string v0, "createAudioTrackOnLollipopOrHigher"
const-string v1, "FFVoiceAudioPlayer"
invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
const/4 v0, 0x0
invoke-static {v0}, Landroid/media/AudioTrack;->getNativeOutputSampleRate(I)I
move-result v2
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "nativeOutputSampleRate: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-static {v1, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
if-eq p0, v2, :cond_36
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Unable to use fast mode since requested sample rate is not native,native rate:"
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
:cond_36
invoke-static {}, Lcom/FF/voiceengine/AudioPlayer;->getDefaultUsageAttribute()I
move-result v2
sput v2, Lcom/FF/voiceengine/AudioPlayer;->usageAttribute:I
sget v3, Lcom/FF/voiceengine/AudioPlayer;->DEFAULT_USAGE:I
if-eq v2, v3, :cond_56
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "A non default usage attribute is used: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget v3, Lcom/FF/voiceengine/AudioPlayer;->usageAttribute:I
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
:cond_56
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mStreamType:I
const/4 v2, 0x2
const/4 v3, 0x1
if-nez v1, :cond_5d
goto :goto_5f
:cond_5d
const/4 v2, 0x1
const/4 v3, 0x2
:goto_5f
new-instance v1, Landroid/media/AudioTrack;
new-instance v4, Landroid/media/AudioAttributes$Builder;
invoke-direct {v4}, Landroid/media/AudioAttributes$Builder;-><init>()V
invoke-static {v4, v2}, Landroidx/core/app/f0;->a(Landroid/media/AudioAttributes$Builder;I)Landroid/media/AudioAttributes$Builder;
move-result-object v2
invoke-static {v2, v3}, Landroidx/core/app/b0;->a(Landroid/media/AudioAttributes$Builder;I)Landroid/media/AudioAttributes$Builder;
move-result-object v2
invoke-static {v2}, Landroidx/core/app/d0;->a(Landroid/media/AudioAttributes$Builder;)Landroid/media/AudioAttributes;
move-result-object v5
new-instance v2, Landroid/media/AudioFormat$Builder;
invoke-direct {v2}, Landroid/media/AudioFormat$Builder;-><init>()V
invoke-static {v2, p3}, Lcom/FF/voiceengine/a;->a(Landroid/media/AudioFormat$Builder;I)Landroid/media/AudioFormat$Builder;
move-result-object p3
invoke-static {p3, p0}, Lcom/FF/voiceengine/b;->a(Landroid/media/AudioFormat$Builder;I)Landroid/media/AudioFormat$Builder;
move-result-object p0
invoke-static {p0, p1}, Lcom/FF/voiceengine/c;->a(Landroid/media/AudioFormat$Builder;I)Landroid/media/AudioFormat$Builder;
move-result-object p0
invoke-static {p0}, Lcom/FF/voiceengine/d;->a(Landroid/media/AudioFormat$Builder;)Landroid/media/AudioFormat;
move-result-object v6
sget v8, Lcom/FF/voiceengine/AudioPlayer;->mMode:I
sget p0, Lcom/FF/voiceengine/AudioPlayer;->audioRecordSessionID:I
const/4 p1, -0x1
if-ne p0, p1, :cond_90
const/4 v9, 0x0
goto :goto_91
:cond_90
move v9, p0
:goto_91
move-object v4, v1
move v7, p2
invoke-direct/range {v4 .. v9}, Landroid/media/AudioTrack;-><init>(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;III)V
return-object v1
.end method
.method private static getDefaultUsageAttribute()I
.registers 2
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_b
invoke-static {}, Lcom/FF/voiceengine/AudioPlayer;->getDefaultUsageAttributeOnLollipopOrHigher()I
move-result v0
return v0
:cond_b
const/4 v0, 0x0
return v0
.end method
.method private static getDefaultUsageAttributeOnLollipopOrHigher()I
.registers 2
.annotation build Landroid/annotation/TargetApi;
value = 0x15
.end annotation
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mStreamType:I
const/4 v1, 0x3
if-ne v0, v1, :cond_7
const/4 v0, 0x1
goto :goto_8
:cond_7
const/4 v0, 0x2
:goto_8
return v0
.end method
.method public static getPlayerInitStatus()I
.registers 1
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mInitStatus:I
return v0
.end method
.method public static getPlayerStatus()I
.registers 1
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mPlayStatus:I
return v0
.end method
.method public static initPlayer()V
.registers 3
const/4 v0, 0x2
const/4 v1, 0x0
const v2, 0xac44
invoke-static {v2, v0, v0, v1}, Lcom/FF/voiceengine/AudioPlayer;->initPlayer(IIIZ)V
return-void
.end method
.method public static initPlayer(IIIZ)V
.registers 21
.annotation build Landroid/annotation/TargetApi;
value = 0x9
.end annotation
move/from16 v0, p1
move/from16 v1, p2
const-string v2, "AudioPlayer initialize fail !"
const/4 v3, 0x3
sput v3, Lcom/FF/voiceengine/AudioPlayer;->mStreamType:I
sput p0, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
sput v0, Lcom/FF/voiceengine/AudioPlayer;->mChannelNum:I
sput v1, Lcom/FF/voiceengine/AudioPlayer;->mBytesPerSample:I
const/4 v4, 0x1
sput v4, Lcom/FF/voiceengine/AudioPlayer;->mMode:I
sput-boolean p3, Lcom/FF/voiceengine/AudioPlayer;->mIsStreamVoice:Z
const/4 v5, 0x0
const-string v6, "FFVoiceAudioPlayer"
if-eqz p3, :cond_1e
sput v5, Lcom/FF/voiceengine/AudioPlayer;->mStreamType:I
const-string v7, "## player set voice stream:STREAM_VOICE_CALL"
goto :goto_22
:cond_1e
sput v3, Lcom/FF/voiceengine/AudioPlayer;->mStreamType:I
const-string v7, "## player set voice stream:STREAM_MUSIC"
:goto_22
invoke-static {v6, v7}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
const/4 v7, 0x4
const/4 v8, 0x2
if-eq v0, v4, :cond_31
if-eq v0, v8, :cond_2c
goto :goto_31
:cond_2c
const/16 v7, 0xc
const/16 v12, 0xc
goto :goto_32
:cond_31
:goto_31
const/4 v12, 0x4
:goto_32
if-eq v1, v4, :cond_36
const/4 v13, 0x2
goto :goto_37
:cond_36
const/4 v13, 0x3
:goto_37
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
invoke-static {v0, v12, v13}, Landroid/media/AudioTrack;->getMinBufferSize(III)I
move-result v0
sput v0, Lcom/FF/voiceengine/AudioPlayer;->mMinBufferSize:I
const/4 v1, -0x2
if-ne v0, v1, :cond_4a
const-string v0, "Invalid parameter !"
invoke-static {v6, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
sput v1, Lcom/FF/voiceengine/AudioPlayer;->mInitStatus:I
return-void
:cond_4a
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "getMinBufferSize = "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mMinBufferSize:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " bytes samplerate:"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v6, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
:try_start_6a
sget v0, Landroid/os/Build$VERSION;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_7b
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mMinBufferSize:I
invoke-static {v0, v12, v1, v13}, Lcom/FF/voiceengine/AudioPlayer;->createAudioTrackOnLollipopOrHigher(IIII)Landroid/media/AudioTrack;
move-result-object v0
:goto_78
sput-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
goto :goto_94
:cond_7b
new-instance v0, Landroid/media/AudioTrack;
sget v10, Lcom/FF/voiceengine/AudioPlayer;->mStreamType:I
sget v11, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
sget v14, Lcom/FF/voiceengine/AudioPlayer;->mMinBufferSize:I
sget v15, Lcom/FF/voiceengine/AudioPlayer;->mMode:I
sget v1, Lcom/FF/voiceengine/AudioPlayer;->audioRecordSessionID:I
const/4 v3, -0x1
if-ne v1, v3, :cond_8d
const/16 v16, 0x0
goto :goto_8f
:cond_8d
move/from16 v16, v1
:goto_8f
move-object v9, v0
invoke-direct/range {v9 .. v16}, Landroid/media/AudioTrack;-><init>(IIIIIII)V
:try_end_93
.catchall {:try_start_6a .. :try_end_93} :catchall_c7
goto :goto_78
:goto_94
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
if-eqz v0, :cond_a9
invoke-virtual {v0}, Landroid/media/AudioTrack;->getState()I
move-result v0
if-nez v0, :cond_a9
invoke-static {v6, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
sput v5, Lcom/FF/voiceengine/AudioPlayer;->mInitStatus:I
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
invoke-virtual {v0}, Landroid/media/AudioTrack;->release()V
return-void
:cond_a9
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mChannelNum:I
mul-int v0, v0, v1
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mBytesPerSample:I
mul-int v0, v0, v1
div-int/lit8 v0, v0, 0x64
mul-int/lit8 v0, v0, 0x2
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mMinBufferSize:I
if-le v0, v1, :cond_c0
const-string v1, "Error play buffer overflow!"
invoke-static {v6, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
:cond_c0
invoke-static {v0}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object v0
sput-object v0, Lcom/FF/voiceengine/AudioPlayer;->mInBuffer:Ljava/nio/ByteBuffer;
return-void
:catchall_c7
move-exception v0
invoke-virtual {v0}, Ljava/lang/Throwable;->printStackTrace()V
invoke-static {v6, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
sput v5, Lcom/FF/voiceengine/AudioPlayer;->mInitStatus:I
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
if-eqz v0, :cond_d7
invoke-virtual {v0}, Landroid/media/AudioTrack;->release()V
:cond_d7
return-void
.end method
.method public static isPlayerStarted()Z
.registers 1
sget-boolean v0, Lcom/FF/voiceengine/AudioPlayer;->mIsPlayerStarted:Z
return v0
.end method
.method public static setAudioRecordSessionID(I)V
.registers 4
sput p0, Lcom/FF/voiceengine/AudioPlayer;->audioRecordSessionID:I
sget-boolean p0, Lcom/FF/voiceengine/AudioPlayer;->mIsPlayerStarted:Z
if-eqz p0, :cond_19
const/4 p0, 0x0
invoke-static {p0}, Lcom/FF/voiceengine/AudioPlayer;->OnAudioPlayer(I)V
sget p0, Lcom/FF/voiceengine/AudioPlayer;->mSamplerate:I
sget v0, Lcom/FF/voiceengine/AudioPlayer;->mChannelNum:I
sget v1, Lcom/FF/voiceengine/AudioPlayer;->mBytesPerSample:I
sget-boolean v2, Lcom/FF/voiceengine/AudioPlayer;->mIsStreamVoice:Z
invoke-static {p0, v0, v1, v2}, Lcom/FF/voiceengine/AudioPlayer;->initPlayer(IIIZ)V
const/4 p0, 0x1
invoke-static {p0}, Lcom/FF/voiceengine/AudioPlayer;->OnAudioPlayer(I)V
:cond_19
return-void
.end method
.method public static startPlayer()Z
.registers 6
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
const/4 v1, 0x0
const/4 v2, 0x0
const-string v3, "FFVoiceAudioPlayer"
if-eqz v0, :cond_37
sget v4, Lcom/FF/voiceengine/AudioPlayer;->mInitStatus:I
const/4 v5, -0x2
if-eq v4, v5, :cond_37
if-nez v4, :cond_10
goto :goto_37
:cond_10
sget-boolean v4, Lcom/FF/voiceengine/AudioPlayer;->mIsPlayerStarted:Z
if-eqz v4, :cond_1a
const-string v0, "Player already started !"
invoke-static {v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
return v2
:cond_1a
invoke-virtual {v0}, Landroid/media/AudioTrack;->play()V
sput-boolean v2, Lcom/FF/voiceengine/AudioPlayer;->mIsLoopExit:Z
new-instance v0, Ljava/lang/Thread;
new-instance v2, Lcom/FF/voiceengine/AudioPlayer$AudioPlayerRunnable;
invoke-direct {v2, v1}, Lcom/FF/voiceengine/AudioPlayer$AudioPlayerRunnable;-><init>(Lcom/FF/voiceengine/AudioPlayer$1;)V
invoke-direct {v0, v2}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
sput-object v0, Lcom/FF/voiceengine/AudioPlayer;->mPlayerThread:Ljava/lang/Thread;
invoke-virtual {v0}, Ljava/lang/Thread;->start()V
const/4 v0, 0x1
sput-boolean v0, Lcom/FF/voiceengine/AudioPlayer;->mIsPlayerStarted:Z
const-string v1, "Start audio player success !"
invoke-static {v3, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
return v0
:cond_37
:goto_37
const-string v0, "Player cannot be started because initial fail !"
invoke-static {v3, v0}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
sput-object v1, Lcom/FF/voiceengine/AudioPlayer;->mInBuffer:Ljava/nio/ByteBuffer;
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
if-eqz v0, :cond_45
invoke-virtual {v0}, Landroid/media/AudioTrack;->release()V
:cond_45
return v2
.end method
.method public static stopPlayer()V
.registers 3
sget-boolean v0, Lcom/FF/voiceengine/AudioPlayer;->mIsPlayerStarted:Z
if-nez v0, :cond_5
return-void
:cond_5
const/4 v0, 0x1
sput-boolean v0, Lcom/FF/voiceengine/AudioPlayer;->mIsLoopExit:Z
:try_start_8
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mPlayerThread:Ljava/lang/Thread;
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mPlayerThread:Ljava/lang/Thread;
const-wide/16 v1, 0x1388
invoke-virtual {v0, v1, v2}, Ljava/lang/Thread;->join(J)V
:try_end_14
.catch Ljava/lang/InterruptedException; {:try_start_8 .. :try_end_14} :catch_15
goto :goto_19
:catch_15
move-exception v0
invoke-virtual {v0}, Ljava/lang/Throwable;->printStackTrace()V
:goto_19
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
if-eqz v0, :cond_2e
invoke-virtual {v0}, Landroid/media/AudioTrack;->getPlayState()I
move-result v0
const/4 v1, 0x3
if-ne v0, v1, :cond_29
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
invoke-virtual {v0}, Landroid/media/AudioTrack;->stop()V
:cond_29
sget-object v0, Lcom/FF/voiceengine/AudioPlayer;->mAudioTrack:Landroid/media/AudioTrack;
invoke-virtual {v0}, Landroid/media/AudioTrack;->release()V
:cond_2e
const/4 v0, 0x0
sput-boolean v0, Lcom/FF/voiceengine/AudioPlayer;->mIsPlayerStarted:Z
const/4 v0, 0x0
sput-object v0, Lcom/FF/voiceengine/AudioPlayer;->mInBuffer:Ljava/nio/ByteBuffer;
const-string v0, "FFVoiceAudioPlayer"
const-string v1, "Stop audio player success !"
invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
return-void
.end method