EglRenderer$StatisticsInfo.smali
.class Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;
.super Ljava/lang/Object;
.source "EglRenderer.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/agora/base/internal/video/EglRenderer;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x2
name = "StatisticsInfo"
.end annotation
# instance fields
.field private frameDrawn:I
.field private framesDrawTimeNs:J
.field private framesDropped:J
.field private framesReceived:J
.field private framesRendered:J
.field private renderSwapBufferTimeNs:J
.field private renderTimeNs:J
.field private statisticsLock:Ljava/lang/Object;
.field private statisticsStartTimeNs:J
.field final synthetic this$0:Lio/agora/base/internal/video/EglRenderer;
.field private vsyncNum:J
.field private vsyncRenderJankCount:J
# direct methods
.method public constructor <init>(Lio/agora/base/internal/video/EglRenderer;)V
.registers 4
.line 425
iput-object p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->this$0:Lio/agora/base/internal/video/EglRenderer;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-wide/16 v0, 0x0
.line 426
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsStartTimeNs:J
.line 427
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesReceived:J
.line 428
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDropped:J
.line 429
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
.line 430
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDrawTimeNs:J
.line 431
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderTimeNs:J
.line 432
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderSwapBufferTimeNs:J
const/4 p1, 0x0
.line 433
iput p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->frameDrawn:I
.line 434
new-instance p1, Ljava/lang/Object;
invoke-direct {p1}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsLock:Ljava/lang/Object;
.line 436
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncNum:J
.line 437
iput-wide v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncRenderJankCount:J
return-void
.end method
.method static synthetic access$1200(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;J)V
.registers 3
.line 401
invoke-direct {p0, p1, p2}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->resetStatistics(J)V
return-void
.end method
.method static synthetic access$1800(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;)V
.registers 1
.line 401
invoke-direct {p0}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->updateFrameReceived()V
return-void
.end method
.method static synthetic access$2000(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;JJJJ)V
.registers 9
.line 401
invoke-direct/range {p0 .. p8}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->updateFramesHasDrawn(JJJJ)V
return-void
.end method
.method static synthetic access$2400(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;)V
.registers 1
.line 401
invoke-direct {p0}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->updateFramesDropped()V
return-void
.end method
.method static synthetic access$2500(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;Lio/agora/base/internal/video/EglRenderer$VsyncStats;ZJJ)V
.registers 7
.line 401
invoke-direct/range {p0 .. p6}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->updateEveryVsyncStatistics(Lio/agora/base/internal/video/EglRenderer$VsyncStats;ZJJ)V
return-void
.end method
.method static synthetic access$300(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;)V
.registers 1
.line 401
invoke-direct {p0}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->logStatistics()V
return-void
.end method
.method static synthetic access$800(Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;)I
.registers 1
.line 401
iget p0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->frameDrawn:I
return p0
.end method
.method private averageTimeAsString(JJ)Ljava/lang/String;
.registers 7
const-wide/16 v0, 0x0
cmp-long v0, p3, v0
if-gtz v0, :cond_9
const-string p1, "NA"
goto :goto_21
.line 533
:cond_9
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
sget-object v1, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit;
div-long/2addr p1, p3
invoke-virtual {v1, p1, p2}, Ljava/util/concurrent/TimeUnit;->toMicros(J)J
move-result-wide p1
invoke-virtual {v0, p1, p2}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string p1, " us"
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
:goto_21
return-object p1
.end method
.method private logStatistics()V
.registers 14
.line 505
new-instance v0, Ljava/text/DecimalFormat;
const-string v1, "#.0"
invoke-direct {v0, v1}, Ljava/text/DecimalFormat;-><init>(Ljava/lang/String;)V
.line 506
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v1
.line 507
iget-object v3, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsLock:Ljava/lang/Object;
monitor-enter v3
.line 508
:try_start_e
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsStartTimeNs:J
sub-long v4, v1, v4
const-wide/16 v6, 0x0
cmp-long v6, v4, v6
if-gtz v6, :cond_1a
.line 510
monitor-exit v3
return-void
.line 512
:cond_1a
iget-wide v6, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
sget-object v8, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
const-wide/16 v9, 0x1
.line 513
invoke-virtual {v8, v9, v10}, Ljava/util/concurrent/TimeUnit;->toNanos(J)J
move-result-wide v11
mul-long/2addr v6, v11
long-to-float v6, v6
long-to-float v7, v4
div-float/2addr v6, v7
.line 514
iget-wide v11, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesReceived:J
sget-object v8, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
.line 515
invoke-virtual {v8, v9, v10}, Ljava/util/concurrent/TimeUnit;->toNanos(J)J
move-result-wide v8
mul-long/2addr v11, v8
long-to-float v8, v11
div-float/2addr v8, v7
.line 516
iget-object v7, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->this$0:Lio/agora/base/internal/video/EglRenderer;
new-instance v9, Ljava/lang/StringBuilder;
invoke-direct {v9}, Ljava/lang/StringBuilder;-><init>()V
const-string v10, "logStatistics Duration: "
invoke-virtual {v9, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
sget-object v10, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invoke-virtual {v10, v4, v5}, Ljava/util/concurrent/TimeUnit;->toMillis(J)J
move-result-wide v4
invoke-virtual {v9, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v4, " ms. Frames received: "
invoke-virtual {v9, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesReceived:J
invoke-virtual {v9, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v4, ". Dropped: "
invoke-virtual {v9, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDropped:J
invoke-virtual {v9, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v4, ". Rendered: "
invoke-virtual {v9, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
invoke-virtual {v9, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v4, ". vsync jank:"
invoke-virtual {v9, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncRenderJankCount:J
invoke-virtual {v9, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v4, ". received fps: "
invoke-virtual {v9, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
float-to-double v4, v8
.line 521
invoke-virtual {v0, v4, v5}, Ljava/text/DecimalFormat;->format(D)Ljava/lang/String;
move-result-object v4
invoke-virtual {v9, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v4, ". Render fps: "
invoke-virtual {v9, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
float-to-double v4, v6
.line 522
invoke-virtual {v0, v4, v5}, Ljava/text/DecimalFormat;->format(D)Ljava/lang/String;
move-result-object v0
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, ". Average frame draw time: "
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDrawTimeNs:J
iget-wide v10, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
.line 523
invoke-direct {p0, v4, v5, v10, v11}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->averageTimeAsString(JJ)Ljava/lang/String;
move-result-object v0
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, ". Average render time: "
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderTimeNs:J
iget-wide v10, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
.line 525
invoke-direct {p0, v4, v5, v10, v11}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->averageTimeAsString(JJ)Ljava/lang/String;
move-result-object v0
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, ". Average swapBuffer time: "
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-wide v4, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderSwapBufferTimeNs:J
iget-wide v10, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
.line 527
invoke-direct {p0, v4, v5, v10, v11}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->averageTimeAsString(JJ)Ljava/lang/String;
move-result-object v0
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v0, "."
invoke-virtual {v9, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v9}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 516
# invokes: Lio/agora/base/internal/video/EglRenderer;->logD(Ljava/lang/String;)V
invoke-static {v7, v0}, Lio/agora/base/internal/video/EglRenderer;->access$1000(Lio/agora/base/internal/video/EglRenderer;Ljava/lang/String;)V
.line 528
invoke-direct {p0, v1, v2}, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->resetStatistics(J)V
.line 529
monitor-exit v3
return-void
:catchall_cb
move-exception v0
monitor-exit v3
:try_end_cd
.catchall {:try_start_e .. :try_end_cd} :catchall_cb
throw v0
.end method
.method private resetStatistics(J)V
.registers 4
.line 441
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsLock:Ljava/lang/Object;
monitor-enter v0
.line 442
:try_start_3
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsStartTimeNs:J
const-wide/16 p1, 0x0
.line 443
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesReceived:J
.line 444
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDropped:J
.line 445
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
.line 446
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDrawTimeNs:J
.line 447
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderTimeNs:J
.line 448
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderSwapBufferTimeNs:J
.line 449
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncRenderJankCount:J
.line 450
monitor-exit v0
return-void
:catchall_17
move-exception p1
monitor-exit v0
:try_end_19
.catchall {:try_start_3 .. :try_end_19} :catchall_17
throw p1
.end method
.method private updateEveryVsyncStatistics(Lio/agora/base/internal/video/EglRenderer$VsyncStats;ZJJ)V
.registers 9
.line 468
iget-object p5, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsLock:Ljava/lang/Object;
monitor-enter p5
.line 469
:try_start_3
sget-object p6, Lio/agora/base/internal/video/EglRenderer$VsyncStats;->NORMAL:Lio/agora/base/internal/video/EglRenderer$VsyncStats;
const-wide/16 v0, 0x1
if-ne p1, p6, :cond_11
if-nez p2, :cond_19
.line 475
iget-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncRenderJankCount:J
add-long/2addr p1, v0
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncRenderJankCount:J
goto :goto_19
:cond_11
if-eqz p2, :cond_14
sub-long/2addr p3, v0
.line 488
:cond_14
iget-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncRenderJankCount:J
add-long/2addr p1, p3
iput-wide p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->vsyncRenderJankCount:J
.line 490
:cond_19
:goto_19
monitor-exit p5
return-void
:catchall_1b
move-exception p1
monitor-exit p5
:try_end_1d
.catchall {:try_start_3 .. :try_end_1d} :catchall_1b
throw p1
.end method
.method private updateFrameReceived()V
.registers 6
.line 454
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsLock:Ljava/lang/Object;
monitor-enter v0
.line 455
:try_start_3
iget-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesReceived:J
const-wide/16 v3, 0x1
add-long/2addr v1, v3
iput-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesReceived:J
.line 456
monitor-exit v0
return-void
:catchall_c
move-exception v1
monitor-exit v0
:try_end_e
.catchall {:try_start_3 .. :try_end_e} :catchall_c
throw v1
.end method
.method private updateFramesDropped()V
.registers 6
.line 460
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsLock:Ljava/lang/Object;
monitor-enter v0
.line 461
:try_start_3
iget-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDropped:J
const-wide/16 v3, 0x1
add-long/2addr v1, v3
iput-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDropped:J
.line 462
monitor-exit v0
return-void
:catchall_c
move-exception v1
monitor-exit v0
:try_end_e
.catchall {:try_start_3 .. :try_end_e} :catchall_c
throw v1
.end method
.method private updateFramesHasDrawn(JJJJ)V
.registers 14
.line 495
iget-object v0, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->statisticsLock:Ljava/lang/Object;
monitor-enter v0
.line 496
:try_start_3
iget-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
const-wide/16 v3, 0x1
add-long/2addr v1, v3
iput-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesRendered:J
.line 497
iget-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDrawTimeNs:J
sub-long p3, p1, p3
add-long/2addr v1, p3
iput-wide v1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->framesDrawTimeNs:J
.line 498
iget-wide p3, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderTimeNs:J
sub-long p5, p1, p5
add-long/2addr p3, p5
iput-wide p3, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderTimeNs:J
.line 499
iget-wide p3, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderSwapBufferTimeNs:J
sub-long/2addr p1, p7
add-long/2addr p3, p1
iput-wide p3, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->renderSwapBufferTimeNs:J
.line 500
iget p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->frameDrawn:I
add-int/lit8 p1, p1, 0x1
iput p1, p0, Lio/agora/base/internal/video/EglRenderer$StatisticsInfo;->frameDrawn:I
.line 501
monitor-exit v0
return-void
:catchall_26
move-exception p1
monitor-exit v0
:try_end_28
.catchall {:try_start_3 .. :try_end_28} :catchall_26
throw p1
.end method