AudioTimestampPoller.smali
.class final Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;
.super Ljava/lang/Object;
.source "AudioTimestampPoller.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;,
Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$State;
}
.end annotation
# static fields
.field private static final ERROR_POLL_INTERVAL_US:I
.field private static final FAST_POLL_INTERVAL_US:I
.field private static final INITIALIZING_DURATION_US:I
.field private static final SLOW_POLL_INTERVAL_US:I
.field private static final STATE_ERROR:I
.field private static final STATE_INITIALIZING:I
.field private static final STATE_NO_TIMESTAMP:I
.field private static final STATE_TIMESTAMP:I
.field private static final STATE_TIMESTAMP_ADVANCING:I
# instance fields
.field private final audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
.field private initialTimestampPositionFrames:J
.field private initializeSystemTimeUs:J
.field private lastTimestampSampleTimeUs:J
.field private sampleIntervalUs:J
.field private state:I
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x7b44f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->ERROR_POLL_INTERVAL_US:I
const v0, 0x6e7
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->FAST_POLL_INTERVAL_US:I
const v0, 0x7b44f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->INITIALIZING_DURATION_US:I
const v0, 0x9883ef
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->SLOW_POLL_INTERVAL_US:I
const v0, 0x156b
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->STATE_ERROR:I
const v0, 0x156f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->STATE_INITIALIZING:I
const v0, 0x156c
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->STATE_NO_TIMESTAMP:I
const v0, 0x156e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->STATE_TIMESTAMP:I
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->STATE_TIMESTAMP_ADVANCING:I
return-void
.end method
.method public constructor <init>(Landroid/media/AudioTrack;)V
.registers 4
.param p1, "audioTrack" # Landroid/media/AudioTrack;
.line 98
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 99
sget v0, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v1, 0x13
if-lt v0, v1, :cond_14
.line 100
new-instance v0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
invoke-direct {v0, p1}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;-><init>(Landroid/media/AudioTrack;)V
iput-object v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
.line 101
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->reset()V
goto :goto_1b
.line 103
:cond_14
const/4 v0, 0x0
iput-object v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
.line 104
const/4 v0, 0x3
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->updateState(I)V
.line 106
:goto_1b
return-void
.end method
.method private updateState(I)V
.registers 8
.param p1, "state" # I
.line 236
iput p1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->state:I
.line 237
const-wide/16 v0, 0x1388
if-eqz p1, :cond_27
const/4 v2, 0x1
if-eq p1, v2, :cond_24
const/4 v0, 0x2
if-eq p1, v0, :cond_1e
const/4 v0, 0x3
if-eq p1, v0, :cond_1e
const/4 v0, 0x4
if-ne p1, v0, :cond_18
.line 253
const-wide/32 v0, 0x7a120
iput-wide v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->sampleIntervalUs:J
.line 254
goto :goto_3b
.line 256
:cond_18
new-instance v0, Ljava/lang/IllegalStateException;
invoke-direct {v0}, Ljava/lang/IllegalStateException;-><init>()V
throw v0
.line 250
:cond_1e
const-wide/32 v0, 0x989680
iput-wide v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->sampleIntervalUs:J
.line 251
goto :goto_3b
.line 246
:cond_24
iput-wide v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->sampleIntervalUs:J
.line 247
goto :goto_3b
.line 240
:cond_27
const-wide/16 v2, 0x0
iput-wide v2, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->lastTimestampSampleTimeUs:J
.line 241
const-wide/16 v2, -0x1
iput-wide v2, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->initialTimestampPositionFrames:J
.line 242
invoke-static {}, Ljava/lang/System;->nanoTime()J
move-result-wide v2
const-wide/16 v4, 0x3e8
div-long/2addr v2, v4
iput-wide v2, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->initializeSystemTimeUs:J
.line 243
iput-wide v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->sampleIntervalUs:J
.line 244
nop
.line 258
:goto_3b
return-void
.end method
# virtual methods
.method public acceptTimestamp()V
.registers 3
.line 188
iget v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->state:I
const/4 v1, 0x4
if-ne v0, v1, :cond_8
.line 189
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->reset()V
.line 191
:cond_8
return-void
.end method
.method public getTimestampPositionFrames()J
.registers 3
.line 232
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
if-eqz v0, :cond_9
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;->getTimestampPositionFrames()J
move-result-wide v0
goto :goto_b
:cond_9
const-wide/16 v0, -0x1
:goto_b
return-wide v0
.end method
.method public getTimestampSystemTimeUs()J
.registers 3
.line 224
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
if-eqz v0, :cond_9
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;->getTimestampSystemTimeUs()J
move-result-wide v0
goto :goto_e
:cond_9
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
:goto_e
return-wide v0
.end method
.method public hasTimestamp()Z
.registers 4
.line 199
iget v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->state:I
const/4 v1, 0x1
if-eq v0, v1, :cond_a
const/4 v2, 0x2
if-ne v0, v2, :cond_9
goto :goto_a
:cond_9
const/4 v1, 0x0
:cond_a
:goto_a
return v1
.end method
.method public isTimestampAdvancing()Z
.registers 3
.line 209
iget v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->state:I
const/4 v1, 0x2
if-ne v0, v1, :cond_7
const/4 v0, 0x1
goto :goto_8
:cond_7
const/4 v0, 0x0
:goto_8
return v0
.end method
.method public maybePollTimestamp(J)Z
.registers 10
.param p1, "systemTimeUs" # J
.line 119
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
if-eqz v0, :cond_7a
iget-wide v1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->lastTimestampSampleTimeUs:J
sub-long v1, p1, v1
iget-wide v3, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->sampleIntervalUs:J
cmp-long v5, v1, v3
if-gez v5, :cond_10
goto/16 :goto_7a
.line 122
:cond_10
iput-wide p1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->lastTimestampSampleTimeUs:J
.line 123
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;->maybeUpdateTimestamp()Z
move-result v0
.line 124
.local v0, "updatedTimestamp":Z
iget v1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->state:I
const/4 v2, 0x3
const/4 v3, 0x1
if-eqz v1, :cond_4f
const/4 v4, 0x2
if-eq v1, v3, :cond_39
if-eq v1, v4, :cond_33
if-eq v1, v2, :cond_2d
const/4 v2, 0x4
if-ne v1, v2, :cond_27
.line 167
goto :goto_79
.line 169
:cond_27
new-instance v1, Ljava/lang/IllegalStateException;
invoke-direct {v1}, Ljava/lang/IllegalStateException;-><init>()V
throw v1
.line 160
:cond_2d
if-eqz v0, :cond_79
.line 162
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->reset()V
goto :goto_79
.line 154
:cond_33
if-nez v0, :cond_79
.line 156
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->reset()V
goto :goto_79
.line 144
:cond_39
if-eqz v0, :cond_4b
.line 145
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;->getTimestampPositionFrames()J
move-result-wide v1
.line 146
.local v1, "timestampPositionFrames":J
iget-wide v5, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->initialTimestampPositionFrames:J
cmp-long v3, v1, v5
if-lez v3, :cond_4a
.line 147
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->updateState(I)V
.line 149
.end local v1 # "timestampPositionFrames":J
:cond_4a
goto :goto_79
.line 150
:cond_4b
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->reset()V
.line 152
goto :goto_79
.line 126
:cond_4f
if-eqz v0, :cond_6b
.line 127
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;->getTimestampSystemTimeUs()J
move-result-wide v1
iget-wide v4, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->initializeSystemTimeUs:J
cmp-long v6, v1, v4
if-ltz v6, :cond_69
.line 129
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;->getTimestampPositionFrames()J
move-result-wide v1
iput-wide v1, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->initialTimestampPositionFrames:J
.line 130
invoke-direct {p0, v3}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->updateState(I)V
goto :goto_79
.line 133
:cond_69
const/4 v0, 0x0
goto :goto_79
.line 135
:cond_6b
iget-wide v3, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->initializeSystemTimeUs:J
sub-long v3, p1, v3
const-wide/32 v5, 0x7a120
cmp-long v1, v3, v5
if-lez v1, :cond_79
.line 140
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->updateState(I)V
.line 171
:cond_79
:goto_79
return v0
.line 120
.end local v0 # "updatedTimestamp":Z
:cond_7a
:goto_7a
const/4 v0, 0x0
return v0
.end method
.method public rejectTimestamp()V
.registers 2
.line 180
const/4 v0, 0x4
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->updateState(I)V
.line 181
return-void
.end method
.method public reset()V
.registers 2
.line 214
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->audioTimestamp:Lcom/google/android/exoplayer2/audio/AudioTimestampPoller$AudioTimestampV19;
if-eqz v0, :cond_8
.line 215
const/4 v0, 0x0
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/audio/AudioTimestampPoller;->updateState(I)V
.line 217
:cond_8
return-void
.end method