DefaultDashChunkSource$RepresentationHolder.smali
.class public final Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;
.super Ljava/lang/Object;
.source "SourceFile"
# 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 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 segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
.field private segmentNumShift:I
# direct methods
.method constructor <init>(JILcom/google/android/exoplayer2/source/dash/manifest/Representation;ZZ)V
.registers 7
.line 410
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 411
iput-wide p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
.line 412
iput-object p4, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->representation:Lcom/google/android/exoplayer2/source/dash/manifest/Representation;
.line 413
iget-object p1, p4, 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 414
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 415
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
goto :goto_49
:cond_15
const-string p2, "application/x-rawcc"
.line 418
invoke-virtual {p2, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p2
if-eqz p2, :cond_25
.line 419
new-instance p1, Lcom/google/android/exoplayer2/extractor/rawcc/RawCcExtractor;
iget-object p2, p4, 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
goto :goto_40
.line 420
:cond_25
invoke-static {p1}, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->mimeTypeIsWebm(Ljava/lang/String;)Z
move-result p1
if-eqz p1, :cond_32
.line 421
new-instance p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;
const/4 p2, 0x1
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;-><init>(I)V
goto :goto_40
:cond_32
const/4 p1, 0x0
if-eqz p5, :cond_36
const/4 p1, 0x4
:cond_36
if-eqz p6, :cond_3a
or-int/lit8 p1, p1, 0x8
.line 430
:cond_3a
new-instance p2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;
invoke-direct {p2, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(I)V
move-object p1, p2
.line 434
:goto_40
new-instance p2, Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
iget-object p5, p4, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->format:Lcom/google/android/exoplayer2/Format;
invoke-direct {p2, p1, p3, p5}, Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;-><init>(Lcom/google/android/exoplayer2/extractor/Extractor;ILcom/google/android/exoplayer2/Format;)V
iput-object p2, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->extractorWrapper:Lcom/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper;
.line 436
:goto_49
invoke-virtual {p4}, 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 513
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
return p0
:cond_11
:goto_11
const/4 p0, 0x1
return p0
.end method
.method private static mimeTypeIsWebm(Ljava/lang/String;)Z
.registers 2
const-string v0, "video/webm"
.line 508
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_1b
const-string v0, "audio/webm"
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-nez v0, :cond_1b
const-string v0, "application/webm"
.line 509
invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result p0
if-eqz p0, :cond_19
goto :goto_1b
:cond_19
const/4 p0, 0x0
return p0
:cond_1b
:goto_1b
const/4 p0, 0x1
return p0
.end method
# virtual methods
.method public final getFirstSegmentNum()I
.registers 3
.line 483
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 final getSegmentCount()I
.registers 4
.line 487
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;->getSegmentCount(J)I
move-result v0
return v0
.end method
.method public final getSegmentEndTimeUs(I)J
.registers 7
.line 495
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 496
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 final getSegmentNum(J)I
.registers 6
.line 500
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 final getSegmentStartTimeUs(I)J
.registers 4
.line 491
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 final getSegmentUrl(I)Lcom/google/android/exoplayer2/source/dash/manifest/RangedUri;
.registers 4
.line 504
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 final updateRepresentation(JLcom/google/android/exoplayer2/source/dash/manifest/Representation;)V
.registers 10
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/source/BehindLiveWindowException;
}
.end annotation
.line 441
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 442
invoke-virtual {p3}, Lcom/google/android/exoplayer2/source/dash/manifest/Representation;->getIndex()Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
move-result-object v1
.line 444
iput-wide p1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
.line 445
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 451
:cond_11
iput-object v1, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentIndex:Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;
.line 452
invoke-interface {v0}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->isExplicit()Z
move-result p1
if-nez p1, :cond_1a
return-void
.line 457
: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;->getSegmentCount(J)I
move-result p1
if-nez p1, :cond_23
return-void
.line 463
:cond_23
invoke-interface {v0}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getFirstSegmentNum()I
move-result p2
add-int/2addr p2, p1
add-int/lit8 p2, p2, -0x1
.line 464
invoke-interface {v0, p2}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getTimeUs(I)J
move-result-wide v2
iget-wide v4, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->periodDurationUs:J
.line 465
invoke-interface {v0, p2, v4, v5}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getDurationUs(IJ)J
move-result-wide v4
add-long/2addr v2, v4
.line 466
invoke-interface {v1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getFirstSegmentNum()I
move-result p1
.line 467
invoke-interface {v1, p1}, Lcom/google/android/exoplayer2/source/dash/DashSegmentIndex;->getTimeUs(I)J
move-result-wide v4
cmp-long p3, v2, v4
if-nez p3, :cond_4a
.line 470
iget p3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
add-int/lit8 p2, p2, 0x1
sub-int/2addr p2, p1
add-int/2addr p3, p2
iput p3, p0, Lcom/google/android/exoplayer2/source/dash/DefaultDashChunkSource$RepresentationHolder;->segmentNumShift:I
return-void
:cond_4a
cmp-long p2, v2, v4
if-ltz p2, :cond_5b
.line 477
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, v4, v5, v1, v2}, 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
return-void
.line 474
:cond_5b
new-instance p1, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;
invoke-direct {p1}, Lcom/google/android/exoplayer2/source/BehindLiveWindowException;-><init>()V
throw p1
.end method