FragmentedMp4Extractor.smali
.class public final Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;
.super Ljava/lang/Object;
.source "SourceFile"
# 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_EDIT_LISTS:I = 0x20
.field public static final FLAG_WORKAROUND_IGNORE_TFDT_BOX:I = 0x2
.field private static final PIFF_SAMPLE_ENCRYPTION_BOX_EXTENDED_TYPE:[B
.field private static final SAMPLE_GROUP_TYPE_seig:I
.field private static final STATE_READING_ATOM_HEADER:I = 0x0
.field private static final STATE_READING_ATOM_PAYLOAD:I = 0x1
.field private static final STATE_READING_ENCRYPTION_DATA:I = 0x2
.field private static final STATE_READING_SAMPLE_CONTINUE:I = 0x4
.field private static final STATE_READING_SAMPLE_START:I = 0x3
.field private static final TAG:Ljava/lang/String; = "FragmentedMp4Extractor"
# instance fields
.field private atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private atomHeaderBytesRead:I
.field private atomSize:J
.field private atomType:I
.field private cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
.field private final 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 final defaultInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.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 nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private parserState:I
.field private pendingMetadataSampleBytes:I
.field private final pendingMetadataSampleInfos:Ljava/util/LinkedList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/LinkedList<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;",
">;"
}
.end annotation
.end field
.field private processSeiNalUnitPayload:Z
.field private sampleBytesWritten:I
.field private sampleCurrentNalBytesRemaining:I
.field private sampleSize:I
.field private segmentIndexEarliestPresentationTimeUs:J
.field private final sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
.field private final sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.field private final timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.field private final trackBundles:Landroid/util/SparseArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 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 112
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 113
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 2
const/4 v0, 0x0
.line 174
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(I)V
return-void
.end method
.method public constructor <init>(I)V
.registers 3
const/4 v0, 0x0
.line 181
invoke-direct {p0, p1, v0}, 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/util/TimestampAdjuster;)V
.registers 4
const/4 v0, 0x0
.line 189
invoke-direct {p0, p1, p2, v0, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;-><init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;)V
return-void
.end method
.method public constructor <init>(ILcom/google/android/exoplayer2/util/TimestampAdjuster;Lcom/google/android/exoplayer2/extractor/mp4/Track;Lcom/google/android/exoplayer2/drm/DrmInitData;)V
.registers 7
.line 200
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/16 v0, 0x10
if-eqz p3, :cond_a
const/16 v1, 0x10
goto :goto_b
:cond_a
const/4 v1, 0x0
:goto_b
or-int/2addr p1, v1
.line 201
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
.line 202
iput-object p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
.line 203
iput-object p3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 204
iput-object p4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
.line 205
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 206
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 207
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 p2, 0x5
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 208
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 209
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;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 210
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->defaultInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
new-array p1, v0, [B
.line 211
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extendedTypeScratch:[B
.line 212
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 213
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 214
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 215
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
.line 216
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->segmentIndexEarliestPresentationTimeUs:J
.line 217
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
return-void
.end method
.method private appendSampleEncryptionData(Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;)I
.registers 9
.line 1233
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 1234
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
.line 1235
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
if-eqz v2, :cond_d
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
goto :goto_13
:cond_d
iget-object v2, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 1237
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/extractor/mp4/Track;->getSampleDescriptionEncryptionBox(I)Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
move-result-object v1
.line 1241
:goto_13
iget v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->initializationVectorSize:I
if-eqz v2, :cond_1c
.line 1242
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleEncryptionData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 1243
iget v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->initializationVectorSize:I
goto :goto_27
.line 1246
:cond_1c
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->defaultInitializationVector:[B
.line 1247
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->defaultInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
array-length v3, v1
invoke-virtual {v2, v1, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 1248
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->defaultInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 1249
array-length v1, v1
.line 1252
:goto_27
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleHasSubsampleEncryptionTable:[Z
iget v4, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
aget-boolean v3, v3, v4
.line 1256
iget-object v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v4, v4, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/4 v5, 0x0
if-eqz v3, :cond_37
const/16 v6, 0x80
goto :goto_38
:cond_37
const/4 v6, 0x0
:goto_38
or-int/2addr v6, v1
int-to-byte v6, v6
aput-byte v6, v4, v5
.line 1257
iget-object v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v4, v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1258
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 1259
iget-object v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->encryptionSignalByte:Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 v5, 0x1
invoke-interface {p1, v4, v5}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1261
invoke-interface {p1, v2, v1}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
if-nez v3, :cond_50
add-int/2addr v1, v5
return v1
.line 1267
:cond_50
iget-object v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleEncryptionData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 1268
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v2
const/4 v3, -0x2
.line 1269
invoke-virtual {v0, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
mul-int/lit8 v2, v2, 0x6
add-int/lit8 v2, v2, 0x2
.line 1271
invoke-interface {p1, v0, v2}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
add-int/2addr v1, v5
add-int/2addr v1, v2
return v1
.end method
.method private enterReadingAtomHeaderState()V
.registers 2
const/4 v0, 0x0
.line 279
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 280
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 1278
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_3b
.line 1280
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 1281
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_38
if-nez v3, :cond_1c
.line 1283
new-instance v3, Ljava/util/ArrayList;
invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
.line 1285
: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 1286
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 1288
invoke-static {v4, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_38
.line 1290
:cond_2e
new-instance v6, Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;
const-string 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_38
:goto_38
add-int/lit8 v2, v2, 0x1
goto :goto_7
:cond_3b
if-nez v3, :cond_3e
return-object v1
.line 1294
:cond_3e
new-instance p0, Lcom/google/android/exoplayer2/drm/DrmInitData;
invoke-direct {p0, v3}, Lcom/google/android/exoplayer2/drm/DrmInitData;-><init>(Ljava/util/List;)V
return-object p0
.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 1208
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_2c
.line 1210
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 1211
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-eq v6, v7, :cond_29
.line 1214
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_29
move-object v1, v5
move-wide v2, v7
:cond_29
add-int/lit8 v4, v4, 0x1
goto :goto_b
:cond_2c
return-object v1
.end method
.method private maybeInitExtraTracks()V
.registers 6
.line 481
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
const/4 v1, 0x4
and-int/2addr v0, v1
const/4 v2, 0x0
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 482
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {v3}, Landroid/util/SparseArray;->size()I
move-result v3
invoke-interface {v0, v3, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)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-wide v3, 0x7fffffffffffffffL
const-string v1, "application/x-emsg"
.line 483
invoke-static {v2, v1, v3, v4}, 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 486
: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;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-nez v0, :cond_50
.line 487
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
const/4 v3, 0x1
add-int/2addr v1, v3
const/4 v4, 0x3
invoke-interface {v0, v1, v4}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v0
const/4 v1, 0x0
const-string v4, "application/cea-608"
.line 489
invoke-static {v2, v4, v1, v2}, Lcom/google/android/exoplayer2/Format;->createTextSampleFormat(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Lcom/google/android/exoplayer2/Format;
move-result-object v2
invoke-interface {v0, v2}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->format(Lcom/google/android/exoplayer2/Format;)V
new-array v2, v3, [Lcom/google/android/exoplayer2/extractor/TrackOutput;
aput-object v0, v2, v1
.line 491
iput-object v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
: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 402
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 403
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onMoovContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
return-void
.line 404
: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 405
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->onMoofContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
return-void
.line 406
: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 407
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
return-void
.end method
.method private onEmsgLeafAtomRead(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.registers 12
.line 499
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 503
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 504
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readNullTerminatedString()Ljava/lang/String;
.line 505
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readNullTerminatedString()Ljava/lang/String;
.line 506
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v5
.line 508
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 510
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 511
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v7
.line 512
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 514
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 516
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
add-long/2addr v1, v3
const/4 v6, 0x1
const/4 v8, 0x0
const/4 v9, 0x0
move-object v3, p1
move-wide v4, v1
invoke-interface/range {v3 .. v9}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
return-void
.line 521
: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 523
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
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 389
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 390
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
return-void
.line 391
: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 392
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 393
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 394
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 395
iput-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
return-void
.line 396
: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 397
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
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 468
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 470
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
if-eqz v0, :cond_f
const/4 p1, 0x0
goto :goto_15
:cond_f
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
.line 471
invoke-static {p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->getDrmInitDataFromAtoms(Ljava/util/List;)Lcom/google/android/exoplayer2/drm/DrmInitData;
move-result-object p1
:goto_15
if-eqz p1, :cond_2e
.line 473
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_1e
if-ge v1, v0, :cond_2e
.line 475
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_1e
:cond_2e
return-void
.end method
.method private onMoovContainerAtomRead(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;)V
.registers 21
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
move-object/from16 v0, p0
move-object/from16 v1, p1
.line 412
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 414
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedDrmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
if-eqz v2, :cond_17
goto :goto_1d
:cond_17
iget-object v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
.line 415
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 418
:goto_1d
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 419
new-instance v12, Landroid/util/SparseArray;
invoke-direct {v12}, Landroid/util/SparseArray;-><init>()V
const-wide v6, -0x7fffffffffffffffL # -4.9E-324
.line 421
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 v13, v6
const/4 v6, 0x0
:goto_35
if-ge v6, v8, :cond_69
.line 423
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 424
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_59
.line 425
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 426
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 {v12, v9, v7}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
goto :goto_66
.line 427
:cond_59
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_66
.line 428
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 v13, v9
:cond_66
:goto_66
add-int/lit8 v6, v6, 0x1
goto :goto_35
.line 433
:cond_69
new-instance v15, Landroid/util/SparseArray;
invoke-direct {v15}, Landroid/util/SparseArray;-><init>()V
.line 434
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 v11
const/4 v10, 0x0
:goto_75
if-ge v10, v11, :cond_b7
.line 436
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 437
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_ae
.line 438
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
iget v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->flags:I
and-int/lit8 v7, v7, 0x20
if-eqz v7, :cond_94
const/16 v16, 0x1
goto :goto_96
:cond_94
const/16 v16, 0x0
:goto_96
const/16 v17, 0x0
move-wide v7, v13
move-object v9, v2
move/from16 v18, v10
move/from16 v10, v16
move/from16 v16, v11
move/from16 v11, v17
invoke-static/range {v5 .. v11}, Lcom/google/android/exoplayer2/extractor/mp4/AtomParsers;->parseTrak(Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;JLcom/google/android/exoplayer2/drm/DrmInitData;ZZ)Lcom/google/android/exoplayer2/extractor/mp4/Track;
move-result-object v5
if-eqz v5, :cond_b2
.line 441
iget v6, v5, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v15, v6, v5}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
goto :goto_b2
:cond_ae
move/from16 v18, v10
move/from16 v16, v11
:cond_b2
:goto_b2
add-int/lit8 v10, v18, 0x1
move/from16 v11, v16
goto :goto_75
.line 446
:cond_b7
invoke-virtual {v15}, Landroid/util/SparseArray;->size()I
move-result v1
.line 447
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_100
:goto_c3
if-ge v4, v1, :cond_f7
.line 450
invoke-virtual {v15, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 451
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;
iget v6, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->type:I
invoke-interface {v5, v4, v6}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)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 452
iget v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;->id:I
invoke-virtual {v12, 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 453
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 454
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_c3
.line 456
:cond_f7
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->maybeInitExtraTracks()V
.line 457
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
return-void
.line 459
:cond_100
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_109
goto :goto_10a
:cond_109
const/4 v3, 0x0
:goto_10a
invoke-static {v3}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
:goto_10d
if-ge v4, v1, :cond_12d
.line 461
invoke-virtual {v15, v4}, Landroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 462
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 {v12, 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_10d
:cond_12d
return-void
.end method
.method private static parseMehd(Lcom/google/android/exoplayer2/util/ParsableByteArray;)J
.registers 3
const/16 v0, 0x8
.line 546
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 547
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 548
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v0
if-nez v0, :cond_14
.line 549
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v0
return-wide v0
:cond_14
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v0
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 554
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 556
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 558
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 559
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 693
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 694
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 695
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 697
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 700
:cond_14
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v0
if-ne v0, v3, :cond_2f
.line 706
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v0
.line 707
iget-wide v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
if-nez v0, :cond_27
.line 708
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 703
:cond_2f
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
invoke-static {v0}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p1
const-string v0, "Unexpected saio entry count: "
invoke-virtual {v0, p1}, Ljava/lang/String;->concat(Ljava/lang/String;)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 656
iget p0, p0, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->initializationVectorSize:I
const/16 v0, 0x8
.line 657
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 658
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 659
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 661
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 663
:cond_16
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
.line 665
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
.line 666
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 672
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 674
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 676
: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 681
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 683
:cond_47
invoke-virtual {p2, v5}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->initEncryptionData(I)V
return-void
.line 667
:cond_4b
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
new-instance p1, Ljava/lang/StringBuilder;
const-string v0, "Length mismatch: "
invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
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
goto :goto_6a
:goto_69
throw p0
:goto_6a
goto :goto_69
.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 877
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 878
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p1
.line 879
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_4f
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 887
:goto_19
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
.line 888
iget v2, p2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCount:I
if-ne v1, v2, :cond_31
.line 892
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 893
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 894
invoke-virtual {p2, p0}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->fillEncryptionData(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
return-void
.line 889
:cond_31
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
new-instance p1, Ljava/lang/StringBuilder;
const-string v0, "Length mismatch: "
invoke-direct {p1, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
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 883
:cond_4f
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 872
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;Ljava/lang/String;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.registers 16
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/16 v0, 0x8
.line 899
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 900
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 901
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 905
: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 906
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 908
:cond_1d
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p0
if-ne p0, v3, :cond_a5
.line 912
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 913
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p0
.line 914
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 918
:cond_33
invoke-static {p0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result p0
if-ne p0, v3, :cond_4c
.line 920
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v0
const-wide/16 v4, 0x0
cmp-long p0, v0, v4
if-eqz p0, :cond_44
goto :goto_52
.line 921
:cond_44
new-instance p0, Lcom/google/android/exoplayer2/ParserException;
const-string p1, "Variable length description in sgpd found (unsupported)"
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p0
:cond_4c
const/4 v0, 0x2
if-lt p0, v0, :cond_52
.line 924
invoke-virtual {p1, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 926
:cond_52
:goto_52
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v0
const-wide/16 v4, 0x1
cmp-long p0, v0, v4
if-nez p0, :cond_9d
.line 930
invoke-virtual {p1, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 931
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result p0
and-int/lit16 v0, p0, 0xf0
shr-int/lit8 v9, v0, 0x4
and-int/lit8 v10, p0, 0xf
.line 934
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result p0
const/4 v0, 0x0
if-ne p0, v3, :cond_72
const/4 p0, 0x1
goto :goto_73
:cond_72
const/4 p0, 0x0
:goto_73
if-nez p0, :cond_76
return-void
.line 938
:cond_76
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v7
const/16 p0, 0x10
new-array v8, p0, [B
.line 940
invoke-virtual {p1, v8, v0, p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
const/4 p0, 0x0
if-nez v7, :cond_8f
.line 943
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result p0
.line 944
new-array v1, p0, [B
.line 945
invoke-virtual {p1, v1, v0, p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
move-object v11, v1
goto :goto_90
:cond_8f
move-object v11, p0
.line 947
:goto_90
iput-boolean v3, p3, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->definesEncryptionData:Z
.line 948
new-instance p0, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
const/4 v5, 0x1
move-object v4, p0
move-object v6, p2
invoke-direct/range {v4 .. v11}, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;-><init>(ZLjava/lang/String;I[BII[B)V
iput-object p0, p3, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
return-void
.line 927
:cond_9d
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 909
:cond_a5
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 962
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 963
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 964
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomVersion(I)I
move-result v1
const/4 v2, 0x4
.line 966
invoke-virtual {v0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 967
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v9
if-nez v1, :cond_22
.line 971
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v3
.line 972
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v5
goto :goto_2a
.line 974
:cond_22
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v3
.line 975
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 977
invoke-static/range {v3 .. v8}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v15
const/4 v1, 0x2
.line 980
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 982
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v1
.line 983
new-array v7, v1, [I
.line 984
new-array v8, v1, [J
.line 985
new-array v5, v1, [J
.line 986
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 991
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 997
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 999
aput v12, v7, v11
.line 1000
aput-wide v13, v8, v11
.line 1004
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 1006
invoke-static/range {v3 .. v8}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide v3
.line 1007
aget-wide v5, v2, v11
sub-long v5, v3, v5
aput-wide v5, v12, v11
const/4 v5, 0x4
.line 1009
invoke-virtual {v0, v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 1010
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 995
: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 1013
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 759
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 760
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 761
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 762
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v0
return-wide v0
:cond_15
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v0
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 723
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 724
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 725
invoke-static {v0}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v0
.line 726
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 727
: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 732
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedLongToLong()J
move-result-wide v1
.line 733
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 734
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 737
: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 740
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 742
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 744
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 746
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 747
: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 569
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 570
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 575
:cond_f
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 576
iget-wide v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->nextFragmentDecodeTime:J
.line 577
invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->reset()V
.line 579
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 581
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 584
: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 586
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
iget-object p2, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
iget p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
.line 587
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/extractor/mp4/Track;->getSampleDescriptionEncryptionBox(I)Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
move-result-object p1
.line 589
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 591
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 594
:cond_48
sget p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_saio: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_55
.line 596
iget-object p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {p2, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSaio(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 599
:cond_55
sget p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_senc: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_62
.line 601
iget-object p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {p2, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 604
:cond_62
sget p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sbgp: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
.line 605
sget v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->TYPE_sgpd: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
if-eqz p2, :cond_7f
if-eqz v1, :cond_7f
.line 607
iget-object p2, p2, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
if-eqz p1, :cond_7b
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->schemeType:Ljava/lang/String;
goto :goto_7c
:cond_7b
const/4 p1, 0x0
:goto_7c
invoke-static {p2, v1, p1, v0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSgpd(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/util/ParsableByteArray;Ljava/lang/String;Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
.line 611
:cond_7f
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_86
if-ge p2, p1, :cond_9e
.line 613
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 614
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_9b
.line 615
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_9b
add-int/lit8 p2, p2, 0x1
goto :goto_86
:cond_9e
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 531
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 532
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v0
.line 533
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v1
add-int/lit8 v1, v1, -0x1
.line 534
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v2
.line 535
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v3
.line 536
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result p0
.line 538
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 778
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 779
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
.line 780
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom;->parseFullAtomFlags(I)I
move-result v1
.line 782
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->track:Lcom/google/android/exoplayer2/extractor/mp4/Track;
.line 783
iget-object v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->fragment:Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;
.line 784
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
.line 786
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 787
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 789
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 793
:goto_3e
iget v8, v4, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->flags:I
if-eqz v5, :cond_46
.line 795
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 810
: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 812
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 815
:cond_83
iget-object v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleSizeTable:[I
.line 816
iget-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleCompositionTimeOffsetTable:[I
.line 817
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleDecodingTimeTable:[J
.line 818
iget-object v12, v0, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleIsSyncFrameTable:[Z
.line 820
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 823
: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 824
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 825
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_13b
if-eqz v9, :cond_bb
.line 828
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 830
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 832
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_fb
move/from16 v28, v1
.line 839
invoke-virtual/range {p5 .. p5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readInt()I
move-result v1
move/from16 v29, v10
move/from16 v30, v11
int-to-long v10, v1
const-wide/16 v18, 0x3e8
mul-long v10, v10, v18
.line 840
div-long/2addr v10, v2
long-to-int v1, v10
aput v1, v7, v12
const/4 v1, 0x0
goto :goto_104
:cond_fb
move/from16 v28, v1
move/from16 v29, v10
move/from16 v30, v11
const/4 v1, 0x0
.line 842
aput v1, v7, v12
:goto_104
const-wide/16 v20, 0x3e8
move-wide/from16 v18, p1
move-wide/from16 v22, v2
.line 845
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 846
aput v9, v6, v12
shr-int/lit8 v5, v5, 0x10
const/4 v9, 0x1
and-int/2addr v5, v9
if-nez v5, :cond_120
if-eqz v16, :cond_11e
if-nez v12, :cond_120
:cond_11e
const/4 v5, 0x1
goto :goto_121
:cond_120
const/4 v5, 0x0
.line 847
:goto_121
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_13b
move-wide/from16 v1, p1
.line 851
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 624
iget-object p0, p0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->leafChildren:Ljava/util/List;
.line 625
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 627
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 628
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 629
iget-object v5, v5, Lcom/google/android/exoplayer2/extractor/mp4/Atom$LeafAtom;->data:Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/16 v6, 0xc
.line 630
invoke-virtual {v5, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 631
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 638
:cond_2b
iput v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
.line 639
iput v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
.line 640
iput v1, p1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
.line 641
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 646
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 647
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 648
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 857
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
const/16 v0, 0x10
const/4 v1, 0x0
.line 858
invoke-virtual {p0, p2, v1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
.line 861
sget-object v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->PIFF_SAMPLE_ENCRYPTION_BOX_EXTENDED_TYPE:[B
invoke-static {p2, v1}, Ljava/util/Arrays;->equals([B[B)Z
move-result p2
if-nez p2, :cond_14
return-void
.line 868
:cond_14
invoke-static {p0, v0, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parseSenc(Lcom/google/android/exoplayer2/util/ParsableByteArray;ILcom/google/android/exoplayer2/extractor/mp4/TrackFragment;)V
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 382
: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 383
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 385
: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 284
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
const/4 v1, 0x0
const/4 v2, 0x1
const/16 v3, 0x8
if-nez v0, :cond_2a
.line 286
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, v3, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BIIZ)Z
move-result v0
if-nez v0, :cond_13
return v1
.line 289
:cond_13
iput v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
.line 290
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeader:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 291
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 292
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 295
: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_47
.line 298
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, v3, v3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 299
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
add-int/2addr v0, v3
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
.line 300
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
goto :goto_78
:cond_47
const-wide/16 v6, 0x0
cmp-long v0, v4, v6
if-nez v0, :cond_78
.line 304
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getLength()J
move-result-wide v4
const-wide/16 v6, -0x1
cmp-long v0, v4, v6
if-nez v0, :cond_69
.line 305
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_69
.line 306
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 v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;->endPosition:J
:cond_69
cmp-long v0, v4, v6
if-eqz v0, :cond_78
.line 309
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v6
sub-long/2addr v4, v6
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
int-to-long v6, v0
add-long/2addr v4, v6
iput-wide v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
.line 313
:cond_78
:goto_78
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_14c
.line 317
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 318
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_ab
.line 320
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_96
if-ge v6, v0, :cond_ab
.line 322
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 323
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->atomPosition:J
.line 324
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 325
iput-wide v4, v7, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->dataPosition:J
add-int/lit8 v6, v6, 0x1
goto :goto_96
.line 329
:cond_ab
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_cf
.line 330
iput-object v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 331
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 332
iget-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
if-nez p1, :cond_cb
.line 333
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 v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->durationUs:J
invoke-direct {v0, v3, v4}, 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 334
iput-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->haveOutputSeekMap:Z
:cond_cb
const/4 p1, 0x2
.line 336
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
return v2
.line 340
:cond_cf
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_fe
.line 341
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v0
iget-wide v3, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
add-long/2addr v0, v3
const-wide/16 v3, 0x8
sub-long/2addr v0, v3
.line 342
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
new-instance v3, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;
iget v4, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomType:I
invoke-direct {v3, v4, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/Atom$ContainerAtom;-><init>(IJ)V
invoke-virtual {p1, v3}, Ljava/util/Stack;->add(Ljava/lang/Object;)Z
.line 343
iget-wide v3, 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 v5, p1
cmp-long p1, v3, v5
if-nez p1, :cond_fa
.line 344
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processAtomEnded(J)V
goto :goto_143
.line 347
:cond_fa
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
goto :goto_143
.line 349
:cond_fe
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_139
.line 350
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomHeaderBytesRead:I
if-ne p1, v3, :cond_131
.line 353
iget-wide v6, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
cmp-long p1, v6, v4
if-gtz p1, :cond_129
.line 356
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 357
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, v1, v0, v1, v3}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 358
iput v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
goto :goto_143
.line 354
:cond_129
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 351
:cond_131
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 360
:cond_139
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomSize:J
cmp-long p1, v0, v4
if-gtz p1, :cond_144
.line 363
iput-object v7, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 364
iput v2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
:goto_143
return v2
.line 361
:cond_144
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 314
:cond_14c
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
goto :goto_155
:goto_154
throw p1
:goto_155
goto :goto_154
.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 371
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 372
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->atomData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
if-eqz v0, :cond_22
.line 373
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 374
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 376
:cond_22
invoke-interface {p1, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 378
: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 1020
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 1022
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 1023
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 1025
iget-wide v1, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->auxiliaryDataPosition:J
.line 1026
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 1030
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
return-void
.line 1033
: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 1037
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1038
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 1035
: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
goto :goto_53
:goto_52
throw p1
:goto_53
goto :goto_52
.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 1056
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 1057
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 1058
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 1062
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 1066
invoke-interface {v1, v3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1067
invoke-direct/range {p0 .. p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
return v6
.line 1064
: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 1071
: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 1074
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 1077
invoke-static {v7, v8}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
const/4 v7, 0x0
.line 1080
:cond_49
invoke-interface {v1, v7}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1081
iput-object v2, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
.line 1083
: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 1085
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 1086
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 1087
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 1089
:cond_72
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1091
: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 1092
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 1093
invoke-interface {v1, v7}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 1095
:cond_86
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
.line 1096
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1099
: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 1100
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 1101
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 1102
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 1103
iget v10, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
const-wide/16 v11, 0x3e8
if-eqz v10, :cond_15e
.line 1106
iget-object v10, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v10, v10, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 1107
aput-byte v6, v10, v6
.line 1108
aput-byte v6, v10, v5
const/4 v13, 0x2
.line 1109
aput-byte v6, v10, v13
.line 1110
iget v13, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
add-int/2addr v13, v5
.line 1111
iget v14, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->nalUnitLengthFieldLength:I
rsub-int/lit8 v14, v14, 0x4
.line 1115
:goto_b2
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
if-ge v15, v3, :cond_170
.line 1116
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
if-nez v3, :cond_fe
.line 1118
invoke-interface {v1, v10, v14, v13}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 1119
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1120
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v3
sub-int/2addr v3, v5
iput v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1122
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1123
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v9, v3, v4}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1125
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalPrefix:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v9, v3, v5}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1126
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
if-eqz v3, :cond_ee
iget-object v3, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->format:Lcom/google/android/exoplayer2/Format;
iget-object v3, v3, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
aget-byte v15, v10, v4
.line 1127
invoke-static {v3, v15}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->isNalUnitSei(Ljava/lang/String;B)Z
move-result v3
if-eqz v3, :cond_ee
const/4 v3, 0x1
goto :goto_ef
:cond_ee
const/4 v3, 0x0
:goto_ef
iput-boolean v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processSeiNalUnitPayload:Z
.line 1128
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
add-int/lit8 v3, v3, 0x5
iput v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
.line 1129
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
add-int/2addr v3, v14
iput v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
const/4 v3, 0x3
goto :goto_b2
.line 1132
:cond_fe
iget-boolean v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->processSeiNalUnitPayload:Z
if-eqz v15, :cond_149
.line 1134
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v15, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 1135
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v3, v3, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
invoke-interface {v1, v3, v6, v15}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 1136
iget-object v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
invoke-interface {v9, v3, v15}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1137
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleCurrentNalBytesRemaining:I
.line 1139
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v15, v15, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v4
invoke-static {v15, v4}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->unescapeStream([BI)I
move-result v4
.line 1141
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v5, v7, Lcom/google/android/exoplayer2/extractor/mp4/Track;->format:Lcom/google/android/exoplayer2/Format;
iget-object v5, v5, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
const-string v6, "video/hevc"
invoke-virtual {v6, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
invoke-virtual {v15, v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1142
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v5, v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setLimit(I)V
.line 1143
invoke-virtual {v2, v8}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->getSamplePresentationTime(I)J
move-result-wide v4
mul-long v4, v4, v11
iget-object v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->nalBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->cea608TrackOutputs:[Lcom/google/android/exoplayer2/extractor/TrackOutput;
invoke-static {v4, v5, v6, v15}, Lcom/google/android/exoplayer2/text/cea/CeaUtil;->consume(JLcom/google/android/exoplayer2/util/ParsableByteArray;[Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
goto :goto_14e
:cond_149
const/4 v4, 0x0
.line 1147
invoke-interface {v9, v1, v3, v4}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
move-result v3
.line 1149
:goto_14e
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 1150
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
const/4 v3, 0x3
const/4 v4, 0x4
const/4 v5, 0x1
const/4 v6, 0x0
goto/16 :goto_b2
.line 1154
:cond_15e
:goto_15e
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_170
sub-int/2addr v4, v3
const/4 v3, 0x0
.line 1155
invoke-interface {v9, v1, v4, v3}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
move-result v4
.line 1156
iget v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
add-int/2addr v3, v4
iput v3, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleBytesWritten:I
goto :goto_15e
.line 1160
:cond_170
invoke-virtual {v2, v8}, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->getSamplePresentationTime(I)J
move-result-wide v3
mul-long v3, v3, v11
.line 1161
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->timestampAdjuster:Lcom/google/android/exoplayer2/util/TimestampAdjuster;
if-eqz v1, :cond_17e
.line 1162
invoke-virtual {v1, v3, v4}, Lcom/google/android/exoplayer2/util/TimestampAdjuster;->adjustSampleTimestamp(J)J
move-result-wide v3
.line 1165
:cond_17e
iget-object v1, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->sampleIsSyncFrameTable:[Z
aget-boolean v1, v1, v8
.line 1170
iget-boolean v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->definesEncryptionData:Z
const/4 v6, 0x0
if-eqz v5, :cond_19e
const/high16 v5, 0x40000000 # 2.0f
or-int/2addr v1, v5
.line 1172
iget-object v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
if-eqz v5, :cond_191
iget-object v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->trackEncryptionBox:Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
goto :goto_199
:cond_191
iget-object v5, v2, Lcom/google/android/exoplayer2/extractor/mp4/TrackFragment;->header:Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
iget v5, v5, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;->sampleDescriptionIndex:I
.line 1174
invoke-virtual {v7, v5}, Lcom/google/android/exoplayer2/extractor/mp4/Track;->getSampleDescriptionEncryptionBox(I)Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;
move-result-object v5
.line 1175
:goto_199
iget-object v5, v5, Lcom/google/android/exoplayer2/extractor/mp4/TrackEncryptionBox;->cryptoData:Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;
move v12, v1
move-object v15, v5
goto :goto_1a0
:cond_19e
move v12, v1
move-object v15, v6
.line 1178
:goto_1a0
iget v13, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sampleSize:I
const/4 v14, 0x0
move-wide v10, v3
invoke-interface/range {v9 .. v15}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
.line 1180
:goto_1a7
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_1cd
.line 1181
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 1182
iget v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
iget v7, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->size:I
sub-int/2addr v5, v7
iput v5, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
.line 1183
iget-object v7, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->eventMessageTrackOutput:Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget-wide v8, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->presentationTimeDeltaUs:J
add-long/2addr v8, v3
const/4 v10, 0x1
iget v11, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$MetadataSampleInfo;->size:I
iget v12, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
const/4 v13, 0x0
invoke-interface/range {v7 .. v13}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
goto :goto_1a7
.line 1188
:cond_1cd
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
const/4 v4, 0x1
add-int/2addr v3, v4
iput v3, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleIndex:I
.line 1189
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, v4
iput v3, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
.line 1190
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_1f8
.line 1192
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, v4
iput v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentTrackRunIndex:I
.line 1193
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
const/4 v2, 0x0
iput v2, v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;->currentSampleInTrackRun:I
.line 1194
iput-object v6, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->currentTrackBundle:Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
:cond_1f8
const/4 v1, 0x3
.line 1196
iput v1, v0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->parserState:I
return v4
.end method
.method private static shouldParseContainerAtom(I)Z
.registers 2
.line 1310
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
return p0
:cond_27
:goto_27
const/4 p0, 0x1
return p0
.end method
.method private static shouldParseLeafAtom(I)Z
.registers 2
.line 1299
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
return p0
:cond_53
:goto_53
const/4 p0, 0x1
return p0
.end method
# virtual methods
.method public final init(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;)V
.registers 5
.line 227
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
.line 228
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
if-eqz v0, :cond_29
.line 229
new-instance v1, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;
iget v0, v0, Lcom/google/android/exoplayer2/extractor/mp4/Track;->type:I
const/4 v2, 0x0
invoke-interface {p1, v2, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object p1
invoke-direct {v1, p1}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor$TrackBundle;-><init>(Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.line 230
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->sideloadedTrack:Lcom/google/android/exoplayer2/extractor/mp4/Track;
new-instance v0, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;
invoke-direct {v0, v2, v2, v2, v2}, Lcom/google/android/exoplayer2/extractor/mp4/DefaultSampleValues;-><init>(IIII)V
invoke-virtual {v1, p1, v0}, 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 231
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->trackBundles:Landroid/util/SparseArray;
invoke-virtual {p1, v2, v1}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
.line 232
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->maybeInitExtraTracks()V
.line 233
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_29
return-void
.end method
.method public final 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 258
: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 271
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 268
: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 265
: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 260
: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 final release()V
.registers 1
return-void
.end method
.method public final seek(JJ)V
.registers 5
.line 239
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 241
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 243
: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 244
iput p2, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->pendingMetadataSampleBytes:I
.line 245
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->containerAtoms:Ljava/util/Stack;
invoke-virtual {p1}, Ljava/util/Stack;->clear()V
.line 246
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor;->enterReadingAtomHeaderState()V
return-void
.end method
.method public final 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 222
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