FragmentedMp4Extractor.smali
.class public Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;
.super Ljava/lang/Object;
.source "FragmentedMp4Extractor.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/Extractor;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;,
Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;,
Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$Flags;
}
.end annotation
# static fields
.field private static final EMSG_FORMAT:Lcom/google/android/exoplayer2/Format;
.field public static final FACTORY:Lcom/google/android/exoplayer2/extractor/ExtractorsFactory;
.field public static final FLAG_ENABLE_EMSG_TRACK:I = 0x4
.field private static final FLAG_SIDELOADED:I = 0x8
.field public static final FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME:I = 0x1
.field public static final FLAG_WORKAROUND_IGNORE_EDIT_LISTS:I = 0x10
.field public static final FLAG_WORKAROUND_IGNORE_TFDT_BOX:I = 0x2
.field private static final PIFF_SAMPLE_ENCRYPTION_BOX_EXTENDED_TYPE:[B
.field private static final SAMPLE_GROUP_TYPE_seig:I
.field private static final STATE_READING_ATOM_HEADER:I = 0x0
.field private static final STATE_READING_ATOM_PAYLOAD:I = 0x1
.field private static final STATE_READING_ENCRYPTION_DATA:I = 0x2
.field private static final STATE_READING_SAMPLE_CONTINUE:I = 0x4
.field private static final STATE_READING_SAMPLE_START:I = 0x3
.field private static final TAG:Ljava/lang/String; = "FragmentedMp4Extractor"
# instance fields
.field private final additionalEmsgTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.field private atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private atomHeaderBytesRead:I
.field private atomSize:J
.field private atomType:I
.field private cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
.field private final closedCaptionFormats:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/Format;",
">;"
}
.end annotation
.end field
.field private final containerAtoms:Ljava/util/ArrayDeque;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayDeque<",
"Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;",
">;"
}
.end annotation
.end field
.field private currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.field private durationUs:J
.field private emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
.field private endOfMdatPosition:J
.field private final extendedTypeScratch:[B
.field private extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
.field private final flags:I
.field private haveOutputSeekMap:Z
.field private final nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private parserState:I
.field private pendingMetadataSampleBytes:I
.field private final pendingMetadataSampleInfos:Ljava/util/ArrayDeque;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayDeque<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;",
">;"
}
.end annotation
.end field
.field private pendingSeekTimeUs:J
.field private processSeiNalUnitPayload:Z
.field private sampleBytesWritten:I
.field private sampleCurrentNalBytesRemaining:I
.field private sampleSize:I
.field private segmentIndexEarliestPresentationTimeUs:J
.field private final sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
.field private final sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.field private final timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.field private final trackBundles:Landroid/util/SparseArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 4
.line 60
sget-object v0, Lcom/google/android/exoplayer2/extractor/mp4/-$$Lambda$FragmentedMp4Extractor$i0zfpH_PcF0vytkdatCL0xeWFhQ;->INSTANCE:Lcom/google/android/exoplayer2/extractor/mp4/-$$Lambda$FragmentedMp4Extractor$i0zfpH_PcF0vytkdatCL0xeWFhQ;
sput-object v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->FACTORY:Lcom/google/android/exoplayer2/extractor/ExtractorsFactory;
.line 107
const-string/jumbo v0, "seig"
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Util;->getIntegerCodeForString(Ljava/lang/String;)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->SAMPLE_GROUP_TYPE_seig:I
.line 109
const/16 v0, 0x10
new-array v0, v0, [B
fill-array-data v0, :array_26
sput-object v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->PIFF_SAMPLE_ENCRYPTION_BOX_EXTENDED_TYPE:[B
.line 111
nop
.line 112
const/4 v0, 0x0
const-string v1, "application/x-emsg"
const-wide v2, 0x7fffffffffffffffL
invoke-static {v0, v1, v2, v3}, Lcom/google/android/exoplayer2/Format;->createSampleFormat(Ljava/lang/String;Ljava/lang/String;J)Lcom/google/android/exoplayer2/Format;
move-result-object v0
sput-object v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->EMSG_FORMAT:Lcom/google/android/exoplayer2/Format;
.line 111
return-void
:array_26
.array-data 1
-0x5et
0x39t
0x4ft
0x52t
0x5at
-0x65t
0x4ft
0x14t
-0x5et
0x44t
0x6ct
0x42t
0x7ct
0x64t
-0x73t
-0xct
.end array-data
.end method
.method public constructor <init>()V
.registers 2
.line 173
const/4 v0, 0x0
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(I)V
.line 174
return-void
.end method
.method public constructor <init>(I)V
.registers 3
.param p1, "flags" # I
.line 180
const/4 v0, 0x0
invoke-direct {p0, p1, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;)V
.line 181
return-void
.end method
.method public constructor <init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;)V
.registers 4
.param p1, "flags" # I
.param p2, "timestampAdjuster" # Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.line 188
const/4 v0, 0x0
invoke-direct {p0, p1, p2, v0, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;)V
.line 189
return-void
.end method
.method public constructor <init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;)V
.registers 11
.param p1, "flags" # I
.param p2, "timestampAdjuster" # Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.param p3, "sideloadedTrack" # Lcom/google/android/exoplayer2/extractor/mp4/Track;
.param p4, "sideloadedDrmInitData" # Lcom/google/android/exoplayer2/drm/DrmInitData;
.line 204
invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List;
move-result-object v5
move-object v0, p0
move v1, p1
move-object v2, p2
move-object v3, p3
move-object v4, p4
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;Ljava/util/List;)V
.line 205
return-void
.end method
.method public constructor <init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;Ljava/util/List;)V
.registers 13
.param p1, "flags" # I
.param p2, "timestampAdjuster" # Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.param p3, "sideloadedTrack" # Lcom/google/android/exoplayer2/extractor/mp4/Track;
.param p4, "sideloadedDrmInitData" # Lcom/google/android/exoplayer2/drm/DrmInitData;
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lcom/google/android/exoplayer2/util/TimestampAdjuster;",
"Lcom/google/android/exoplayer2/extractor/mp4/Track;",
"Lcom/google/android/exoplayer2/drm/DrmInitData;",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/Format;",
">;)V"
}
.end annotation
.line 223
.local p5, "closedCaptionFormats":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/Format;>;"
const/4 v6, 0x0
move-object v0, p0
move v1, p1
move-object v2, p2
move-object v3, p3
move-object v4, p4
move-object v5, p5
invoke-direct/range {v0 .. v6}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;Ljava/util/List;Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.line 225
return-void
.end method
.method public constructor <init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;Ljava/util/List;Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.registers 10
.param p1, "flags" # I
.param p2, "timestampAdjuster" # Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.param p3, "sideloadedTrack" # Lcom/google/android/exoplayer2/extractor/mp4/Track;
.param p4, "sideloadedDrmInitData" # Lcom/google/android/exoplayer2/drm/DrmInitData;
.param p6, "additionalEmsgTrackOutput" # Lcom/google/android/exoplayer2/extractor/TrackOutput;
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lcom/google/android/exoplayer2/util/TimestampAdjuster;",
"Lcom/google/android/exoplayer2/extractor/mp4/Track;",
"Lcom/google/android/exoplayer2/drm/DrmInitData;",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/Format;",
">;",
"Lcom/google/android/exoplayer2/extractor/TrackOutput;",
")V"
}
.end annotation
.line 246
.local p5, "closedCaptionFormats":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/Format;>;"
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 247
if-eqz p3, :cond_8
const/16 v0, 0x8
goto :goto_9
:cond_8
const/4 v0, 0x0
:goto_9
or-int/2addr v0, p1
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
.line 248
iput-object p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.line 249
iput-object p3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 250
iput-object p4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
.line 251
invoke-static {p5}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->closedCaptionFormats:Ljava/util/List;
.line 252
iput-object p6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->additionalEmsgTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 253
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/16 v1, 0x10
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 254
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
sget-object v2, Lcom/google/android/exoplayer2/util/NalUnitUtil;->NAL_START_CODE:[B
invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>([B)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 255
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 v2, 0x5
invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 256
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 257
new-array v0, v1, [B
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extendedTypeScratch:[B
.line 258
new-instance v0, Ljava/util/ArrayDeque;
invoke-direct {v0}, Ljava/util/ArrayDeque;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
.line 259
new-instance v0, Ljava/util/ArrayDeque;
invoke-direct {v0}, Ljava/util/ArrayDeque;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/ArrayDeque;
.line 260
new-instance v0, Landroid/util/SparseArray;
invoke-direct {v0}, Landroid/util/SparseArray;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
.line 261
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
.line 262
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingSeekTimeUs:J
.line 263
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->segmentIndexEarliestPresentationTimeUs:J
.line 264
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
.line 265
return-void
.end method
.method private enterReadingAtomHeaderState()V
.registers 2
.line 327
const/4 v0, 0x0
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 328
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
.line 329
return-void
.end method
.method private getDefaultSampleValues(Landroid/util/SparseArray;I)Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.registers 5
.param p2, "trackId" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;",
">;I)",
"Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;"
}
.end annotation
.line 532
.local p1, "defaultSampleValuesArray":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;>;"
invoke-virtual {p1}, Landroid/util/SparseArray;->size()I
move-result v0
const/4 v1, 0x1
if-ne v0, v1, :cond_f
.line 535
const/4 v0, 0x0
invoke-virtual {p1, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
return-object v0
.line 537
:cond_f
invoke-virtual {p1, p2}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v0
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
return-object v0
.end method
.method private static getDrmInitDataFromAtoms(Ljava/util/List;)Lcom/google/android/exoplayer2/drm/DrmInitData;
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;",
">;)",
"Lcom/google/android/exoplayer2/drm/DrmInitData;"
}
.end annotation
.line 1352
.local p0, "leafChildren":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;>;"
const/4 v0, 0x0
.line 1353
.local v0, "schemeDatas":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;>;"
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v1
.line 1354
.local v1, "leafChildrenSize":I
const/4 v2, 0x0
.local v2, "i":I
:goto_6
if-ge v2, v1, :cond_3c
.line 1355
invoke-interface {p0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 1356
.local v3, "child":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget v4, v3, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_pssh:I
if-ne v4, v5, :cond_39
.line 1357
if-nez v0, :cond_1c
.line 1358
new-instance v4, Ljava/util/ArrayList;
invoke-direct {v4}, Ljava/util/ArrayList;-><init>()V
move-object v0, v4
.line 1360
:cond_1c
iget-object v4, v3, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v4, v4, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 1361
.local v4, "psshData":[B
invoke-static {v4}, Lcom/google/android/exoplayer2/extractor/mp4/PsshAtomUtil;->parseUuid([B)Ljava/util/UUID;
move-result-object v5
.line 1362
.local v5, "uuid":Ljava/util/UUID;
if-nez v5, :cond_2e
.line 1363
const-string v6, "FragmentedMp4Extractor"
const-string v7, "Skipped pssh atom (failed to extract uuid)"
invoke-static {v6, v7}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_39
.line 1365
:cond_2e
new-instance v6, Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;
const-string/jumbo v7, "video/mp4"
invoke-direct {v6, v5, v7, v4}, Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;-><init>(Ljava/util/UUID;Ljava/lang/String;[B)V
invoke-virtual {v0, v6}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 1354
.end local v3 # "child":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.end local v4 # "psshData":[B
.end local v5 # "uuid":Ljava/util/UUID;
:cond_39
:goto_39
add-int/lit8 v2, v2, 0x1
goto :goto_6
.line 1369
.end local v2 # "i":I
:cond_3c
if-nez v0, :cond_40
const/4 v2, 0x0
goto :goto_45
:cond_40
new-instance v2, Lcom/google/android/exoplayer2/drm/DrmInitData;
invoke-direct {v2, v0}, Lcom/google/android/exoplayer2/drm/DrmInitData;-><init>(Ljava/util/List;)V
:goto_45
return-object v2
.end method
.method private static getNextFragmentRun(Landroid/util/SparseArray;)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;)",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;"
}
.end annotation
.line 1331
.local p0, "trackBundles":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;>;"
const/4 v0, 0x0
.line 1332
.local v0, "nextTrackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
const-wide v1, 0x7fffffffffffffffL
.line 1334
.local v1, "nextTrackRunOffset":J
invoke-virtual {p0}, Landroid/util/SparseArray;->size()I
move-result v3
.line 1335
.local v3, "trackBundlesSize":I
const/4 v4, 0x0
.local v4, "i":I
:goto_b
if-ge v4, v3, :cond_2d
.line 1336
invoke-virtual {p0, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 1337
.local v5, "trackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
iget-object v7, v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunCount:I
if-ne v6, v7, :cond_1c
goto :goto_2a
.line 1340
:cond_1c
iget-object v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-object v6, v6, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunDataPosition:[J
iget v7, v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
aget-wide v7, v6, v7
.line 1341
.local v7, "trunOffset":J
cmp-long v6, v7, v1
if-gez v6, :cond_2a
.line 1342
move-object v0, v5
.line 1343
move-wide v1, v7
.line 1335
.end local v5 # "trackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.end local v7 # "trunOffset":J
:cond_2a
:goto_2a
add-int/lit8 v4, v4, 0x1
goto :goto_b
.line 1347
.end local v4 # "i":I
:cond_2d
return-object v0
.end method
.method private static getTrackBundle(Landroid/util/SparseArray;I)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.registers 4
.param p1, "trackId" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;I)",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;"
}
.end annotation
.line 855
.local p0, "trackBundles":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;>;"
invoke-virtual {p0}, Landroid/util/SparseArray;->size()I
move-result v0
const/4 v1, 0x1
if-ne v0, v1, :cond_f
.line 859
const/4 v0, 0x0
invoke-virtual {p0, v0}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
return-object v0
.line 861
:cond_f
invoke-virtual {p0, p1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
return-object v0
.end method
.method static synthetic lambda$static$0()[Lcom/google/android/exoplayer2/extractor/Extractor;
.registers 3
.line 61
const/4 v0, 0x1
new-array v0, v0, [Lcom/google/android/exoplayer2/extractor/Extractor;
new-instance v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;
invoke-direct {v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>()V
const/4 v2, 0x0
aput-object v1, v0, v2
return-object v0
.end method
.method private maybeInitExtraTracks()V
.registers 7
.line 562
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-nez v0, :cond_44
.line 563
const/4 v0, 0x2
new-array v0, v0, [Lcom/google/android/exoplayer2/extractor/TrackOutput;
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 564
const/4 v1, 0x0
.line 565
.local v1, "emsgTrackOutputCount":I
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->additionalEmsgTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-eqz v2, :cond_13
.line 566
add-int/lit8 v3, v1, 0x1
.end local v1 # "emsgTrackOutputCount":I
.local v3, "emsgTrackOutputCount":I
aput-object v2, v0, v1
move v1, v3
.line 568
.end local v3 # "emsgTrackOutputCount":I
.restart local v1 # "emsgTrackOutputCount":I
:cond_13
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
const/4 v2, 0x4
and-int/2addr v0, v2
if-eqz v0, :cond_2c
.line 569
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-int/lit8 v3, v1, 0x1
.end local v1 # "emsgTrackOutputCount":I
.restart local v3 # "emsgTrackOutputCount":I
iget-object v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
iget-object v5, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
.line 570
invoke-virtual {v5}, Landroid/util/SparseArray;->size()I
move-result v5
invoke-interface {v4, v5, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v2
aput-object v2, v0, v1
move v1, v3
.line 572
.end local v3 # "emsgTrackOutputCount":I
.restart local v1 # "emsgTrackOutputCount":I
:cond_2c
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
invoke-static {v0, v1}, Ljava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;
move-result-object v0
check-cast v0, [Lcom/google/android/exoplayer2/extractor/TrackOutput;
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 574
array-length v2, v0
const/4 v3, 0x0
:goto_38
if-ge v3, v2, :cond_44
aget-object v4, v0, v3
.line 575
.local v4, "eventMessageTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
sget-object v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->EMSG_FORMAT:Lcom/google/android/exoplayer2/Format;
invoke-interface {v4, v5}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->format(Lcom/google/android/exoplayer2/Format;)V
.line 574
.end local v4 # "eventMessageTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-int/lit8 v3, v3, 0x1
goto :goto_38
.line 578
.end local v1 # "emsgTrackOutputCount":I
:cond_44
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-nez v0, :cond_7a
.line 579
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->closedCaptionFormats:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
new-array v0, v0, [Lcom/google/android/exoplayer2/extractor/TrackOutput;
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 580
const/4 v0, 0x0
.local v0, "i":I
:goto_53
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
array-length v1, v1
if-ge v0, v1, :cond_7a
.line 581
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
move-result v2
add-int/lit8 v2, v2, 0x1
add-int/2addr v2, v0
const/4 v3, 0x3
invoke-interface {v1, v2, v3}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v1
.line 582
.local v1, "output":Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->closedCaptionFormats:Ljava/util/List;
invoke-interface {v2, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/Format;
invoke-interface {v1, v2}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->format(Lcom/google/android/exoplayer2/Format;)V
.line 583
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
aput-object v1, v2, v0
.line 580
.end local v1 # "output":Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-int/lit8 v0, v0, 0x1
goto :goto_53
.line 586
.end local v0 # "i":I
:cond_7a
return-void
.end method
.method private onContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.registers 4
.param p1, "container" # Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 451
iget v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->type:I
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_moov:I
if-ne v0, v1, :cond_a
.line 452
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onMoovContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
goto :goto_27
.line 453
:cond_a
iget v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->type:I
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_moof:I
if-ne v0, v1, :cond_14
.line 454
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onMoofContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
goto :goto_27
.line 455
:cond_14
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v0
if-nez v0, :cond_27
.line 456
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->add(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.line 458
:cond_27
:goto_27
return-void
.end method
.method private onEmsgLeafAtomRead(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.registers 23
.param p1, "atom" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 592
move-object/from16 v0, p0
move-object/from16 v1, p1
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-eqz v2, :cond_88
array-length v2, v2
if-nez v2, :cond_d
goto/16 :goto_88
.line 596
:cond_d
const/16 v2, 0xc
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 597
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v10
.line 598
.local v10, "sampleSize":I
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readNullTerminatedString()Ljava/lang/String;
.line 599
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readNullTerminatedString()Ljava/lang/String;
.line 600
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v11
.line 601
.local v11, "timescale":J
nop
.line 602
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v3
const-wide/32 v5, 0xf4240
move-wide v7, v11
invoke-static/range {v3 .. v8}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v13
.line 605
.local v13, "presentationTimeDeltaUs":J
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
array-length v4, v3
const/4 v5, 0x0
const/4 v6, 0x0
:goto_32
if-ge v6, v4, :cond_3f
aget-object v7, v3, v6
.line 606
.local v7, "emsgTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 607
invoke-interface {v7, v1, v10}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 605
.end local v7 # "emsgTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-int/lit8 v6, v6, 0x1
goto :goto_32
.line 611
:cond_3f
iget-wide v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->segmentIndexEarliestPresentationTimeUs:J
const-wide v6, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v2, v6
if-eqz v4, :cond_78
.line 612
add-long/2addr v2, v13
.line 613
.local v2, "sampleTimeUs":J
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
if-eqz v4, :cond_55
.line 614
invoke-virtual {v4, v2, v3}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->adjustSampleTimestamp(J)J
move-result-wide v2
move-wide v15, v2
goto :goto_56
.line 613
:cond_55
move-wide v15, v2
.line 616
.end local v2 # "sampleTimeUs":J
.local v15, "sampleTimeUs":J
:goto_56
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
array-length v9, v2
const/4 v8, 0x0
:goto_5a
if-ge v8, v9, :cond_77
aget-object v17, v2, v8
.line 617
.local v17, "emsgTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
const/4 v6, 0x1
const/16 v18, 0x0
const/16 v19, 0x0
move-object/from16 v3, v17
move-wide v4, v15
move v7, v10
move/from16 v20, v8
move/from16 v8, v18
move/from16 v18, v9
move-object/from16 v9, v19
invoke-interface/range {v3 .. v9}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
.line 616
.end local v17 # "emsgTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-int/lit8 v8, v20, 0x1
move/from16 v9, v18
goto :goto_5a
.line 620
.end local v15 # "sampleTimeUs":J
:cond_77
goto :goto_87
.line 622
:cond_78
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/ArrayDeque;
new-instance v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;
invoke-direct {v3, v13, v14, v10}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;-><init>(JI)V
invoke-virtual {v2, v3}, Ljava/util/ArrayDeque;->addLast(Ljava/lang/Object;)V
.line 624
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
add-int/2addr v2, v10
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
.line 626
:goto_87
return-void
.line 593
.end local v10 # "sampleSize":I
.end local v11 # "timescale":J
.end local v13 # "presentationTimeDeltaUs":J
:cond_88
:goto_88
return-void
.end method
.method private onLeafAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;J)V
.registers 7
.param p1, "leaf" # Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.param p2, "inputPosition" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 438
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v0
if-nez v0, :cond_14
.line 439
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->add(Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;)V
goto :goto_44
.line 440
:cond_14
iget v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sidx:I
if-ne v0, v1, :cond_37
.line 441
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v0, p2, p3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSidx(Lcom/google/android/exoplayer2/util/ParsableByteArray;J)Landroid/util/Pair;
move-result-object v0
.line 442
.local v0, "result":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Long;Lcom/google/android/exoplayer2/extractor/ChunkIndex;>;"
iget-object v1, v0, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v1, Ljava/lang/Long;
invoke-virtual {v1}, Ljava/lang/Long;->longValue()J
move-result-wide v1
iput-wide v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->segmentIndexEarliestPresentationTimeUs:J
.line 443
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
iget-object v2, v0, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v2, Lcom/google/android/exoplayer2/extractor/SeekMap;
invoke-interface {v1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->seekMap(Lcom/google/android/exoplayer2/extractor/SeekMap;)V
.line 444
const/4 v1, 0x1
iput-boolean v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
.end local v0 # "result":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Long;Lcom/google/android/exoplayer2/extractor/ChunkIndex;>;"
goto :goto_43
.line 445
:cond_37
iget v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_emsg:I
if-ne v0, v1, :cond_43
.line 446
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onEmsgLeafAtomRead(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
goto :goto_44
.line 445
:cond_43
:goto_43
nop
.line 448
:goto_44
return-void
.end method
.method private onMoofContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.registers 10
.param p1, "moof" # Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 541
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
iget v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extendedTypeScratch:[B
invoke-static {p1, v0, v1, v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseMoof(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Landroid/util/SparseArray;I[B)V
.line 543
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
if-eqz v0, :cond_f
const/4 v0, 0x0
goto :goto_15
:cond_f
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
.line 544
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getDrmInitDataFromAtoms(Ljava/util/List;)Lcom/google/android/exoplayer2/drm/DrmInitData;
move-result-object v0
:goto_15
nop
.line 545
.local v0, "drmInitData":Lcom/google/android/exoplayer2/drm/DrmInitData;
if-eqz v0, :cond_2f
.line 546
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v1}, Landroid/util/SparseArray;->size()I
move-result v1
.line 547
.local v1, "trackCount":I
const/4 v2, 0x0
.local v2, "i":I
:goto_1f
if-ge v2, v1, :cond_2f
.line 548
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v3, v2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-virtual {v3, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->updateDrmInitData(Lcom/google/android/exoplayer2/drm/DrmInitData;)V
.line 547
add-int/lit8 v2, v2, 0x1
goto :goto_1f
.line 552
.end local v1 # "trackCount":I
.end local v2 # "i":I
:cond_2f
iget-wide v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingSeekTimeUs:J
const-wide v3, -0x7fffffffffffffffL # -4.9E-324
cmp-long v5, v1, v3
if-eqz v5, :cond_55
.line 553
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v1}, Landroid/util/SparseArray;->size()I
move-result v1
.line 554
.restart local v1 # "trackCount":I
const/4 v2, 0x0
.restart local v2 # "i":I
:goto_41
if-ge v2, v1, :cond_53
.line 555
iget-object v5, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v5, v2}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingSeekTimeUs:J
invoke-virtual {v5, v6, v7}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->seek(J)V
.line 554
add-int/lit8 v2, v2, 0x1
goto :goto_41
.line 557
.end local v2 # "i":I
:cond_53
iput-wide v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingSeekTimeUs:J
.line 559
.end local v1 # "trackCount":I
:cond_55
return-void
.end method
.method private onMoovContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.registers 23
.param p1, "moov" # Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 461
move-object/from16 v0, p0
move-object/from16 v1, p1
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
const/4 v4, 0x1
if-nez v2, :cond_b
const/4 v2, 0x1
goto :goto_c
:cond_b
const/4 v2, 0x0
:goto_c
const-string v5, "Unexpected moov box."
invoke-static {v2, v5}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(ZLjava/lang/Object;)V
.line 463
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
if-eqz v2, :cond_17
move-object v9, v2
goto :goto_1e
:cond_17
iget-object v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
.line 464
invoke-static {v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getDrmInitDataFromAtoms(Ljava/util/List;)Lcom/google/android/exoplayer2/drm/DrmInitData;
move-result-object v2
move-object v9, v2
:goto_1e
nop
.line 467
.local v9, "drmInitData":Lcom/google/android/exoplayer2/drm/DrmInitData;
sget v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mvex:I
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getContainerAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
move-result-object v2
.line 468
.local v2, "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
new-instance v5, Landroid/util/SparseArray;
invoke-direct {v5}, Landroid/util/SparseArray;-><init>()V
move-object v12, v5
.line 469
.local v12, "defaultSampleValuesArray":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;>;"
const-wide v5, -0x7fffffffffffffffL # -4.9E-324
.line 470
.local v5, "duration":J
iget-object v7, v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {v7}, Ljava/util/List;->size()I
move-result v13
.line 471
.local v13, "mvexChildrenSize":I
const/4 v7, 0x0
move-wide v14, v5
.end local v5 # "duration":J
.local v7, "i":I
.local v14, "duration":J
:goto_38
if-ge v7, v13, :cond_6e
.line 472
iget-object v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {v5, v7}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 473
.local v5, "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v8, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trex:I
if-ne v6, v8, :cond_5c
.line 474
iget-object v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v6}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTrex(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Landroid/util/Pair;
move-result-object v6
.line 475
.local v6, "trexData":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Integer;Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;>;"
iget-object v8, v6, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v8, Ljava/lang/Integer;
invoke-virtual {v8}, Ljava/lang/Integer;->intValue()I
move-result v8
iget-object v10, v6, Landroid/util/Pair;->second:Ljava/lang/Object;
invoke-virtual {v12, v8, v10}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
.end local v6 # "trexData":Landroid/util/Pair;, "Landroid/util/Pair<Ljava/lang/Integer;Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;>;"
goto :goto_6a
.line 476
:cond_5c
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v8, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mehd:I
if-ne v6, v8, :cond_6a
.line 477
iget-object v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v6}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseMehd(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
move-result-wide v10
move-wide v14, v10
.end local v14 # "duration":J
.local v10, "duration":J
goto :goto_6b
.line 476
.end local v10 # "duration":J
.restart local v14 # "duration":J
:cond_6a
:goto_6a
nop
.line 471
.end local v5 # "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
:goto_6b
add-int/lit8 v7, v7, 0x1
goto :goto_38
.line 482
.end local v7 # "i":I
:cond_6e
new-instance v5, Landroid/util/SparseArray;
invoke-direct {v5}, Landroid/util/SparseArray;-><init>()V
move-object v11, v5
.line 483
.local v11, "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
iget-object v5, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->containerChildren:Ljava/util/List;
invoke-interface {v5}, Ljava/util/List;->size()I
move-result v10
.line 484
.local v10, "moovContainerChildrenSize":I
const/4 v5, 0x0
move v7, v5
.restart local v7 # "i":I
:goto_7c
if-ge v7, v10, :cond_ca
.line 485
iget-object v5, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->containerChildren:Ljava/util/List;
invoke-interface {v5, v7}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
move-object v8, v5
check-cast v8, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.line 486
.local v8, "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget v5, v8, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->type:I
sget v6, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trak:I
if-ne v5, v6, :cond_bd
.line 487
sget v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mvhd:I
.line 491
invoke-virtual {v1, v5}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v6
iget v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
and-int/lit8 v5, v5, 0x10
if-eqz v5, :cond_9c
const/16 v16, 0x1
goto :goto_9e
:cond_9c
const/16 v16, 0x0
:goto_9e
const/16 v17, 0x0
.line 489
move-object v5, v8
move/from16 v18, v7
move-object/from16 v19, v8
.end local v7 # "i":I
.end local v8 # "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.local v18, "i":I
.local v19, "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
move-wide v7, v14
move/from16 v20, v10
.end local v10 # "moovContainerChildrenSize":I
.local v20, "moovContainerChildrenSize":I
move/from16 v10, v16
move-object v3, v11
.end local v11 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
.local v3, "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
move/from16 v11, v17
invoke-static/range {v5 .. v11}, Lcom/google/android/exoplayer2/extractor/mp4/AtomParsers;->parseTrak(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;JLcom/google/android/exoplayer2/drm/DrmInitData;ZZ)Lcom/google/android/exoplayer2/extractor/mp4/Track;
move-result-object v5
.line 488
invoke-virtual {v0, v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->modifyTrack(Lcom/google/android/exoplayer2/extractor/mp4/Track;)Lcom/google/android/exoplayer2/extractor/mp4/Track;
move-result-object v5
.line 496
.local v5, "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
if-eqz v5, :cond_c4
.line 497
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v3, v6, v5}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
goto :goto_c4
.line 486
.end local v3 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
.end local v5 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
.end local v18 # "i":I
.end local v19 # "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.end local v20 # "moovContainerChildrenSize":I
.restart local v7 # "i":I
.restart local v8 # "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.restart local v10 # "moovContainerChildrenSize":I
.restart local v11 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
:cond_bd
move/from16 v18, v7
move-object/from16 v19, v8
move/from16 v20, v10
move-object v3, v11
.line 484
.end local v7 # "i":I
.end local v8 # "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.end local v10 # "moovContainerChildrenSize":I
.end local v11 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
.restart local v3 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
.restart local v18 # "i":I
.restart local v20 # "moovContainerChildrenSize":I
:cond_c4
:goto_c4
add-int/lit8 v7, v18, 0x1
move-object v11, v3
move/from16 v10, v20
.end local v18 # "i":I
.restart local v7 # "i":I
goto :goto_7c
.end local v3 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
.end local v20 # "moovContainerChildrenSize":I
.restart local v10 # "moovContainerChildrenSize":I
.restart local v11 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
:cond_ca
move/from16 v18, v7
move/from16 v20, v10
move-object v3, v11
.line 502
.end local v7 # "i":I
.end local v10 # "moovContainerChildrenSize":I
.end local v11 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
.restart local v3 # "tracks":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/Track;>;"
.restart local v20 # "moovContainerChildrenSize":I
invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
move-result v5
.line 503
.local v5, "trackCount":I
iget-object v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v6}, Landroid/util/SparseArray;->size()I
move-result v6
if-nez v6, :cond_11c
.line 505
const/4 v4, 0x0
.local v4, "i":I
:goto_dc
if-ge v4, v5, :cond_112
.line 506
invoke-virtual {v3, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v6
check-cast v6, Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 507
.local v6, "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
new-instance v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
iget v10, v6, Lcom/google/android/exoplayer2/extractor/mp4/Track;->type:I
invoke-interface {v8, v4, v10}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v8
invoke-direct {v7, v8}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;-><init>(Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.line 508
.local v7, "trackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v8, v6, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-direct {v0, v12, v8}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getDefaultSampleValues(Landroid/util/SparseArray;I)Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
move-result-object v8
invoke-virtual {v7, v6, v8}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->init(Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;)V
.line 509
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
iget v10, v6, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v8, v10, v7}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
.line 510
iget-wide v10, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
move-object v8, v2
.end local v2 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.local v8, "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget-wide v1, v6, Lcom/google/android/exoplayer2/extractor/mp4/Track;->durationUs:J
invoke-static {v10, v11, v1, v2}, Ljava/lang/Math;->max(JJ)J
move-result-wide v1
iput-wide v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
.line 505
.end local v6 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
.end local v7 # "trackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
add-int/lit8 v4, v4, 0x1
move-object/from16 v1, p1
move-object v2, v8
goto :goto_dc
.end local v8 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.restart local v2 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
:cond_112
move-object v8, v2
.line 512
.end local v2 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.end local v4 # "i":I
.restart local v8 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->maybeInitExtraTracks()V
.line 513
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
invoke-interface {v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->endTracks()V
goto :goto_14c
.line 515
.end local v8 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.restart local v2 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
:cond_11c
move-object v8, v2
.end local v2 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.restart local v8 # "mvex":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v1}, Landroid/util/SparseArray;->size()I
move-result v1
if-ne v1, v5, :cond_128
const/16 v16, 0x1
goto :goto_12a
:cond_128
const/16 v16, 0x0
:goto_12a
invoke-static/range {v16 .. v16}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 516
const/4 v1, 0x0
.local v1, "i":I
:goto_12e
if-ge v1, v5, :cond_14c
.line 517
invoke-virtual {v3, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 518
.local v2, "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
iget v6, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
.line 519
invoke-virtual {v4, v6}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v6, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
.line 520
invoke-direct {v0, v12, v6}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getDefaultSampleValues(Landroid/util/SparseArray;I)Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
move-result-object v6
invoke-virtual {v4, v2, v6}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->init(Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;)V
.line 516
.end local v2 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
add-int/lit8 v1, v1, 0x1
goto :goto_12e
.line 523
.end local v1 # "i":I
:cond_14c
:goto_14c
return-void
.end method
.method private outputPendingMetadataSamples(J)V
.registers 18
.param p1, "sampleTimeUs" # J
move-object v0, p0
.line 1308
:goto_1
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/ArrayDeque;
invoke-virtual {v1}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v1
if-nez v1, :cond_3c
.line 1309
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/ArrayDeque;
invoke-virtual {v1}, Ljava/util/ArrayDeque;->removeFirst()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;
.line 1310
.local v1, "sampleInfo":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
iget v3, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->size:I
sub-int/2addr v2, v3
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
.line 1311
iget-wide v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->presentationTimeDeltaUs:J
add-long v2, p1, v2
.line 1312
.local v2, "metadataTimeUs":J
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
if-eqz v4, :cond_24
.line 1313
invoke-virtual {v4, v2, v3}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->adjustSampleTimestamp(J)J
move-result-wide v2
.line 1315
:cond_24
iget-object v11, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->emsgTrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
array-length v12, v11
const/4 v4, 0x0
const/4 v13, 0x0
:goto_29
if-ge v13, v12, :cond_3b
aget-object v14, v11, v13
.line 1316
.local v14, "emsgTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
const/4 v7, 0x1
iget v8, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->size:I
iget v9, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
const/4 v10, 0x0
move-object v4, v14
move-wide v5, v2
invoke-interface/range {v4 .. v10}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
.line 1315
.end local v14 # "emsgTrackOutput":Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-int/lit8 v13, v13, 0x1
goto :goto_29
.line 1323
.end local v1 # "sampleInfo":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;
.end local v2 # "metadataTimeUs":J
:cond_3b
goto :goto_1
.line 1324
:cond_3c
return-void
.end method
.method private static parseMehd(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
.registers 5
.param p0, "mehd" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 647
const/16 v0, 0x8
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 648
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 649
.local v0, "fullAtom":I
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v1
.line 650
.local v1, "version":I
if-nez v1, :cond_14
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v2
goto :goto_18
:cond_14
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v2
:goto_18
return-wide v2
.end method
.method private static parseMoof(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Landroid/util/SparseArray;I[B)V
.registers 9
.param p0, "moof" # Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.param p2, "flags" # I
.param p3, "extendedTypeScratch" # [B
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;",
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;I[B)V"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 655
.local p1, "trackBundleArray":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;>;"
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->containerChildren:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
.line 656
.local v0, "moofContainerChildrenSize":I
const/4 v1, 0x0
.local v1, "i":I
:goto_7
if-ge v1, v0, :cond_1d
.line 657
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->containerChildren:Ljava/util/List;
invoke-interface {v2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.line 659
.local v2, "child":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget v3, v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->type:I
sget v4, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_traf:I
if-ne v3, v4, :cond_1a
.line 660
invoke-static {v2, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTraf(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Landroid/util/SparseArray;I[B)V
.line 656
.end local v2 # "child":Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
:cond_1a
add-int/lit8 v1, v1, 0x1
goto :goto_7
.line 663
.end local v1 # "i":I
:cond_1d
return-void
.end method
.method private static parseSaio(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 10
.param p0, "saio" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "out" # Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 794
const/16 v0, 0x8
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 795
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 796
.local v1, "fullAtom":I
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v2
.line 797
.local v2, "flags":I
and-int/lit8 v3, v2, 0x1
const/4 v4, 0x1
if-ne v3, v4, :cond_15
.line 798
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 801
:cond_15
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v0
.line 802
.local v0, "entryCount":I
if-ne v0, v4, :cond_30
.line 807
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v3
.line 808
.local v3, "version":I
iget-wide v4, p1, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
if-nez v3, :cond_28
.line 809
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v6
goto :goto_2c
:cond_28
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v6
:goto_2c
add-long/2addr v4, v6
iput-wide v4, p1, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 810
return-void
.line 804
.end local v3 # "version":I
:cond_30
new-instance v3, Lcom/google/android/exoplayer2/ParserException;
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "Unexpected saio entry count: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-direct {v3, v4}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v3
.end method
.method private static parseSaiz(Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 15
.param p0, "encryptionBox" # Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
.param p1, "saiz" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p2, "out" # Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 757
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->perSampleIvSize:I
.line 758
.local v0, "vectorSize":I
const/16 v1, 0x8
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 759
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v2
.line 760
.local v2, "fullAtom":I
invoke-static {v2}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v3
.line 761
.local v3, "flags":I
and-int/lit8 v4, v3, 0x1
const/4 v5, 0x1
if-ne v4, v5, :cond_17
.line 762
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 764
:cond_17
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v1
.line 766
.local v1, "defaultSampleInfoSize":I
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v4
.line 767
.local v4, "sampleCount":I
iget v6, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
if-ne v4, v6, :cond_4c
.line 771
const/4 v6, 0x0
.line 772
.local v6, "totalSize":I
const/4 v7, 0x0
if-nez v1, :cond_3c
.line 773
iget-object v8, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
.line 774
.local v8, "sampleHasSubsampleEncryptionTable":[Z
const/4 v9, 0x0
.local v9, "i":I
:goto_2a
if-ge v9, v4, :cond_3b
.line 775
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v10
.line 776
.local v10, "sampleInfoSize":I
add-int/2addr v6, v10
.line 777
if-le v10, v0, :cond_35
const/4 v11, 0x1
goto :goto_36
:cond_35
const/4 v11, 0x0
:goto_36
aput-boolean v11, v8, v9
.line 774
.end local v10 # "sampleInfoSize":I
add-int/lit8 v9, v9, 0x1
goto :goto_2a
.line 779
.end local v8 # "sampleHasSubsampleEncryptionTable":[Z
.end local v9 # "i":I
:cond_3b
goto :goto_48
.line 780
:cond_3c
if-le v1, v0, :cond_3f
goto :goto_40
:cond_3f
const/4 v5, 0x0
.line 781
.local v5, "subsampleEncryption":Z
:goto_40
mul-int v8, v1, v4
add-int/2addr v6, v8
.line 782
iget-object v8, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
invoke-static {v8, v7, v4, v5}, Ljava/util/Arrays;->fill([ZIIZ)V
.line 784
.end local v5 # "subsampleEncryption":Z
:goto_48
invoke-virtual {p2, v6}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->initEncryptionData(I)V
.line 785
return-void
.line 768
.end local v6 # "totalSize":I
:cond_4c
new-instance v5, Lcom/google/android/exoplayer2/ParserException;
new-instance v6, Ljava/lang/StringBuilder;
invoke-direct {v6}, Ljava/lang/StringBuilder;-><init>()V
const-string v7, "Length mismatch: "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v7, ", "
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v7, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
invoke-direct {v5, v6}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
goto :goto_6e
:goto_6d
throw v5
:goto_6e
goto :goto_6d
.end method
.method private static parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;ILcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 10
.param p0, "senc" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "offset" # I
.param p2, "out" # Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 989
add-int/lit8 v0, p1, 0x8
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 990
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 991
.local v0, "fullAtom":I
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v1
.line 993
.local v1, "flags":I
and-int/lit8 v2, v1, 0x1
if-nez v2, :cond_52
.line 998
and-int/lit8 v2, v1, 0x2
const/4 v3, 0x0
if-eqz v2, :cond_18
const/4 v2, 0x1
goto :goto_19
:cond_18
const/4 v2, 0x0
.line 999
.local v2, "subsampleEncryption":Z
:goto_19
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v4
.line 1000
.local v4, "sampleCount":I
iget v5, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
if-ne v4, v5, :cond_31
.line 1004
iget-object v5, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
invoke-static {v5, v3, v4, v2}, Ljava/util/Arrays;->fill([ZIIZ)V
.line 1005
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v3
invoke-virtual {p2, v3}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->initEncryptionData(I)V
.line 1006
invoke-virtual {p2, p0}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->fillEncryptionData(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.line 1007
return-void
.line 1001
:cond_31
new-instance v3, Lcom/google/android/exoplayer2/ParserException;
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
const-string v6, "Length mismatch: "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v6, ", "
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v6, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v5
invoke-direct {v3, v5}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v3
.line 995
.end local v2 # "subsampleEncryption":Z
.end local v4 # "sampleCount":I
:cond_52
new-instance v2, Lcom/google/android/exoplayer2/ParserException;
const-string v3, "Overriding TrackEncryptionBox parameters is unsupported."
invoke-direct {v2, v3}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v2
.end method
.method private static parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 3
.param p0, "senc" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "out" # Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 984
const/4 v0, 0x0
invoke-static {p0, v0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;ILcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 985
return-void
.end method
.method private static parseSgpd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/util/ParsableByteArray;Ljava/lang/String;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 26
.param p0, "sbgp" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "sgpd" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p2, "schemeType" # Ljava/lang/String;
.param p3, "out" # Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 1011
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p3
const/16 v3, 0x8
invoke-virtual {v0, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1012
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v4
.line 1013
.local v4, "sbgpFullAtom":I
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v5
sget v6, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->SAMPLE_GROUP_TYPE_seig:I
if-eq v5, v6, :cond_18
.line 1015
return-void
.line 1017
:cond_18
invoke-static {v4}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v5
const/4 v6, 0x4
const/4 v7, 0x1
if-ne v5, v7, :cond_23
.line 1018
invoke-virtual {v0, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 1020
:cond_23
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v5
if-ne v5, v7, :cond_be
.line 1024
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1025
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v3
.line 1026
.local v3, "sgpdFullAtom":I
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v5
sget v8, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->SAMPLE_GROUP_TYPE_seig:I
if-eq v5, v8, :cond_39
.line 1028
return-void
.line 1030
:cond_39
invoke-static {v3}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v5
.line 1031
.local v5, "sgpdVersion":I
if-ne v5, v7, :cond_52
.line 1032
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v8
const-wide/16 v10, 0x0
cmp-long v12, v8, v10
if-eqz v12, :cond_4a
goto :goto_58
.line 1033
:cond_4a
new-instance v6, Lcom/google/android/exoplayer2/ParserException;
const-string v7, "Variable length description in sgpd found (unsupported)"
invoke-direct {v6, v7}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v6
.line 1035
:cond_52
const/4 v8, 0x2
if-lt v5, v8, :cond_58
.line 1036
invoke-virtual {v1, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 1038
:cond_58
:goto_58
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v8
const-wide/16 v10, 0x1
cmp-long v12, v8, v10
if-nez v12, :cond_b6
.line 1042
invoke-virtual {v1, v7}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 1043
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v8
.line 1044
.local v8, "patternByte":I
and-int/lit16 v9, v8, 0xf0
shr-int/lit8 v6, v9, 0x4
.line 1045
.local v6, "cryptByteBlock":I
and-int/lit8 v9, v8, 0xf
.line 1046
.local v9, "skipByteBlock":I
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v10
const/4 v11, 0x0
if-ne v10, v7, :cond_78
const/4 v10, 0x1
goto :goto_79
:cond_78
const/4 v10, 0x0
:goto_79
move/from16 v18, v10
.line 1047
.local v18, "isProtected":Z
if-nez v18, :cond_7e
.line 1048
return-void
.line 1050
:cond_7e
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v19
.line 1051
.local v19, "perSampleIvSize":I
const/16 v10, 0x10
new-array v15, v10, [B
.line 1052
.local v15, "keyId":[B
array-length v10, v15
invoke-virtual {v1, v15, v11, v10}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
.line 1053
const/4 v10, 0x0
.line 1054
.local v10, "constantIv":[B
if-eqz v18, :cond_9b
if-nez v19, :cond_9b
.line 1055
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v12
.line 1056
.local v12, "constantIvSize":I
new-array v10, v12, [B
.line 1057
invoke-virtual {v1, v10, v11, v12}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
move-object/from16 v20, v10
goto :goto_9d
.line 1059
.end local v12 # "constantIvSize":I
:cond_9b
move-object/from16 v20, v10
.end local v10 # "constantIv":[B
.local v20, "constantIv":[B
:goto_9d
iput-boolean v7, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->definesEncryptionData:Z
.line 1060
new-instance v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
move-object v10, v7
move/from16 v11, v18
move-object/from16 v12, p2
move/from16 v13, v19
move-object v14, v15
move-object/from16 v21, v15
.end local v15 # "keyId":[B
.local v21, "keyId":[B
move v15, v6
move/from16 v16, v9
move-object/from16 v17, v20
invoke-direct/range {v10 .. v17}, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;-><init>(ZLjava/lang/String;I[BII[B)V
iput-object v7, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
.line 1062
return-void
.line 1039
.end local v6 # "cryptByteBlock":I
.end local v8 # "patternByte":I
.end local v9 # "skipByteBlock":I
.end local v18 # "isProtected":Z
.end local v19 # "perSampleIvSize":I
.end local v20 # "constantIv":[B
.end local v21 # "keyId":[B
:cond_b6
new-instance v6, Lcom/google/android/exoplayer2/ParserException;
const-string v7, "Entry count in sgpd != 1 (unsupported)."
invoke-direct {v6, v7}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v6
.line 1021
.end local v3 # "sgpdFullAtom":I
.end local v5 # "sgpdVersion":I
:cond_be
new-instance v3, Lcom/google/android/exoplayer2/ParserException;
const-string v5, "Entry count in sbgp != 1 (unsupported)."
invoke-direct {v3, v5}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v3
.end method
.method private static parseSidx(Lcom/google/android/exoplayer2/util/ParsableByteArray;J)Landroid/util/Pair;
.registers 34
.param p0, "atom" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "inputPosition" # J
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/util/ParsableByteArray;",
"J)",
"Landroid/util/Pair<",
"Ljava/lang/Long;",
"Lcom/google/android/exoplayer2/extractor/ChunkIndex;",
">;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 1074
move-object/from16 v0, p0
const/16 v1, 0x8
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1075
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 1076
.local v1, "fullAtom":I
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v2
.line 1078
.local v2, "version":I
const/4 v3, 0x4
invoke-virtual {v0, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 1079
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v10
.line 1081
.local v10, "timescale":J
move-wide/from16 v4, p1
.line 1082
.local v4, "offset":J
if-nez v2, :cond_27
.line 1083
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v6
.line 1084
.local v6, "earliestPresentationTime":J
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v8
add-long/2addr v4, v8
move-wide v12, v4
move-wide v14, v6
goto :goto_32
.line 1086
.end local v6 # "earliestPresentationTime":J
:cond_27
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v6
.line 1087
.restart local v6 # "earliestPresentationTime":J
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v8
add-long/2addr v4, v8
move-wide v12, v4
move-wide v14, v6
.line 1089
.end local v4 # "offset":J
.end local v6 # "earliestPresentationTime":J
.local v12, "offset":J
.local v14, "earliestPresentationTime":J
:goto_32
const-wide/32 v6, 0xf4240
move-wide v4, v14
move-wide v8, v10
invoke-static/range {v4 .. v9}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v16
.line 1092
.local v16, "earliestPresentationTimeUs":J
const/4 v4, 0x2
invoke-virtual {v0, v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 1094
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v8
.line 1095
.local v8, "referenceCount":I
new-array v9, v8, [I
.line 1096
.local v9, "sizes":[I
new-array v6, v8, [J
.line 1097
.local v6, "offsets":[J
new-array v7, v8, [J
.line 1098
.local v7, "durationsUs":[J
new-array v4, v8, [J
.line 1100
.local v4, "timesUs":[J
move-wide/from16 v18, v14
.line 1101
.local v18, "time":J
move-wide/from16 v20, v16
.line 1102
.local v20, "timeUs":J
const/4 v5, 0x0
move-wide/from16 v22, v20
move-wide/from16 v20, v18
move-wide/from16 v18, v12
move v12, v5
.local v12, "i":I
.local v18, "offset":J
.local v20, "time":J
.local v22, "timeUs":J
:goto_57
if-ge v12, v8, :cond_b1
.line 1103
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v13
.line 1105
.local v13, "firstInt":I
const/high16 v5, -0x80000000
and-int v24, v13, v5
.line 1106
.local v24, "type":I
if-nez v24, :cond_a8
.line 1109
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v25
.line 1111
.local v25, "referenceDuration":J
const v5, 0x7fffffff
and-int/2addr v5, v13
aput v5, v9, v12
.line 1112
aput-wide v18, v6, v12
.line 1116
aput-wide v22, v4, v12
.line 1117
add-long v20, v20, v25
.line 1118
const-wide/32 v27, 0xf4240
move-object v3, v4
.end local v4 # "timesUs":[J
.local v3, "timesUs":[J
move-wide/from16 v4, v20
move/from16 v29, v1
move/from16 v30, v2
move-object v1, v6
move-object v2, v7
.end local v6 # "offsets":[J
.end local v7 # "durationsUs":[J
.local v1, "offsets":[J
.local v2, "durationsUs":[J
.local v29, "fullAtom":I
.local v30, "version":I
move-wide/from16 v6, v27
move/from16 v27, v8
move/from16 v28, v13
move-object v13, v9
.end local v8 # "referenceCount":I
.end local v9 # "sizes":[I
.local v13, "sizes":[I
.local v27, "referenceCount":I
.local v28, "firstInt":I
move-wide v8, v10
invoke-static/range {v4 .. v9}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v22
.line 1119
aget-wide v4, v3, v12
sub-long v4, v22, v4
aput-wide v4, v2, v12
.line 1121
const/4 v4, 0x4
invoke-virtual {v0, v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 1122
aget v5, v13, v12
int-to-long v5, v5
add-long v18, v18, v5
.line 1102
.end local v24 # "type":I
.end local v25 # "referenceDuration":J
.end local v28 # "firstInt":I
add-int/lit8 v12, v12, 0x1
move-object v6, v1
move-object v7, v2
move-object v4, v3
move-object v9, v13
move/from16 v8, v27
move/from16 v1, v29
move/from16 v2, v30
const/4 v3, 0x4
goto :goto_57
.line 1107
.end local v3 # "timesUs":[J
.end local v27 # "referenceCount":I
.end local v29 # "fullAtom":I
.end local v30 # "version":I
.local v1, "fullAtom":I
.local v2, "version":I
.restart local v4 # "timesUs":[J
.restart local v6 # "offsets":[J
.restart local v7 # "durationsUs":[J
.restart local v8 # "referenceCount":I
.restart local v9 # "sizes":[I
.local v13, "firstInt":I
.restart local v24 # "type":I
:cond_a8
move-object v3, v4
.end local v4 # "timesUs":[J
.restart local v3 # "timesUs":[J
new-instance v4, Lcom/google/android/exoplayer2/ParserException;
const-string v5, "Unhandled indirect reference"
invoke-direct {v4, v5}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v4
.line 1102
.end local v3 # "timesUs":[J
.end local v13 # "firstInt":I
.end local v24 # "type":I
.restart local v4 # "timesUs":[J
:cond_b1
move/from16 v29, v1
move/from16 v30, v2
move-object v3, v4
move-object v1, v6
move-object v2, v7
move-object v13, v9
.line 1125
.end local v4 # "timesUs":[J
.end local v6 # "offsets":[J
.end local v7 # "durationsUs":[J
.end local v9 # "sizes":[I
.end local v12 # "i":I
.local v1, "offsets":[J
.local v2, "durationsUs":[J
.restart local v3 # "timesUs":[J
.local v13, "sizes":[I
.restart local v29 # "fullAtom":I
.restart local v30 # "version":I
invoke-static/range {v16 .. v17}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v4
new-instance v5, Lcom/google/android/exoplayer2/extractor/ChunkIndex;
invoke-direct {v5, v13, v1, v2, v3}, Lcom/google/android/exoplayer2/extractor/ChunkIndex;-><init>([I[J[J[J)V
invoke-static {v4, v5}, Landroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;
move-result-object v4
return-object v4
.end method
.method private static parseTfdt(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
.registers 5
.param p0, "tfdt" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 871
const/16 v0, 0x8
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 872
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 873
.local v0, "fullAtom":I
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v1
.line 874
.local v1, "version":I
const/4 v2, 0x1
if-ne v1, v2, :cond_15
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v2
goto :goto_19
:cond_15
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v2
:goto_19
return-wide v2
.end method
.method private static parseTfhd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Landroid/util/SparseArray;)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.registers 13
.param p0, "tfhd" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/util/ParsableByteArray;",
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;)",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;"
}
.end annotation
.line 824
.local p1, "trackBundles":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;>;"
const/16 v0, 0x8
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 825
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 826
.local v0, "fullAtom":I
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v1
.line 827
.local v1, "atomFlags":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v2
.line 828
.local v2, "trackId":I
invoke-static {p1, v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getTrackBundle(Landroid/util/SparseArray;I)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
move-result-object v3
.line 829
.local v3, "trackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
if-nez v3, :cond_19
.line 830
const/4 v4, 0x0
return-object v4
.line 832
:cond_19
and-int/lit8 v4, v1, 0x1
if-eqz v4, :cond_29
.line 833
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v4
.line 834
.local v4, "baseDataPosition":J
iget-object v6, v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iput-wide v4, v6, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->dataPosition:J
.line 835
iget-object v6, v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iput-wide v4, v6, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 838
.end local v4 # "baseDataPosition":J
:cond_29
iget-object v4, v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->defaultSampleValues:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.line 839
.local v4, "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
and-int/lit8 v5, v1, 0x2
if-eqz v5, :cond_36
.line 841
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v5
add-int/lit8 v5, v5, -0x1
goto :goto_38
:cond_36
iget v5, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
.line 842
.local v5, "defaultSampleDescriptionIndex":I
:goto_38
and-int/lit8 v6, v1, 0x8
if-eqz v6, :cond_41
.line 843
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v6
goto :goto_43
:cond_41
iget v6, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->duration:I
.line 844
.local v6, "defaultSampleDuration":I
:goto_43
and-int/lit8 v7, v1, 0x10
if-eqz v7, :cond_4c
.line 845
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v7
goto :goto_4e
:cond_4c
iget v7, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->size:I
.line 846
.local v7, "defaultSampleSize":I
:goto_4e
and-int/lit8 v8, v1, 0x20
if-eqz v8, :cond_57
.line 847
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v8
goto :goto_59
:cond_57
iget v8, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->flags:I
.line 848
.local v8, "defaultSampleFlags":I
:goto_59
iget-object v9, v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
new-instance v10, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-direct {v10, v5, v6, v7, v8}, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;-><init>(IIII)V
iput-object v10, v9, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.line 850
return-object v3
.end method
.method private static parseTraf(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Landroid/util/SparseArray;I[B)V
.registers 22
.param p0, "traf" # Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.param p2, "flags" # I
.param p3, "extendedTypeScratch" # [B
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;",
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;I[B)V"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 670
.local p1, "trackBundleArray":Landroid/util/SparseArray;, "Landroid/util/SparseArray<Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;>;"
move-object/from16 v0, p0
move/from16 v1, p2
sget v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfhd:I
invoke-virtual {v0, v2}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v2
.line 671
.local v2, "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget-object v3, v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
move-object/from16 v4, p1
invoke-static {v3, v4}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTfhd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Landroid/util/SparseArray;)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
move-result-object v3
.line 672
.local v3, "trackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
if-nez v3, :cond_15
.line 673
return-void
.line 676
:cond_15
iget-object v5, v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 677
.local v5, "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-wide v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->nextFragmentDecodeTime:J
.line 678
.local v6, "decodeTime":J
invoke-virtual {v3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->reset()V
.line 680
sget v8, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfdt:I
invoke-virtual {v0, v8}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v8
.line 681
.local v8, "tfdtAtom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
if-eqz v8, :cond_34
and-int/lit8 v9, v1, 0x2
if-nez v9, :cond_34
.line 682
sget v9, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfdt:I
invoke-virtual {v0, v9}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v9
iget-object v9, v9, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v9}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTfdt(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
move-result-wide v6
.line 685
:cond_34
invoke-static {v0, v3, v6, v7, v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTruns(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;JI)V
.line 687
iget-object v9, v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-object v10, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
iget v10, v10, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
.line 688
invoke-virtual {v9, v10}, Lcom/google/android/exoplayer2/extractor/mp4/Track;->getSampleDescriptionEncryptionBox(I)Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
move-result-object v9
.line 690
.local v9, "encryptionBox":Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
sget v10, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_saiz:I
invoke-virtual {v0, v10}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v10
.line 691
.local v10, "saiz":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
if-eqz v10, :cond_4e
.line 692
iget-object v11, v10, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v9, v11, v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSaiz(Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 695
:cond_4e
sget v11, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_saio:I
invoke-virtual {v0, v11}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v11
.line 696
.local v11, "saio":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
if-eqz v11, :cond_5b
.line 697
iget-object v12, v11, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v12, v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSaio(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 700
:cond_5b
sget v12, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_senc:I
invoke-virtual {v0, v12}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v12
.line 701
.local v12, "senc":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
if-eqz v12, :cond_68
.line 702
iget-object v13, v12, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v13, v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 705
:cond_68
sget v13, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sbgp:I
invoke-virtual {v0, v13}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v13
.line 706
.local v13, "sbgp":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
sget v14, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sgpd:I
invoke-virtual {v0, v14}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v14
.line 707
.local v14, "sgpd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
if-eqz v13, :cond_8a
if-eqz v14, :cond_8a
.line 708
iget-object v15, v13, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, v14, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
if-eqz v9, :cond_83
move-object/from16 v16, v2
.end local v2 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.local v16, "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget-object v2, v9, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->schemeType:Ljava/lang/String;
goto :goto_86
.end local v16 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.restart local v2 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
:cond_83
move-object/from16 v16, v2
.end local v2 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.restart local v16 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
const/4 v2, 0x0
:goto_86
invoke-static {v15, v1, v2, v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSgpd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/util/ParsableByteArray;Ljava/lang/String;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
goto :goto_8c
.line 707
.end local v16 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.restart local v2 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
:cond_8a
move-object/from16 v16, v2
.line 712
.end local v2 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.restart local v16 # "tfhd":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
:goto_8c
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
.line 713
.local v1, "leafChildrenSize":I
const/4 v2, 0x0
.local v2, "i":I
:goto_93
if-ge v2, v1, :cond_b6
.line 714
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {v15, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v15
check-cast v15, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 715
.local v15, "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget v0, v15, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
move/from16 v17, v1
.end local v1 # "leafChildrenSize":I
.local v17, "leafChildrenSize":I
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_uuid:I
if-ne v0, v1, :cond_ad
.line 716
iget-object v0, v15, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
move-object/from16 v1, p3
invoke-static {v0, v5, v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseUuid(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;[B)V
goto :goto_af
.line 715
:cond_ad
move-object/from16 v1, p3
.line 713
.end local v15 # "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
:goto_af
add-int/lit8 v2, v2, 0x1
move-object/from16 v0, p0
move/from16 v1, v17
goto :goto_93
.line 719
.end local v2 # "i":I
.end local v17 # "leafChildrenSize":I
.restart local v1 # "leafChildrenSize":I
:cond_b6
return-void
.end method
.method private static parseTrex(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Landroid/util/Pair;
.registers 8
.param p0, "trex" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/util/ParsableByteArray;",
")",
"Landroid/util/Pair<",
"Ljava/lang/Integer;",
"Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;",
">;"
}
.end annotation
.line 632
const/16 v0, 0xc
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 633
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 634
.local v0, "trackId":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
add-int/lit8 v1, v1, -0x1
.line 635
.local v1, "defaultSampleDescriptionIndex":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v2
.line 636
.local v2, "defaultSampleDuration":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v3
.line 637
.local v3, "defaultSampleSize":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v4
.line 639
.local v4, "defaultSampleFlags":I
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v5
new-instance v6, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-direct {v6, v1, v2, v3, v4}, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;-><init>(IIII)V
invoke-static {v5, v6}, Landroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;
move-result-object v5
return-object v5
.end method
.method private static parseTrun(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;IJILcom/google/android/exoplayer2/util/ParsableByteArray;I)I
.registers 45
.param p0, "trackBundle" # Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.param p1, "index" # I
.param p2, "decodeTime" # J
.param p4, "flags" # I
.param p5, "trun" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p6, "trackRunStart" # I
.line 890
move-object/from16 v0, p0
const/16 v1, 0x8
move-object/from16 v2, p5
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 891
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 892
.local v1, "fullAtom":I
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v3
.line 894
.local v3, "atomFlags":I
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 895
.local v4, "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 896
.local v5, "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-object v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.line 898
.local v6, "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
iget-object v7, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunLength:[I
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v8
aput v8, v7, p1
.line 899
iget-object v7, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunDataPosition:[J
iget-wide v8, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->dataPosition:J
aput-wide v8, v7, p1
.line 900
and-int/lit8 v7, v3, 0x1
if-eqz v7, :cond_35
.line 901
iget-object v7, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunDataPosition:[J
aget-wide v8, v7, p1
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v10
int-to-long v10, v10
add-long/2addr v8, v10
aput-wide v8, v7, p1
.line 904
:cond_35
and-int/lit8 v7, v3, 0x4
const/4 v9, 0x1
if-eqz v7, :cond_3c
const/4 v7, 0x1
goto :goto_3d
:cond_3c
const/4 v7, 0x0
.line 905
.local v7, "firstSampleFlagsPresent":Z
:goto_3d
iget v10, v6, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->flags:I
.line 906
.local v10, "firstSampleFlags":I
if-eqz v7, :cond_45
.line 907
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v10
.line 910
:cond_45
and-int/lit16 v11, v3, 0x100
if-eqz v11, :cond_4b
const/4 v11, 0x1
goto :goto_4c
:cond_4b
const/4 v11, 0x0
.line 911
.local v11, "sampleDurationsPresent":Z
:goto_4c
and-int/lit16 v12, v3, 0x200
if-eqz v12, :cond_52
const/4 v12, 0x1
goto :goto_53
:cond_52
const/4 v12, 0x0
.line 912
.local v12, "sampleSizesPresent":Z
:goto_53
and-int/lit16 v13, v3, 0x400
if-eqz v13, :cond_59
const/4 v13, 0x1
goto :goto_5a
:cond_59
const/4 v13, 0x0
.line 913
.local v13, "sampleFlagsPresent":Z
:goto_5a
and-int/lit16 v14, v3, 0x800
if-eqz v14, :cond_60
const/4 v14, 0x1
goto :goto_61
:cond_60
const/4 v14, 0x0
.line 918
.local v14, "sampleCompositionTimeOffsetsPresent":Z
:goto_61
const-wide/16 v15, 0x0
.line 922
.local v15, "edtsOffset":J
iget-object v8, v4, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListDurations:[J
if-eqz v8, :cond_89
iget-object v8, v4, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListDurations:[J
array-length v8, v8
if-ne v8, v9, :cond_89
iget-object v8, v4, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListDurations:[J
const/16 v17, 0x0
aget-wide v18, v8, v17
const-wide/16 v20, 0x0
cmp-long v8, v18, v20
if-nez v8, :cond_89
.line 924
iget-object v8, v4, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListMediaTimes:[J
aget-wide v18, v8, v17
const-wide/16 v20, 0x3e8
move/from16 v24, v10
.end local v10 # "firstSampleFlags":I
.local v24, "firstSampleFlags":I
iget-wide v9, v4, Lcom/google/android/exoplayer2/extractor/mp4/Track;->timescale:J
move-wide/from16 v22, v9
invoke-static/range {v18 .. v23}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v15
goto :goto_8b
.line 922
.end local v24 # "firstSampleFlags":I
.restart local v10 # "firstSampleFlags":I
:cond_89
move/from16 v24, v10
.line 927
.end local v10 # "firstSampleFlags":I
.restart local v24 # "firstSampleFlags":I
:goto_8b
iget-object v9, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleSizeTable:[I
.line 928
.local v9, "sampleSizeTable":[I
iget-object v10, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCompositionTimeOffsetTable:[I
.line 929
.local v10, "sampleCompositionTimeOffsetTable":[I
iget-object v8, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleDecodingTimeTable:[J
.line 930
.local v8, "sampleDecodingTimeTable":[J
iget-object v0, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleIsSyncFrameTable:[Z
.line 932
.local v0, "sampleIsSyncFrameTable":[Z
move/from16 v19, v1
.end local v1 # "fullAtom":I
.local v19, "fullAtom":I
iget v1, v4, Lcom/google/android/exoplayer2/extractor/mp4/Track;->type:I
const/4 v2, 0x2
if-ne v1, v2, :cond_a0
and-int/lit8 v1, p4, 0x1
if-eqz v1, :cond_a0
const/4 v1, 0x1
goto :goto_a1
:cond_a0
const/4 v1, 0x0
.line 935
.local v1, "workaroundEveryVideoFrameIsSyncFrame":Z
:goto_a1
iget-object v2, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunLength:[I
aget v2, v2, p1
add-int v2, p6, v2
.line 936
.local v2, "trackRunEnd":I
move-object/from16 v20, v0
move/from16 v21, v1
.end local v0 # "sampleIsSyncFrameTable":[Z
.end local v1 # "workaroundEveryVideoFrameIsSyncFrame":Z
.local v20, "sampleIsSyncFrameTable":[Z
.local v21, "workaroundEveryVideoFrameIsSyncFrame":Z
iget-wide v0, v4, Lcom/google/android/exoplayer2/extractor/mp4/Track;->timescale:J
.line 937
.local v0, "timescale":J
if-lez p1, :cond_b6
move/from16 v22, v3
move-object/from16 v23, v4
.end local v3 # "atomFlags":I
.end local v4 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
.local v22, "atomFlags":I
.local v23, "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-wide v3, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->nextFragmentDecodeTime:J
goto :goto_bc
.end local v22 # "atomFlags":I
.end local v23 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
.restart local v3 # "atomFlags":I
.restart local v4 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
:cond_b6
move/from16 v22, v3
move-object/from16 v23, v4
.end local v3 # "atomFlags":I
.end local v4 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
.restart local v22 # "atomFlags":I
.restart local v23 # "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
move-wide/from16 v3, p2
.line 938
.local v3, "cumulativeTime":J
:goto_bc
move/from16 v25, p6
move-object/from16 v31, v5
move/from16 v5, v25
.local v5, "i":I
.local v31, "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
:goto_c2
if-ge v5, v2, :cond_152
.line 940
if-eqz v11, :cond_cd
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v25
move/from16 v32, v11
goto :goto_d3
:cond_cd
move/from16 v32, v11
.end local v11 # "sampleDurationsPresent":Z
.local v32, "sampleDurationsPresent":Z
iget v11, v6, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->duration:I
move/from16 v25, v11
:goto_d3
move/from16 v11, v25
.line 942
.local v11, "sampleDuration":I
if-eqz v12, :cond_de
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v25
move/from16 v33, v12
goto :goto_e4
:cond_de
move/from16 v33, v12
.end local v12 # "sampleSizesPresent":Z
.local v33, "sampleSizesPresent":Z
iget v12, v6, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->size:I
move/from16 v25, v12
:goto_e4
move/from16 v12, v25
.line 943
.local v12, "sampleSize":I
if-nez v5, :cond_ef
if-eqz v7, :cond_ef
move/from16 v34, v7
move/from16 v25, v24
goto :goto_fe
:cond_ef
if-eqz v13, :cond_f8
.line 944
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v25
move/from16 v34, v7
goto :goto_fe
:cond_f8
move/from16 v34, v7
.end local v7 # "firstSampleFlagsPresent":Z
.local v34, "firstSampleFlagsPresent":Z
iget v7, v6, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->flags:I
move/from16 v25, v7
:goto_fe
move/from16 v7, v25
.line 945
.local v7, "sampleFlags":I
if-eqz v14, :cond_118
.line 951
move-object/from16 v35, v6
.end local v6 # "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.local v35, "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v6
.line 952
.local v6, "sampleOffset":I
move/from16 v36, v13
move/from16 v37, v14
.end local v13 # "sampleFlagsPresent":Z
.end local v14 # "sampleCompositionTimeOffsetsPresent":Z
.local v36, "sampleFlagsPresent":Z
.local v37, "sampleCompositionTimeOffsetsPresent":Z
int-to-long v13, v6
const-wide/16 v25, 0x3e8
mul-long v13, v13, v25
div-long/2addr v13, v0
long-to-int v14, v13
aput v14, v10, v5
.line 953
.end local v6 # "sampleOffset":I
const/16 v17, 0x0
goto :goto_122
.line 954
.end local v35 # "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.end local v36 # "sampleFlagsPresent":Z
.end local v37 # "sampleCompositionTimeOffsetsPresent":Z
.local v6, "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.restart local v13 # "sampleFlagsPresent":Z
.restart local v14 # "sampleCompositionTimeOffsetsPresent":Z
:cond_118
move-object/from16 v35, v6
move/from16 v36, v13
move/from16 v37, v14
.end local v6 # "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.end local v13 # "sampleFlagsPresent":Z
.end local v14 # "sampleCompositionTimeOffsetsPresent":Z
.restart local v35 # "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.restart local v36 # "sampleFlagsPresent":Z
.restart local v37 # "sampleCompositionTimeOffsetsPresent":Z
const/16 v17, 0x0
aput v17, v10, v5
.line 956
:goto_122
const-wide/16 v27, 0x3e8
.line 957
move-wide/from16 v25, v3
move-wide/from16 v29, v0
invoke-static/range {v25 .. v30}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v13
sub-long/2addr v13, v15
aput-wide v13, v8, v5
.line 958
aput v12, v9, v5
.line 959
shr-int/lit8 v6, v7, 0x10
const/4 v13, 0x1
and-int/2addr v6, v13
if-nez v6, :cond_13d
if-eqz v21, :cond_13b
if-nez v5, :cond_13d
:cond_13b
const/4 v6, 0x1
goto :goto_13e
:cond_13d
const/4 v6, 0x0
:goto_13e
aput-boolean v6, v20, v5
.line 961
int-to-long v13, v11
add-long/2addr v3, v13
.line 938
.end local v7 # "sampleFlags":I
.end local v11 # "sampleDuration":I
.end local v12 # "sampleSize":I
add-int/lit8 v5, v5, 0x1
move/from16 v11, v32
move/from16 v12, v33
move/from16 v7, v34
move-object/from16 v6, v35
move/from16 v13, v36
move/from16 v14, v37
goto/16 :goto_c2
.line 963
.end local v5 # "i":I
.end local v32 # "sampleDurationsPresent":Z
.end local v33 # "sampleSizesPresent":Z
.end local v34 # "firstSampleFlagsPresent":Z
.end local v35 # "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.end local v36 # "sampleFlagsPresent":Z
.end local v37 # "sampleCompositionTimeOffsetsPresent":Z
.restart local v6 # "defaultSampleValues":Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.local v7, "firstSampleFlagsPresent":Z
.local v11, "sampleDurationsPresent":Z
.local v12, "sampleSizesPresent":Z
.restart local v13 # "sampleFlagsPresent":Z
.restart local v14 # "sampleCompositionTimeOffsetsPresent":Z
:cond_152
move-object/from16 v5, v31
.end local v31 # "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.local v5, "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iput-wide v3, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->nextFragmentDecodeTime:J
.line 964
return v2
.end method
.method private static parseTruns(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;JI)V
.registers 22
.param p0, "traf" # Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.param p1, "trackBundle" # Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.param p2, "decodeTime" # J
.param p4, "flags" # I
.line 723
move-object/from16 v7, p1
const/4 v0, 0x0
.line 724
.local v0, "trunCount":I
const/4 v1, 0x0
.line 725
.local v1, "totalSampleCount":I
move-object/from16 v8, p0
iget-object v9, v8, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
.line 726
.local v9, "leafChildren":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;>;"
invoke-interface {v9}, Ljava/util/List;->size()I
move-result v10
.line 727
.local v10, "leafChildrenSize":I
const/4 v2, 0x0
move v11, v0
move v12, v1
.end local v0 # "trunCount":I
.end local v1 # "totalSampleCount":I
.local v2, "i":I
.local v11, "trunCount":I
.local v12, "totalSampleCount":I
:goto_f
if-ge v2, v10, :cond_30
.line 728
invoke-interface {v9, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 729
.local v0, "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v3, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trun:I
if-ne v1, v3, :cond_2d
.line 730
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 731
.local v1, "trunData":Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/16 v3, 0xc
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 732
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v3
.line 733
.local v3, "trunSampleCount":I
if-lez v3, :cond_2d
.line 734
add-int/2addr v12, v3
.line 735
add-int/lit8 v11, v11, 0x1
.line 727
.end local v0 # "atom":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.end local v1 # "trunData":Lcom/google/android/exoplayer2/util/ParsableByteArray;
.end local v3 # "trunSampleCount":I
:cond_2d
add-int/lit8 v2, v2, 0x1
goto :goto_f
.line 739
.end local v2 # "i":I
:cond_30
const/4 v0, 0x0
iput v0, v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
.line 740
iput v0, v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
.line 741
iput v0, v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
.line 742
iget-object v0, v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
invoke-virtual {v0, v11, v12}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->initTables(II)V
.line 744
const/4 v0, 0x0
.line 745
.local v0, "trunIndex":I
const/4 v1, 0x0
.line 746
.local v1, "trunStartPosition":I
const/4 v2, 0x0
move v13, v1
move v14, v2
move v1, v0
.end local v0 # "trunIndex":I
.local v1, "trunIndex":I
.local v13, "trunStartPosition":I
.local v14, "i":I
:goto_42
if-ge v14, v10, :cond_66
.line 747
invoke-interface {v9, v14}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
move-object v15, v0
check-cast v15, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 748
.local v15, "trun":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget v0, v15, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trun:I
if-ne v0, v2, :cond_63
.line 749
add-int/lit8 v16, v1, 0x1
.end local v1 # "trunIndex":I
.local v16, "trunIndex":I
iget-object v5, v15, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
move-object/from16 v0, p1
move-wide/from16 v2, p2
move/from16 v4, p4
move v6, v13
invoke-static/range {v0 .. v6}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTrun(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;IJILcom/google/android/exoplayer2/util/ParsableByteArray;I)I
move-result v0
move v13, v0
move/from16 v1, v16
.line 746
.end local v15 # "trun":Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.end local v16 # "trunIndex":I
.restart local v1 # "trunIndex":I
:cond_63
add-int/lit8 v14, v14, 0x1
goto :goto_42
.line 753
.end local v14 # "i":I
:cond_66
return-void
.end method
.method private static parseUuid(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;[B)V
.registers 5
.param p0, "uuid" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "out" # Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.param p2, "extendedTypeScratch" # [B
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 969
const/16 v0, 0x8
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 970
const/16 v0, 0x10
const/4 v1, 0x0
invoke-virtual {p0, p2, v1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
.line 973
sget-object v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->PIFF_SAMPLE_ENCRYPTION_BOX_EXTENDED_TYPE:[B
invoke-static {p2, v1}, Ljava/util/Arrays;->equals([B[B)Z
move-result v1
if-nez v1, :cond_14
.line 974
return-void
.line 980
:cond_14
invoke-static {p0, v0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;ILcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 981
return-void
.end method
.method private processAtomEnded(J)V
.registers 6
.param p1, "atomEndPosition" # J
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 431
:goto_0
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v0
if-nez v0, :cond_22
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget-wide v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->endPosition:J
cmp-long v2, v0, p1
if-nez v2, :cond_22
.line 432
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->pop()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
goto :goto_0
.line 434
:cond_22
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
.line 435
return-void
.end method
.method private readAtomHeader(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
.registers 12
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 332
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
const/16 v1, 0x8
const/4 v2, 0x0
const/4 v3, 0x1
if-nez v0, :cond_2a
.line 334
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-interface {p1, v0, v2, v1, v3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BIIZ)Z
move-result v0
if-nez v0, :cond_13
.line 335
return v2
.line 337
:cond_13
iput v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
.line 338
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 339
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v4
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
.line 340
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
.line 343
:cond_2a
iget-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
const-wide/16 v6, 0x1
cmp-long v0, v4, v6
if-nez v0, :cond_49
.line 345
const/16 v0, 0x8
.line 346
.local v0, "headerBytesRemaining":I
iget-object v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v4, v4, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-interface {p1, v4, v1, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 347
iget v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
add-int/2addr v4, v0
iput v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
.line 348
iget-object v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v4
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
.end local v0 # "headerBytesRemaining":I
goto :goto_7c
.line 349
:cond_49
const-wide/16 v6, 0x0
cmp-long v0, v4, v6
if-nez v0, :cond_7c
.line 352
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getLength()J
move-result-wide v4
.line 353
.local v4, "endPosition":J
const-wide/16 v6, -0x1
cmp-long v0, v4, v6
if-nez v0, :cond_6b
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v0
if-nez v0, :cond_6b
.line 354
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget-wide v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->endPosition:J
.line 356
:cond_6b
cmp-long v0, v4, v6
if-eqz v0, :cond_7d
.line 357
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v6
sub-long v6, v4, v6
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
int-to-long v8, v0
add-long/2addr v6, v8
iput-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
goto :goto_7d
.line 349
.end local v4 # "endPosition":J
:cond_7c
:goto_7c
nop
.line 361
:cond_7d
:goto_7d
iget-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
int-to-long v6, v0
cmp-long v0, v4, v6
if-ltz v0, :cond_151
.line 365
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v4
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
int-to-long v6, v0
sub-long/2addr v4, v6
.line 366
.local v4, "atomPosition":J
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
sget v6, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_moof:I
if-ne v0, v6, :cond_b0
.line 368
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v0}, Landroid/util/SparseArray;->size()I
move-result v0
.line 369
.local v0, "trackCount":I
const/4 v6, 0x0
.local v6, "i":I
:goto_9b
if-ge v6, v0, :cond_b0
.line 370
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v7, v6}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v7
check-cast v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 371
.local v7, "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->atomPosition:J
.line 372
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 373
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->dataPosition:J
.line 369
.end local v7 # "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
add-int/lit8 v6, v6, 0x1
goto :goto_9b
.line 377
.end local v0 # "trackCount":I
.end local v6 # "i":I
:cond_b0
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
sget v6, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mdat:I
const/4 v7, 0x0
if-ne v0, v6, :cond_d4
.line 378
iput-object v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 379
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
add-long/2addr v0, v4
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->endOfMdatPosition:J
.line 380
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
if-nez v0, :cond_d0
.line 382
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
new-instance v1, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;
iget-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
invoke-direct {v1, v6, v7, v4, v5}, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;-><init>(JJ)V
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->seekMap(Lcom/google/android/exoplayer2/extractor/SeekMap;)V
.line 383
iput-boolean v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
.line 385
:cond_d0
const/4 v0, 0x2
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 386
return v3
.line 389
:cond_d4
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->shouldParseContainerAtom(I)Z
move-result v0
if-eqz v0, :cond_103
.line 390
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v0
iget-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
add-long/2addr v0, v6
const-wide/16 v6, 0x8
sub-long/2addr v0, v6
.line 391
.local v0, "endPosition":J
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
new-instance v6, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
invoke-direct {v6, v7, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;-><init>(IJ)V
invoke-virtual {v2, v6}, Ljava/util/ArrayDeque;->push(Ljava/lang/Object;)V
.line 392
iget-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
int-to-long v8, v2
cmp-long v2, v6, v8
if-nez v2, :cond_ff
.line 393
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processAtomEnded(J)V
goto :goto_102
.line 396
:cond_ff
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
.line 398
.end local v0 # "endPosition":J
:goto_102
goto :goto_148
:cond_103
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->shouldParseLeafAtom(I)Z
move-result v0
const-wide/32 v8, 0x7fffffff
if-eqz v0, :cond_13e
.line 399
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
if-ne v0, v1, :cond_136
.line 402
iget-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
cmp-long v0, v6, v8
if-gtz v0, :cond_12e
.line 405
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
long-to-int v7, v6
invoke-direct {v0, v7}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 406
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v6, v6, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-static {v0, v2, v6, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 407
iput v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
goto :goto_148
.line 403
:cond_12e
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
const-string v1, "Leaf atom with length > 2147483647 (unsupported)."
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.line 400
:cond_136
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
const-string v1, "Leaf atom defines extended atom size (unsupported)."
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.line 409
:cond_13e
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
cmp-long v2, v0, v8
if-gtz v2, :cond_149
.line 412
iput-object v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 413
iput v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 416
:goto_148
return v3
.line 410
:cond_149
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
const-string v1, "Skipping atom with length > 2147483647 (unsupported)."
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.line 362
.end local v4 # "atomPosition":J
:cond_151
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
const-string v1, "Atom size less than header length (unsupported)."
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
goto :goto_15a
:goto_159
throw v0
:goto_15a
goto :goto_159
.end method
.method private readAtomPayload(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.registers 6
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 420
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
long-to-int v1, v0
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
sub-int/2addr v1, v0
.line 421
.local v1, "atomPayloadSize":I
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
if-eqz v0, :cond_22
.line 422
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/16 v2, 0x8
invoke-interface {p1, v0, v2, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 423
new-instance v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {v0, v2, v3}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;-><init>(ILcom/google/android/exoplayer2/util/ParsableByteArray;)V
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v2
invoke-direct {p0, v0, v2, v3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onLeafAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;J)V
goto :goto_25
.line 425
:cond_22
invoke-interface {p1, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 427
:goto_25
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v2
invoke-direct {p0, v2, v3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processAtomEnded(J)V
.line 428
return-void
.end method
.method private readEncryptionData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.registers 11
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 1130
const/4 v0, 0x0
.line 1131
.local v0, "nextTrackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
const-wide v1, 0x7fffffffffffffffL
.line 1132
.local v1, "nextDataOffset":J
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
move-result v3
.line 1133
.local v3, "trackBundlesSize":I
const/4 v4, 0x0
.local v4, "i":I
:goto_d
if-ge v4, v3, :cond_31
.line 1134
iget-object v5, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v5, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v5, v5, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 1135
.local v5, "trackFragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-boolean v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleEncryptionDataNeedsFill:Z
if-eqz v6, :cond_2e
iget-wide v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
cmp-long v8, v6, v1
if-gez v8, :cond_2e
.line 1137
iget-wide v1, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 1138
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v6, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v6
move-object v0, v6
check-cast v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 1133
.end local v5 # "trackFragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
:cond_2e
add-int/lit8 v4, v4, 0x1
goto :goto_d
.line 1141
.end local v4 # "i":I
:cond_31
if-nez v0, :cond_37
.line 1142
const/4 v4, 0x3
iput v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 1143
return-void
.line 1145
:cond_37
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v4
sub-long v4, v1, v4
long-to-int v5, v4
.line 1146
.local v5, "bytesToSkip":I
if-ltz v5, :cond_49
.line 1149
invoke-interface {p1, v5}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1150
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
invoke-virtual {v4, p1}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->fillEncryptionData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.line 1151
return-void
.line 1147
:cond_49
new-instance v4, Lcom/google/android/exoplayer2/ParserException;
const-string v6, "Offset to encryption data was negative."
invoke-direct {v4, v6}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
goto :goto_52
:goto_51
throw v4
:goto_52
goto :goto_51
.end method
.method private readSample(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
.registers 21
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 1170
move-object/from16 v0, p0
move-object/from16 v1, p1
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
const/4 v3, 0x0
const/4 v4, 0x3
const/4 v5, 0x4
const/4 v6, 0x1
const/4 v7, 0x0
if-ne v2, v4, :cond_a2
.line 1171
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
if-nez v2, :cond_50
.line 1172
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-static {v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getNextFragmentRun(Landroid/util/SparseArray;)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
move-result-object v2
.line 1173
.local v2, "currentTrackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
if-nez v2, :cond_32
.line 1176
iget-wide v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->endOfMdatPosition:J
invoke-interface/range {p1 .. p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v5
sub-long/2addr v3, v5
long-to-int v4, v3
.line 1177
.local v4, "bytesToSkip":I
if-ltz v4, :cond_2a
.line 1180
invoke-interface {v1, v4}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1181
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
.line 1182
return v7
.line 1178
:cond_2a
new-instance v3, Lcom/google/android/exoplayer2/ParserException;
const-string v5, "Offset to end of mdat was negative."
invoke-direct {v3, v5}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v3
.line 1185
.end local v4 # "bytesToSkip":I
:cond_32
iget-object v8, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-object v8, v8, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunDataPosition:[J
iget v9, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
aget-wide v9, v8, v9
.line 1188
.local v9, "nextDataPosition":J
invoke-interface/range {p1 .. p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v11
sub-long v11, v9, v11
long-to-int v8, v11
.line 1189
.local v8, "bytesToSkip":I
if-gez v8, :cond_4b
.line 1191
const-string v11, "FragmentedMp4Extractor"
const-string v12, "Ignoring negative offset to sample data."
invoke-static {v11, v12}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 1192
const/4 v8, 0x0
.line 1194
:cond_4b
invoke-interface {v1, v8}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1195
iput-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 1198
.end local v2 # "currentTrackBundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.end local v8 # "bytesToSkip":I
.end local v9 # "nextDataPosition":J
:cond_50
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-object v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleSizeTable:[I
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v8, v8, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
aget v2, v2, v8
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
.line 1201
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v8, v8, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->firstSampleToOutputIndex:I
if-ge v2, v8, :cond_7f
.line 1202
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
invoke-interface {v1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1203
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-static {v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->access$000(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;)V
.line 1204
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->next()Z
move-result v2
if-nez v2, :cond_7c
.line 1205
iput-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 1207
:cond_7c
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 1208
return v6
.line 1211
:cond_7f
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->sampleTransformation:I
if-ne v2, v6, :cond_91
.line 1212
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
const/16 v8, 0x8
sub-int/2addr v2, v8
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
.line 1213
invoke-interface {v1, v8}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1215
:cond_91
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->outputSampleEncryptionData()I
move-result v2
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1216
iget v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
add-int/2addr v8, v2
iput v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
.line 1217
iput v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 1218
iput v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1221
:cond_a2
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 1222
.local v2, "fragment":Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v8, v8, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 1223
.local v8, "track":Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-object v9, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v9, v9, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 1224
.local v9, "output":Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget-object v10, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v15, v10, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
.line 1225
.local v15, "sampleIndex":I
invoke-virtual {v2, v15}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->getSamplePresentationTime(I)J
move-result-wide v10
const-wide/16 v12, 0x3e8
mul-long v10, v10, v12
.line 1226
.local v10, "sampleTimeUs":J
iget-object v12, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
if-eqz v12, :cond_c4
.line 1227
invoke-virtual {v12, v10, v11}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->adjustSampleTimestamp(J)J
move-result-wide v10
move-wide v13, v10
goto :goto_c5
.line 1226
:cond_c4
move-wide v13, v10
.line 1229
.end local v10 # "sampleTimeUs":J
.local v13, "sampleTimeUs":J
:goto_c5
iget v10, v8, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
if-eqz v10, :cond_186
.line 1232
iget-object v10, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v10, v10, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 1233
.local v10, "nalPrefixData":[B
aput-byte v7, v10, v7
.line 1234
aput-byte v7, v10, v6
.line 1235
const/4 v11, 0x2
aput-byte v7, v10, v11
.line 1236
iget v11, v8, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
add-int/2addr v11, v6
.line 1237
.local v11, "nalUnitPrefixLength":I
iget v12, v8, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
rsub-int/lit8 v12, v12, 0x4
.line 1241
.local v12, "nalUnitLengthFieldLengthDiff":I
:goto_db
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
if-ge v4, v3, :cond_185
.line 1242
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
if-nez v3, :cond_129
.line 1244
invoke-interface {v1, v10, v12, v11}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 1245
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3, v7}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1246
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v3
sub-int/2addr v3, v6
iput v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1248
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3, v7}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1249
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v9, v3, v5}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1251
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v9, v3, v6}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1252
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
array-length v3, v3
if-lez v3, :cond_118
iget-object v3, v8, Lcom/google/android/exoplayer2/extractor/mp4/Track;->format:Lcom/google/android/exoplayer2/Format;
iget-object v3, v3, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
aget-byte v4, v10, v5
.line 1253
invoke-static {v3, v4}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->isNalUnitSei(Ljava/lang/String;B)Z
move-result v3
if-eqz v3, :cond_118
const/4 v3, 0x1
goto :goto_119
:cond_118
const/4 v3, 0x0
:goto_119
iput-boolean v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processSeiNalUnitPayload:Z
.line 1254
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
add-int/lit8 v3, v3, 0x5
iput v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1255
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
add-int/2addr v3, v12
iput v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
const/4 v3, 0x0
const/4 v4, 0x3
goto :goto_db
.line 1258
:cond_129
iget-boolean v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processSeiNalUnitPayload:Z
if-eqz v4, :cond_16f
.line 1260
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v4, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 1261
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v3, v3, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
invoke-interface {v1, v3, v7, v4}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 1262
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
invoke-interface {v9, v3, v4}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1263
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1265
.local v3, "writtenBytes":I
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v4, v4, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v5
invoke-static {v4, v5}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->unescapeStream([BI)I
move-result v4
.line 1267
.local v4, "unescapedLength":I
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v6, v8, Lcom/google/android/exoplayer2/extractor/mp4/Track;->format:Lcom/google/android/exoplayer2/Format;
iget-object v6, v6, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
const-string/jumbo v7, "video/hevc"
invoke-virtual {v7, v6}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v6
invoke-virtual {v5, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1268
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v5, v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setLimit(I)V
.line 1269
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
invoke-static {v13, v14, v5, v6}, Lcom/google/android/exoplayer2/text/cea/CeaUtil;->consume(JLcom/google/android/exoplayer2/util/ParsableByteArray;[Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.line 1270
.end local v4 # "unescapedLength":I
goto :goto_174
.line 1272
.end local v3 # "writtenBytes":I
:cond_16f
const/4 v4, 0x0
invoke-interface {v9, v1, v3, v4}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
move-result v3
.line 1274
.restart local v3 # "writtenBytes":I
:goto_174
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
add-int/2addr v4, v3
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1275
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
sub-int/2addr v4, v3
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1276
.end local v3 # "writtenBytes":I
const/4 v3, 0x0
const/4 v4, 0x3
const/4 v5, 0x4
const/4 v6, 0x1
const/4 v7, 0x0
goto/16 :goto_db
.line 1278
.end local v10 # "nalPrefixData":[B
.end local v11 # "nalUnitPrefixLength":I
.end local v12 # "nalUnitLengthFieldLengthDiff":I
:cond_185
goto :goto_198
.line 1279
:cond_186
:goto_186
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
if-ge v3, v4, :cond_198
.line 1280
sub-int/2addr v4, v3
const/4 v3, 0x0
invoke-interface {v9, v1, v4, v3}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
move-result v4
.line 1281
.local v4, "writtenBytes":I
iget v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
add-int/2addr v5, v4
iput v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1282
.end local v4 # "writtenBytes":I
goto :goto_186
.line 1285
:cond_198
:goto_198
iget-object v3, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleIsSyncFrameTable:[Z
aget-boolean v3, v3, v15
.line 1289
.local v3, "sampleFlags":I
const/4 v4, 0x0
.line 1290
.local v4, "cryptoData":Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-static {v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->access$100(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;)Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
move-result-object v5
.line 1291
.local v5, "encryptionBox":Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
if-eqz v5, :cond_1aa
.line 1292
const/high16 v6, 0x40000000 # 2.0f
or-int/2addr v3, v6
.line 1293
iget-object v4, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->cryptoData:Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;
.line 1296
:cond_1aa
iget v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
const/4 v7, 0x0
move-object v10, v9
move-wide v11, v13
move-wide/from16 v17, v13
.end local v13 # "sampleTimeUs":J
.local v17, "sampleTimeUs":J
move v13, v3
move v14, v6
move v6, v15
.end local v15 # "sampleIndex":I
.local v6, "sampleIndex":I
move v15, v7
move-object/from16 v16, v4
invoke-interface/range {v10 .. v16}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
.line 1299
move-wide/from16 v10, v17
.end local v17 # "sampleTimeUs":J
.local v10, "sampleTimeUs":J
invoke-direct {v0, v10, v11}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->outputPendingMetadataSamples(J)V
.line 1300
iget-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-virtual {v7}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->next()Z
move-result v7
if-nez v7, :cond_1ca
.line 1301
const/4 v7, 0x0
iput-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 1303
:cond_1ca
const/4 v7, 0x3
iput v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 1304
const/4 v7, 0x1
return v7
.end method
.method private static shouldParseContainerAtom(I)Z
.registers 2
.param p0, "atom" # I
.line 1385
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_moov:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trak:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mdia:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_minf:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_stbl:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_moof:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_traf:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mvex:I
if-eq p0, v0, :cond_27
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_edts:I
if-ne p0, v0, :cond_25
goto :goto_27
:cond_25
const/4 v0, 0x0
goto :goto_28
:cond_27
:goto_27
const/4 v0, 0x1
:goto_28
return v0
.end method
.method private static shouldParseLeafAtom(I)Z
.registers 2
.param p0, "atom" # I
.line 1374
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_hdlr:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mdhd:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mvhd:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sidx:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_stsd:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfdt:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfhd:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tkhd:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trex:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trun:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_pssh:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_saiz:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_saio:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_senc:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_uuid:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sbgp:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sgpd:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_elst:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mehd:I
if-eq p0, v0, :cond_53
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_emsg:I
if-ne p0, v0, :cond_51
goto :goto_53
:cond_51
const/4 v0, 0x0
goto :goto_54
:cond_53
:goto_53
const/4 v0, 0x1
:goto_54
return v0
.end method
# virtual methods
.method public init(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;)V
.registers 6
.param p1, "output" # Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
.line 274
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
.line 275
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
if-eqz v0, :cond_2a
.line 276
new-instance v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/Track;->type:I
const/4 v2, 0x0
invoke-interface {p1, v2, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v0
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;-><init>(Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
move-object v0, v1
.line 277
.local v0, "bundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
new-instance v3, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-direct {v3, v2, v2, v2, v2}, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;-><init>(IIII)V
invoke-virtual {v0, v1, v3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->init(Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;)V
.line 278
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v1, v2, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
.line 279
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->maybeInitExtraTracks()V
.line 280
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
invoke-interface {v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->endTracks()V
.line 282
.end local v0 # "bundle":Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
:cond_2a
return-void
.end method
.method protected modifyTrack(Lcom/google/android/exoplayer2/extractor/mp4/Track;)Lcom/google/android/exoplayer2/extractor/mp4/Track;
.registers 2
.param p1, "track" # Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 527
return-object p1
.end method
.method public read(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/PositionHolder;)I
.registers 5
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.param p2, "seekPosition" # Lcom/google/android/exoplayer2/extractor/PositionHolder;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 306
:cond_0
:goto_0
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
if-eqz v0, :cond_1a
const/4 v1, 0x1
if-eq v0, v1, :cond_16
const/4 v1, 0x2
if-eq v0, v1, :cond_12
.line 319
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readSample(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result v0
if-eqz v0, :cond_0
.line 320
const/4 v0, 0x0
return v0
.line 316
:cond_12
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readEncryptionData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.line 317
goto :goto_0
.line 313
:cond_16
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readAtomPayload(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.line 314
goto :goto_0
.line 308
:cond_1a
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readAtomHeader(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result v0
if-nez v0, :cond_22
.line 309
const/4 v0, -0x1
return v0
.line 308
:cond_22
goto :goto_0
.end method
.method public release()V
.registers 1
.line 300
return-void
.end method
.method public seek(JJ)V
.registers 8
.param p1, "position" # J
.param p3, "timeUs" # J
.line 286
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v0}, Landroid/util/SparseArray;->size()I
move-result v0
.line 287
.local v0, "trackCount":I
const/4 v1, 0x0
.local v1, "i":I
:goto_7
if-ge v1, v0, :cond_17
.line 288
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v2, v1}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->reset()V
.line 287
add-int/lit8 v1, v1, 0x1
goto :goto_7
.line 290
.end local v1 # "i":I
:cond_17
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/ArrayDeque;
invoke-virtual {v1}, Ljava/util/ArrayDeque;->clear()V
.line 291
const/4 v1, 0x0
iput v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
.line 292
iput-wide p3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingSeekTimeUs:J
.line 293
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/ArrayDeque;
invoke-virtual {v1}, Ljava/util/ArrayDeque;->clear()V
.line 294
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
.line 295
return-void
.end method
.method public sniff(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
.registers 3
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 269
invoke-static {p1}, Lcom/google/android/exoplayer2/extractor/mp4/Sniffer;->sniffFragmented(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result v0
return v0
.end method