HlsMediaChunk.smali
.class final Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;
.super Lcom/google/android/exoplayer2/source/chunk/MediaChunk;
.source "SourceFile"
# static fields
.field private static final PRIV_TIMESTAMP_FRAME_OWNER:Ljava/lang/String; = "com.apple.streaming.transportStreamTimestamp"
.field private static final uidSource:Ljava/util/concurrent/atomic/AtomicInteger;
# instance fields
.field private bytesLoaded:I
.field public final discontinuitySequenceNumber:I
.field private final extractor:Lcom/google/android/exoplayer2/extractor/Extractor;
.field public final hlsUrl:Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
.field private final id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final id3Decoder:Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;
.field private id3TimestampPeeked:Z
.field private final initDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.field private final initDataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
.field private initLoadCompleted:Z
.field private initSegmentBytesLoaded:I
.field private final isEncrypted:Z
.field private final isMasterTimestampSource:Z
.field private final isPackedAudioExtractor:Z
.field private volatile loadCanceled:Z
.field private volatile loadCompleted:Z
.field private output:Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
.field private final reusingExtractor:Z
.field private final shouldSpliceIn:Z
.field private final timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.field public final uid:I
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 48
new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>()V
sput-object v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->uidSource:Ljava/util/concurrent/atomic/AtomicInteger;
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/source/hls/HlsExtractorFactory;Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/upstream/DataSpec;Lcom/google/android/exoplayer2/upstream/DataSpec;Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;Ljava/util/List;ILjava/lang/Object;JJIIZLcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;Lcom/google/android/exoplayer2/drm/DrmInitData;[B[B)V
.registers 37
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/source/hls/HlsExtractorFactory;",
"Lcom/google/android/exoplayer2/upstream/DataSource;",
"Lcom/google/android/exoplayer2/upstream/DataSpec;",
"Lcom/google/android/exoplayer2/upstream/DataSpec;",
"Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/Format;",
">;I",
"Ljava/lang/Object;",
"JJIIZ",
"Lcom/google/android/exoplayer2/util/TimestampAdjuster;",
"Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;",
"Lcom/google/android/exoplayer2/drm/DrmInitData;",
"[B[B)V"
}
.end annotation
move-object/from16 v11, p0
move-object/from16 v12, p2
move-object/from16 v13, p4
move-object/from16 v14, p5
move/from16 v15, p14
move-object/from16 v10, p17
move-object/from16 v0, p19
move-object/from16 v1, p20
.line 115
invoke-static {v12, v0, v1}, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->buildDataSource(Lcom/google/android/exoplayer2/upstream/DataSource;[B[B)Lcom/google/android/exoplayer2/upstream/DataSource;
move-result-object v1
iget-object v3, v14, Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;->format:Lcom/google/android/exoplayer2/Format;
move-object/from16 v0, p0
move-object/from16 v2, p3
move/from16 v4, p7
move-object/from16 v5, p8
move-wide/from16 v6, p9
move-wide/from16 v8, p11
move-object v12, v10
move/from16 v10, p13
invoke-direct/range {v0 .. v10}, Lcom/google/android/exoplayer2/source/chunk/MediaChunk;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;Lcom/google/android/exoplayer2/upstream/DataSpec;Lcom/google/android/exoplayer2/Format;ILjava/lang/Object;JJI)V
.line 118
iput v15, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->discontinuitySequenceNumber:I
.line 119
iput-object v13, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initDataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
.line 120
iput-object v14, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->hlsUrl:Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
move/from16 v0, p15
.line 121
iput-boolean v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->isMasterTimestampSource:Z
move-object/from16 v0, p16
.line 122
iput-object v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.line 124
iget-object v1, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
instance-of v1, v1, Lcom/google/android/exoplayer2/source/hls/Aes128DataSource;
iput-boolean v1, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->isEncrypted:Z
const/4 v1, 0x1
const/4 v2, 0x0
const/4 v3, 0x0
if-eqz v12, :cond_58
.line 127
iget-object v4, v12, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->hlsUrl:Lcom/google/android/exoplayer2/source/hls/playlist/HlsMasterPlaylist$HlsUrl;
if-eq v4, v14, :cond_47
const/4 v4, 0x1
goto :goto_48
:cond_47
const/4 v4, 0x0
:goto_48
iput-boolean v4, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->shouldSpliceIn:Z
.line 128
iget v5, v12, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->discontinuitySequenceNumber:I
if-ne v5, v15, :cond_54
if-eqz v4, :cond_51
goto :goto_54
:cond_51
iget-object v4, v12, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->extractor:Lcom/google/android/exoplayer2/extractor/Extractor;
goto :goto_55
:cond_54
:goto_54
move-object v4, v3
:goto_55
move-object/from16 v5, p3
goto :goto_5d
.line 131
:cond_58
iput-boolean v2, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->shouldSpliceIn:Z
move-object/from16 v5, p3
move-object v4, v3
.line 133
:goto_5d
iget-object v5, v5, Lcom/google/android/exoplayer2/upstream/DataSpec;->uri:Landroid/net/Uri;
iget-object v6, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->trackFormat:Lcom/google/android/exoplayer2/Format;
move-object/from16 p7, p1
move-object/from16 p8, v4
move-object/from16 p9, v5
move-object/from16 p10, v6
move-object/from16 p11, p6
move-object/from16 p12, p18
move-object/from16 p13, p16
invoke-interface/range {p7 .. p13}, Lcom/google/android/exoplayer2/source/hls/HlsExtractorFactory;->createExtractor(Lcom/google/android/exoplayer2/extractor/Extractor;Landroid/net/Uri;Lcom/google/android/exoplayer2/Format;Ljava/util/List;Lcom/google/android/exoplayer2/drm/DrmInitData;Lcom/google/android/exoplayer2/util/TimestampAdjuster;)Landroid/util/Pair;
move-result-object v0
.line 135
iget-object v5, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v5, Lcom/google/android/exoplayer2/extractor/Extractor;
iput-object v5, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->extractor:Lcom/google/android/exoplayer2/extractor/Extractor;
.line 136
iget-object v0, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v0, Ljava/lang/Boolean;
invoke-virtual {v0}, Ljava/lang/Boolean;->booleanValue()Z
move-result v0
iput-boolean v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->isPackedAudioExtractor:Z
.line 137
iget-object v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->extractor:Lcom/google/android/exoplayer2/extractor/Extractor;
if-ne v0, v4, :cond_89
const/4 v0, 0x1
goto :goto_8a
:cond_89
const/4 v0, 0x0
:goto_8a
iput-boolean v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->reusingExtractor:Z
if-eqz v0, :cond_91
if-eqz v13, :cond_91
goto :goto_92
:cond_91
const/4 v1, 0x0
.line 138
:goto_92
iput-boolean v1, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initLoadCompleted:Z
.line 139
iget-boolean v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->isPackedAudioExtractor:Z
if-eqz v0, :cond_b3
if-eqz v12, :cond_9d
.line 140
iget-object v0, v12, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Decoder:Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;
goto :goto_a2
:cond_9d
new-instance v0, Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;
invoke-direct {v0}, Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;-><init>()V
:goto_a2
iput-object v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Decoder:Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;
if-eqz v12, :cond_a9
.line 141
iget-object v0, v12, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
goto :goto_b0
:cond_a9
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/16 v1, 0xa
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
:goto_b0
iput-object v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
goto :goto_b7
.line 144
:cond_b3
iput-object v3, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Decoder:Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;
.line 145
iput-object v3, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
:goto_b7
move-object/from16 v0, p2
.line 147
iput-object v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.line 148
sget-object v0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->uidSource:Ljava/util/concurrent/atomic/AtomicInteger;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->getAndIncrement()I
move-result v0
iput v0, v11, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->uid:I
return-void
.end method
.method private static buildDataSource(Lcom/google/android/exoplayer2/upstream/DataSource;[B[B)Lcom/google/android/exoplayer2/upstream/DataSource;
.registers 4
if-eqz p1, :cond_8
.line 325
new-instance v0, Lcom/google/android/exoplayer2/source/hls/Aes128DataSource;
invoke-direct {v0, p0, p1, p2}, Lcom/google/android/exoplayer2/source/hls/Aes128DataSource;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;[B[B)V
return-object v0
:cond_8
return-object p0
.end method
.method private loadMedia()V
.registers 14
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 227
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->isEncrypted:Z
const/4 v1, 0x1
const/4 v2, 0x0
if-eqz v0, :cond_e
.line 228
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
.line 229
iget v3, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->bytesLoaded:I
if-eqz v3, :cond_17
const/4 v3, 0x1
goto :goto_18
.line 231
:cond_e
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget v3, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->bytesLoaded:I
int-to-long v3, v3
invoke-virtual {v0, v3, v4}, Lcom/google/android/exoplayer2/upstream/DataSpec;->subrange(J)Lcom/google/android/exoplayer2/upstream/DataSpec;
move-result-object v0
:cond_17
const/4 v3, 0x0
.line 234
:goto_18
iget-boolean v4, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->isMasterTimestampSource:Z
if-nez v4, :cond_22
.line 235
iget-object v4, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->waitUntilInitialized()V
goto :goto_38
.line 236
:cond_22
iget-object v4, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->getFirstSampleTimestampUs()J
move-result-wide v4
const-wide v6, 0x7fffffffffffffffL
cmp-long v8, v4, v6
if-nez v8, :cond_38
.line 238
iget-object v4, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
iget-wide v5, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->startTimeUs:J
invoke-virtual {v4, v5, v6}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->setFirstSampleTimestampUs(J)V
.line 241
:cond_38
:goto_38
:try_start_38
new-instance v4, Lcom/google/android/exoplayer2/extractor/DefaultExtractorInput;
iget-object v8, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
iget-wide v9, v0, Lcom/google/android/exoplayer2/upstream/DataSpec;->absoluteStreamPosition:J
iget-object v5, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.line 242
invoke-interface {v5, v0}, Lcom/google/android/exoplayer2/upstream/DataSource;->open(Lcom/google/android/exoplayer2/upstream/DataSpec;)J
move-result-wide v11
move-object v7, v4
invoke-direct/range {v7 .. v12}, Lcom/google/android/exoplayer2/extractor/DefaultExtractorInput;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;JJ)V
.line 243
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->isPackedAudioExtractor:Z
if-eqz v0, :cond_6d
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3TimestampPeeked:Z
if-nez v0, :cond_6d
.line 244
invoke-direct {p0, v4}, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->peekId3PrivTimestamp(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)J
move-result-wide v5
.line 245
iput-boolean v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3TimestampPeeked:Z
.line 246
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->output:Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
const-wide v7, -0x7fffffffffffffffL # -4.9E-324
cmp-long v9, v5, v7
if-eqz v9, :cond_68
iget-object v7, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.line 247
invoke-virtual {v7, v5, v6}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->adjustTsTimestamp(J)J
move-result-wide v5
goto :goto_6a
:cond_68
iget-wide v5, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->startTimeUs:J
.line 246
:goto_6a
invoke-virtual {v0, v5, v6}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->setSampleOffsetUs(J)V
:cond_6d
if-eqz v3, :cond_74
.line 250
iget v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->bytesLoaded:I
invoke-interface {v4, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
:try_end_74
.catchall {:try_start_38 .. :try_end_74} :catchall_a4
:cond_74
:goto_74
if-nez v2, :cond_90
.line 254
:try_start_76
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadCanceled:Z
if-nez v0, :cond_90
.line 255
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->extractor:Lcom/google/android/exoplayer2/extractor/Extractor;
const/4 v2, 0x0
invoke-interface {v0, v4, v2}, Lcom/google/android/exoplayer2/extractor/Extractor;->read(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/PositionHolder;)I
move-result v2
:try_end_81
.catchall {:try_start_76 .. :try_end_81} :catchall_82
goto :goto_74
:catchall_82
move-exception v0
.line 258
:try_start_83
invoke-interface {v4}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v1
iget-object v3, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget-wide v3, v3, Lcom/google/android/exoplayer2/upstream/DataSpec;->absoluteStreamPosition:J
sub-long/2addr v1, v3
long-to-int v2, v1
iput v2, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->bytesLoaded:I
throw v0
:cond_90
invoke-interface {v4}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v2
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget-wide v4, v0, Lcom/google/android/exoplayer2/upstream/DataSpec;->absoluteStreamPosition:J
sub-long/2addr v2, v4
long-to-int v0, v2
iput v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->bytesLoaded:I
:try_end_9c
.catchall {:try_start_83 .. :try_end_9c} :catchall_a4
.line 261
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Util;->closeQuietly(Lcom/google/android/exoplayer2/upstream/DataSource;)V
.line 263
iput-boolean v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadCompleted:Z
return-void
:catchall_a4
move-exception v0
.line 261
iget-object v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
invoke-static {v1}, Lcom/google/android/exoplayer2/util/Util;->closeQuietly(Lcom/google/android/exoplayer2/upstream/DataSource;)V
goto :goto_ac
:goto_ab
throw v0
:goto_ac
goto :goto_ab
.end method
.method private maybeLoadInitData()V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 198
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initLoadCompleted:Z
if-nez v0, :cond_59
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initDataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
if-nez v0, :cond_9
goto :goto_59
.line 202
:cond_9
iget v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initSegmentBytesLoaded:I
int-to-long v1, v1
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/upstream/DataSpec;->subrange(J)Lcom/google/android/exoplayer2/upstream/DataSpec;
move-result-object v0
.line 204
:try_start_10
new-instance v7, Lcom/google/android/exoplayer2/extractor/DefaultExtractorInput;
iget-object v2, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
iget-wide v3, v0, Lcom/google/android/exoplayer2/upstream/DataSpec;->absoluteStreamPosition:J
iget-object v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initDataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
.line 205
invoke-interface {v1, v0}, Lcom/google/android/exoplayer2/upstream/DataSource;->open(Lcom/google/android/exoplayer2/upstream/DataSpec;)J
move-result-wide v5
move-object v1, v7
invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/extractor/DefaultExtractorInput;-><init>(Lcom/google/android/exoplayer2/upstream/DataSource;JJ)V
:try_end_20
.catchall {:try_start_10 .. :try_end_20} :catchall_52
const/4 v0, 0x0
:goto_21
if-nez v0, :cond_3d
.line 208
:try_start_23
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadCanceled:Z
if-nez v0, :cond_3d
.line 209
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->extractor:Lcom/google/android/exoplayer2/extractor/Extractor;
const/4 v1, 0x0
invoke-interface {v0, v7, v1}, Lcom/google/android/exoplayer2/extractor/Extractor;->read(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/PositionHolder;)I
move-result v0
:try_end_2e
.catchall {:try_start_23 .. :try_end_2e} :catchall_2f
goto :goto_21
:catchall_2f
move-exception v0
.line 212
:try_start_30
invoke-interface {v7}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v1
iget-object v3, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initDataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget-wide v3, v3, Lcom/google/android/exoplayer2/upstream/DataSpec;->absoluteStreamPosition:J
sub-long/2addr v1, v3
long-to-int v2, v1
iput v2, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initSegmentBytesLoaded:I
throw v0
:cond_3d
invoke-interface {v7}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v0
iget-object v2, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initDataSpec:Lcom/google/android/exoplayer2/upstream/DataSpec;
iget-wide v2, v2, Lcom/google/android/exoplayer2/upstream/DataSpec;->absoluteStreamPosition:J
sub-long/2addr v0, v2
long-to-int v1, v0
iput v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initSegmentBytesLoaded:I
:try_end_49
.catchall {:try_start_30 .. :try_end_49} :catchall_52
.line 215
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Util;->closeQuietly(Lcom/google/android/exoplayer2/upstream/DataSource;)V
const/4 v0, 0x1
.line 217
iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->initLoadCompleted:Z
return-void
:catchall_52
move-exception v0
.line 215
iget-object v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->dataSource:Lcom/google/android/exoplayer2/upstream/DataSource;
invoke-static {v1}, Lcom/google/android/exoplayer2/util/Util;->closeQuietly(Lcom/google/android/exoplayer2/upstream/DataSource;)V
throw v0
:cond_59
:goto_59
return-void
.end method
.method private peekId3PrivTimestamp(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)J
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 277
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->resetPeekPosition()V
.line 278
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/4 v1, 0x1
const/16 v2, 0xa
const/4 v3, 0x0
invoke-interface {p1, v0, v3, v2, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->peekFully([BIIZ)Z
move-result v0
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
if-nez v0, :cond_17
return-wide v4
.line 281
:cond_17
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 282
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt24()I
move-result v0
.line 283
sget v6, Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;->ID3_TAG:I
if-eq v0, v6, :cond_27
return-wide v4
.line 286
:cond_27
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 v6, 0x3
invoke-virtual {v0, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 287
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readSynchSafeInt()I
move-result v0
add-int/lit8 v6, v0, 0xa
.line 289
iget-object v7, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v7}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->capacity()I
move-result v7
if-le v6, v7, :cond_4d
.line 290
iget-object v7, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v7, v7, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 291
iget-object v8, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v8, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 292
iget-object v6, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v6, v6, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-static {v7, v3, v6, v3, v2}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 294
:cond_4d
iget-object v6, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v6, v6, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-interface {p1, v6, v2, v0, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->peekFully([BIIZ)Z
move-result p1
if-nez p1, :cond_58
return-wide v4
.line 297
:cond_58
iget-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Decoder:Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, v1, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-virtual {p1, v1, v0}, Lcom/google/android/exoplayer2/metadata/id3/Id3Decoder;->decode([BI)Lcom/google/android/exoplayer2/metadata/Metadata;
move-result-object p1
if-nez p1, :cond_65
return-wide v4
.line 301
:cond_65
invoke-virtual {p1}, Lcom/google/android/exoplayer2/metadata/Metadata;->length()I
move-result v0
const/4 v1, 0x0
:goto_6a
if-ge v1, v0, :cond_9a
.line 303
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/metadata/Metadata;->get(I)Lcom/google/android/exoplayer2/metadata/Metadata$Entry;
move-result-object v2
.line 304
instance-of v6, v2, Lcom/google/android/exoplayer2/metadata/id3/PrivFrame;
if-eqz v6, :cond_97
.line 305
check-cast v2, Lcom/google/android/exoplayer2/metadata/id3/PrivFrame;
.line 306
iget-object v6, v2, Lcom/google/android/exoplayer2/metadata/id3/PrivFrame;->owner:Ljava/lang/String;
const-string v7, "com.apple.streaming.transportStreamTimestamp"
invoke-virtual {v7, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_97
.line 307
iget-object p1, v2, Lcom/google/android/exoplayer2/metadata/id3/PrivFrame;->privateData:[B
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/16 v1, 0x8
invoke-static {p1, v3, v0, v3, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 308
iget-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 309
iget-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->id3Data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLong()J
move-result-wide v0
return-wide v0
:cond_97
add-int/lit8 v1, v1, 0x1
goto :goto_6a
:cond_9a
return-wide v4
.end method
# virtual methods
.method public final bytesLoaded()J
.registers 3
.line 172
iget v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->bytesLoaded:I
int-to-long v0, v0
return-wide v0
.end method
.method public final cancelLoad()V
.registers 2
const/4 v0, 0x1
.line 179
iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadCanceled:Z
return-void
.end method
.method public final init(Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;)V
.registers 4
.line 158
iput-object p1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->output:Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;
.line 159
iget v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->uid:I
iget-boolean v1, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->shouldSpliceIn:Z
invoke-virtual {p1, v0, v1}, Lcom/google/android/exoplayer2/source/hls/HlsSampleStreamWrapper;->init(IZ)V
.line 160
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->reusingExtractor:Z
if-nez v0, :cond_12
.line 161
iget-object v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->extractor:Lcom/google/android/exoplayer2/extractor/Extractor;
invoke-interface {v0, p1}, Lcom/google/android/exoplayer2/extractor/Extractor;->init(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;)V
:cond_12
return-void
.end method
.method public final isLoadCanceled()Z
.registers 2
.line 184
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadCanceled:Z
return v0
.end method
.method public final isLoadCompleted()Z
.registers 2
.line 167
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadCompleted:Z
return v0
.end method
.method public final load()V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 189
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->maybeLoadInitData()V
.line 190
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadCanceled:Z
if-nez v0, :cond_a
.line 191
invoke-direct {p0}, Lcom/google/android/exoplayer2/source/hls/HlsMediaChunk;->loadMedia()V
:cond_a
return-void
.end method