DefaultDashChunkSource$RepresentationHolder.smali
.class public final Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
.super Ljava/lang/Object;
.source "DefaultDashChunkSource.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1c
name = "RepresentationHolder"
.end annotation
# instance fields
.field public final extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
.field private periodDurationUs:J
.field public representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.field public sampleFormat:Lcom/google/android/exoplayer2/Format;
.field public segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
.field private segmentNumShift:I
# direct methods
.method public constructor <init>(JLcom/google/android/exoplayer2/source/dash/manifest/Representation;)V
.registers 7
.line 367
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 368
iput-wide p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
.line 369
iput-object p3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 370
iget-object p1, p3, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->format:Lcom/google/android/exoplayer2/Format;
iget-object p1, p1, Lcom/google/android/exoplayer2/Format;->containerMimeType:Ljava/lang/String;
.line 371
invoke-static {p1}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->mimeTypeIsRawText(Ljava/lang/String;)Z
move-result p2
if-eqz p2, :cond_15
const/4 p1, 0x0
.line 372
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
goto :goto_42
:cond_15
const/4 p2, 0x0
const-string v0, "application/x-rawcc"
.line 376
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
const/4 v1, 0x1
if-eqz v0, :cond_28
.line 377
new-instance p1, Lcom/google/android/exoplayer2/extractor/rawcc/RawCcExtractor;
iget-object p2, p3, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->format:Lcom/google/android/exoplayer2/Format;
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/extractor/rawcc/RawCcExtractor;-><init>(Lcom/google/android/exoplayer2/Format;)V
const/4 p2, 0x1
goto :goto_39
.line 379
:cond_28
invoke-static {p1}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->mimeTypeIsWebm(Ljava/lang/String;)Z
move-result p1
if-eqz p1, :cond_34
.line 380
new-instance p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;
invoke-direct {p1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;-><init>()V
goto :goto_39
.line 382
:cond_34
new-instance p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;
invoke-direct {p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>()V
.line 386
:goto_39
new-instance v0, Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
iget-object v2, p3, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->format:Lcom/google/android/exoplayer2/Format;
invoke-direct {v0, p1, v2, v1, p2}, Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;-><init>(Lcom/google/android/exoplayer2/extractor/Extractor;Lcom/google/android/exoplayer2/Format;ZZ)V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
.line 390
:goto_42
invoke-virtual {p3}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getIndex()Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
move-result-object p1
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
return-void
.end method
.method private static mimeTypeIsRawText(Ljava/lang/String;)Z
.registers 2
.line 470
invoke-static {p0}, Lcom/google/android/exoplayer2/util/MimeTypes;->isText(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_11
const-string v0, "application/ttml+xml"
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_f
goto :goto_11
:cond_f
const/4 p0, 0x0
goto :goto_12
:cond_11
:goto_11
const/4 p0, 0x1
:goto_12
return p0
.end method
.method private static mimeTypeIsWebm(Ljava/lang/String;)Z
.registers 2
const-string/jumbo v0, "video/webm"
.line 465
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_1c
const-string v0, "audio/webm"
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_1c
const-string v0, "application/webm"
.line 466
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result p0
if-eqz p0, :cond_1a
goto :goto_1c
:cond_1a
const/4 p0, 0x0
goto :goto_1d
:cond_1c
:goto_1c
const/4 p0, 0x1
:goto_1d
return p0
.end method
# virtual methods
.method public getFirstSegmentNum()I
.registers 3
.line 436
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
invoke-interface {v0}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getFirstSegmentNum()I
move-result v0
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
add-int/2addr v0, v1
return v0
.end method
.method public getLastSegmentNum()I
.registers 4
.line 440
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
iget-wide v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
invoke-interface {v0, v1, v2}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getLastSegmentNum(J)I
move-result v0
const/4 v1, -0x1
if-ne v0, v1, :cond_c
return v1
.line 444
:cond_c
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
add-int/2addr v0, v1
return v0
.end method
.method public getSegmentEndTimeUs(I)J
.registers 7
.line 452
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->getSegmentStartTimeUs(I)J
move-result-wide v0
iget-object v2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
iget v3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
sub-int/2addr p1, v3
iget-wide v3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
.line 453
invoke-interface {v2, p1, v3, v4}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getDurationUs(IJ)J
move-result-wide v2
add-long/2addr v0, v2
return-wide v0
.end method
.method public getSegmentNum(J)I
.registers 6
.line 457
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
iget-wide v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
invoke-interface {v0, p1, p2, v1, v2}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getSegmentNum(JJ)I
move-result p1
iget p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
add-int/2addr p1, p2
return p1
.end method
.method public getSegmentStartTimeUs(I)J
.registers 4
.line 448
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
sub-int/2addr p1, v1
invoke-interface {v0, p1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getTimeUs(I)J
move-result-wide v0
return-wide v0
.end method
.method public getSegmentUrl(I)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
.registers 4
.line 461
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
sub-int/2addr p1, v1
invoke-interface {v0, p1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getSegmentUrl(I)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
move-result-object p1
return-object p1
.end method
.method public setSampleFormat(Lcom/google/android/exoplayer2/Format;)V
.registers 2
.line 394
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->sampleFormat:Lcom/google/android/exoplayer2/Format;
return-void
.end method
.method public updateRepresentation(JLcom/google/android/exoplayer2/source/dash/manifest/Representation;)V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/source/BehindLiveWindowException;
}
.end annotation
.line 399
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getIndex()Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
move-result-object v0
.line 400
invoke-virtual {p3}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getIndex()Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
move-result-object v1
.line 402
iput-wide p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
.line 403
iput-object p3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
if-nez v0, :cond_11
return-void
.line 409
:cond_11
iput-object v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
.line 410
invoke-interface {v0}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->isExplicit()Z
move-result p1
if-nez p1, :cond_1a
return-void
.line 415
:cond_1a
iget-wide p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
invoke-interface {v0, p1, p2}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getLastSegmentNum(J)I
move-result p1
.line 416
invoke-interface {v0, p1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getTimeUs(I)J
move-result-wide p2
iget-wide v2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
.line 417
invoke-interface {v0, p1, v2, v3}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getDurationUs(IJ)J
move-result-wide v2
add-long/2addr p2, v2
.line 418
invoke-interface {v1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getFirstSegmentNum()I
move-result p1
.line 419
invoke-interface {v1, p1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getTimeUs(I)J
move-result-wide v1
cmp-long v3, p2, v1
if-nez v3, :cond_46
.line 422
iget p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
iget-wide v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
invoke-interface {v0, v1, v2}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getLastSegmentNum(J)I
move-result p3
add-int/lit8 p3, p3, 0x1
sub-int/2addr p3, p1
add-int/2addr p2, p3
iput p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
goto :goto_54
:cond_46
if-ltz v3, :cond_55
.line 430
iget p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
iget-wide v3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
invoke-interface {v0, v1, v2, v3, v4}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getSegmentNum(JJ)I
move-result p3
sub-int/2addr p3, p1
add-int/2addr p2, p3
iput p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
:goto_54
return-void
.line 427
:cond_55
new-instance p1, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;
invoke-direct {p1}, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;-><init>()V
throw p1
.end method