149 lines
2.6 KiB
Smali
149 lines
2.6 KiB
Smali
.class public final Lcom/discord/utilities/voice/PerceptualSoundUtils;
|
|
.super Ljava/lang/Object;
|
|
.source "PerceptualSoundUtils.kt"
|
|
|
|
|
|
# static fields
|
|
.field public static final INSTANCE:Lcom/discord/utilities/voice/PerceptualSoundUtils;
|
|
|
|
.field public static final VOLUME_BOOST_DYNAMIC_RANGE_DB:F = 6.0f
|
|
|
|
.field public static final VOLUME_DYNAMIC_RANGE_DB:F = 50.0f
|
|
|
|
|
|
# direct methods
|
|
.method public static constructor <clinit>()V
|
|
.locals 1
|
|
|
|
new-instance v0, Lcom/discord/utilities/voice/PerceptualSoundUtils;
|
|
|
|
invoke-direct {v0}, Lcom/discord/utilities/voice/PerceptualSoundUtils;-><init>()V
|
|
|
|
sput-object v0, Lcom/discord/utilities/voice/PerceptualSoundUtils;->INSTANCE:Lcom/discord/utilities/voice/PerceptualSoundUtils;
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public constructor <init>()V
|
|
.locals 0
|
|
|
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
|
|
# virtual methods
|
|
.method public final amplitudeToPerceptual(F)F
|
|
.locals 5
|
|
|
|
const/4 v0, 0x0
|
|
|
|
cmpg-float v1, p1, v0
|
|
|
|
if-gtz v1, :cond_0
|
|
|
|
return v0
|
|
|
|
:cond_0
|
|
const/high16 v1, 0x41a00000 # 20.0f
|
|
|
|
const/high16 v2, 0x42c80000 # 100.0f
|
|
|
|
div-float/2addr p1, v2
|
|
|
|
float-to-double v3, p1
|
|
|
|
invoke-static {v3, v4}, Ljava/lang/Math;->log10(D)D
|
|
|
|
move-result-wide v3
|
|
|
|
double-to-float p1, v3
|
|
|
|
mul-float p1, p1, v1
|
|
|
|
cmpl-float v0, p1, v0
|
|
|
|
if-lez v0, :cond_1
|
|
|
|
const/high16 v0, 0x40c00000 # 6.0f
|
|
|
|
div-float/2addr p1, v0
|
|
|
|
const/high16 v0, 0x3f800000 # 1.0f
|
|
|
|
add-float/2addr p1, v0
|
|
|
|
goto :goto_0
|
|
|
|
:cond_1
|
|
const/high16 v0, 0x42480000 # 50.0f
|
|
|
|
add-float/2addr p1, v0
|
|
|
|
div-float/2addr p1, v0
|
|
|
|
:goto_0
|
|
mul-float p1, p1, v2
|
|
|
|
return p1
|
|
.end method
|
|
|
|
.method public final perceptualToAmplitude(F)F
|
|
.locals 5
|
|
|
|
const/4 v0, 0x0
|
|
|
|
cmpg-float v1, p1, v0
|
|
|
|
if-gtz v1, :cond_0
|
|
|
|
return v0
|
|
|
|
:cond_0
|
|
const/high16 v0, 0x42c80000 # 100.0f
|
|
|
|
cmpl-float v1, p1, v0
|
|
|
|
if-lez v1, :cond_1
|
|
|
|
sub-float/2addr p1, v0
|
|
|
|
div-float/2addr p1, v0
|
|
|
|
const/high16 v1, 0x40c00000 # 6.0f
|
|
|
|
mul-float p1, p1, v1
|
|
|
|
goto :goto_0
|
|
|
|
:cond_1
|
|
div-float/2addr p1, v0
|
|
|
|
const/high16 v1, 0x42480000 # 50.0f
|
|
|
|
mul-float p1, p1, v1
|
|
|
|
sub-float/2addr p1, v1
|
|
|
|
:goto_0
|
|
const/high16 v1, 0x41200000 # 10.0f
|
|
|
|
const/high16 v2, 0x41a00000 # 20.0f
|
|
|
|
div-float/2addr p1, v2
|
|
|
|
float-to-double v1, v1
|
|
|
|
float-to-double v3, p1
|
|
|
|
invoke-static {v1, v2, v3, v4}, Ljava/lang/Math;->pow(DD)D
|
|
|
|
move-result-wide v1
|
|
|
|
double-to-float p1, v1
|
|
|
|
mul-float p1, p1, v0
|
|
|
|
return p1
|
|
.end method
|