a.smali
.class final Lorg/fmod/a;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Ljava/lang/Runnable;
# instance fields
.field private final a:Lorg/fmod/FMODAudioDevice;
.field private final b:Ljava/nio/ByteBuffer;
.field private final c:I
.field private final d:I
.field private final e:I
.field private volatile f:Ljava/lang/Thread;
.field private volatile g:Z
.field private h:Landroid/media/AudioRecord;
.field private i:Z
# direct methods
.method constructor <init>(Lorg/fmod/FMODAudioDevice;II)V
.registers 4
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lorg/fmod/a;->a:Lorg/fmod/FMODAudioDevice;
iput p2, p0, Lorg/fmod/a;->c:I
iput p3, p0, Lorg/fmod/a;->d:I
const/4 p1, 0x2
iput p1, p0, Lorg/fmod/a;->e:I
invoke-static {p2, p3, p1}, Landroid/media/AudioRecord;->getMinBufferSize(III)I
move-result p1
invoke-static {p1}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object p1
iput-object p1, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
return-void
.end method
.method private d()V
.registers 3
iget-object v0, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
if-eqz v0, :cond_18
invoke-virtual {v0}, Landroid/media/AudioRecord;->getState()I
move-result v0
const/4 v1, 0x1
if-ne v0, v1, :cond_10
iget-object v0, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
invoke-virtual {v0}, Landroid/media/AudioRecord;->stop()V
:cond_10
iget-object v0, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
invoke-virtual {v0}, Landroid/media/AudioRecord;->release()V
const/4 v0, 0x0
iput-object v0, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
:cond_18
iget-object v0, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
iput-boolean v1, p0, Lorg/fmod/a;->i:Z
return-void
.end method
# virtual methods
.method public final a()I
.registers 2
iget-object v0, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/Buffer;->capacity()I
move-result v0
return v0
.end method
.method public final b()V
.registers 2
iget-object v0, p0, Lorg/fmod/a;->f:Ljava/lang/Thread;
if-eqz v0, :cond_7
invoke-virtual {p0}, Lorg/fmod/a;->c()V
:cond_7
const/4 v0, 0x1
iput-boolean v0, p0, Lorg/fmod/a;->g:Z
new-instance v0, Ljava/lang/Thread;
invoke-direct {v0, p0}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
iput-object v0, p0, Lorg/fmod/a;->f:Ljava/lang/Thread;
iget-object v0, p0, Lorg/fmod/a;->f:Ljava/lang/Thread;
invoke-virtual {v0}, Ljava/lang/Thread;->start()V
return-void
.end method
.method public final c()V
.registers 2
:goto_0
iget-object v0, p0, Lorg/fmod/a;->f:Ljava/lang/Thread;
if-eqz v0, :cond_12
const/4 v0, 0x0
iput-boolean v0, p0, Lorg/fmod/a;->g:Z
:try_start_7
iget-object v0, p0, Lorg/fmod/a;->f:Ljava/lang/Thread;
invoke-virtual {v0}, Ljava/lang/Thread;->join()V
const/4 v0, 0x0
iput-object v0, p0, Lorg/fmod/a;->f:Ljava/lang/Thread;
:try_end_f
.catch Ljava/lang/InterruptedException; {:try_start_7 .. :try_end_f} :catch_10
goto :goto_0
:catch_10
nop
goto :goto_0
:cond_12
return-void
.end method
.method public final run()V
.registers 11
const/4 v0, 0x3
const/4 v1, 0x3
:cond_2
:goto_2
iget-boolean v2, p0, Lorg/fmod/a;->g:Z
if-eqz v2, :cond_87
iget-boolean v2, p0, Lorg/fmod/a;->i:Z
const/4 v3, 0x0
if-nez v2, :cond_61
if-lez v1, :cond_61
invoke-direct {p0}, Lorg/fmod/a;->d()V
new-instance v2, Landroid/media/AudioRecord;
const/4 v5, 0x1
iget v6, p0, Lorg/fmod/a;->c:I
iget v7, p0, Lorg/fmod/a;->d:I
iget v8, p0, Lorg/fmod/a;->e:I
iget-object v4, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/Buffer;->capacity()I
move-result v9
move-object v4, v2
invoke-direct/range {v4 .. v9}, Landroid/media/AudioRecord;-><init>(IIIII)V
iput-object v2, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
invoke-virtual {v2}, Landroid/media/AudioRecord;->getState()I
move-result v2
const/4 v4, 0x1
if-ne v2, v4, :cond_2d
goto :goto_2e
:cond_2d
const/4 v4, 0x0
:goto_2e
iput-boolean v4, p0, Lorg/fmod/a;->i:Z
if-eqz v4, :cond_3e
iget-object v1, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
invoke-virtual {v1, v3}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
iget-object v1, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
invoke-virtual {v1}, Landroid/media/AudioRecord;->startRecording()V
const/4 v1, 0x3
goto :goto_61
:cond_3e
new-instance v2, Ljava/lang/StringBuilder;
const-string v4, "AudioRecord failed to initialize (status "
invoke-direct {v2, v4}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v4, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
invoke-virtual {v4}, Landroid/media/AudioRecord;->getState()I
move-result v4
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v4, ")"
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
const-string v4, "FMOD"
invoke-static {v4, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
add-int/lit8 v1, v1, -0x1
invoke-direct {p0}, Lorg/fmod/a;->d()V
:cond_61
:goto_61
iget-boolean v2, p0, Lorg/fmod/a;->i:Z
if-eqz v2, :cond_2
iget-object v2, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
invoke-virtual {v2}, Landroid/media/AudioRecord;->getRecordingState()I
move-result v2
if-ne v2, v0, :cond_2
iget-object v2, p0, Lorg/fmod/a;->h:Landroid/media/AudioRecord;
iget-object v4, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/Buffer;->capacity()I
move-result v5
invoke-virtual {v2, v4, v5}, Landroid/media/AudioRecord;->read(Ljava/nio/ByteBuffer;I)I
move-result v2
iget-object v4, p0, Lorg/fmod/a;->a:Lorg/fmod/FMODAudioDevice;
iget-object v5, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
invoke-virtual {v4, v5, v2}, Lorg/fmod/FMODAudioDevice;->fmodProcessMicData(Ljava/nio/ByteBuffer;I)I
iget-object v2, p0, Lorg/fmod/a;->b:Ljava/nio/ByteBuffer;
invoke-virtual {v2, v3}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
goto/16 :goto_2
:cond_87
invoke-direct {p0}, Lorg/fmod/a;->d()V
return-void
.end method