WavHeader.smali
.class final Lcom/google/android/exoplayer2/extractor/wav/WavHeader;
.super Ljava/lang/Object;
.source "WavHeader.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/SeekMap;
# instance fields
.field private final averageBytesPerSecond:I
.field private final bitsPerSample:I
.field private final blockAlignment:I
.field private dataSize:J
.field private dataStartPosition:J
.field private final encoding:I
.field private final numChannels:I
.field private final sampleRateHz:I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(IIIIII)V
.registers 7
.param p1, "numChannels" # I
.param p2, "sampleRateHz" # I
.param p3, "averageBytesPerSecond" # I
.param p4, "blockAlignment" # I
.param p5, "bitsPerSample" # I
.param p6, "encoding" # I
.line 46
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 47
iput p1, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->numChannels:I
.line 48
iput p2, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->sampleRateHz:I
.line 49
iput p3, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->averageBytesPerSecond:I
.line 50
iput p4, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->blockAlignment:I
.line 51
iput p5, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->bitsPerSample:I
.line 52
iput p6, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->encoding:I
.line 53
return-void
.end method
# virtual methods
.method public getBitrate()I
.registers 3
.line 129
iget v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->sampleRateHz:I
iget v1, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->bitsPerSample:I
mul-int v0, v0, v1
iget v1, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->numChannels:I
mul-int v0, v0, v1
return v0
.end method
.method public getBytesPerFrame()I
.registers 2
.line 124
iget v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->blockAlignment:I
return v0
.end method
.method public getDataLimit()J
.registers 5
.line 70
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->hasDataBounds()Z
move-result v0
if-eqz v0, :cond_c
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataStartPosition:J
iget-wide v2, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataSize:J
add-long/2addr v0, v2
goto :goto_e
:cond_c
const-wide/16 v0, -0x1
:goto_e
return-wide v0
.end method
.method public getDurationUs()J
.registers 7
.line 87
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataSize:J
iget v2, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->blockAlignment:I
int-to-long v2, v2
div-long/2addr v0, v2
.line 88
.local v0, "numFrames":J
const-wide/32 v2, 0xf4240
mul-long v2, v2, v0
iget v4, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->sampleRateHz:I
int-to-long v4, v4
div-long/2addr v2, v4
return-wide v2
.end method
.method public getEncoding()I
.registers 2
.line 144
iget v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->encoding:I
return v0
.end method
.method public getNumChannels()I
.registers 2
.line 139
iget v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->numChannels:I
return v0
.end method
.method public getSampleRateHz()I
.registers 2
.line 134
iget v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->sampleRateHz:I
return v0
.end method
.method public getSeekPoints(J)Lcom/google/android/exoplayer2/extractor/SeekMap$SeekPoints;
.registers 16
.param p1, "timeUs" # J
.line 93
iget v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->averageBytesPerSecond:I
int-to-long v0, v0
mul-long v0, v0, p1
const-wide/32 v2, 0xf4240
div-long/2addr v0, v2
.line 95
.local v0, "positionOffset":J
iget v2, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->blockAlignment:I
int-to-long v3, v2
div-long v3, v0, v3
int-to-long v5, v2
mul-long v3, v3, v5
.line 96
.end local v0 # "positionOffset":J
.local v3, "positionOffset":J
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataSize:J
int-to-long v5, v2
sub-long v11, v0, v5
const-wide/16 v9, 0x0
move-wide v7, v3
invoke-static/range {v7 .. v12}, Lcom/google/android/exoplayer2/util/Util;->constrainValue(JJJ)J
move-result-wide v0
.line 97
.end local v3 # "positionOffset":J
.restart local v0 # "positionOffset":J
iget-wide v2, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataStartPosition:J
add-long/2addr v2, v0
.line 98
.local v2, "seekPosition":J
invoke-virtual {p0, v2, v3}, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->getTimeUs(J)J
move-result-wide v4
.line 99
.local v4, "seekTimeUs":J
new-instance v6, Lcom/google/android/exoplayer2/extractor/SeekPoint;
invoke-direct {v6, v4, v5, v2, v3}, Lcom/google/android/exoplayer2/extractor/SeekPoint;-><init>(JJ)V
.line 100
.local v6, "seekPoint":Lcom/google/android/exoplayer2/extractor/SeekPoint;
cmp-long v7, v4, p1
if-gez v7, :cond_49
iget-wide v7, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataSize:J
iget v9, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->blockAlignment:I
int-to-long v10, v9
sub-long/2addr v7, v10
cmp-long v10, v0, v7
if-nez v10, :cond_38
goto :goto_49
.line 103
:cond_38
int-to-long v7, v9
add-long/2addr v7, v2
.line 104
.local v7, "secondSeekPosition":J
invoke-virtual {p0, v7, v8}, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->getTimeUs(J)J
move-result-wide v9
.line 105
.local v9, "secondSeekTimeUs":J
new-instance v11, Lcom/google/android/exoplayer2/extractor/SeekPoint;
invoke-direct {v11, v9, v10, v7, v8}, Lcom/google/android/exoplayer2/extractor/SeekPoint;-><init>(JJ)V
.line 106
.local v11, "secondSeekPoint":Lcom/google/android/exoplayer2/extractor/SeekPoint;
new-instance v12, Lcom/google/android/exoplayer2/extractor/SeekMap$SeekPoints;
invoke-direct {v12, v6, v11}, Lcom/google/android/exoplayer2/extractor/SeekMap$SeekPoints;-><init>(Lcom/google/android/exoplayer2/extractor/SeekPoint;Lcom/google/android/exoplayer2/extractor/SeekPoint;)V
return-object v12
.line 101
.end local v7 # "secondSeekPosition":J
.end local v9 # "secondSeekTimeUs":J
.end local v11 # "secondSeekPoint":Lcom/google/android/exoplayer2/extractor/SeekPoint;
:cond_49
:goto_49
new-instance v7, Lcom/google/android/exoplayer2/extractor/SeekMap$SeekPoints;
invoke-direct {v7, v6}, Lcom/google/android/exoplayer2/extractor/SeekMap$SeekPoints;-><init>(Lcom/google/android/exoplayer2/extractor/SeekPoint;)V
return-object v7
.end method
.method public getTimeUs(J)J
.registers 9
.param p1, "position" # J
.line 118
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataStartPosition:J
sub-long v0, p1, v0
const-wide/16 v2, 0x0
invoke-static {v2, v3, v0, v1}, Ljava/lang/Math;->max(JJ)J
move-result-wide v0
.line 119
.local v0, "positionOffset":J
const-wide/32 v2, 0xf4240
mul-long v2, v2, v0
iget v4, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->averageBytesPerSecond:I
int-to-long v4, v4
div-long/2addr v2, v4
return-wide v2
.end method
.method public hasDataBounds()Z
.registers 6
.line 75
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataStartPosition:J
const-wide/16 v2, 0x0
cmp-long v4, v0, v2
if-eqz v4, :cond_10
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataSize:J
cmp-long v4, v0, v2
if-eqz v4, :cond_10
const/4 v0, 0x1
goto :goto_11
:cond_10
const/4 v0, 0x0
:goto_11
return v0
.end method
.method public isSeekable()Z
.registers 2
.line 82
const/4 v0, 0x1
return v0
.end method
.method public setDataBounds(JJ)V
.registers 5
.param p1, "dataStartPosition" # J
.param p3, "dataSize" # J
.line 64
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataStartPosition:J
.line 65
iput-wide p3, p0, Lcom/google/android/exoplayer2/extractor/wav/WavHeader;->dataSize:J
.line 66
return-void
.end method