ConstantBitrateSeeker.smali
.class final Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;
.super Ljava/lang/Object;
.source "ConstantBitrateSeeker.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/mp3/Mp3Extractor$Seeker;
# static fields
.field private static final BITS_PER_BYTE:I = 0x8
# instance fields
.field private final bitrate:I
.field private final durationUs:J
.field private final firstFramePosition:J
# direct methods
.method public constructor <init>(JIJ)V
.registers 6
.line 31
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 32
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->firstFramePosition:J
.line 33
iput p3, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->bitrate:I
const-wide/16 p1, -0x1
cmp-long p3, p4, p1
if-nez p3, :cond_13
const-wide p1, -0x7fffffffffffffffL # -4.9E-324
goto :goto_17
.line 34
:cond_13
invoke-virtual {p0, p4, p5}, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->getTimeUs(J)J
move-result-wide p1
:goto_17
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->durationUs:J
return-void
.end method
# virtual methods
.method public getDurationUs()J
.registers 3
.line 56
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->durationUs:J
return-wide v0
.end method
.method public getPosition(J)J
.registers 8
.line 44
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->durationUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-nez v4, :cond_e
const-wide/16 p1, 0x0
goto :goto_1a
:cond_e
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->firstFramePosition:J
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->bitrate:I
int-to-long v2, v2
mul-long p1, p1, v2
const-wide/32 v2, 0x7a1200
div-long/2addr p1, v2
add-long/2addr p1, v0
:goto_1a
return-wide p1
.end method
.method public getTimeUs(J)J
.registers 5
.line 50
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->firstFramePosition:J
sub-long/2addr p1, v0
const-wide/16 v0, 0x0
invoke-static {v0, v1, p1, p2}, Ljava/lang/Math;->max(JJ)J
move-result-wide p1
const-wide/32 v0, 0xf4240
mul-long p1, p1, v0
const-wide/16 v0, 0x8
mul-long p1, p1, v0
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->bitrate:I
int-to-long v0, v0
div-long/2addr p1, v0
return-wide p1
.end method
.method public isSeekable()Z
.registers 6
.line 39
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp3/ConstantBitrateSeeker;->durationUs:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v0, v2
if-eqz v4, :cond_d
const/4 v0, 0x1
goto :goto_e
:cond_d
const/4 v0, 0x0
:goto_e
return v0
.end method