ResamplingAudioProcessor.smali
.class final Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;
.super Ljava/lang/Object;
.source "ResamplingAudioProcessor.java"
# interfaces
.implements Lcom/google/android/exoplayer2/audio/AudioProcessor;
# instance fields
.field private buffer:Ljava/nio/ByteBuffer;
.field private channelCount:I
.field private encoding:I
.field private inputEnded:Z
.field private outputBuffer:Ljava/nio/ByteBuffer;
.field private sampleRateHz:I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 37
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 38
const/4 v0, -0x1
iput v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->sampleRateHz:I
.line 39
iput v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->channelCount:I
.line 40
const/4 v0, 0x0
iput v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->encoding:I
.line 41
sget-object v0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->EMPTY_BUFFER:Ljava/nio/ByteBuffer;
iput-object v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
.line 42
sget-object v0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->EMPTY_BUFFER:Ljava/nio/ByteBuffer;
iput-object v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->outputBuffer:Ljava/nio/ByteBuffer;
.line 43
return-void
.end method
# virtual methods
.method public configure(III)Z
.registers 5
.param p1, "sampleRateHz" # I
.param p2, "channelCount" # I
.param p3, "encoding" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/audio/AudioProcessor$UnhandledFormatException;
}
.end annotation
.line 48
const/4 v0, 0x3
if-eq p3, v0, :cond_15
const/4 v0, 0x2
if-eq p3, v0, :cond_15
const/high16 v0, -0x80000000
if-eq p3, v0, :cond_15
const/high16 v0, 0x40000000 # 2.0f
if-ne p3, v0, :cond_f
goto :goto_15
.line 50
:cond_f
new-instance v0, Lcom/google/android/exoplayer2/audio/AudioProcessor$UnhandledFormatException;
invoke-direct {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/audio/AudioProcessor$UnhandledFormatException;-><init>(III)V
throw v0
.line 52
:cond_15
:goto_15
iget v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->sampleRateHz:I
if-ne v0, p1, :cond_23
iget v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->channelCount:I
if-ne v0, p2, :cond_23
iget v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->encoding:I
if-ne v0, p3, :cond_23
.line 54
const/4 v0, 0x0
return v0
.line 56
:cond_23
iput p1, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->sampleRateHz:I
.line 57
iput p2, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->channelCount:I
.line 58
iput p3, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->encoding:I
.line 59
const/4 v0, 0x1
return v0
.end method
.method public flush()V
.registers 2
.line 172
sget-object v0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->EMPTY_BUFFER:Ljava/nio/ByteBuffer;
iput-object v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->outputBuffer:Ljava/nio/ByteBuffer;
.line 173
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->inputEnded:Z
.line 174
return-void
.end method
.method public getOutput()Ljava/nio/ByteBuffer;
.registers 3
.line 159
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->outputBuffer:Ljava/nio/ByteBuffer;
.line 160
.local v0, "outputBuffer":Ljava/nio/ByteBuffer;
sget-object v1, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->EMPTY_BUFFER:Ljava/nio/ByteBuffer;
iput-object v1, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->outputBuffer:Ljava/nio/ByteBuffer;
.line 161
return-object v0
.end method
.method public getOutputChannelCount()I
.registers 2
.line 69
iget v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->channelCount:I
return v0
.end method
.method public getOutputEncoding()I
.registers 2
.line 74
const/4 v0, 0x2
return v0
.end method
.method public getOutputSampleRateHz()I
.registers 2
.line 79
iget v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->sampleRateHz:I
return v0
.end method
.method public isActive()Z
.registers 3
.line 64
iget v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->encoding:I
if-eqz v0, :cond_9
const/4 v1, 0x2
if-eq v0, v1, :cond_9
const/4 v0, 0x1
goto :goto_a
:cond_9
const/4 v0, 0x0
:goto_a
return v0
.end method
.method public isEnded()Z
.registers 3
.line 167
iget-boolean v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->inputEnded:Z
if-eqz v0, :cond_c
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->outputBuffer:Ljava/nio/ByteBuffer;
sget-object v1, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->EMPTY_BUFFER:Ljava/nio/ByteBuffer;
if-ne v0, v1, :cond_c
const/4 v0, 0x1
goto :goto_d
:cond_c
const/4 v0, 0x0
:goto_d
return v0
.end method
.method public queueEndOfStream()V
.registers 2
.line 154
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->inputEnded:Z
.line 155
return-void
.end method
.method public queueInput(Ljava/nio/ByteBuffer;)V
.registers 11
.param p1, "inputBuffer" # Ljava/nio/ByteBuffer;
.line 85
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->position()I
move-result v0
.line 86
.local v0, "position":I
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->limit()I
move-result v1
.line 87
.local v1, "limit":I
sub-int v2, v1, v0
.line 89
.local v2, "size":I
iget v3, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->encoding:I
const/high16 v4, 0x40000000 # 2.0f
const/high16 v5, -0x80000000
const/4 v6, 0x3
if-eq v3, v5, :cond_23
if-eq v3, v6, :cond_20
if-ne v3, v4, :cond_1a
.line 97
div-int/lit8 v3, v2, 0x2
.line 98
.local v3, "resampledSize":I
goto :goto_28
.line 106
.end local v3 # "resampledSize":I
:cond_1a
new-instance v3, Ljava/lang/IllegalStateException;
invoke-direct {v3}, Ljava/lang/IllegalStateException;-><init>()V
throw v3
.line 91
:cond_20
mul-int/lit8 v3, v2, 0x2
.line 92
.restart local v3 # "resampledSize":I
goto :goto_28
.line 94
.end local v3 # "resampledSize":I
:cond_23
div-int/lit8 v3, v2, 0x3
mul-int/lit8 v3, v3, 0x2
.line 95
.restart local v3 # "resampledSize":I
nop
.line 108
:goto_28
iget-object v7, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->capacity()I
move-result v7
if-ge v7, v3, :cond_3f
.line 109
invoke-static {v3}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object v7
invoke-static {}, Ljava/nio/ByteOrder;->nativeOrder()Ljava/nio/ByteOrder;
move-result-object v8
invoke-virtual {v7, v8}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
move-result-object v7
iput-object v7, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
goto :goto_44
.line 111
:cond_3f
iget-object v7, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
.line 115
:goto_44
iget v7, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->encoding:I
if-eq v7, v5, :cond_8a
if-eq v7, v6, :cond_6f
if-ne v7, v4, :cond_69
.line 132
move v4, v0
.local v4, "i":I
:goto_4d
if-ge v4, v1, :cond_68
.line 133
iget-object v5, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
add-int/lit8 v6, v4, 0x2
invoke-virtual {p1, v6}, Ljava/nio/ByteBuffer;->get(I)B
move-result v6
invoke-virtual {v5, v6}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;
.line 134
iget-object v5, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
add-int/lit8 v6, v4, 0x3
invoke-virtual {p1, v6}, Ljava/nio/ByteBuffer;->get(I)B
move-result v6
invoke-virtual {v5, v6}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;
.line 132
add-int/lit8 v4, v4, 0x4
goto :goto_4d
.line 136
.end local v4 # "i":I
:cond_68
goto :goto_a7
.line 145
:cond_69
new-instance v4, Ljava/lang/IllegalStateException;
invoke-direct {v4}, Ljava/lang/IllegalStateException;-><init>()V
throw v4
.line 118
:cond_6f
move v4, v0
.restart local v4 # "i":I
:goto_70
if-ge v4, v1, :cond_89
.line 119
iget-object v5, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
const/4 v6, 0x0
invoke-virtual {v5, v6}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;
.line 120
iget-object v5, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {p1, v4}, Ljava/nio/ByteBuffer;->get(I)B
move-result v6
and-int/lit16 v6, v6, 0xff
add-int/lit8 v6, v6, -0x80
int-to-byte v6, v6
invoke-virtual {v5, v6}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;
.line 118
add-int/lit8 v4, v4, 0x1
goto :goto_70
.line 122
.end local v4 # "i":I
:cond_89
goto :goto_a7
.line 125
:cond_8a
move v4, v0
.restart local v4 # "i":I
:goto_8b
if-ge v4, v1, :cond_a6
.line 126
iget-object v5, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
add-int/lit8 v6, v4, 0x1
invoke-virtual {p1, v6}, Ljava/nio/ByteBuffer;->get(I)B
move-result v6
invoke-virtual {v5, v6}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;
.line 127
iget-object v5, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
add-int/lit8 v6, v4, 0x2
invoke-virtual {p1, v6}, Ljava/nio/ByteBuffer;->get(I)B
move-result v6
invoke-virtual {v5, v6}, Ljava/nio/ByteBuffer;->put(B)Ljava/nio/ByteBuffer;
.line 125
add-int/lit8 v4, v4, 0x3
goto :goto_8b
.line 129
.end local v4 # "i":I
:cond_a6
nop
.line 147
:goto_a7
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->limit()I
move-result v4
invoke-virtual {p1, v4}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 148
iget-object v4, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
.line 149
iget-object v4, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
iput-object v4, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->outputBuffer:Ljava/nio/ByteBuffer;
.line 150
return-void
.end method
.method public reset()V
.registers 2
.line 178
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->flush()V
.line 179
const/4 v0, -0x1
iput v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->sampleRateHz:I
.line 180
iput v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->channelCount:I
.line 181
const/4 v0, 0x0
iput v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->encoding:I
.line 182
sget-object v0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->EMPTY_BUFFER:Ljava/nio/ByteBuffer;
iput-object v0, p0, Lcom/google/android/exoplayer2/audio/ResamplingAudioProcessor;->buffer:Ljava/nio/ByteBuffer;
.line 183
return-void
.end method