FragmentedMp4Extractor.smali
.class public final 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 public static final FACTORY:Lcom/google/android/exoplayer2/extractor/ExtractorsFactory;
.field public static final FLAG_ENABLE_CEA608_TRACK:I = 0x8
.field public static final FLAG_ENABLE_EMSG_TRACK:I = 0x4
.field private static final FLAG_SIDELOADED:I = 0x10
.field public static final FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME:I = 0x1
.field public static final FLAG_WORKAROUND_IGNORE_TFDT_BOX:I = 0x2
.field private static final NAL_UNIT_TYPE_SEI:I = 0x6
.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 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 cea608TrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.field private final containerAtoms:Ljava/util/Stack;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Stack<",
"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 final encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private endOfMdatPosition:J
.field private eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.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 nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final nalPayload: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/LinkedList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/LinkedList<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;",
">;"
}
.end annotation
.end field
.field private sampleBytesWritten:I
.field private sampleCurrentNalBytesRemaining:I
.field private sampleSize:I
.field private segmentIndexEarliestPresentationTimeUs:J
.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 1
.line 62
new-instance v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$1;
invoke-direct {v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$1;-><init>()V
sput-object v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->FACTORY:Lcom/google/android/exoplayer2/extractor/ExtractorsFactory;
const-string v0, "seig"
.line 108
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
const/16 v0, 0x10
new-array v0, v0, [B
.line 110
fill-array-data v0, :array_1a
sput-object v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->PIFF_SAMPLE_ENCRYPTION_BOX_EXTENDED_TYPE:[B
return-void
nop
:array_1a
.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 3
const/4 v0, 0x0
const/4 v1, 0x0
.line 167
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;)V
return-void
.end method
.method public constructor <init>(ILcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/util/TimestampAdjuster;)V
.registers 5
.line 185
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 186
iput-object p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
const/16 v0, 0x10
if-eqz p2, :cond_c
const/16 p2, 0x10
goto :goto_d
:cond_c
const/4 p2, 0x0
:goto_d
or-int/2addr p1, p2
.line 187
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
.line 188
iput-object p3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.line 189
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 190
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
sget-object p2, Lcom/google/android/exoplayer2/util/NalUnitUtil;->NAL_START_CODE:[B
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>([B)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 191
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 p2, 0x4
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 192
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 p2, 0x1
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 193
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
new-array p1, v0, [B
.line 194
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extendedTypeScratch:[B
.line 195
new-instance p1, Ljava/util/Stack;
invoke-direct {p1}, Ljava/util/Stack;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
.line 196
new-instance p1, Ljava/util/LinkedList;
invoke-direct {p1}, Ljava/util/LinkedList;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/LinkedList;
.line 197
new-instance p1, Landroid/util/SparseArray;
invoke-direct {p1}, Landroid/util/SparseArray;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
const-wide p1, -0x7fffffffffffffffL # -4.9E-324
.line 198
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
.line 199
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->segmentIndexEarliestPresentationTimeUs:J
.line 200
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
return-void
.end method
.method public constructor <init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;)V
.registers 4
const/4 v0, 0x0
.line 175
invoke-direct {p0, p1, v0, p2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(ILcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/util/TimestampAdjuster;)V
return-void
.end method
.method private appendSampleEncryptionData(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;)I
.registers 8
.line 1184
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 1185
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleEncryptionData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 1186
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
iget v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
.line 1187
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
if-eqz v3, :cond_f
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
goto :goto_15
:cond_f
iget-object v3, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-object v3, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->sampleDescriptionEncryptionBoxes:[Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
aget-object v2, v3, v2
.line 1190
:goto_15
iget v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->initializationVectorSize:I
.line 1191
iget-object v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
iget v3, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
aget-boolean v0, v0, v3
.line 1195
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v3, v3, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/4 v4, 0x0
if-eqz v0, :cond_27
const/16 v5, 0x80
goto :goto_28
:cond_27
const/4 v5, 0x0
:goto_28
or-int/2addr v5, v2
int-to-byte v5, v5
aput-byte v5, v3, v4
.line 1196
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3, v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1197
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 1198
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 v4, 0x1
invoke-interface {p1, v3, v4}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1200
invoke-interface {p1, v1, v2}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
if-nez v0, :cond_40
add-int/2addr v2, v4
return v2
.line 1206
:cond_40
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v0
const/4 v3, -0x2
.line 1207
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
mul-int/lit8 v0, v0, 0x6
add-int/lit8 v0, v0, 0x2
.line 1209
invoke-interface {p1, v1, v0}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
add-int/2addr v2, v4
add-int/2addr v2, v0
return v2
.end method
.method private enterReadingAtomHeaderState()V
.registers 2
const/4 v0, 0x0
.line 262
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 263
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
return-void
.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 1217
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x0
move-object v3, v1
:goto_7
if-ge v2, v0, :cond_3c
.line 1219
invoke-interface {p0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 1220
iget v5, v4, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v6, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_pssh:I
if-ne v5, v6, :cond_39
if-nez v3, :cond_1c
.line 1222
new-instance v3, Ljava/util/ArrayList;
invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
.line 1224
:cond_1c
iget-object v4, v4, 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 1225
invoke-static {v4}, Lcom/google/android/exoplayer2/extractor/mp4/PsshAtomUtil;->parseUuid([B)Ljava/util/UUID;
move-result-object v5
if-nez v5, :cond_2e
const-string v4, "FragmentedMp4Extractor"
const-string v5, "Skipped pssh atom (failed to extract uuid)"
.line 1227
invoke-static {v4, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_39
.line 1229
: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 {v3, v6}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:cond_39
:goto_39
add-int/lit8 v2, v2, 0x1
goto :goto_7
:cond_3c
if-nez v3, :cond_3f
goto :goto_44
.line 1233
:cond_3f
new-instance v1, Lcom/google/android/exoplayer2/drm/DrmInitData;
invoke-direct {v1, v3}, Lcom/google/android/exoplayer2/drm/DrmInitData;-><init>(Ljava/util/List;)V
:goto_44
return-object v1
.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 1159
invoke-virtual {p0}, Landroid/util/SparseArray;->size()I
move-result v0
const/4 v1, 0x0
const-wide v2, 0x7fffffffffffffffL
const/4 v4, 0x0
:goto_b
if-ge v4, v0, :cond_2d
.line 1161
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 1162
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 1165
: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
cmp-long v6, v7, v2
if-gez v6, :cond_2a
move-object v1, v5
move-wide v2, v7
:cond_2a
:goto_2a
add-int/lit8 v4, v4, 0x1
goto :goto_b
:cond_2d
return-object v1
.end method
.method private maybeInitExtraTracks()V
.registers 9
.line 451
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
and-int/lit8 v0, v0, 0x4
if-eqz v0, :cond_27
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-nez v0, :cond_27
.line 452
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
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
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(I)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
const/4 v1, 0x0
const-wide v2, 0x7fffffffffffffffL
const-string v4, "application/x-emsg"
.line 453
invoke-static {v1, v4, v2, v3}, Lcom/google/android/exoplayer2/Format;->createSampleFormat(Ljava/lang/String;Ljava/lang/String;J)Lcom/google/android/exoplayer2/Format;
move-result-object v1
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->format(Lcom/google/android/exoplayer2/Format;)V
.line 456
:cond_27
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
and-int/lit8 v0, v0, 0x8
if-eqz v0, :cond_50
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-nez v0, :cond_50
.line 457
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
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
add-int/lit8 v1, v1, 0x1
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(I)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
const/4 v1, 0x0
const/4 v3, 0x0
const/4 v4, -0x1
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
const-string v2, "application/cea-608"
.line 458
invoke-static/range {v1 .. v7}, Lcom/google/android/exoplayer2/Format;->createTextSampleFormat(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Lcom/google/android/exoplayer2/drm/DrmInitData;)Lcom/google/android/exoplayer2/Format;
move-result-object v1
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->format(Lcom/google/android/exoplayer2/Format;)V
:cond_50
return-void
.end method
.method private onContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 375
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 376
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 377
: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 378
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 379
:cond_14
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {v0}, Ljava/util/Stack;->isEmpty()Z
move-result v0
if-nez v0, :cond_27
.line 380
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {v0}, Ljava/util/Stack;->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
:cond_27
:goto_27
return-void
.end method
.method private onEmsgLeafAtomRead(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.registers 12
.line 467
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-nez v0, :cond_5
return-void
:cond_5
const/16 v0, 0xc
.line 471
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 472
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readNullTerminatedString()Ljava/lang/String;
.line 473
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readNullTerminatedString()Ljava/lang/String;
.line 474
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v5
.line 476
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v1
const-wide/32 v3, 0xf4240
invoke-static/range {v1 .. v6}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v1
.line 478
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 479
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v7
.line 480
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
invoke-interface {v0, p1, v7}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 482
iget-wide v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->segmentIndexEarliestPresentationTimeUs:J
const-wide v5, -0x7fffffffffffffffL # -4.9E-324
cmp-long p1, v3, v5
if-eqz p1, :cond_42
.line 484
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-long v4, v3, v1
const/4 v6, 0x1
const/4 v8, 0x0
const/4 v9, 0x0
move-object v3, p1
invoke-interface/range {v3 .. v9}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIII[B)V
goto :goto_51
.line 489
:cond_42
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/LinkedList;
new-instance v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;
invoke-direct {v0, v1, v2, v7}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;-><init>(JI)V
invoke-virtual {p1, v0}, Ljava/util/LinkedList;->addLast(Ljava/lang/Object;)V
.line 491
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
add-int/2addr p1, v7
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
:goto_51
return-void
.end method
.method private onLeafAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;J)V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 362
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {v0}, Ljava/util/Stack;->isEmpty()Z
move-result v0
if-nez v0, :cond_14
.line 363
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {p2}, Ljava/util/Stack;->peek()Ljava/lang/Object;
move-result-object p2
check-cast p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
invoke-virtual {p2, p1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->add(Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;)V
goto :goto_42
.line 364
: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 365
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSidx(Lcom/google/android/exoplayer2/util/ParsableByteArray;J)Landroid/util/Pair;
move-result-object p1
.line 366
iget-object p2, p1, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast p2, Ljava/lang/Long;
invoke-virtual {p2}, Ljava/lang/Long;->longValue()J
move-result-wide p2
iput-wide p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->segmentIndexEarliestPresentationTimeUs:J
.line 367
iget-object p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
iget-object p1, p1, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast p1, Lcom/google/android/exoplayer2/extractor/SeekMap;
invoke-interface {p2, p1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->seekMap(Lcom/google/android/exoplayer2/extractor/SeekMap;)V
const/4 p1, 0x1
.line 368
iput-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
goto :goto_42
.line 369
:cond_37
iget p2, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget p3, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_emsg:I
if-ne p2, p3, :cond_42
.line 370
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onEmsgLeafAtomRead(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
:cond_42
:goto_42
return-void
.end method
.method private onMoofContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 440
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 441
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-static {p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getDrmInitDataFromAtoms(Ljava/util/List;)Lcom/google/android/exoplayer2/drm/DrmInitData;
move-result-object p1
if-eqz p1, :cond_28
.line 443
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
const/4 v1, 0x0
:goto_18
if-ge v1, v0, :cond_28
.line 445
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, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->updateDrmInitData(Lcom/google/android/exoplayer2/drm/DrmInitData;)V
add-int/lit8 v1, v1, 0x1
goto :goto_18
:cond_28
return-void
.end method
.method private onMoovContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.registers 20
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
move-object/from16 v0, p0
move-object/from16 v1, p1
.line 385
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
const/4 v3, 0x1
const/4 v4, 0x0
if-nez v2, :cond_c
const/4 v2, 0x1
goto :goto_d
:cond_c
const/4 v2, 0x0
:goto_d
const-string v5, "Unexpected moov box."
invoke-static {v2, v5}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(ZLjava/lang/Object;)V
.line 387
iget-object v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-static {v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getDrmInitDataFromAtoms(Ljava/util/List;)Lcom/google/android/exoplayer2/drm/DrmInitData;
move-result-object v2
.line 390
sget v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mvex:I
invoke-virtual {v1, v5}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getContainerAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
move-result-object v5
.line 391
new-instance v11, Landroid/util/SparseArray;
invoke-direct {v11}, Landroid/util/SparseArray;-><init>()V
const-wide v6, -0x7fffffffffffffffL # -4.9E-324
.line 393
iget-object v8, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {v8}, Ljava/util/List;->size()I
move-result v8
move-wide v12, v6
const/4 v6, 0x0
:goto_30
if-ge v6, v8, :cond_64
.line 395
iget-object v7, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {v7, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v7
check-cast v7, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 396
iget v9, v7, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v10, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trex:I
if-ne v9, v10, :cond_54
.line 397
iget-object v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v7}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTrex(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Landroid/util/Pair;
move-result-object v7
.line 398
iget-object v9, v7, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v9, Ljava/lang/Integer;
invoke-virtual {v9}, Ljava/lang/Integer;->intValue()I
move-result v9
iget-object v7, v7, Landroid/util/Pair;->second:Ljava/lang/Object;
invoke-virtual {v11, v9, v7}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
goto :goto_61
.line 399
:cond_54
iget v9, v7, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v10, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mehd:I
if-ne v9, v10, :cond_61
.line 400
iget-object v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v7}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseMehd(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
move-result-wide v9
move-wide v12, v9
:cond_61
:goto_61
add-int/lit8 v6, v6, 0x1
goto :goto_30
.line 405
:cond_64
new-instance v14, Landroid/util/SparseArray;
invoke-direct {v14}, Landroid/util/SparseArray;-><init>()V
.line 406
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 v15
const/4 v10, 0x0
:goto_70
if-ge v10, v15, :cond_9f
.line 408
iget-object v5, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->containerChildren:Ljava/util/List;
invoke-interface {v5, v10}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
.line 409
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->type:I
sget v7, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trak:I
if-ne v6, v7, :cond_9a
.line 410
sget v6, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_mvhd:I
invoke-virtual {v1, v6}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v6
const/16 v16, 0x0
move-wide v7, v12
move-object v9, v2
move/from16 v17, v10
move/from16 v10, v16
invoke-static/range {v5 .. v10}, 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;Z)Lcom/google/android/exoplayer2/extractor/mp4/Track;
move-result-object v5
if-eqz v5, :cond_9c
.line 413
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v14, v6, v5}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
goto :goto_9c
:cond_9a
move/from16 v17, v10
:cond_9c
:goto_9c
add-int/lit8 v10, v17, 0x1
goto :goto_70
.line 418
:cond_9f
invoke-virtual {v14}, Landroid/util/SparseArray;->size()I
move-result v1
.line 419
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
move-result v2
if-nez v2, :cond_e6
:goto_ab
if-ge v4, v1, :cond_dd
.line 422
invoke-virtual {v14, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 423
new-instance v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
invoke-interface {v5, v4}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(I)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v5
invoke-direct {v3, v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;-><init>(Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.line 424
iget v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v11, v5}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-virtual {v3, v2, v5}, 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 425
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
iget v6, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v5, v6, v3}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
.line 426
iget-wide v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
iget-wide v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->durationUs:J
invoke-static {v5, v6, v2, v3}, Ljava/lang/Math;->max(JJ)J
move-result-wide v2
iput-wide v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
add-int/lit8 v4, v4, 0x1
goto :goto_ab
.line 428
:cond_dd
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->maybeInitExtraTracks()V
.line 429
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_113
.line 431
:cond_e6
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v2}, Landroid/util/SparseArray;->size()I
move-result v2
if-ne v2, v1, :cond_ef
goto :goto_f0
:cond_ef
const/4 v3, 0x0
:goto_f0
invoke-static {v3}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
:goto_f3
if-ge v4, v1, :cond_113
.line 433
invoke-virtual {v14, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 434
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
iget v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v3, v5}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v11, v5}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-virtual {v3, v2, v5}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->init(Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;)V
add-int/lit8 v4, v4, 0x1
goto :goto_f3
:cond_113
:goto_113
return-void
.end method
.method private static parseMehd(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
.registers 3
const/16 v0, 0x8
.line 514
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 515
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 516
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v0
if-nez v0, :cond_14
.line 517
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v0
goto :goto_18
:cond_14
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v0
:goto_18
return-wide v0
.end method
.method private static parseMoof(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Landroid/util/SparseArray;I[B)V
.registers 9
.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 522
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
const/4 v1, 0x0
:goto_7
if-ge v1, v0, :cond_1d
.line 524
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 526
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 527
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
:cond_1a
add-int/lit8 v1, v1, 0x1
goto :goto_7
: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 7
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/16 v0, 0x8
.line 659
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 660
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 661
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v2
const/4 v3, 0x1
and-int/2addr v2, v3
if-ne v2, v3, :cond_14
.line 663
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 666
:cond_14
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v0
if-ne v0, v3, :cond_2f
.line 672
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v0
.line 673
iget-wide v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
if-nez v0, :cond_27
.line 674
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v3
goto :goto_2b
:cond_27
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v3
:goto_2b
add-long/2addr v1, v3
iput-wide v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
return-void
.line 669
:cond_2f
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Unexpected saio entry count: "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
.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 10
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 622
iget p0, p0, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->initializationVectorSize:I
const/16 v0, 0x8
.line 623
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 624
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 625
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v1
const/4 v2, 0x1
and-int/2addr v1, v2
if-ne v1, v2, :cond_16
.line 627
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 629
:cond_16
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
.line 631
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
.line 632
iget v3, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
if-ne v1, v3, :cond_4b
const/4 v3, 0x0
if-nez v0, :cond_3a
.line 638
iget-object v0, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
const/4 v4, 0x0
const/4 v5, 0x0
:goto_29
if-ge v4, v1, :cond_47
.line 640
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v6
add-int/2addr v5, v6
if-le v6, p0, :cond_34
const/4 v6, 0x1
goto :goto_35
:cond_34
const/4 v6, 0x0
.line 642
:goto_35
aput-boolean v6, v0, v4
add-int/lit8 v4, v4, 0x1
goto :goto_29
:cond_3a
if-le v0, p0, :cond_3d
goto :goto_3e
:cond_3d
const/4 v2, 0x0
:goto_3e
mul-int v0, v0, v1
add-int/lit8 v5, v0, 0x0
.line 647
iget-object p0, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
invoke-static {p0, v3, v1, v2}, Ljava/util/Arrays;->fill([ZIIZ)V
.line 649
:cond_47
invoke-virtual {p2, v5}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->initEncryptionData(I)V
return-void
.line 633
:cond_4b
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "Length mismatch: "
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v0, ", "
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method private static parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;ILcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
add-int/lit8 p1, p1, 0x8
.line 843
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 844
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p1
.line 845
invoke-static {p1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result p1
and-int/lit8 v0, p1, 0x1
if-nez v0, :cond_52
and-int/lit8 p1, p1, 0x2
const/4 v0, 0x0
if-eqz p1, :cond_18
const/4 p1, 0x1
goto :goto_19
:cond_18
const/4 p1, 0x0
.line 853
:goto_19
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
.line 854
iget v2, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
if-ne v1, v2, :cond_31
.line 858
iget-object v2, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
invoke-static {v2, v0, v1, p1}, Ljava/util/Arrays;->fill([ZIIZ)V
.line 859
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result p1
invoke-virtual {p2, p1}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->initEncryptionData(I)V
.line 860
invoke-virtual {p2, p0}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->fillEncryptionData(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
return-void
.line 855
:cond_31
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "Length mismatch: "
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v0, ", "
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
invoke-virtual {p1, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
.line 849
:cond_52
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
const-string p1, "Overriding TrackEncryptionBox parameters is unsupported."
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method private static parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/4 v0, 0x0
.line 838
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
return-void
.end method
.method private static parseSgpd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/16 v0, 0x8
.line 865
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 866
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 867
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v2
sget v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->SAMPLE_GROUP_TYPE_seig:I
if-eq v2, v3, :cond_12
return-void
.line 871
:cond_12
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v1
const/4 v2, 0x4
const/4 v3, 0x1
if-ne v1, v3, :cond_1d
.line 872
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 874
:cond_1d
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p0
if-ne p0, v3, :cond_89
.line 878
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 879
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p0
.line 880
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->SAMPLE_GROUP_TYPE_seig:I
if-eq v0, v1, :cond_33
return-void
.line 884
:cond_33
invoke-static {p0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result p0
const/4 v0, 0x2
if-ne p0, v3, :cond_4d
.line 886
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v1
const-wide/16 v4, 0x0
cmp-long p0, v1, v4
if-eqz p0, :cond_45
goto :goto_52
.line 887
:cond_45
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
const-string p1, "Variable length decription in sgpd found (unsupported)"
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
:cond_4d
if-lt p0, v0, :cond_52
.line 890
invoke-virtual {p1, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 892
:cond_52
:goto_52
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v1
const-wide/16 v4, 0x1
cmp-long p0, v1, v4
if-nez p0, :cond_81
.line 896
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 897
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result p0
const/4 v0, 0x0
if-ne p0, v3, :cond_68
const/4 p0, 0x1
goto :goto_69
:cond_68
const/4 p0, 0x0
:goto_69
if-nez p0, :cond_6c
return-void
.line 901
:cond_6c
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v1
const/16 v2, 0x10
new-array v4, v2, [B
.line 903
invoke-virtual {p1, v4, v0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
.line 904
iput-boolean v3, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->definesEncryptionData:Z
.line 905
new-instance p1, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
invoke-direct {p1, p0, v1, v4}, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;-><init>(ZI[B)V
iput-object p1, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
return-void
.line 893
:cond_81
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
const-string p1, "Entry count in sgpd != 1 (unsupported)."
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
.line 875
:cond_89
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
const-string p1, "Entry count in sbgp != 1 (unsupported)."
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
.end method
.method private static parseSidx(Lcom/google/android/exoplayer2/util/ParsableByteArray;J)Landroid/util/Pair;
.registers 28
.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
move-object/from16 v0, p0
const/16 v1, 0x8
.line 918
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 919
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 920
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v1
const/4 v2, 0x4
.line 922
invoke-virtual {v0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 923
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v9
if-nez v1, :cond_22
.line 927
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v3
.line 928
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v5
goto :goto_2a
.line 930
:cond_22
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v3
.line 931
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v5
:goto_2a
add-long v5, p1, v5
move-wide v11, v3
move-wide v13, v5
const-wide/32 v5, 0xf4240
move-wide v3, v11
move-wide v7, v9
.line 933
invoke-static/range {v3 .. v8}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v15
const/4 v1, 0x2
.line 936
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 938
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v1
.line 939
new-array v7, v1, [I
.line 940
new-array v8, v1, [J
.line 941
new-array v5, v1, [J
.line 942
new-array v6, v1, [J
const/4 v3, 0x0
move-wide v3, v11
move-wide/from16 v17, v15
const/4 v11, 0x0
:goto_4c
if-ge v11, v1, :cond_a3
.line 947
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v12
const/high16 v19, -0x80000000
and-int v19, v12, v19
if-nez v19, :cond_9b
.line 953
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v19
const v21, 0x7fffffff
and-int v12, v12, v21
.line 955
aput v12, v7, v11
.line 956
aput-wide v13, v8, v11
.line 960
aput-wide v17, v6, v11
add-long v17, v3, v19
const-wide/32 v19, 0xf4240
move-wide/from16 v3, v17
move-object v12, v5
move-object v2, v6
move-wide/from16 v5, v19
move/from16 p1, v1
move-object v1, v7
move-object/from16 v22, v8
move-wide v7, v9
.line 962
invoke-static/range {v3 .. v8}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v3
.line 963
aget-wide v5, v2, v11
sub-long v5, v3, v5
aput-wide v5, v12, v11
const/4 v5, 0x4
.line 965
invoke-virtual {v0, v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 966
aget v6, v1, v11
int-to-long v6, v6
add-long/2addr v13, v6
add-int/lit8 v11, v11, 0x1
move-object v7, v1
move-object v6, v2
move-object v5, v12
move-object/from16 v8, v22
const/4 v2, 0x4
move/from16 v1, p1
move-wide/from16 v23, v3
move-wide/from16 v3, v17
move-wide/from16 v17, v23
goto :goto_4c
.line 951
:cond_9b
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
const-string v1, "Unhandled indirect reference"
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
:cond_a3
move-object v12, v5
move-object v2, v6
move-object v1, v7
move-object/from16 v22, v8
.line 969
invoke-static/range {v15 .. v16}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v0
new-instance v3, Lcom/google/android/exoplayer2/extractor/ChunkIndex;
move-object/from16 v4, v22
invoke-direct {v3, v1, v4, v12, v2}, Lcom/google/android/exoplayer2/extractor/ChunkIndex;-><init>([I[J[J[J)V
invoke-static {v0, v3}, Landroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;
move-result-object v0
return-object v0
.end method
.method private static parseTfdt(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
.registers 3
const/16 v0, 0x8
.line 725
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 726
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 727
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v0
const/4 v1, 0x1
if-ne v0, v1, :cond_15
.line 728
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v0
goto :goto_19
:cond_15
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v0
:goto_19
return-wide v0
.end method
.method private static parseTfhd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Landroid/util/SparseArray;I)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/util/ParsableByteArray;",
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;I)",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;"
}
.end annotation
const/16 v0, 0x8
.line 689
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 690
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 691
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v0
.line 692
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
and-int/lit8 p2, p2, 0x10
if-nez p2, :cond_16
goto :goto_17
:cond_16
const/4 v1, 0x0
.line 693
:goto_17
invoke-virtual {p1, v1}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
if-nez p1, :cond_21
const/4 p0, 0x0
return-object p0
:cond_21
and-int/lit8 p2, v0, 0x1
if-eqz p2, :cond_31
.line 698
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v1
.line 699
iget-object p2, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iput-wide v1, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->dataPosition:J
.line 700
iget-object p2, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iput-wide v1, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 703
:cond_31
iget-object p2, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->defaultSampleValues:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
and-int/lit8 v1, v0, 0x2
if-eqz v1, :cond_3e
.line 706
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
add-int/lit8 v1, v1, -0x1
goto :goto_40
:cond_3e
iget v1, p2, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
:goto_40
and-int/lit8 v2, v0, 0x8
if-eqz v2, :cond_49
.line 708
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v2
goto :goto_4b
:cond_49
iget v2, p2, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->duration:I
:goto_4b
and-int/lit8 v3, v0, 0x10
if-eqz v3, :cond_54
.line 710
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v3
goto :goto_56
:cond_54
iget v3, p2, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->size:I
:goto_56
and-int/lit8 v0, v0, 0x20
if-eqz v0, :cond_5f
.line 712
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result p0
goto :goto_61
:cond_5f
iget p0, p2, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->flags:I
.line 713
:goto_61
iget-object p2, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
new-instance v0, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-direct {v0, v1, v2, v3, p0}, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;-><init>(IIII)V
iput-object v0, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
return-object p1
.end method
.method private static parseTraf(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Landroid/util/SparseArray;I[B)V
.registers 8
.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 537
sget v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfhd:I
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v0
.line 538
iget-object v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v0, p1, p2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTfhd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Landroid/util/SparseArray;I)Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
move-result-object p1
if-nez p1, :cond_f
return-void
.line 543
:cond_f
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 544
iget-wide v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->nextFragmentDecodeTime:J
.line 545
invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->reset()V
.line 547
sget v3, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfdt:I
invoke-virtual {p0, v3}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v3
if-eqz v3, :cond_2e
and-int/lit8 v3, p2, 0x2
if-nez v3, :cond_2e
.line 549
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_tfdt:I
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object v1
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseTfdt(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
move-result-wide v1
.line 552
:cond_2e
invoke-static {p0, p1, v1, v2, p2}, 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 554
sget p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_saiz:I
invoke-virtual {p0, p2}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object p2
if-eqz p2, :cond_48
.line 556
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Track;->sampleDescriptionEncryptionBoxes:[Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
iget v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
aget-object p1, p1, v1
.line 558
iget-object p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {p1, p2, v0}, 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 561
:cond_48
sget p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_saio:I
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object p1
if-eqz p1, :cond_55
.line 563
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {p1, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSaio(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 566
:cond_55
sget p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_senc:I
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object p1
if-eqz p1, :cond_62
.line 568
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {p1, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 571
:cond_62
sget p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sbgp:I
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object p1
.line 572
sget p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sgpd:I
invoke-virtual {p0, p2}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->getLeafAtomOfType(I)Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
move-result-object p2
if-eqz p1, :cond_79
if-eqz p2, :cond_79
.line 574
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {p1, p2, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSgpd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 577
:cond_79
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {p1}, Ljava/util/List;->size()I
move-result p1
const/4 p2, 0x0
:goto_80
if-ge p2, p1, :cond_98
.line 579
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
invoke-interface {v1, p2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 580
iget v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v3, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_uuid:I
if-ne v2, v3, :cond_95
.line 581
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v1, v0, p3}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseUuid(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;[B)V
:cond_95
add-int/lit8 p2, p2, 0x1
goto :goto_80
:cond_98
return-void
.end method
.method private static parseTrex(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Landroid/util/Pair;
.registers 6
.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
const/16 v0, 0xc
.line 499
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 500
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 501
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
add-int/lit8 v1, v1, -0x1
.line 502
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v2
.line 503
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v3
.line 504
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p0
.line 506
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
new-instance v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-direct {v4, v1, v2, v3, p0}, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;-><init>(IIII)V
invoke-static {v0, v4}, Landroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;
move-result-object p0
return-object p0
.end method
.method private static parseTrun(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;IJILcom/google/android/exoplayer2/util/ParsableByteArray;I)I
.registers 38
move-object/from16 v0, p0
const/16 v1, 0x8
move-object/from16 v2, p5
.line 744
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 745
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 746
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v1
.line 748
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 749
iget-object v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 750
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.line 752
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunLength:[I
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v6
aput v6, v5, p1
.line 753
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunDataPosition:[J
iget-wide v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->dataPosition:J
aput-wide v6, v5, p1
and-int/lit8 v5, v1, 0x1
if-eqz v5, :cond_35
.line 755
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunDataPosition:[J
aget-wide v6, v5, p1
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v8
int-to-long v8, v8
add-long/2addr v6, v8
aput-wide v6, v5, p1
:cond_35
and-int/lit8 v5, v1, 0x4
const/4 v6, 0x0
const/4 v7, 0x1
if-eqz v5, :cond_3d
const/4 v5, 0x1
goto :goto_3e
:cond_3d
const/4 v5, 0x0
.line 759
:goto_3e
iget v8, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->flags:I
if-eqz v5, :cond_46
.line 761
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v8
:cond_46
and-int/lit16 v9, v1, 0x100
if-eqz v9, :cond_4c
const/4 v9, 0x1
goto :goto_4d
:cond_4c
const/4 v9, 0x0
:goto_4d
and-int/lit16 v10, v1, 0x200
if-eqz v10, :cond_53
const/4 v10, 0x1
goto :goto_54
:cond_53
const/4 v10, 0x0
:goto_54
and-int/lit16 v11, v1, 0x400
if-eqz v11, :cond_5a
const/4 v11, 0x1
goto :goto_5b
:cond_5a
const/4 v11, 0x0
:goto_5b
and-int/lit16 v1, v1, 0x800
if-eqz v1, :cond_61
const/4 v1, 0x1
goto :goto_62
:cond_61
const/4 v1, 0x0
.line 776
:goto_62
iget-object v12, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListDurations:[J
const-wide/16 v13, 0x0
if-eqz v12, :cond_83
iget-object v12, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListDurations:[J
array-length v12, v12
if-ne v12, v7, :cond_83
iget-object v12, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListDurations:[J
aget-wide v15, v12, v6
cmp-long v12, v15, v13
if-nez v12, :cond_83
.line 778
iget-object v12, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->editListMediaTimes:[J
aget-wide v13, v12, v6
const-wide/16 v15, 0x3e8
iget-wide v6, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->timescale:J
move-wide/from16 v17, v6
invoke-static/range {v13 .. v18}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v13
.line 781
:cond_83
iget-object v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleSizeTable:[I
.line 782
iget-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCompositionTimeOffsetTable:[I
.line 783
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleDecodingTimeTable:[J
.line 784
iget-object v12, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleIsSyncFrameTable:[Z
.line 786
iget v2, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->type:I
move/from16 v17, v8
const/4 v8, 0x2
if-ne v2, v8, :cond_9a
const/4 v2, 0x1
and-int/lit8 v8, p4, 0x1
if-eqz v8, :cond_9a
const/16 v16, 0x1
goto :goto_9c
:cond_9a
const/16 v16, 0x0
.line 789
:goto_9c
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunLength:[I
aget v8, v8, p1
add-int v8, p6, v8
.line 790
iget-wide v2, v3, Lcom/google/android/exoplayer2/extractor/mp4/Track;->timescale:J
move-wide/from16 v24, v13
move-object v14, v12
if-lez p1, :cond_ac
.line 791
iget-wide v12, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->nextFragmentDecodeTime:J
goto :goto_ae
:cond_ac
move-wide/from16 v12, p2
:goto_ae
move-wide/from16 p1, v12
move/from16 v12, p6
:goto_b2
if-ge v12, v8, :cond_139
if-eqz v9, :cond_bb
.line 794
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v13
goto :goto_bd
:cond_bb
iget v13, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->duration:I
:goto_bd
if-eqz v10, :cond_c8
.line 796
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v18
move/from16 v26, v9
move/from16 v9, v18
goto :goto_cc
:cond_c8
move/from16 v26, v9
iget v9, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->size:I
:goto_cc
if-nez v12, :cond_d5
if-eqz v5, :cond_d5
move/from16 v27, v5
move/from16 v5, v17
goto :goto_e4
:cond_d5
if-eqz v11, :cond_e0
.line 798
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v18
move/from16 v27, v5
move/from16 v5, v18
goto :goto_e4
:cond_e0
move/from16 v27, v5
iget v5, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->flags:I
:goto_e4
if-eqz v1, :cond_f9
move/from16 v28, v1
.line 805
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
mul-int/lit16 v1, v1, 0x3e8
move/from16 v29, v10
move/from16 v30, v11
int-to-long v10, v1
.line 806
div-long/2addr v10, v2
long-to-int v1, v10
aput v1, v7, v12
const/4 v1, 0x0
goto :goto_102
:cond_f9
move/from16 v28, v1
move/from16 v29, v10
move/from16 v30, v11
const/4 v1, 0x0
.line 808
aput v1, v7, v12
:goto_102
const-wide/16 v20, 0x3e8
move-wide/from16 v18, p1
move-wide/from16 v22, v2
.line 811
invoke-static/range {v18 .. v23}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v10
sub-long v10, v10, v24
aput-wide v10, v15, v12
.line 812
aput v9, v6, v12
shr-int/lit8 v5, v5, 0x10
const/4 v9, 0x1
and-int/2addr v5, v9
if-nez v5, :cond_11e
if-eqz v16, :cond_11c
if-nez v12, :cond_11e
:cond_11c
const/4 v5, 0x1
goto :goto_11f
:cond_11e
const/4 v5, 0x0
.line 813
:goto_11f
aput-boolean v5, v14, v12
int-to-long v10, v13
move-wide/from16 v18, v2
move-wide/from16 v1, p1
add-long/2addr v1, v10
add-int/lit8 v12, v12, 0x1
move-wide/from16 p1, v1
move-wide/from16 v2, v18
move/from16 v9, v26
move/from16 v5, v27
move/from16 v1, v28
move/from16 v10, v29
move/from16 v11, v30
goto/16 :goto_b2
:cond_139
move-wide/from16 v1, p1
.line 817
iput-wide v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->nextFragmentDecodeTime:J
return v8
.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 15
.line 590
iget-object p0, p0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
.line 591
invoke-interface {p0}, Ljava/util/List;->size()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x0
const/4 v3, 0x0
const/4 v4, 0x0
:goto_a
if-ge v2, v0, :cond_2b
.line 593
invoke-interface {p0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 594
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v7, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trun:I
if-ne v6, v7, :cond_28
.line 595
iget-object v5, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/16 v6, 0xc
.line 596
invoke-virtual {v5, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 597
invoke-virtual {v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v5
if-lez v5, :cond_28
add-int/2addr v4, v5
add-int/lit8 v3, v3, 0x1
:cond_28
add-int/lit8 v2, v2, 0x1
goto :goto_a
.line 604
:cond_2b
iput v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
.line 605
iput v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
.line 606
iput v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
.line 607
iget-object v2, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
invoke-virtual {v2, v3, v4}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->initTables(II)V
const/4 v3, 0x0
const/4 v8, 0x0
:goto_38
if-ge v1, v0, :cond_56
.line 612
invoke-interface {p0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
.line 613
iget v4, v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->type:I
sget v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_trun:I
if-ne v4, v5, :cond_53
add-int/lit8 v9, v3, 0x1
.line 614
iget-object v7, v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
move-object v2, p1
move-wide v4, p2
move v6, p4
invoke-static/range {v2 .. v8}, 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 v2
move v8, v2
move v3, v9
:cond_53
add-int/lit8 v1, v1, 0x1
goto :goto_38
:cond_56
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
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/16 v0, 0x8
.line 823
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
const/4 v0, 0x0
const/16 v1, 0x10
.line 824
invoke-virtual {p0, p2, v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
.line 827
sget-object v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->PIFF_SAMPLE_ENCRYPTION_BOX_EXTENDED_TYPE:[B
invoke-static {p2, v0}, Ljava/util/Arrays;->equals([B[B)Z
move-result p2
if-nez p2, :cond_14
return-void
.line 834
:cond_14
invoke-static {p0, v1, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;ILcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
return-void
.end method
.method private processAtomEnded(J)V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 355
:goto_0
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {v0}, Ljava/util/Stack;->isEmpty()Z
move-result v0
if-nez v0, :cond_22
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {v0}, Ljava/util/Stack;->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 356
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {v0}, Ljava/util/Stack;->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 358
:cond_22
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
return-void
.end method
.method private readAtomHeader(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
.registers 10
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 267
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 269
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
return v2
.line 272
:cond_13
iput v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
.line 273
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 274
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 275
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 278
: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_46
.line 281
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, v1, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 282
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
add-int/2addr v0, v1
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
.line 283
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;->readUnsignedLongToLong()J
move-result-wide v4
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
.line 286
:cond_46
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_11a
.line 290
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 291
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_79
.line 293
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
const/4 v6, 0x0
:goto_64
if-ge v6, v0, :cond_79
.line 295
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 296
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->atomPosition:J
.line 297
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 298
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->dataPosition:J
add-int/lit8 v6, v6, 0x1
goto :goto_64
.line 302
:cond_79
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_9d
.line 303
iput-object v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 304
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
add-long/2addr v4, v0
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->endOfMdatPosition:J
.line 305
iget-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
if-nez p1, :cond_99
.line 306
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
new-instance v0, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;
iget-wide v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
invoke-direct {v0, v1, v2}, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;-><init>(J)V
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->seekMap(Lcom/google/android/exoplayer2/extractor/SeekMap;)V
.line 307
iput-boolean v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
:cond_99
const/4 p1, 0x2
.line 309
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
return v3
.line 313
:cond_9d
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_cc
.line 314
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v0
iget-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
add-long/2addr v0, v4
const-wide/16 v4, 0x8
sub-long/2addr v0, v4
.line 315
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
new-instance v2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
invoke-direct {v2, v4, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;-><init>(IJ)V
invoke-virtual {p1, v2}, Ljava/util/Stack;->add(Ljava/lang/Object;)Z
.line 316
iget-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
int-to-long v6, p1
cmp-long p1, v4, v6
if-nez p1, :cond_c8
.line 317
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processAtomEnded(J)V
goto :goto_111
.line 320
:cond_c8
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
goto :goto_111
.line 322
:cond_cc
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
invoke-static {p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->shouldParseLeafAtom(I)Z
move-result p1
const-wide/32 v4, 0x7fffffff
if-eqz p1, :cond_107
.line 323
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
if-ne p1, v1, :cond_ff
.line 326
iget-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
cmp-long p1, v6, v4
if-gtz p1, :cond_f7
.line 329
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
long-to-int v0, v6
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 330
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object p1, p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-static {p1, v2, v0, v2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 331
iput v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
goto :goto_111
.line 327
:cond_f7
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Leaf atom with length > 2147483647 (unsupported)."
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 324
:cond_ff
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Leaf atom defines extended atom size (unsupported)."
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 333
:cond_107
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
cmp-long p1, v0, v4
if-gtz p1, :cond_112
.line 336
iput-object v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 337
iput v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
:goto_111
return v3
.line 334
:cond_112
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Skipping atom with length > 2147483647 (unsupported)."
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 287
:cond_11a
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Atom size less than header length (unsupported)."
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method private readAtomPayload(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 344
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 345
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
if-eqz v0, :cond_22
.line 346
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 347
new-instance v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;
iget v1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {v0, v1, v2}, 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 v1
invoke-direct {p0, v0, v1, v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onLeafAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;J)V
goto :goto_25
.line 349
:cond_22
invoke-interface {p1, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 351
:goto_25
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v0
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processAtomEnded(J)V
return-void
.end method
.method private readEncryptionData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.registers 13
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 976
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
const/4 v1, 0x0
const-wide v2, 0x7fffffffffffffffL
const/4 v4, 0x0
:goto_d
if-ge v4, v0, :cond_33
.line 978
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 979
iget-boolean v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleEncryptionDataNeedsFill:Z
if-eqz v6, :cond_30
iget-wide v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
cmp-long v8, v6, v2
if-gez v8, :cond_30
.line 981
iget-wide v1, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 982
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v3, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
move-wide v9, v1
move-object v1, v3
move-wide v2, v9
:cond_30
add-int/lit8 v4, v4, 0x1
goto :goto_d
:cond_33
if-nez v1, :cond_39
const/4 p1, 0x3
.line 986
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
return-void
.line 989
:cond_39
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v4
sub-long/2addr v2, v4
long-to-int v0, v2
if-ltz v0, :cond_4a
.line 993
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 994
iget-object v0, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->fillEncryptionData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
return-void
.line 991
:cond_4a
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Offset to encryption data was negative."
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method private readSample(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
.registers 18
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
move-object/from16 v0, p0
move-object/from16 v1, p1
.line 1012
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
const/4 v3, 0x3
const/4 v4, 0x4
const/4 v5, 0x1
const/4 v6, 0x0
if-ne v2, v3, :cond_8a
.line 1013
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
if-nez v2, :cond_4e
.line 1014
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
if-nez v2, :cond_31
.line 1018
iget-wide v2, 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 v4
sub-long/2addr v2, v4
long-to-int v3, v2
if-ltz v3, :cond_29
.line 1022
invoke-interface {v1, v3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1023
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
return v6
.line 1020
:cond_29
new-instance v1, Lcom/google/android/exoplayer2/ParserException;
const-string v2, "Offset to end of mdat was negative."
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v1
.line 1027
:cond_31
iget-object v7, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
iget-object v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunDataPosition:[J
iget v8, v2, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
aget-wide v8, v7, v8
.line 1030
invoke-interface/range {p1 .. p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v10
sub-long/2addr v8, v10
long-to-int v7, v8
if-gez v7, :cond_49
const-string v7, "FragmentedMp4Extractor"
const-string v8, "Ignoring negative offset to sample data."
.line 1033
invoke-static {v7, v8}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
const/4 v7, 0x0
.line 1036
:cond_49
invoke-interface {v1, v7}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1037
iput-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 1039
:cond_4e
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 v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
aget v2, v2, v7
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
.line 1041
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-boolean v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->definesEncryptionData:Z
if-eqz v2, :cond_72
.line 1042
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->appendSampleEncryptionData(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;)I
move-result v2
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1043
iget v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
add-int/2addr v7, v2
iput v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
goto :goto_74
.line 1045
:cond_72
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1047
:goto_74
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, v5, :cond_86
.line 1048
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
const/16 v7, 0x8
sub-int/2addr v2, v7
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
.line 1049
invoke-interface {v1, v7}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1051
:cond_86
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 1052
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1055
:cond_8a
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 1056
iget-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 1057
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget-object v9, v8, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 1058
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
.line 1059
iget v10, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
const-wide/16 v11, 0x3e8
if-eqz v10, :cond_145
.line 1062
iget-object v10, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v10, v10, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 1063
aput-byte v6, v10, v6
.line 1064
aput-byte v6, v10, v5
const/4 v13, 0x2
.line 1065
aput-byte v6, v10, v13
.line 1066
iget v10, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
.line 1067
iget v13, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
rsub-int/lit8 v13, v13, 0x4
.line 1071
:cond_b1
:goto_b1
iget v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
if-ge v14, v15, :cond_156
.line 1072
iget v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
if-nez v14, :cond_133
.line 1074
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v14, v14, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-interface {v1, v14, v13, v10}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 1075
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v14, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1076
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v14}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v14
iput v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1078
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v14, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1079
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v9, v14, v4}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1080
iget v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
add-int/2addr v14, v4
iput v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1081
iget v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
add-int/2addr v14, v13
iput v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
.line 1082
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-eqz v14, :cond_b1
.line 1083
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v14, v14, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 1085
invoke-interface {v1, v14, v6, v5}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->peekFully([BII)V
.line 1086
aget-byte v15, v14, v6
and-int/lit8 v15, v15, 0x1f
const/4 v4, 0x6
if-ne v15, v4, :cond_141
.line 1088
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
invoke-virtual {v4, v15}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 1089
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
invoke-interface {v1, v14, v6, v4}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 1091
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
invoke-interface {v9, v4, v15}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1092
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
add-int/2addr v4, v15
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1093
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1095
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v4
invoke-static {v14, v4}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->unescapeStream([BI)I
move-result v4
.line 1096
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v14, v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1097
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v14, v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setLimit(I)V
.line 1098
invoke-virtual {v2, v8}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->getSamplePresentationTime(I)J
move-result-wide v14
mul-long v14, v14, v11
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPayload:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
invoke-static {v14, v15, v4, v3}, Lcom/google/android/exoplayer2/text/cea/CeaUtil;->consume(JLcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
goto :goto_141
.line 1104
:cond_133
invoke-interface {v9, v1, v14, v6}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
move-result v3
.line 1105
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 1106
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
:cond_141
:goto_141
const/4 v3, 0x3
const/4 v4, 0x4
goto/16 :goto_b1
.line 1110
:cond_145
:goto_145
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_156
sub-int/2addr v4, v3
.line 1111
invoke-interface {v9, v1, v4, v6}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
move-result v3
.line 1112
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
goto :goto_145
.line 1116
:cond_156
invoke-virtual {v2, v8}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->getSamplePresentationTime(I)J
move-result-wide v3
mul-long v3, v3, v11
.line 1117
iget-boolean v1, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->definesEncryptionData:Z
if-eqz v1, :cond_163
const/high16 v1, 0x40000000 # 2.0f
goto :goto_164
:cond_163
const/4 v1, 0x0
:goto_164
iget-object v10, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleIsSyncFrameTable:[Z
aget-boolean v8, v10, v8
or-int v12, v1, v8
.line 1119
iget-object v1, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
iget v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
.line 1121
iget-boolean v8, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->definesEncryptionData:Z
const/4 v15, 0x0
if-eqz v8, :cond_181
.line 1122
iget-object v8, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
if-eqz v8, :cond_17a
iget-object v1, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
goto :goto_17e
:cond_17a
iget-object v7, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->sampleDescriptionEncryptionBoxes:[Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
aget-object v1, v7, v1
:goto_17e
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->keyId:[B
goto :goto_182
:cond_181
move-object v1, v15
.line 1126
:goto_182
iget-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
if-eqz v7, :cond_18a
.line 1127
invoke-virtual {v7, v3, v4}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->adjustSampleTimestamp(J)J
move-result-wide v3
.line 1129
:cond_18a
iget v13, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
const/4 v14, 0x0
move-wide v10, v3
move-object v7, v15
move-object v15, v1
invoke-interface/range {v9 .. v15}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIII[B)V
.line 1131
:goto_193
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/LinkedList;
invoke-virtual {v1}, Ljava/util/LinkedList;->isEmpty()Z
move-result v1
if-nez v1, :cond_1b9
.line 1132
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/LinkedList;
invoke-virtual {v1}, Ljava/util/LinkedList;->removeFirst()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;
.line 1133
iget v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
iget v9, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->size:I
sub-int/2addr v8, v9
iput v8, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
.line 1134
iget-object v9, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget-wide v10, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->presentationTimeDeltaUs:J
add-long/2addr v10, v3
const/4 v12, 0x1
iget v13, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->size:I
iget v14, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
const/4 v15, 0x0
invoke-interface/range {v9 .. v15}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIII[B)V
goto :goto_193
.line 1139
:cond_1b9
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v3, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
add-int/2addr v3, v5
iput v3, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
.line 1140
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v3, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
add-int/2addr v3, v5
iput v3, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
.line 1141
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
iget-object v2, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trunLength:[I
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v3, v3, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
aget v2, v2, v3
if-ne v1, v2, :cond_1e2
.line 1143
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
add-int/2addr v2, v5
iput v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
.line 1144
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iput v6, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
.line 1145
iput-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
:cond_1e2
const/4 v1, 0x3
.line 1147
iput v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
return v5
.end method
.method private static shouldParseContainerAtom(I)Z
.registers 2
.line 1249
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 p0, 0x0
goto :goto_28
:cond_27
:goto_27
const/4 p0, 0x1
:goto_28
return p0
.end method
.method private static shouldParseLeafAtom(I)Z
.registers 2
.line 1238
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 p0, 0x0
goto :goto_54
:cond_53
:goto_53
const/4 p0, 0x1
:goto_54
return p0
.end method
# virtual methods
.method public init(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;)V
.registers 5
.line 210
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
.line 211
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
if-eqz v0, :cond_27
.line 212
new-instance v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
const/4 v1, 0x0
invoke-interface {p1, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(I)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object p1
invoke-direct {v0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;-><init>(Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.line 213
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
new-instance v2, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-direct {v2, v1, v1, v1, v1}, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;-><init>(IIII)V
invoke-virtual {v0, p1, v2}, 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 214
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {p1, v1, v0}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
.line 215
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->maybeInitExtraTracks()V
.line 216
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->endTracks()V
:cond_27
return-void
.end method
.method public read(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/PositionHolder;)I
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 241
:cond_0
:goto_0
iget p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
if-eqz p2, :cond_1a
const/4 v0, 0x1
if-eq p2, v0, :cond_16
const/4 v0, 0x2
if-eq p2, v0, :cond_12
.line 254
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readSample(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result p2
if-eqz p2, :cond_0
const/4 p1, 0x0
return p1
.line 251
:cond_12
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readEncryptionData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
goto :goto_0
.line 248
:cond_16
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readAtomPayload(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)V
goto :goto_0
.line 243
:cond_1a
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->readAtomHeader(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result p2
if-nez p2, :cond_0
const/4 p1, -0x1
return p1
.end method
.method public release()V
.registers 1
return-void
.end method
.method public seek(JJ)V
.registers 5
.line 222
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {p1}, Landroid/util/SparseArray;->size()I
move-result p1
const/4 p2, 0x0
const/4 p3, 0x0
:goto_8
if-ge p3, p1, :cond_18
.line 224
iget-object p4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {p4, p3}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object p4
check-cast p4, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
invoke-virtual {p4}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->reset()V
add-int/lit8 p3, p3, 0x1
goto :goto_8
.line 226
:cond_18
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleInfos:Ljava/util/LinkedList;
invoke-virtual {p1}, Ljava/util/LinkedList;->clear()V
.line 227
iput p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
.line 228
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {p1}, Ljava/util/Stack;->clear()V
.line 229
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
return-void
.end method
.method public sniff(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 205
invoke-static {p1}, Lcom/google/android/exoplayer2/extractor/mp4/Sniffer;->sniffFragmented(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result p1
return p1
.end method