SsMediaSource.smali
.class public final Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/google/android/exoplayer2/source/MediaSource;
.implements Lcom/google/android/exoplayer2/upstream/Loader$Callback;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Object;",
"Lcom/google/android/exoplayer2/source/MediaSource;",
"Lcom/google/android/exoplayer2/upstream/Loader$Callback<",
"Lcom/google/android/exoplayer2/upstream/ParsingLoadable<",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
">;>;"
}
.end annotation
# static fields
.field public static final DEFAULT_LIVE_PRESENTATION_DELAY_MS:J = 0x7530L
.field public static final DEFAULT_MIN_LOADABLE_RETRY_COUNT:I = 0x3
.field private static final MINIMUM_MANIFEST_REFRESH_PERIOD_MS:I = 0x1388
.field private static final MIN_LIVE_DEFAULT_START_POSITION_US:J = 0x4c4b40L
# instance fields
.field private final chunkSourceFactory:Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;
.field private final eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
.field private final livePresentationDelayMs:J
.field private manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
.field private manifestDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.field private final manifestDataSourceFactory:Lcom/google/android/exoplayer2/upstream/DataSource$Factory;
.field private manifestLoadStartTimestamp:J
.field private manifestLoader:Lcom/google/android/exoplayer2/upstream/Loader;
.field private manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
.field private final manifestParser:Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser<",
"+",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
">;"
}
.end annotation
.end field
.field private manifestRefreshHandler:Landroid/os/Handler;
.field private final manifestUri:Landroid/net/Uri;
.field private final mediaPeriods:Ljava/util/ArrayList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayList<",
"Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod;",
">;"
}
.end annotation
.end field
.field private final minLoadableRetryCount:I
.field private sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener;
# direct methods
.method static constructor <clinit>()V
.registers 1
const-string v0, "goog.exo.smoothstreaming"
.line 51
invoke-static {v0}, Lcom/google/android/exoplayer2/ExoPlayerLibraryInfo;->registerModule(Ljava/lang/String;)V
return-void
.end method
.method public constructor <init>(Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;IJLandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
.registers 19
.line 159
new-instance v3, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser;
invoke-direct {v3}, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifestParser;-><init>()V
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v4, p3
move v5, p4
move-wide v6, p5
move-object/from16 v8, p7
move-object/from16 v9, p8
invoke-direct/range {v0 .. v9}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;-><init>(Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;IJLandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
return-void
.end method
.method public constructor <init>(Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;Landroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
.registers 15
const/4 v4, 0x3
const-wide/16 v5, 0x7530
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v3, p3
move-object v7, p4
move-object v8, p5
.line 136
invoke-direct/range {v0 .. v8}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;-><init>(Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;IJLandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
return-void
.end method
.method public constructor <init>(Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;IJLandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
.registers 21
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/net/Uri;",
"Lcom/google/android/exoplayer2/upstream/DataSource$Factory;",
"Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser<",
"+",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
">;",
"Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;",
"IJ",
"Landroid/os/Handler;",
"Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;",
")V"
}
.end annotation
const/4 v1, 0x0
move-object v0, p0
move-object v2, p1
move-object v3, p2
move-object v4, p3
move-object v5, p4
move/from16 v6, p5
move-wide/from16 v7, p6
move-object/from16 v9, p8
move-object/from16 v10, p9
.line 183
invoke-direct/range {v0 .. v10}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;-><init>(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;IJLandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
return-void
.end method
.method private constructor <init>(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;IJLandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
.registers 12
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
"Landroid/net/Uri;",
"Lcom/google/android/exoplayer2/upstream/DataSource$Factory;",
"Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser<",
"+",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
">;",
"Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;",
"IJ",
"Landroid/os/Handler;",
"Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;",
")V"
}
.end annotation
.line 192
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
if-eqz p1, :cond_c
.line 193
iget-boolean v0, p1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->isLive:Z
if-nez v0, :cond_a
goto :goto_c
:cond_a
const/4 v0, 0x0
goto :goto_d
:cond_c
:goto_c
const/4 v0, 0x1
:goto_d
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 194
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
if-nez p2, :cond_16
const/4 p2, 0x0
goto :goto_2d
.line 196
:cond_16
invoke-virtual {p2}, Landroid/net/Uri;->getLastPathSegment()Ljava/lang/String;
move-result-object p1
invoke-static {p1}, Lcom/google/android/exoplayer2/util/Util;->toLowerInvariant(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
const-string v0, "manifest(\\(.+\\))?"
invoke-virtual {p1, v0}, Ljava/lang/String;->matches(Ljava/lang/String;)Z
move-result p1
if-eqz p1, :cond_27
goto :goto_2d
:cond_27
const-string p1, "Manifest"
.line 197
invoke-static {p2, p1}, Landroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
move-result-object p2
:goto_2d
iput-object p2, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestUri:Landroid/net/Uri;
.line 198
iput-object p3, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestDataSourceFactory:Lcom/google/android/exoplayer2/upstream/DataSource$Factory;
.line 199
iput-object p4, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestParser:Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;
.line 200
iput-object p5, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->chunkSourceFactory:Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;
.line 201
iput p6, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->minLoadableRetryCount:I
.line 202
iput-wide p7, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->livePresentationDelayMs:J
.line 203
new-instance p1, Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
invoke-direct {p1, p9, p10}, Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;-><init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
.line 204
new-instance p1, Ljava/util/ArrayList;
invoke-direct {p1}, Ljava/util/ArrayList;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->mediaPeriods:Ljava/util/ArrayList;
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;ILandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
.registers 17
const/4 v2, 0x0
const/4 v3, 0x0
const/4 v4, 0x0
const-wide/16 v7, 0x7530
move-object v0, p0
move-object v1, p1
move-object v5, p2
move v6, p3
move-object v9, p4
move-object/from16 v10, p5
.line 118
invoke-direct/range {v0 .. v10}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;-><init>(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;Landroid/net/Uri;Lcom/google/android/exoplayer2/upstream/DataSource$Factory;Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;IJLandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;Landroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
.registers 11
const/4 v3, 0x3
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v4, p3
move-object v5, p4
.line 102
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;-><init>(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;ILandroid/os/Handler;Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener;)V
return-void
.end method
.method static synthetic access$000(Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;)V
.registers 1
.line 47
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->startLoadingManifest()V
return-void
.end method
.method private processManifest()V
.registers 28
move-object/from16 v0, p0
const/4 v1, 0x0
const/4 v2, 0x0
.line 292
:goto_4
iget-object v3, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
move-result v3
if-ge v2, v3, :cond_1c
.line 293
iget-object v3, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v3, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod;
iget-object v4, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
invoke-virtual {v3, v4}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod;->updateManifest(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;)V
add-int/lit8 v2, v2, 0x1
goto :goto_4
:cond_1c
const-wide/high16 v2, -0x8000000000000000L
.line 298
iget-object v4, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-object v4, v4, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->streamElements:[Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest$StreamElement;
array-length v5, v4
const-wide v6, 0x7fffffffffffffffL
move-wide v14, v6
const/4 v8, 0x0
:goto_2a
if-ge v8, v5, :cond_52
aget-object v9, v4, v8
.line 299
iget v10, v9, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest$StreamElement;->chunkCount:I
if-lez v10, :cond_4f
.line 300
invoke-virtual {v9, v1}, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest$StreamElement;->getStartTimeUs(I)J
move-result-wide v10
invoke-static {v14, v15, v10, v11}, Ljava/lang/Math;->min(JJ)J
move-result-wide v14
.line 301
iget v10, v9, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest$StreamElement;->chunkCount:I
add-int/lit8 v10, v10, -0x1
invoke-virtual {v9, v10}, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest$StreamElement;->getStartTimeUs(I)J
move-result-wide v10
iget v12, v9, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest$StreamElement;->chunkCount:I
add-int/lit8 v12, v12, -0x1
.line 302
invoke-virtual {v9, v12}, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest$StreamElement;->getChunkDurationUs(I)J
move-result-wide v12
add-long/2addr v10, v12
.line 301
invoke-static {v2, v3, v10, v11}, Ljava/lang/Math;->max(JJ)J
move-result-wide v2
:cond_4f
add-int/lit8 v8, v8, 0x1
goto :goto_2a
:cond_52
const-wide/16 v4, 0x0
const-wide v8, -0x7fffffffffffffffL # -4.9E-324
cmp-long v1, v14, v6
if-nez v1, :cond_7c
.line 308
iget-object v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-boolean v1, v1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->isLive:Z
if-eqz v1, :cond_65
move-wide v11, v8
goto :goto_66
:cond_65
move-wide v11, v4
.line 309
:goto_66
new-instance v1, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;
const-wide/16 v13, 0x0
const-wide/16 v15, 0x0
const-wide/16 v17, 0x0
const/16 v19, 0x1
iget-object v2, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-boolean v2, v2, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->isLive:Z
move-object v10, v1
move/from16 v20, v2
invoke-direct/range {v10 .. v20}, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;-><init>(JJJJZZ)V
goto/16 :goto_e8
.line 311
:cond_7c
iget-object v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-boolean v1, v1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->isLive:Z
if-eqz v1, :cond_ca
.line 312
iget-object v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-wide v6, v1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->dvrWindowLengthUs:J
cmp-long v1, v6, v8
if-eqz v1, :cond_9c
iget-object v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-wide v6, v1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->dvrWindowLengthUs:J
cmp-long v1, v6, v4
if-lez v1, :cond_9c
.line 313
iget-object v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-wide v4, v1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->dvrWindowLengthUs:J
sub-long v4, v2, v4
invoke-static {v14, v15, v4, v5}, Ljava/lang/Math;->max(JJ)J
move-result-wide v14
:cond_9c
move-wide/from16 v21, v14
sub-long v19, v2, v21
.line 316
iget-wide v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->livePresentationDelayMs:J
invoke-static {v1, v2}, Lcom/google/android/exoplayer2/C;->msToUs(J)J
move-result-wide v1
sub-long v1, v19, v1
const-wide/32 v3, 0x4c4b40
cmp-long v5, v1, v3
if-gez v5, :cond_b7
const-wide/16 v1, 0x2
.line 321
div-long v1, v19, v1
invoke-static {v3, v4, v1, v2}, Ljava/lang/Math;->min(JJ)J
move-result-wide v1
:cond_b7
move-wide/from16 v23, v1
.line 323
new-instance v1, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;
const-wide v17, -0x7fffffffffffffffL # -4.9E-324
const/16 v25, 0x1
const/16 v26, 0x1
move-object/from16 v16, v1
invoke-direct/range {v16 .. v26}, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;-><init>(JJJJZZ)V
goto :goto_e8
.line 326
:cond_ca
iget-object v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-wide v4, v1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->durationUs:J
cmp-long v1, v4, v8
if-eqz v1, :cond_d8
iget-object v1, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-wide v1, v1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->durationUs:J
move-wide v12, v1
goto :goto_da
:cond_d8
sub-long/2addr v2, v14
move-wide v12, v2
.line 328
:goto_da
new-instance v1, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;
add-long v10, v14, v12
const-wide/16 v16, 0x0
const/16 v18, 0x1
const/16 v19, 0x0
move-object v9, v1
invoke-direct/range {v9 .. v19}, Lcom/google/android/exoplayer2/source/SinglePeriodTimeline;-><init>(JJJJZZ)V
.line 331
:goto_e8
iget-object v2, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener;
iget-object v3, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
invoke-interface {v2, v0, v1, v3}, Lcom/google/android/exoplayer2/source/MediaSource$Listener;->onSourceInfoRefreshed(Lcom/google/android/exoplayer2/source/MediaSource;Lcom/google/android/exoplayer2/Timeline;Ljava/lang/Object;)V
return-void
.end method
.method private scheduleManifestRefresh()V
.registers 7
.line 335
iget-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-boolean v0, v0, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;->isLive:Z
if-nez v0, :cond_7
return-void
.line 338
:cond_7
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoadStartTimestamp:J
const-wide/16 v2, 0x1388
add-long/2addr v0, v2
const-wide/16 v2, 0x0
.line 339
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v4
sub-long/2addr v0, v4
invoke-static {v2, v3, v0, v1}, Ljava/lang/Math;->max(JJ)J
move-result-wide v0
.line 340
iget-object v2, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestRefreshHandler:Landroid/os/Handler;
new-instance v3, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource$1;
invoke-direct {v3, p0}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource$1;-><init>(Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;)V
invoke-virtual {v2, v3, v0, v1}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
return-void
.end method
.method private startLoadingManifest()V
.registers 6
.line 349
new-instance v0, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
iget-object v2, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestUri:Landroid/net/Uri;
iget-object v3, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestParser:Lcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;
const/4 v4, 0x4
invoke-direct {v0, v1, v2, v4, v3}, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;Landroid/net/Uri;ILcom/google/android/exoplayer2/upstream/ParsingLoadable$Parser;)V
.line 351
iget-object v1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoader:Lcom/google/android/exoplayer2/upstream/Loader;
iget v2, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->minLoadableRetryCount:I
invoke-virtual {v1, v0, p0, v2}, Lcom/google/android/exoplayer2/upstream/Loader;->startLoading(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;Lcom/google/android/exoplayer2/upstream/Loader$Callback;I)J
move-result-wide v1
.line 352
iget-object v3, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
iget-object v4, v0, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget v0, v0, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->type:I
invoke-virtual {v3, v4, v0, v1, v2}, Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;->loadStarted(Lcom/google/android/exoplayer2/upstream/DataSpec;IJ)V
return-void
.end method
# virtual methods
.method public final createPeriod(Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;Lcom/google/android/exoplayer2/upstream/Allocator;)Lcom/google/android/exoplayer2/source/MediaPeriod;
.registers 10
.line 231
iget p1, p1, Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;->periodIndex:I
if-nez p1, :cond_6
const/4 p1, 0x1
goto :goto_7
:cond_6
const/4 p1, 0x0
:goto_7
invoke-static {p1}, Lcom/google/android/exoplayer2/util/Assertions;->checkArgument(Z)V
.line 232
new-instance p1, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iget-object v2, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->chunkSourceFactory:Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;
iget v3, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->minLoadableRetryCount:I
iget-object v4, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
iget-object v5, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
move-object v0, p1
move-object v6, p2
invoke-direct/range {v0 .. v6}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod;-><init>(Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;Lcom/google/android/exoplayer2/source/smoothstreaming/SsChunkSource$Factory;ILcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;Lcom/google/android/exoplayer2/upstream/Allocator;)V
.line 234
iget-object p2, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {p2, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
return-object p1
.end method
.method public final maybeThrowSourceInfoRefreshError()V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 226
iget-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
invoke-interface {v0}, Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;->maybeThrowError()V
return-void
.end method
.method public final bridge synthetic onLoadCanceled(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;JJZ)V
.registers 7
.line 47
check-cast p1, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;
invoke-virtual/range {p0 .. p6}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->onLoadCanceled(Lcom/google/android/exoplayer2/upstream/ParsingLoadable;JJZ)V
return-void
.end method
.method public final onLoadCanceled(Lcom/google/android/exoplayer2/upstream/ParsingLoadable;JJZ)V
.registers 16
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/upstream/ParsingLoadable<",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
">;JJZ)V"
}
.end annotation
.line 276
iget-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
iget-object v1, p1, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget v2, p1, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->type:I
.line 277
invoke-virtual {p1}, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->bytesLoaded()J
move-result-wide v7
move-wide v3, p2
move-wide v5, p4
.line 276
invoke-virtual/range {v0 .. v8}, Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;->loadCompleted(Lcom/google/android/exoplayer2/upstream/DataSpec;IJJJ)V
return-void
.end method
.method public final bridge synthetic onLoadCompleted(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;JJ)V
.registers 6
.line 47
check-cast p1, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;
invoke-virtual/range {p0 .. p5}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->onLoadCompleted(Lcom/google/android/exoplayer2/upstream/ParsingLoadable;JJ)V
return-void
.end method
.method public final onLoadCompleted(Lcom/google/android/exoplayer2/upstream/ParsingLoadable;JJ)V
.registers 15
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/upstream/ParsingLoadable<",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
">;JJ)V"
}
.end annotation
.line 265
iget-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
iget-object v1, p1, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget v2, p1, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->type:I
.line 266
invoke-virtual {p1}, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->bytesLoaded()J
move-result-wide v7
move-wide v3, p2
move-wide v5, p4
.line 265
invoke-virtual/range {v0 .. v8}, Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;->loadCompleted(Lcom/google/android/exoplayer2/upstream/DataSpec;IJJJ)V
.line 267
invoke-virtual {p1}, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->getResult()Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
sub-long/2addr p2, p4
.line 268
iput-wide p2, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoadStartTimestamp:J
.line 269
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->processManifest()V
.line 270
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->scheduleManifestRefresh()V
return-void
.end method
.method public final bridge synthetic onLoadError(Lcom/google/android/exoplayer2/upstream/Loader$Loadable;JJLjava/io/IOException;)I
.registers 7
.line 47
check-cast p1, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;
invoke-virtual/range {p0 .. p6}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->onLoadError(Lcom/google/android/exoplayer2/upstream/ParsingLoadable;JJLjava/io/IOException;)I
move-result p1
return p1
.end method
.method public final onLoadError(Lcom/google/android/exoplayer2/upstream/ParsingLoadable;JJLjava/io/IOException;)I
.registers 20
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/upstream/ParsingLoadable<",
"Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;",
">;JJ",
"Ljava/io/IOException;",
")I"
}
.end annotation
move-object v0, p1
move-object/from16 v9, p6
.line 283
instance-of v11, v9, Lcom/google/android/exoplayer2/ParserException;
move-object v12, p0
.line 284
iget-object v1, v12, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->eventDispatcher:Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;
iget-object v2, v0, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget v3, v0, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->type:I
.line 285
invoke-virtual {p1}, Lcom/google/android/exoplayer2/upstream/ParsingLoadable;->bytesLoaded()J
move-result-wide v7
move-object v0, v1
move-object v1, v2
move v2, v3
move-wide v3, p2
move-wide/from16 v5, p4
move v10, v11
.line 284
invoke-virtual/range {v0 .. v10}, Lcom/google/android/exoplayer2/source/AdaptiveMediaSourceEventListener$EventDispatcher;->loadError(Lcom/google/android/exoplayer2/upstream/DataSpec;IJJJLjava/io/IOException;Z)V
if-eqz v11, :cond_1e
const/4 v0, 0x3
return v0
:cond_1e
const/4 v0, 0x0
return v0
.end method
.method public final prepareSource(Lcom/google/android/exoplayer2/ExoPlayer;ZLcom/google/android/exoplayer2/source/MediaSource$Listener;)V
.registers 4
.line 211
iput-object p3, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener;
.line 212
iget-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
if-eqz p1, :cond_11
.line 213
new-instance p1, Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower$Dummy;
invoke-direct {p1}, Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower$Dummy;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
.line 214
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->processManifest()V
return-void
.line 216
:cond_11
iget-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestDataSourceFactory:Lcom/google/android/exoplayer2/upstream/DataSource$Factory;
invoke-interface {p1}, Lcom/google/android/exoplayer2/upstream/DataSource$Factory;->createDataSource()Lcom/google/android/exoplayer2/upstream/DataSource;
move-result-object p1
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.line 217
new-instance p1, Lcom/google/android/exoplayer2/upstream/Loader;
const-string p2, "Loader:Manifest"
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/upstream/Loader;-><init>(Ljava/lang/String;)V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoader:Lcom/google/android/exoplayer2/upstream/Loader;
.line 218
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoaderErrorThrower:Lcom/google/android/exoplayer2/upstream/LoaderErrorThrower;
.line 219
new-instance p1, Landroid/os/Handler;
invoke-direct {p1}, Landroid/os/Handler;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestRefreshHandler:Landroid/os/Handler;
.line 220
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->startLoadingManifest()V
return-void
.end method
.method public final releasePeriod(Lcom/google/android/exoplayer2/source/MediaPeriod;)V
.registers 3
.line 240
move-object v0, p1
check-cast v0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaPeriod;->release()V
.line 241
iget-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->mediaPeriods:Ljava/util/ArrayList;
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->remove(Ljava/lang/Object;)Z
return-void
.end method
.method public final releaseSource()V
.registers 4
const/4 v0, 0x0
.line 246
iput-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->sourceListener:Lcom/google/android/exoplayer2/source/MediaSource$Listener;
.line 247
iput-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifest:Lcom/google/android/exoplayer2/source/smoothstreaming/manifest/SsManifest;
.line 248
iput-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
const-wide/16 v1, 0x0
.line 249
iput-wide v1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoadStartTimestamp:J
.line 250
iget-object v1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoader:Lcom/google/android/exoplayer2/upstream/Loader;
if-eqz v1, :cond_14
.line 251
invoke-virtual {v1}, Lcom/google/android/exoplayer2/upstream/Loader;->release()V
.line 252
iput-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestLoader:Lcom/google/android/exoplayer2/upstream/Loader;
.line 254
:cond_14
iget-object v1, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestRefreshHandler:Landroid/os/Handler;
if-eqz v1, :cond_1d
.line 255
invoke-virtual {v1, v0}, Landroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V
.line 256
iput-object v0, p0, Lcom/google/android/exoplayer2/source/smoothstreaming/SsMediaSource;->manifestRefreshHandler:Landroid/os/Handler;
:cond_1d
return-void
.end method