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