CpuMonitor$MovingAverage.smali
.class Lorg/webrtc/utils/CpuMonitor$MovingAverage;
.super Ljava/lang/Object;
.source "CpuMonitor.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lorg/webrtc/utils/CpuMonitor;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0xa
name = "MovingAverage"
.end annotation
# instance fields
.field private circBuffer:[D
.field private circBufferIndex:I
.field private currentValue:D
.field private final size:I
.field private sum:D
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(I)V
.registers 4
.param p1, "size" # I
.line 121
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 122
if-lez p1, :cond_c
.line 125
iput p1, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->size:I
.line 126
new-array v0, p1, [D
iput-object v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->circBuffer:[D
.line 127
return-void
.line 123
:cond_c
new-instance v0, Ljava/lang/AssertionError;
const-string v1, "Size value in MovingAverage ctor should be positive."
invoke-direct {v0, v1}, Ljava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
throw v0
.end method
# virtual methods
.method public addValue(D)V
.registers 9
.param p1, "value" # D
.line 137
iget-wide v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->sum:D
iget-object v2, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->circBuffer:[D
iget v3, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->circBufferIndex:I
aget-wide v4, v2, v3
sub-double/2addr v0, v4
iput-wide v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->sum:D
.line 138
add-int/lit8 v4, v3, 0x1
iput v4, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->circBufferIndex:I
aput-wide p1, v2, v3
.line 139
iput-wide p1, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->currentValue:D
.line 140
add-double/2addr v0, p1
iput-wide v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->sum:D
.line 141
iget v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->size:I
if-lt v4, v0, :cond_1d
.line 142
const/4 v0, 0x0
iput v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->circBufferIndex:I
.line 144
:cond_1d
return-void
.end method
.method public getAverage()D
.registers 5
.line 151
iget-wide v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->sum:D
iget v2, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->size:I
int-to-double v2, v2
invoke-static {v2, v3}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v0, v2
return-wide v0
.end method
.method public getCurrent()D
.registers 3
.line 147
iget-wide v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->currentValue:D
return-wide v0
.end method
.method public reset()V
.registers 4
.line 130
iget-object v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->circBuffer:[D
const-wide/16 v1, 0x0
invoke-static {v0, v1, v2}, Ljava/util/Arrays;->fill([DD)V
.line 131
const/4 v0, 0x0
iput v0, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->circBufferIndex:I
.line 132
iput-wide v1, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->sum:D
.line 133
iput-wide v1, p0, Lorg/webrtc/utils/CpuMonitor$MovingAverage;->currentValue:D
.line 134
return-void
.end method