MatroskaExtractor.smali
.class public final Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;
.super Ljava/lang/Object;
.source "MatroskaExtractor.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/Extractor;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;,
Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$InnerEbmlReaderOutput;
}
.end annotation
# static fields
.field private static final BLOCK_STATE_DATA:I = 0x2
.field private static final BLOCK_STATE_HEADER:I = 0x1
.field private static final BLOCK_STATE_START:I = 0x0
.field private static final CODEC_ID_AAC:Ljava/lang/String; = "A_AAC"
.field private static final CODEC_ID_AC3:Ljava/lang/String; = "A_AC3"
.field private static final CODEC_ID_ACM:Ljava/lang/String; = "A_MS/ACM"
.field private static final CODEC_ID_DTS:Ljava/lang/String; = "A_DTS"
.field private static final CODEC_ID_DTS_EXPRESS:Ljava/lang/String; = "A_DTS/EXPRESS"
.field private static final CODEC_ID_DTS_LOSSLESS:Ljava/lang/String; = "A_DTS/LOSSLESS"
.field private static final CODEC_ID_E_AC3:Ljava/lang/String; = "A_EAC3"
.field private static final CODEC_ID_FLAC:Ljava/lang/String; = "A_FLAC"
.field private static final CODEC_ID_FOURCC:Ljava/lang/String; = "V_MS/VFW/FOURCC"
.field private static final CODEC_ID_H264:Ljava/lang/String; = "V_MPEG4/ISO/AVC"
.field private static final CODEC_ID_H265:Ljava/lang/String; = "V_MPEGH/ISO/HEVC"
.field private static final CODEC_ID_MP2:Ljava/lang/String; = "A_MPEG/L2"
.field private static final CODEC_ID_MP3:Ljava/lang/String; = "A_MPEG/L3"
.field private static final CODEC_ID_MPEG2:Ljava/lang/String; = "V_MPEG2"
.field private static final CODEC_ID_MPEG4_AP:Ljava/lang/String; = "V_MPEG4/ISO/AP"
.field private static final CODEC_ID_MPEG4_ASP:Ljava/lang/String; = "V_MPEG4/ISO/ASP"
.field private static final CODEC_ID_MPEG4_SP:Ljava/lang/String; = "V_MPEG4/ISO/SP"
.field private static final CODEC_ID_OPUS:Ljava/lang/String; = "A_OPUS"
.field private static final CODEC_ID_PCM_INT_LIT:Ljava/lang/String; = "A_PCM/INT/LIT"
.field private static final CODEC_ID_PGS:Ljava/lang/String; = "S_HDMV/PGS"
.field private static final CODEC_ID_SUBRIP:Ljava/lang/String; = "S_TEXT/UTF8"
.field private static final CODEC_ID_THEORA:Ljava/lang/String; = "V_THEORA"
.field private static final CODEC_ID_TRUEHD:Ljava/lang/String; = "A_TRUEHD"
.field private static final CODEC_ID_VOBSUB:Ljava/lang/String; = "S_VOBSUB"
.field private static final CODEC_ID_VORBIS:Ljava/lang/String; = "A_VORBIS"
.field private static final CODEC_ID_VP8:Ljava/lang/String; = "V_VP8"
.field private static final CODEC_ID_VP9:Ljava/lang/String; = "V_VP9"
.field private static final DOC_TYPE_MATROSKA:Ljava/lang/String; = "matroska"
.field private static final DOC_TYPE_WEBM:Ljava/lang/String; = "webm"
.field private static final ENCRYPTION_IV_SIZE:I = 0x8
.field public static final FACTORY:Lcom/google/android/exoplayer2/extractor/ExtractorsFactory;
.field private static final FOURCC_COMPRESSION_VC1:I = 0x31435657
.field private static final ID_AUDIO:I = 0xe1
.field private static final ID_AUDIO_BIT_DEPTH:I = 0x6264
.field private static final ID_BLOCK:I = 0xa1
.field private static final ID_BLOCK_DURATION:I = 0x9b
.field private static final ID_BLOCK_GROUP:I = 0xa0
.field private static final ID_CHANNELS:I = 0x9f
.field private static final ID_CLUSTER:I = 0x1f43b675
.field private static final ID_CODEC_DELAY:I = 0x56aa
.field private static final ID_CODEC_ID:I = 0x86
.field private static final ID_CODEC_PRIVATE:I = 0x63a2
.field private static final ID_CONTENT_COMPRESSION:I = 0x5034
.field private static final ID_CONTENT_COMPRESSION_ALGORITHM:I = 0x4254
.field private static final ID_CONTENT_COMPRESSION_SETTINGS:I = 0x4255
.field private static final ID_CONTENT_ENCODING:I = 0x6240
.field private static final ID_CONTENT_ENCODINGS:I = 0x6d80
.field private static final ID_CONTENT_ENCODING_ORDER:I = 0x5031
.field private static final ID_CONTENT_ENCODING_SCOPE:I = 0x5032
.field private static final ID_CONTENT_ENCRYPTION:I = 0x5035
.field private static final ID_CONTENT_ENCRYPTION_AES_SETTINGS:I = 0x47e7
.field private static final ID_CONTENT_ENCRYPTION_AES_SETTINGS_CIPHER_MODE:I = 0x47e8
.field private static final ID_CONTENT_ENCRYPTION_ALGORITHM:I = 0x47e1
.field private static final ID_CONTENT_ENCRYPTION_KEY_ID:I = 0x47e2
.field private static final ID_CUES:I = 0x1c53bb6b
.field private static final ID_CUE_CLUSTER_POSITION:I = 0xf1
.field private static final ID_CUE_POINT:I = 0xbb
.field private static final ID_CUE_TIME:I = 0xb3
.field private static final ID_CUE_TRACK_POSITIONS:I = 0xb7
.field private static final ID_DEFAULT_DURATION:I = 0x23e383
.field private static final ID_DISPLAY_HEIGHT:I = 0x54ba
.field private static final ID_DISPLAY_UNIT:I = 0x54b2
.field private static final ID_DISPLAY_WIDTH:I = 0x54b0
.field private static final ID_DOC_TYPE:I = 0x4282
.field private static final ID_DOC_TYPE_READ_VERSION:I = 0x4285
.field private static final ID_DURATION:I = 0x4489
.field private static final ID_EBML:I = 0x1a45dfa3
.field private static final ID_EBML_READ_VERSION:I = 0x42f7
.field private static final ID_FLAG_DEFAULT:I = 0x88
.field private static final ID_FLAG_FORCED:I = 0x55aa
.field private static final ID_INFO:I = 0x1549a966
.field private static final ID_LANGUAGE:I = 0x22b59c
.field private static final ID_PIXEL_HEIGHT:I = 0xba
.field private static final ID_PIXEL_WIDTH:I = 0xb0
.field private static final ID_PROJECTION:I = 0x7670
.field private static final ID_PROJECTION_PRIVATE:I = 0x7672
.field private static final ID_REFERENCE_BLOCK:I = 0xfb
.field private static final ID_SAMPLING_FREQUENCY:I = 0xb5
.field private static final ID_SEEK:I = 0x4dbb
.field private static final ID_SEEK_HEAD:I = 0x114d9b74
.field private static final ID_SEEK_ID:I = 0x53ab
.field private static final ID_SEEK_POSITION:I = 0x53ac
.field private static final ID_SEEK_PRE_ROLL:I = 0x56bb
.field private static final ID_SEGMENT:I = 0x18538067
.field private static final ID_SEGMENT_INFO:I = 0x1549a966
.field private static final ID_SIMPLE_BLOCK:I = 0xa3
.field private static final ID_STEREO_MODE:I = 0x53b8
.field private static final ID_TIMECODE_SCALE:I = 0x2ad7b1
.field private static final ID_TIME_CODE:I = 0xe7
.field private static final ID_TRACKS:I = 0x1654ae6b
.field private static final ID_TRACK_ENTRY:I = 0xae
.field private static final ID_TRACK_NUMBER:I = 0xd7
.field private static final ID_TRACK_TYPE:I = 0x83
.field private static final ID_VIDEO:I = 0xe0
.field private static final LACING_EBML:I = 0x3
.field private static final LACING_FIXED_SIZE:I = 0x2
.field private static final LACING_NONE:I = 0x0
.field private static final LACING_XIPH:I = 0x1
.field private static final OPUS_MAX_INPUT_SIZE:I = 0x1680
.field private static final SUBRIP_PREFIX:[B
.field private static final SUBRIP_PREFIX_END_TIMECODE_OFFSET:I = 0x13
.field private static final SUBRIP_TIMECODE_EMPTY:[B
.field private static final SUBRIP_TIMECODE_LENGTH:I = 0xc
.field private static final TRACK_TYPE_AUDIO:I = 0x2
.field private static final UNSET_ENTRY_ID:I = -0x1
.field private static final VORBIS_MAX_INPUT_SIZE:I = 0x2000
.field private static final WAVE_FORMAT_EXTENSIBLE:I = 0xfffe
.field private static final WAVE_FORMAT_PCM:I = 0x1
.field private static final WAVE_FORMAT_SIZE:I = 0x12
.field private static final WAVE_SUBFORMAT_PCM:Ljava/util/UUID;
# instance fields
.field private blockDurationUs:J
.field private blockFlags:I
.field private blockLacingSampleCount:I
.field private blockLacingSampleIndex:I
.field private blockLacingSampleSizes:[I
.field private blockState:I
.field private blockTimeUs:J
.field private blockTrackNumber:I
.field private blockTrackNumberLength:I
.field private clusterTimecodeUs:J
.field private cueClusterPositions:Lcom/google/android/exoplayer2/util/LongArray;
.field private cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
.field private cuesContentPosition:J
.field private currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
.field private durationTimecode:J
.field private durationUs:J
.field private final encryptionInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final encryptionSubsampleData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
.field private extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
.field private final nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final reader:Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;
.field private sampleBytesRead:I
.field private sampleBytesWritten:I
.field private sampleCurrentNalBytesRemaining:I
.field private sampleEncodingHandled:Z
.field private sampleInitializationVectorRead:Z
.field private samplePartitionCount:I
.field private samplePartitionCountRead:Z
.field private sampleRead:Z
.field private sampleSeenReferenceBlock:Z
.field private sampleSignalByte:B
.field private sampleSignalByteRead:Z
.field private final sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private seekEntryId:I
.field private final seekEntryIdBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private seekEntryPosition:J
.field private seekForCues:Z
.field private seekPositionAfterBuildingCues:J
.field private seenClusterPositionForCurrentCuePoint:Z
.field private segmentContentPosition:J
.field private segmentContentSize:J
.field private sentSeekMap:Z
.field private final subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private timecodeScale:J
.field private final tracks:Landroid/util/SparseArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroid/util/SparseArray<",
"Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;",
">;"
}
.end annotation
.end field
.field private final varintReader:Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;
.field private final vorbisNumPageSamples:Lcom/google/android/exoplayer2/util/ParsableByteArray;
# direct methods
.method static constructor <clinit>()V
.registers 5
.line 58
new-instance v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$1;
invoke-direct {v0}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$1;-><init>()V
sput-object v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->FACTORY:Lcom/google/android/exoplayer2/extractor/ExtractorsFactory;
const/16 v0, 0x20
new-array v0, v0, [B
.line 185
fill-array-data v0, :array_2c
sput-object v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->SUBRIP_PREFIX:[B
const/16 v0, 0xc
new-array v0, v0, [B
.line 193
fill-array-data v0, :array_40
sput-object v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->SUBRIP_TIMECODE_EMPTY:[B
.line 219
new-instance v0, Ljava/util/UUID;
const-wide v1, 0x100000000001000L
const-wide v3, -0x7fffff55ffc7648fL # -3.607411173533E-312
invoke-direct {v0, v1, v2, v3, v4}, Ljava/util/UUID;-><init>(JJ)V
sput-object v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->WAVE_SUBFORMAT_PCM:Ljava/util/UUID;
return-void
nop
:array_2c
.array-data 1
0x31t
0xat
0x30t
0x30t
0x3at
0x30t
0x30t
0x3at
0x30t
0x30t
0x2ct
0x30t
0x30t
0x30t
0x20t
0x2dt
0x2dt
0x3et
0x20t
0x30t
0x30t
0x3at
0x30t
0x30t
0x3at
0x30t
0x30t
0x2ct
0x30t
0x30t
0x30t
0xat
.end array-data
:array_40
.array-data 1
0x20t
0x20t
0x20t
0x20t
0x20t
0x20t
0x20t
0x20t
0x20t
0x20t
0x20t
0x20t
.end array-data
.end method
.method public constructor <init>()V
.registers 2
.line 291
new-instance v0, Lcom/google/android/exoplayer2/extractor/mkv/DefaultEbmlReader;
invoke-direct {v0}, Lcom/google/android/exoplayer2/extractor/mkv/DefaultEbmlReader;-><init>()V
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;-><init>(Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;)V
return-void
.end method
.method constructor <init>(Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;)V
.registers 6
.line 294
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-wide/16 v0, -0x1
.line 238
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentPosition:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
.line 239
iput-wide v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->timecodeScale:J
.line 240
iput-wide v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationTimecode:J
.line 241
iput-wide v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationUs:J
.line 255
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cuesContentPosition:J
.line 256
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekPositionAfterBuildingCues:J
.line 257
iput-wide v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->clusterTimecodeUs:J
.line 295
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->reader:Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;
.line 296
new-instance v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$InnerEbmlReaderOutput;
const/4 v1, 0x0
invoke-direct {v0, p0, v1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$InnerEbmlReaderOutput;-><init>(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$1;)V
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;->init(Lcom/google/android/exoplayer2/extractor/mkv/EbmlReaderOutput;)V
.line 297
new-instance p1, Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;
invoke-direct {p1}, Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->varintReader:Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;
.line 298
new-instance p1, Landroid/util/SparseArray;
invoke-direct {p1}, Landroid/util/SparseArray;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->tracks:Landroid/util/SparseArray;
.line 299
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 v0, 0x4
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 300
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v0}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v1
const/4 v2, -0x1
invoke-virtual {v1, v2}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v1
invoke-direct {p1, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>([B)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->vorbisNumPageSamples:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 301
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/mkv/MatroskaExtractor;->seekEntryIdBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 302
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
sget-object v1, Lcom/google/android/exoplayer2/util/NalUnitUtil;->NAL_START_CODE:[B
invoke-direct {p1, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>([B)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 303
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/mkv/MatroskaExtractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 304
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/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 305
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/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 306
new-instance p1, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/16 v0, 0x8
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 307
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/mkv/MatroskaExtractor;->encryptionSubsampleData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
return-void
.end method
.method static synthetic access$300()Ljava/util/UUID;
.registers 1
.line 53
sget-object v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->WAVE_SUBFORMAT_PCM:Ljava/util/UUID;
return-object v0
.end method
.method private buildSeekMap()Lcom/google/android/exoplayer2/extractor/SeekMap;
.registers 13
.line 1144
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentPosition:J
const/4 v2, 0x0
const-wide/16 v3, -0x1
cmp-long v5, v0, v3
if-eqz v5, :cond_8a
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationUs:J
const-wide v3, -0x7fffffffffffffffL # -4.9E-324
cmp-long v5, v0, v3
if-eqz v5, :cond_8a
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
if-eqz v0, :cond_8a
.line 1145
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/LongArray;->size()I
move-result v0
if-eqz v0, :cond_8a
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueClusterPositions:Lcom/google/android/exoplayer2/util/LongArray;
if-eqz v0, :cond_8a
.line 1146
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/LongArray;->size()I
move-result v0
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/LongArray;->size()I
move-result v1
if-eq v0, v1, :cond_2f
goto :goto_8a
.line 1152
:cond_2f
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/LongArray;->size()I
move-result v0
.line 1153
new-array v1, v0, [I
.line 1154
new-array v3, v0, [J
.line 1155
new-array v4, v0, [J
.line 1156
new-array v5, v0, [J
const/4 v6, 0x0
const/4 v7, 0x0
:goto_3f
if-ge v7, v0, :cond_57
.line 1158
iget-object v8, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
invoke-virtual {v8, v7}, Lcom/google/android/exoplayer2/util/LongArray;->get(I)J
move-result-wide v8
aput-wide v8, v5, v7
.line 1159
iget-wide v8, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentPosition:J
iget-object v10, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueClusterPositions:Lcom/google/android/exoplayer2/util/LongArray;
invoke-virtual {v10, v7}, Lcom/google/android/exoplayer2/util/LongArray;->get(I)J
move-result-wide v10
add-long/2addr v8, v10
aput-wide v8, v3, v7
add-int/lit8 v7, v7, 0x1
goto :goto_3f
:cond_57
:goto_57
add-int/lit8 v7, v0, -0x1
if-ge v6, v7, :cond_6e
add-int/lit8 v7, v6, 0x1
.line 1162
aget-wide v8, v3, v7
aget-wide v10, v3, v6
sub-long/2addr v8, v10
long-to-int v9, v8
aput v9, v1, v6
.line 1163
aget-wide v8, v5, v7
aget-wide v10, v5, v6
sub-long/2addr v8, v10
aput-wide v8, v4, v6
move v6, v7
goto :goto_57
.line 1165
:cond_6e
iget-wide v8, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentPosition:J
iget-wide v10, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentSize:J
add-long/2addr v8, v10
aget-wide v10, v3, v7
sub-long/2addr v8, v10
long-to-int v0, v8
aput v0, v1, v7
.line 1167
iget-wide v8, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationUs:J
aget-wide v10, v5, v7
sub-long/2addr v8, v10
aput-wide v8, v4, v7
.line 1168
iput-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
.line 1169
iput-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueClusterPositions:Lcom/google/android/exoplayer2/util/LongArray;
.line 1170
new-instance v0, Lcom/google/android/exoplayer2/extractor/ChunkIndex;
invoke-direct {v0, v1, v3, v4, v5}, Lcom/google/android/exoplayer2/extractor/ChunkIndex;-><init>([I[J[J[J)V
return-object v0
.line 1148
:cond_8a
:goto_8a
iput-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
.line 1149
iput-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueClusterPositions:Lcom/google/android/exoplayer2/util/LongArray;
.line 1150
new-instance v0, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;
iget-wide v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationUs:J
invoke-direct {v0, v1, v2}, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;-><init>(J)V
return-object v0
.end method
.method private commitSampleToOutput(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;J)V
.registers 12
.line 882
iget-object v0, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecId:Ljava/lang/String;
const-string v1, "S_TEXT/UTF8"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_d
.line 883
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->writeSubripSample(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;)V
.line 885
:cond_d
iget-object v1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget v4, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
iget v5, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
const/4 v6, 0x0
iget-object v7, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->encryptionKeyId:[B
move-wide v2, p2
invoke-interface/range {v1 .. v7}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIII[B)V
const/4 p1, 0x1
.line 886
iput-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleRead:Z
.line 887
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->resetSample()V
return-void
.end method
.method private static ensureArrayCapacity([II)[I
.registers 3
if-nez p0, :cond_5
.line 1242
new-array p0, p1, [I
return-object p0
.line 1243
:cond_5
array-length v0, p0
if-lt v0, p1, :cond_9
return-object p0
.line 1247
:cond_9
array-length p0, p0
mul-int/lit8 p0, p0, 0x2
invoke-static {p0, p1}, Ljava/lang/Math;->max(II)I
move-result p0
new-array p0, p0, [I
return-object p0
.end method
.method private static isCodecSupported(Ljava/lang/String;)Z
.registers 2
const-string v0, "V_VP8"
.line 1207
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_VP9"
.line 1208
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_MPEG2"
.line 1209
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_MPEG4/ISO/SP"
.line 1210
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_MPEG4/ISO/ASP"
.line 1211
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_MPEG4/ISO/AP"
.line 1212
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_MPEG4/ISO/AVC"
.line 1213
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_MPEGH/ISO/HEVC"
.line 1214
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_MS/VFW/FOURCC"
.line 1215
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "V_THEORA"
.line 1216
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_OPUS"
.line 1217
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_VORBIS"
.line 1218
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_AAC"
.line 1219
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_MPEG/L2"
.line 1220
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_MPEG/L3"
.line 1221
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_AC3"
.line 1222
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_EAC3"
.line 1223
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_TRUEHD"
.line 1224
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_DTS"
.line 1225
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_DTS/EXPRESS"
.line 1226
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_DTS/LOSSLESS"
.line 1227
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_FLAC"
.line 1228
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_MS/ACM"
.line 1229
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "A_PCM/INT/LIT"
.line 1230
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "S_TEXT/UTF8"
.line 1231
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "S_VOBSUB"
.line 1232
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_db
const-string v0, "S_HDMV/PGS"
.line 1233
invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p0
if-eqz p0, :cond_d9
goto :goto_db
:cond_d9
const/4 p0, 0x0
goto :goto_dc
:cond_db
:goto_db
const/4 p0, 0x1
:goto_dc
return p0
.end method
.method private maybeSeekForCues(Lcom/google/android/exoplayer2/extractor/PositionHolder;J)Z
.registers 9
.line 1183
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekForCues:Z
const/4 v1, 0x1
const/4 v2, 0x0
if-eqz v0, :cond_f
.line 1184
iput-wide p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekPositionAfterBuildingCues:J
.line 1185
iget-wide p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cuesContentPosition:J
iput-wide p2, p1, Lcom/google/android/exoplayer2/extractor/PositionHolder;->position:J
.line 1186
iput-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekForCues:Z
return v1
.line 1191
:cond_f
iget-boolean p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sentSeekMap:Z
if-eqz p2, :cond_20
iget-wide p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekPositionAfterBuildingCues:J
const-wide/16 v3, -0x1
cmp-long v0, p2, v3
if-eqz v0, :cond_20
.line 1192
iput-wide p2, p1, Lcom/google/android/exoplayer2/extractor/PositionHolder;->position:J
.line 1193
iput-wide v3, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekPositionAfterBuildingCues:J
return v1
:cond_20
return v2
.end method
.method private readScratch(Lcom/google/android/exoplayer2/extractor/ExtractorInput;I)V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 909
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v0
if-lt v0, p2, :cond_9
return-void
.line 912
:cond_9
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->capacity()I
move-result v0
if-ge v0, p2, :cond_2d
.line 913
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
array-length v2, v2
mul-int/lit8 v2, v2, 0x2
invoke-static {v2, p2}, Ljava/lang/Math;->max(II)I
move-result v2
invoke-static {v1, v2}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v1
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 914
invoke-virtual {v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v2
.line 913
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 916
:cond_2d
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v1
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v2
sub-int v2, p2, v2
invoke-interface {p1, v0, v1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 917
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setLimit(I)V
return-void
.end method
.method private readToOutput(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/TrackOutput;I)I
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 1125
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v0
if-lez v0, :cond_12
.line 1127
invoke-static {p3, v0}, Ljava/lang/Math;->min(II)I
move-result p1
.line 1128
iget-object p3, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {p2, p3, p1}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
goto :goto_17
:cond_12
const/4 v0, 0x0
.line 1130
invoke-interface {p2, p1, p3, v0}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
move-result p1
.line 1132
:goto_17
iget p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
add-int/2addr p2, p1
iput p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
.line 1133
iget p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
add-int/2addr p2, p1
iput p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
return p1
.end method
.method private readToTarget(Lcom/google/android/exoplayer2/extractor/ExtractorInput;[BII)V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 1110
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v0
invoke-static {p4, v0}, Ljava/lang/Math;->min(II)I
move-result v0
add-int v1, p3, v0
sub-int v2, p4, v0
.line 1111
invoke-interface {p1, p2, v1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
if-lez v0, :cond_18
.line 1113
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p1, p2, p3, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
.line 1115
:cond_18
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
add-int/2addr p1, p4
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
return-void
.end method
.method private resetSample()V
.registers 2
const/4 v0, 0x0
.line 891
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
.line 892
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
.line 893
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleCurrentNalBytesRemaining:I
.line 894
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleEncodingHandled:Z
.line 895
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSignalByteRead:Z
.line 896
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCountRead:Z
.line 897
iput v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCount:I
.line 898
iput-byte v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSignalByte:B
.line 899
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleInitializationVectorRead:Z
.line 900
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset()V
return-void
.end method
.method private scaleTimecodeToUs(J)J
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 1200
iget-wide v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->timecodeScale:J
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
cmp-long v4, v2, v0
if-eqz v4, :cond_13
const-wide/16 v4, 0x3e8
move-wide v0, p1
.line 1203
invoke-static/range {v0 .. v5}, Lcom/google/android/exoplayer2/util/Util;->scaleLargeTimestamp(JJJ)J
move-result-wide p1
return-wide p1
.line 1201
:cond_13
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string p2, "Can\'t scale timecode prior to timecodeScale being set."
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.end method
.method private static setSubripSampleEndTimecode([BJ)V
.registers 10
const/4 v0, 0x0
const-wide v1, -0x7fffffffffffffffL # -4.9E-324
cmp-long v3, p1, v1
if-nez v3, :cond_d
.line 1088
sget-object p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->SUBRIP_TIMECODE_EMPTY:[B
goto :goto_61
:cond_d
const-wide v1, 0xd693a400L
.line 1090
div-long v3, p1, v1
long-to-int v4, v3
int-to-long v5, v4
mul-long v5, v5, v1
sub-long/2addr p1, v5
const-wide/32 v1, 0x3938700
.line 1092
div-long v1, p1, v1
long-to-int v2, v1
const v1, 0x3938700
mul-int v1, v1, v2
int-to-long v5, v1
sub-long/2addr p1, v5
const-wide/32 v5, 0xf4240
.line 1094
div-long v5, p1, v5
long-to-int v1, v5
const v3, 0xf4240
mul-int v3, v3, v1
int-to-long v5, v3
sub-long/2addr p1, v5
const-wide/16 v5, 0x3e8
.line 1096
div-long/2addr p1, v5
long-to-int p2, p1
.line 1097
sget-object p1, Ljava/util/Locale;->US:Ljava/util/Locale;
const/4 v3, 0x4
new-array v3, v3, [Ljava/lang/Object;
invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v4
aput-object v4, v3, v0
const/4 v4, 0x1
.line 1098
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v2
aput-object v2, v3, v4
const/4 v2, 0x2
invoke-static {v1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v1
aput-object v1, v3, v2
const/4 v1, 0x3
invoke-static {p2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p2
aput-object p2, v3, v1
const-string p2, "%02d:%02d:%02d,%03d"
.line 1097
invoke-static {p1, p2, v3}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
invoke-static {p1}, Lcom/google/android/exoplayer2/util/Util;->getUtf8Bytes(Ljava/lang/String;)[B
move-result-object p1
:goto_61
const/16 p2, 0x13
const/16 v1, 0xc
.line 1100
invoke-static {p1, v0, p0, p2, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
return-void
.end method
.method private writeSampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;I)V
.registers 14
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 922
iget-object v0, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecId:Ljava/lang/String;
const-string v1, "S_TEXT/UTF8"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_38
.line 923
sget-object p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->SUBRIP_PREFIX:[B
array-length p2, p2
add-int/2addr p2, p3
.line 924
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->capacity()I
move-result v0
if-ge v0, p2, :cond_23
.line 927
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
sget-object v2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->SUBRIP_PREFIX:[B
add-int v3, p2, p3
invoke-static {v2, v3}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v2
iput-object v2, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 929
:cond_23
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
sget-object v2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->SUBRIP_PREFIX:[B
array-length v2, v2
invoke-interface {p1, v0, v2, p3}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 930
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 931
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setLimit(I)V
return-void
.line 937
:cond_38
iget-object v0, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 938
iget-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleEncodingHandled:Z
const/4 v3, 0x4
const/4 v4, 0x2
const/4 v5, 0x1
if-nez v2, :cond_18d
.line 939
iget-boolean v2, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->hasContentEncryption:Z
if-eqz v2, :cond_17d
.line 942
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
const v6, -0x40000001 # -1.9999999f
and-int/2addr v2, v6
iput v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
.line 943
iget-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSignalByteRead:Z
const/16 v6, 0x80
if-nez v2, :cond_7b
.line 944
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-interface {p1, v2, v1, v5}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 945
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
add-int/2addr v2, v5
iput v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
.line 946
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
aget-byte v2, v2, v1
and-int/2addr v2, v6
if-eq v2, v6, :cond_73
.line 949
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
aget-byte v2, v2, v1
iput-byte v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSignalByte:B
.line 950
iput-boolean v5, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSignalByteRead:Z
goto :goto_7b
.line 947
:cond_73
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string p2, "Extension bit is set in signal byte"
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 952
:cond_7b
:goto_7b
iget-byte v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSignalByte:B
and-int/2addr v2, v5
if-ne v2, v5, :cond_82
const/4 v2, 0x1
goto :goto_83
:cond_82
const/4 v2, 0x0
:goto_83
if-eqz v2, :cond_18b
.line 954
iget-byte v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSignalByte:B
and-int/2addr v2, v4
if-ne v2, v4, :cond_8c
const/4 v2, 0x1
goto :goto_8d
:cond_8c
const/4 v2, 0x0
.line 955
:goto_8d
iget v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
const/high16 v8, 0x40000000 # 2.0f
or-int/2addr v7, v8
iput v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
.line 956
iget-boolean v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleInitializationVectorRead:Z
if-nez v7, :cond_d2
.line 957
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v7, v7, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/16 v8, 0x8
invoke-interface {p1, v7, v1, v8}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 958
iget v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
add-int/2addr v7, v8
iput v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
.line 959
iput-boolean v5, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleInitializationVectorRead:Z
.line 961
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v7, v7, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
if-eqz v2, :cond_af
goto :goto_b0
:cond_af
const/4 v6, 0x0
:goto_b0
or-int/2addr v6, v8
int-to-byte v6, v6
aput-byte v6, v7, v1
.line 962
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v6, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 963
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v0, v6, v5}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 964
iget v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
add-int/2addr v6, v5
iput v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
.line 966
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v6, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 967
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionInitializationVector:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v0, v6, v8}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 968
iget v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
add-int/2addr v6, v8
iput v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
:cond_d2
if-eqz v2, :cond_18b
.line 971
iget-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCountRead:Z
if-nez v2, :cond_f3
.line 972
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-interface {p1, v2, v1, v5}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 973
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
add-int/2addr v2, v5
iput v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
.line 974
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 975
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v2
iput v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCount:I
.line 976
iput-boolean v5, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCountRead:Z
.line 978
:cond_f3
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCount:I
mul-int/lit8 v2, v2, 0x4
.line 979
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v6, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 980
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v6, v6, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-interface {p1, v6, v1, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 981
iget v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
add-int/2addr v6, v2
iput v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
.line 982
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCount:I
div-int/2addr v2, v4
add-int/2addr v2, v5
int-to-short v2, v2
mul-int/lit8 v6, v2, 0x6
add-int/2addr v6, v4
.line 984
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
if-eqz v7, :cond_11a
.line 985
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->capacity()I
move-result v7
if-ge v7, v6, :cond_120
.line 986
:cond_11a
invoke-static {v6}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v7
iput-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
.line 988
:cond_120
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v7, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 989
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v7, v2}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;
const/4 v2, 0x0
const/4 v7, 0x0
.line 997
:goto_12c
iget v8, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->samplePartitionCount:I
if-ge v2, v8, :cond_14e
.line 999
iget-object v8, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v8}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v8
.line 1000
rem-int/lit8 v9, v2, 0x2
if-nez v9, :cond_143
.line 1001
iget-object v9, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
sub-int v7, v8, v7
int-to-short v7, v7
invoke-virtual {v9, v7}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;
goto :goto_14a
.line 1004
:cond_143
iget-object v9, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
sub-int v7, v8, v7
invoke-virtual {v9, v7}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
:goto_14a
add-int/lit8 v2, v2, 0x1
move v7, v8
goto :goto_12c
.line 1007
:cond_14e
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
sub-int v2, p3, v2
sub-int/2addr v2, v7
.line 1008
rem-int/2addr v8, v4
if-ne v8, v5, :cond_15c
.line 1009
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v7, v2}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
goto :goto_167
.line 1011
:cond_15c
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
int-to-short v2, v2
invoke-virtual {v7, v2}, Ljava/nio/ByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;
.line 1012
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2, v1}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 1014
:goto_167
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v7, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleDataBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v7
invoke-virtual {v2, v7, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 1015
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->encryptionSubsampleData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v0, v2, v6}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1016
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
add-int/2addr v2, v6
iput v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
goto :goto_18b
.line 1019
:cond_17d
iget-object v2, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->sampleStrippedBytes:[B
if-eqz v2, :cond_18b
.line 1021
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v6, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->sampleStrippedBytes:[B
iget-object v7, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->sampleStrippedBytes:[B
array-length v7, v7
invoke-virtual {v2, v6, v7}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 1023
:cond_18b
:goto_18b
iput-boolean v5, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleEncodingHandled:Z
.line 1025
:cond_18d
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleStrippedBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v2
add-int/2addr p3, v2
.line 1027
iget-object v2, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecId:Ljava/lang/String;
const-string v6, "V_MPEG4/ISO/AVC"
invoke-virtual {v6, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_1b3
iget-object v2, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecId:Ljava/lang/String;
const-string v6, "V_MPEGH/ISO/HEVC"
invoke-virtual {v6, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_1a9
goto :goto_1b3
.line 1059
:cond_1a9
:goto_1a9
iget v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
if-ge v2, p3, :cond_1f3
sub-int v2, p3, v2
.line 1060
invoke-direct {p0, p1, v0, v2}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readToOutput(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/TrackOutput;I)I
goto :goto_1a9
.line 1032
:cond_1b3
:goto_1b3
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 1033
aput-byte v1, v2, v1
.line 1034
aput-byte v1, v2, v5
.line 1035
aput-byte v1, v2, v4
.line 1036
iget v4, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->nalUnitLengthFieldLength:I
.line 1037
iget v5, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->nalUnitLengthFieldLength:I
rsub-int/lit8 v5, v5, 0x4
.line 1041
:goto_1c3
iget v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesRead:I
if-ge v6, p3, :cond_1f3
.line 1042
iget v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleCurrentNalBytesRemaining:I
if-nez v6, :cond_1eb
.line 1044
invoke-direct {p0, p1, v2, v5, v4}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readToTarget(Lcom/google/android/exoplayer2/extractor/ExtractorInput;[BII)V
.line 1046
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v6, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1047
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->nalLength:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v6
iput v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleCurrentNalBytesRemaining:I
.line 1049
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v6, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1050
iget-object v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->nalStartCode:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v0, v6, v3}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1051
iget v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
add-int/2addr v6, v3
iput v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
goto :goto_1c3
.line 1055
:cond_1eb
invoke-direct {p0, p1, v0, v6}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readToOutput(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/TrackOutput;I)I
move-result v7
sub-int/2addr v6, v7
iput v6, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleCurrentNalBytesRemaining:I
goto :goto_1c3
.line 1064
:cond_1f3
iget-object p1, p2, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecId:Ljava/lang/String;
const-string p2, "A_VORBIS"
invoke-virtual {p2, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_20c
.line 1071
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->vorbisNumPageSamples:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 1072
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->vorbisNumPageSamples:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {v0, p1, v3}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1073
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
add-int/2addr p1, v3
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
:cond_20c
return-void
.end method
.method private writeSubripSample(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;)V
.registers 5
.line 1078
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-wide v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockDurationUs:J
invoke-static {v0, v1, v2}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->setSubripSampleEndTimecode([BJ)V
.line 1081
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v1
invoke-interface {p1, v0, v1}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 1082
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->subripSample:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v0
add-int/2addr p1, v0
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleBytesWritten:I
return-void
.end method
# virtual methods
.method binaryElement(IILcom/google/android/exoplayer2/extractor/ExtractorInput;)V
.registers 25
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
move-object/from16 v0, p0
move/from16 v1, p1
move/from16 v2, p2
move-object/from16 v3, p3
const/16 v4, 0xa1
const/16 v5, 0xa3
const/4 v6, 0x0
if-eq v1, v4, :cond_98
if-eq v1, v5, :cond_98
const/16 v4, 0x4255
if-eq v1, v4, :cond_89
const/16 v4, 0x47e2
if-eq v1, v4, :cond_7a
const/16 v4, 0x53ab
if-eq v1, v4, :cond_5a
const/16 v4, 0x63a2
if-eq v1, v4, :cond_4b
const/16 v4, 0x7672
if-ne v1, v4, :cond_34
.line 731
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
new-array v4, v2, [B
iput-object v4, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->projectionData:[B
.line 732
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->projectionData:[B
invoke-interface {v3, v1, v6, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
goto/16 :goto_2b5
.line 877
:cond_34
new-instance v2, Lcom/google/android/exoplayer2/ParserException;
new-instance v3, Ljava/lang/StringBuilder;
invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "Unexpected id: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v2, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v2
.line 727
:cond_4b
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
new-array v4, v2, [B
iput-object v4, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecPrivate:[B
.line 728
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecPrivate:[B
invoke-interface {v3, v1, v6, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
goto/16 :goto_2b5
.line 721
:cond_5a
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryIdBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, v1, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-static {v1, v6}, Ljava/util/Arrays;->fill([BB)V
.line 722
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryIdBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, v1, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
rsub-int/lit8 v4, v2, 0x4
invoke-interface {v3, v1, v4, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
.line 723
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryIdBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 724
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryIdBytes:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedInt()J
move-result-wide v1
long-to-int v2, v1
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryId:I
goto/16 :goto_2b5
.line 740
:cond_7a
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
new-array v4, v2, [B
iput-object v4, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->encryptionKeyId:[B
.line 741
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->encryptionKeyId:[B
invoke-interface {v3, v1, v6, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
goto/16 :goto_2b5
.line 736
:cond_89
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
new-array v4, v2, [B
iput-object v4, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->sampleStrippedBytes:[B
.line 737
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object v1, v1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->sampleStrippedBytes:[B
invoke-interface {v3, v1, v6, v2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->readFully([BII)V
goto/16 :goto_2b5
.line 750
:cond_98
iget v4, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
const/16 v7, 0x8
const/4 v8, 0x1
if-nez v4, :cond_be
.line 751
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->varintReader:Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;
invoke-virtual {v4, v3, v6, v8, v7}, Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;->readUnsignedVarint(Lcom/google/android/exoplayer2/extractor/ExtractorInput;ZZI)J
move-result-wide v9
long-to-int v4, v9
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumber:I
.line 752
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->varintReader:Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;->getLastLength()I
move-result v4
iput v4, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumberLength:I
const-wide v9, -0x7fffffffffffffffL # -4.9E-324
.line 753
iput-wide v9, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockDurationUs:J
.line 754
iput v8, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
.line 755
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset()V
.line 758
:cond_be
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->tracks:Landroid/util/SparseArray;
iget v9, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumber:I
invoke-virtual {v4, v9}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
if-nez v4, :cond_d4
.line 762
iget v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumberLength:I
sub-int v1, v2, v1
invoke-interface {v3, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->skipFully(I)V
.line 763
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
return-void
.line 767
:cond_d4
iget v9, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
if-ne v9, v8, :cond_284
const/4 v9, 0x3
.line 769
invoke-direct {v0, v3, v9}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readScratch(Lcom/google/android/exoplayer2/extractor/ExtractorInput;I)V
.line 770
iget-object v10, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v10, v10, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/4 v11, 0x2
aget-byte v10, v10, v11
and-int/lit8 v10, v10, 0x6
shr-int/2addr v10, v8
const/16 v12, 0xff
if-nez v10, :cond_fc
.line 772
iput v8, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleCount:I
.line 773
iget-object v10, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
invoke-static {v10, v8}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->ensureArrayCapacity([II)[I
move-result-object v10
iput-object v10, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
.line 774
iget v13, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumberLength:I
sub-int/2addr v2, v13
sub-int/2addr v2, v9
aput v2, v10, v6
goto/16 :goto_214
:cond_fc
if-ne v1, v5, :cond_27c
const/4 v13, 0x4
.line 781
invoke-direct {v0, v3, v13}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readScratch(Lcom/google/android/exoplayer2/extractor/ExtractorInput;I)V
.line 782
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v14, v14, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
aget-byte v14, v14, v9
and-int/2addr v14, v12
add-int/2addr v14, v8
iput v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleCount:I
.line 783
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
.line 784
invoke-static {v15, v14}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->ensureArrayCapacity([II)[I
move-result-object v14
iput-object v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
if-ne v10, v11, :cond_122
.line 786
iget v9, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumberLength:I
sub-int/2addr v2, v9
sub-int/2addr v2, v13
iget v9, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleCount:I
div-int/2addr v2, v9
.line 788
invoke-static {v14, v6, v9, v2}, Ljava/util/Arrays;->fill([IIII)V
goto/16 :goto_214
:cond_122
if-ne v10, v8, :cond_159
const/4 v9, 0x0
const/4 v10, 0x0
.line 792
:goto_126
iget v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleCount:I
add-int/lit8 v15, v14, -0x1
if-ge v9, v15, :cond_14d
.line 793
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
aput v6, v14, v9
:cond_130
add-int/2addr v13, v8
.line 796
invoke-direct {v0, v3, v13}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readScratch(Lcom/google/android/exoplayer2/extractor/ExtractorInput;I)V
.line 797
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v14, v14, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
add-int/lit8 v15, v13, -0x1
aget-byte v14, v14, v15
and-int/2addr v14, v12
.line 798
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
aget v16, v15, v9
add-int v16, v16, v14
aput v16, v15, v9
if-eq v14, v12, :cond_130
.line 800
aget v14, v15, v9
add-int/2addr v10, v14
add-int/lit8 v9, v9, 0x1
goto :goto_126
.line 802
:cond_14d
iget-object v9, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
sub-int/2addr v14, v8
iget v15, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumberLength:I
sub-int/2addr v2, v15
sub-int/2addr v2, v13
sub-int/2addr v2, v10
aput v2, v9, v14
goto/16 :goto_214
:cond_159
if-ne v10, v9, :cond_265
const/4 v9, 0x0
const/4 v10, 0x0
.line 807
:goto_15d
iget v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleCount:I
add-int/lit8 v15, v14, -0x1
if-ge v9, v15, :cond_209
.line 808
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
aput v6, v14, v9
add-int/lit8 v13, v13, 0x1
.line 809
invoke-direct {v0, v3, v13}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readScratch(Lcom/google/android/exoplayer2/extractor/ExtractorInput;I)V
.line 810
iget-object v14, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v14, v14, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
add-int/lit8 v15, v13, -0x1
aget-byte v14, v14, v15
if-eqz v14, :cond_201
const-wide/16 v16, 0x0
const/4 v14, 0x0
:goto_179
if-ge v14, v7, :cond_1cb
rsub-int/lit8 v18, v14, 0x7
shl-int v5, v8, v18
.line 816
iget-object v11, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v11, v11, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
aget-byte v11, v11, v15
and-int/2addr v11, v5
if-eqz v11, :cond_1c0
add-int/2addr v13, v14
.line 819
invoke-direct {v0, v3, v13}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->readScratch(Lcom/google/android/exoplayer2/extractor/ExtractorInput;I)V
.line 820
iget-object v11, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v11, v11, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
add-int/lit8 v16, v15, 0x1
aget-byte v11, v11, v15
and-int/2addr v11, v12
not-int v5, v5
and-int/2addr v5, v11
move/from16 v19, v9
int-to-long v8, v5
move/from16 v5, v16
:goto_19c
move-wide/from16 v16, v8
if-ge v5, v13, :cond_1b2
shl-long v8, v16, v7
.line 823
iget-object v15, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v15, v15, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
add-int/lit8 v16, v5, 0x1
aget-byte v5, v15, v5
and-int/2addr v5, v12
int-to-long v11, v5
or-long/2addr v8, v11
move/from16 v5, v16
const/16 v12, 0xff
goto :goto_19c
:cond_1b2
if-lez v19, :cond_1cd
mul-int/lit8 v14, v14, 0x7
add-int/lit8 v14, v14, 0x6
const-wide/16 v8, 0x1
shl-long v11, v8, v14
sub-long/2addr v11, v8
sub-long v16, v16, v11
goto :goto_1cd
:cond_1c0
move/from16 v19, v9
add-int/lit8 v14, v14, 0x1
const/16 v5, 0xa3
const/4 v8, 0x1
const/4 v11, 0x2
const/16 v12, 0xff
goto :goto_179
:cond_1cb
move/from16 v19, v9
:cond_1cd
:goto_1cd
move-wide/from16 v8, v16
const-wide/32 v11, -0x80000000
cmp-long v5, v8, v11
if-ltz v5, :cond_1f9
const-wide/32 v11, 0x7fffffff
cmp-long v5, v8, v11
if-gtz v5, :cond_1f9
long-to-int v5, v8
.line 836
iget-object v8, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
if-nez v19, :cond_1e3
goto :goto_1e8
:cond_1e3
add-int/lit8 v9, v19, -0x1
aget v9, v8, v9
add-int/2addr v5, v9
:goto_1e8
aput v5, v8, v19
.line 838
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
aget v5, v5, v19
add-int/2addr v10, v5
add-int/lit8 v9, v19, 0x1
const/16 v5, 0xa3
const/4 v8, 0x1
const/4 v11, 0x2
const/16 v12, 0xff
goto/16 :goto_15d
.line 833
:cond_1f9
new-instance v1, Lcom/google/android/exoplayer2/ParserException;
const-string v2, "EBML lacing sample size out of range."
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v1
.line 811
:cond_201
new-instance v1, Lcom/google/android/exoplayer2/ParserException;
const-string v2, "No valid varint length mask found"
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v1
.line 840
:cond_209
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
const/4 v8, 0x1
sub-int/2addr v14, v8
iget v8, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumberLength:I
sub-int/2addr v2, v8
sub-int/2addr v2, v13
sub-int/2addr v2, v10
aput v2, v5, v14
.line 848
:goto_214
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
aget-byte v2, v2, v6
shl-int/2addr v2, v7
iget-object v5, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v5, v5, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/4 v8, 0x1
aget-byte v5, v5, v8
const/16 v8, 0xff
and-int/2addr v5, v8
or-int/2addr v2, v5
.line 849
iget-wide v8, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->clusterTimecodeUs:J
int-to-long v12, v2
invoke-direct {v0, v12, v13}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scaleTimecodeToUs(J)J
move-result-wide v12
add-long/2addr v8, v12
iput-wide v8, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTimeUs:J
.line 850
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/4 v5, 0x2
aget-byte v2, v2, v5
and-int/2addr v2, v7
if-ne v2, v7, :cond_23d
const/16 v20, 0x1
goto :goto_23f
:cond_23d
const/16 v20, 0x0
.line 851
:goto_23f
iget v2, v4, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->type:I
if-eq v2, v5, :cond_255
const/16 v2, 0xa3
if-ne v1, v2, :cond_253
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
aget-byte v2, v2, v5
const/16 v5, 0x80
and-int/2addr v2, v5
if-ne v2, v5, :cond_253
goto :goto_255
:cond_253
const/4 v2, 0x0
goto :goto_256
:cond_255
:goto_255
const/4 v2, 0x1
:goto_256
if-eqz v20, :cond_25b
const/high16 v5, -0x80000000
goto :goto_25c
:cond_25b
const/4 v5, 0x0
:goto_25c
or-int/2addr v2, v5
.line 853
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
const/4 v2, 0x2
.line 855
iput v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
.line 856
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleIndex:I
goto :goto_284
.line 844
:cond_265
new-instance v1, Lcom/google/android/exoplayer2/ParserException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Unexpected lacing value: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v1
.line 777
:cond_27c
new-instance v1, Lcom/google/android/exoplayer2/ParserException;
const-string v2, "Lacing only supported in SimpleBlocks."
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v1
:cond_284
:goto_284
const/16 v2, 0xa3
if-ne v1, v2, :cond_2ae
.line 861
:goto_288
iget v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleIndex:I
iget v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleCount:I
if-ge v1, v2, :cond_2ab
.line 862
iget-object v2, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
aget v1, v2, v1
invoke-direct {v0, v3, v4, v1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->writeSampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;I)V
.line 863
iget-wide v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTimeUs:J
iget v5, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleIndex:I
iget v7, v4, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->defaultSampleDurationNs:I
mul-int v5, v5, v7
div-int/lit16 v5, v5, 0x3e8
int-to-long v7, v5
add-long/2addr v1, v7
.line 865
invoke-direct {v0, v4, v1, v2}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->commitSampleToOutput(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;J)V
.line 866
iget v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleIndex:I
const/4 v2, 0x1
add-int/2addr v1, v2
iput v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleIndex:I
goto :goto_288
.line 868
:cond_2ab
iput v6, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
goto :goto_2b5
.line 872
:cond_2ae
iget-object v1, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockLacingSampleSizes:[I
aget v1, v1, v6
invoke-direct {v0, v3, v4, v1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->writeSampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;I)V
:goto_2b5
return-void
.end method
.method endMasterElement(I)V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/16 v0, 0xa0
const/4 v1, 0x0
const/4 v2, 0x1
if-eq p1, v0, :cond_ef
const/16 v0, 0xae
if-eq p1, v0, :cond_cd
const/16 v0, 0x4dbb
const v3, 0x1c53bb6b
if-eq p1, v0, :cond_b3
const/16 v0, 0x6240
if-eq p1, v0, :cond_83
const/16 v0, 0x6d80
if-eq p1, v0, :cond_6d
const v0, 0x1549a966
if-eq p1, v0, :cond_4f
const v0, 0x1654ae6b
if-eq p1, v0, :cond_38
if-eq p1, v3, :cond_27
goto/16 :goto_10f
.line 498
:cond_27
iget-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sentSeekMap:Z
if-nez p1, :cond_10f
.line 499
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->buildSeekMap()Lcom/google/android/exoplayer2/extractor/SeekMap;
move-result-object v0
invoke-interface {p1, v0}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->seekMap(Lcom/google/android/exoplayer2/extractor/SeekMap;)V
.line 500
iput-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sentSeekMap:Z
goto/16 :goto_10f
.line 539
:cond_38
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->tracks:Landroid/util/SparseArray;
invoke-virtual {p1}, Landroid/util/SparseArray;->size()I
move-result p1
if-eqz p1, :cond_47
.line 542
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->endTracks()V
goto/16 :goto_10f
.line 540
:cond_47
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "No valid tracks were found"
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 481
:cond_4f
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->timecodeScale:J
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
cmp-long p1, v0, v2
if-nez p1, :cond_5f
const-wide/32 v0, 0xf4240
.line 483
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->timecodeScale:J
.line 485
:cond_5f
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationTimecode:J
cmp-long p1, v0, v2
if-eqz p1, :cond_10f
.line 486
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scaleTimecodeToUs(J)J
move-result-wide v0
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationUs:J
goto/16 :goto_10f
.line 527
:cond_6d
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-boolean p1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->hasContentEncryption:Z
if-eqz p1, :cond_10f
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->sampleStrippedBytes:[B
if-nez p1, :cond_7b
goto/16 :goto_10f
.line 528
:cond_7b
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Combining encryption and compression is not supported"
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 518
:cond_83
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-boolean p1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->hasContentEncryption:Z
if-eqz p1, :cond_10f
.line 519
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->encryptionKeyId:[B
if-eqz p1, :cond_ab
.line 522
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
new-instance v0, Lcom/google/android/exoplayer2/drm/DrmInitData;
new-array v2, v2, [Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;
new-instance v3, Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;
sget-object v4, Lcom/google/android/exoplayer2/C;->UUID_NIL:Ljava/util/UUID;
iget-object v5, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object v5, v5, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->encryptionKeyId:[B
const-string/jumbo v6, "video/webm"
invoke-direct {v3, v4, v6, v5}, Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;-><init>(Ljava/util/UUID;Ljava/lang/String;[B)V
aput-object v3, v2, v1
invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/drm/DrmInitData;-><init>([Lcom/google/android/exoplayer2/drm/DrmInitData$SchemeData;)V
iput-object v0, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->drmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
goto :goto_10f
.line 520
:cond_ab
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Encrypted Track found but ContentEncKeyID was not found"
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 490
:cond_b3
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryId:I
const/4 v0, -0x1
if-eq p1, v0, :cond_c5
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryPosition:J
const-wide/16 v4, -0x1
cmp-long v2, v0, v4
if-eqz v2, :cond_c5
if-ne p1, v3, :cond_10f
.line 494
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cuesContentPosition:J
goto :goto_10f
.line 491
:cond_c5
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string v0, "Mandatory element SeekID or SeekPosition not found"
invoke-direct {p1, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 532
:cond_cd
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object p1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecId:Ljava/lang/String;
invoke-static {p1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->isCodecSupported(Ljava/lang/String;)Z
move-result p1
if-eqz p1, :cond_eb
.line 533
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
iget v1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->number:I
invoke-virtual {p1, v0, v1}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->initializeOutput(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;I)V
.line 534
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->tracks:Landroid/util/SparseArray;
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget v0, v0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->number:I
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
invoke-virtual {p1, v0, v1}, Landroid/util/SparseArray;->put(ILjava/lang/Object;)V
:cond_eb
const/4 p1, 0x0
.line 536
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
goto :goto_10f
.line 506
:cond_ef
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
const/4 v0, 0x2
if-eq p1, v0, :cond_f5
return-void
.line 511
:cond_f5
iget-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSeenReferenceBlock:Z
if-nez p1, :cond_fe
.line 512
iget p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
or-int/2addr p1, v2
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockFlags:I
.line 514
:cond_fe
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->tracks:Landroid/util/SparseArray;
iget v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTrackNumber:I
invoke-virtual {p1, v0}, Landroid/util/SparseArray;->get(I)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iget-wide v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockTimeUs:J
invoke-direct {p0, p1, v2, v3}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->commitSampleToOutput(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;J)V
.line 515
iput v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
:cond_10f
:goto_10f
return-void
.end method
.method floatElement(ID)V
.registers 5
const/16 v0, 0xb5
if-eq p1, v0, :cond_d
const/16 v0, 0x4489
if-eq p1, v0, :cond_9
goto :goto_12
:cond_9
double-to-long p1, p2
.line 688
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationTimecode:J
goto :goto_12
.line 691
:cond_d
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
double-to-int p2, p2
iput p2, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->sampleRate:I
:goto_12
return-void
.end method
.method getElementType(I)I
.registers 2
sparse-switch p1, :sswitch_data_10
const/4 p1, 0x0
return p1
:sswitch_5
const/4 p1, 0x5
return p1
:sswitch_7
const/4 p1, 0x4
return p1
:sswitch_9
const/4 p1, 0x1
return p1
:sswitch_b
const/4 p1, 0x3
return p1
:sswitch_d
const/4 p1, 0x2
return p1
nop
:sswitch_data_10
.sparse-switch
0x83 -> :sswitch_d
0x86 -> :sswitch_b
0x88 -> :sswitch_d
0x9b -> :sswitch_d
0x9f -> :sswitch_d
0xa0 -> :sswitch_9
0xa1 -> :sswitch_7
0xa3 -> :sswitch_7
0xae -> :sswitch_9
0xb0 -> :sswitch_d
0xb3 -> :sswitch_d
0xb5 -> :sswitch_5
0xb7 -> :sswitch_9
0xba -> :sswitch_d
0xbb -> :sswitch_9
0xd7 -> :sswitch_d
0xe0 -> :sswitch_9
0xe1 -> :sswitch_9
0xe7 -> :sswitch_d
0xf1 -> :sswitch_d
0xfb -> :sswitch_d
0x4254 -> :sswitch_d
0x4255 -> :sswitch_7
0x4282 -> :sswitch_b
0x4285 -> :sswitch_d
0x42f7 -> :sswitch_d
0x4489 -> :sswitch_5
0x47e1 -> :sswitch_d
0x47e2 -> :sswitch_7
0x47e7 -> :sswitch_9
0x47e8 -> :sswitch_d
0x4dbb -> :sswitch_9
0x5031 -> :sswitch_d
0x5032 -> :sswitch_d
0x5034 -> :sswitch_9
0x5035 -> :sswitch_9
0x53ab -> :sswitch_7
0x53ac -> :sswitch_d
0x53b8 -> :sswitch_d
0x54b0 -> :sswitch_d
0x54b2 -> :sswitch_d
0x54ba -> :sswitch_d
0x55aa -> :sswitch_d
0x56aa -> :sswitch_d
0x56bb -> :sswitch_d
0x6240 -> :sswitch_9
0x6264 -> :sswitch_d
0x63a2 -> :sswitch_7
0x6d80 -> :sswitch_9
0x7670 -> :sswitch_9
0x7672 -> :sswitch_7
0x22b59c -> :sswitch_b
0x23e383 -> :sswitch_d
0x2ad7b1 -> :sswitch_d
0x114d9b74 -> :sswitch_9
0x1549a966 -> :sswitch_9
0x1654ae6b -> :sswitch_9
0x18538067 -> :sswitch_9
0x1a45dfa3 -> :sswitch_9
0x1c53bb6b -> :sswitch_9
0x1f43b675 -> :sswitch_9
.end sparse-switch
.end method
.method public init(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;)V
.registers 2
.line 317
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
return-void
.end method
.method integerElement(IJ)V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/4 v0, 0x0
const/4 v1, 0x1
const-wide/16 v2, 0x1
const-string v4, " not supported"
sparse-switch p1, :sswitch_data_1a8
goto/16 :goto_1a7
.line 569
:sswitch_b
iput-wide p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->timecodeScale:J
goto/16 :goto_1a7
.line 599
:sswitch_f
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->defaultSampleDurationNs:I
goto/16 :goto_1a7
.line 611
:sswitch_16
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->audioBitDepth:I
goto/16 :goto_1a7
.line 605
:sswitch_1d
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iput-wide p2, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->seekPreRollNs:J
goto/16 :goto_1a7
.line 602
:sswitch_23
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iput-wide p2, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecDelayNs:J
goto/16 :goto_1a7
.line 593
:sswitch_29
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
cmp-long v4, p2, v2
if-nez v4, :cond_30
const/4 v0, 0x1
:cond_30
iput-boolean v0, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->flagDefault:Z
goto/16 :goto_1a7
.line 581
:sswitch_34
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->displayHeight:I
goto/16 :goto_1a7
.line 584
:sswitch_3b
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->displayUnit:I
goto/16 :goto_1a7
.line 578
:sswitch_42
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->displayWidth:I
goto/16 :goto_1a7
:sswitch_49
long-to-int p1, p2
if-eqz p1, :cond_60
if-eq p1, v1, :cond_59
const/4 p2, 0x3
if-eq p1, p2, :cond_53
goto/16 :goto_1a7
.line 674
:cond_53
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iput v1, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->stereoMode:I
goto/16 :goto_1a7
.line 671
:cond_59
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
const/4 p2, 0x2
iput p2, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->stereoMode:I
goto/16 :goto_1a7
.line 668
:cond_60
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iput v0, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->stereoMode:I
goto/16 :goto_1a7
.line 566
:sswitch_66
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentPosition:J
add-long/2addr p2, v0
iput-wide p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryPosition:J
goto/16 :goto_1a7
:sswitch_6d
cmp-long p1, p2, v2
if-nez p1, :cond_73
goto/16 :goto_1a7
.line 625
:cond_73
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "ContentEncodingScope "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
:sswitch_8d
const-wide/16 v0, 0x0
cmp-long p1, p2, v0
if-nez p1, :cond_95
goto/16 :goto_1a7
.line 619
:cond_95
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "ContentEncodingOrder "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
:sswitch_af
cmp-long p1, p2, v2
if-nez p1, :cond_b5
goto/16 :goto_1a7
.line 643
:cond_b5
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "AESSettingsCipherMode "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
:sswitch_cf
const-wide/16 v0, 0x5
cmp-long p1, p2, v0
if-nez p1, :cond_d7
goto/16 :goto_1a7
.line 637
:cond_d7
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "ContentEncAlgo "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
:sswitch_f1
cmp-long p1, p2, v2
if-nez p1, :cond_f7
goto/16 :goto_1a7
.line 554
:cond_f7
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "EBMLReadVersion "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
:sswitch_111
cmp-long p1, p2, v2
if-ltz p1, :cond_11d
const-wide/16 v0, 0x2
cmp-long p1, p2, v0
if-gtz p1, :cond_11d
goto/16 :goto_1a7
.line 560
:cond_11d
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "DocTypeReadVersion "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
:sswitch_137
const-wide/16 v0, 0x3
cmp-long p1, p2, v0
if-nez p1, :cond_13f
goto/16 :goto_1a7
.line 631
:cond_13f
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "ContentCompAlgo "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2, p3}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v0, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 614
:sswitch_159
iput-boolean v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSeenReferenceBlock:Z
goto :goto_1a7
.line 650
:sswitch_15c
iget-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seenClusterPositionForCurrentCuePoint:Z
if-nez p1, :cond_1a7
.line 654
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueClusterPositions:Lcom/google/android/exoplayer2/util/LongArray;
invoke-virtual {p1, p2, p3}, Lcom/google/android/exoplayer2/util/LongArray;->add(J)V
.line 655
iput-boolean v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seenClusterPositionForCurrentCuePoint:Z
goto :goto_1a7
.line 659
:sswitch_168
invoke-direct {p0, p2, p3}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scaleTimecodeToUs(J)J
move-result-wide p1
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->clusterTimecodeUs:J
goto :goto_1a7
.line 587
:sswitch_16f
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->number:I
goto :goto_1a7
.line 575
:sswitch_175
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->height:I
goto :goto_1a7
.line 647
:sswitch_17b
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
invoke-direct {p0, p2, p3}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scaleTimecodeToUs(J)J
move-result-wide p2
invoke-virtual {p1, p2, p3}, Lcom/google/android/exoplayer2/util/LongArray;->add(J)V
goto :goto_1a7
.line 572
:sswitch_185
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->width:I
goto :goto_1a7
.line 608
:sswitch_18b
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->channelCount:I
goto :goto_1a7
.line 662
:sswitch_191
invoke-direct {p0, p2, p3}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->scaleTimecodeToUs(J)J
move-result-wide p1
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockDurationUs:J
goto :goto_1a7
.line 590
:sswitch_198
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
cmp-long v4, p2, v2
if-nez v4, :cond_19f
const/4 v0, 0x1
:cond_19f
iput-boolean v0, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->flagForced:Z
goto :goto_1a7
.line 596
:sswitch_1a2
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
long-to-int p3, p2
iput p3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->type:I
:cond_1a7
:goto_1a7
return-void
:sswitch_data_1a8
.sparse-switch
0x83 -> :sswitch_1a2
0x88 -> :sswitch_198
0x9b -> :sswitch_191
0x9f -> :sswitch_18b
0xb0 -> :sswitch_185
0xb3 -> :sswitch_17b
0xba -> :sswitch_175
0xd7 -> :sswitch_16f
0xe7 -> :sswitch_168
0xf1 -> :sswitch_15c
0xfb -> :sswitch_159
0x4254 -> :sswitch_137
0x4285 -> :sswitch_111
0x42f7 -> :sswitch_f1
0x47e1 -> :sswitch_cf
0x47e8 -> :sswitch_af
0x5031 -> :sswitch_8d
0x5032 -> :sswitch_6d
0x53ac -> :sswitch_66
0x53b8 -> :sswitch_49
0x54b0 -> :sswitch_42
0x54b2 -> :sswitch_3b
0x54ba -> :sswitch_34
0x55aa -> :sswitch_29
0x56aa -> :sswitch_23
0x56bb -> :sswitch_1d
0x6264 -> :sswitch_16
0x23e383 -> :sswitch_f
0x2ad7b1 -> :sswitch_b
.end sparse-switch
.end method
.method isLevel1Element(I)Z
.registers 3
const v0, 0x1549a966
if-eq p1, v0, :cond_17
const v0, 0x1f43b675
if-eq p1, v0, :cond_17
const v0, 0x1c53bb6b
if-eq p1, v0, :cond_17
const v0, 0x1654ae6b
if-ne p1, v0, :cond_15
goto :goto_17
:cond_15
const/4 p1, 0x0
goto :goto_18
:cond_17
:goto_17
const/4 p1, 0x1
:goto_18
return p1
.end method
.method public read(Lcom/google/android/exoplayer2/extractor/ExtractorInput;Lcom/google/android/exoplayer2/extractor/PositionHolder;)I
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
const/4 v0, 0x0
.line 337
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleRead:Z
const/4 v1, 0x1
const/4 v2, 0x1
:cond_5
if-eqz v2, :cond_1e
.line 339
iget-boolean v3, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleRead:Z
if-nez v3, :cond_1e
.line 340
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->reader:Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;
invoke-interface {v2, p1}, Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;->read(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result v2
if-eqz v2, :cond_5
.line 341
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v3
invoke-direct {p0, p2, v3, v4}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->maybeSeekForCues(Lcom/google/android/exoplayer2/extractor/PositionHolder;J)Z
move-result v3
if-eqz v3, :cond_5
return v1
:cond_1e
if-eqz v2, :cond_21
goto :goto_22
:cond_21
const/4 v0, -0x1
:goto_22
return v0
.end method
.method public release()V
.registers 1
return-void
.end method
.method public seek(JJ)V
.registers 5
const-wide p1, -0x7fffffffffffffffL # -4.9E-324
.line 322
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->clusterTimecodeUs:J
const/4 p1, 0x0
.line 323
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->blockState:I
.line 324
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->reader:Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/mkv/EbmlReader;->reset()V
.line 325
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->varintReader:Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/mkv/VarintReader;->reset()V
.line 326
invoke-direct {p0}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->resetSample()V
return-void
.end method
.method public sniff(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 312
new-instance v0, Lcom/google/android/exoplayer2/extractor/mkv/Sniffer;
invoke-direct {v0}, Lcom/google/android/exoplayer2/extractor/mkv/Sniffer;-><init>()V
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/extractor/mkv/Sniffer;->sniff(Lcom/google/android/exoplayer2/extractor/ExtractorInput;)Z
move-result p1
return p1
.end method
.method startMasterElement(IJJ)V
.registers 11
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/16 v0, 0xa0
const/4 v1, 0x0
if-eq p1, v0, :cond_82
const/16 v0, 0xae
if-eq p1, v0, :cond_79
const/16 v0, 0xbb
if-eq p1, v0, :cond_76
const/16 v0, 0x4dbb
const-wide/16 v1, -0x1
if-eq p1, v0, :cond_70
const/16 v0, 0x5035
const/4 v3, 0x1
if-eq p1, v0, :cond_6b
const v0, 0x18538067
if-eq p1, v0, :cond_53
const p2, 0x1c53bb6b
if-eq p1, p2, :cond_44
const p2, 0x1f43b675
if-eq p1, p2, :cond_28
goto :goto_84
.line 448
:cond_28
iget-boolean p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sentSeekMap:Z
if-nez p1, :cond_84
.line 450
iget-wide p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cuesContentPosition:J
cmp-long p3, p1, v1
if-eqz p3, :cond_35
.line 452
iput-boolean v3, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekForCues:Z
goto :goto_84
.line 456
:cond_35
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->extractorOutput:Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
new-instance p2, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;
iget-wide p3, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->durationUs:J
invoke-direct {p2, p3, p4}, Lcom/google/android/exoplayer2/extractor/SeekMap$Unseekable;-><init>(J)V
invoke-interface {p1, p2}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->seekMap(Lcom/google/android/exoplayer2/extractor/SeekMap;)V
.line 457
iput-boolean v3, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sentSeekMap:Z
goto :goto_84
.line 441
:cond_44
new-instance p1, Lcom/google/android/exoplayer2/util/LongArray;
invoke-direct {p1}, Lcom/google/android/exoplayer2/util/LongArray;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueTimesUs:Lcom/google/android/exoplayer2/util/LongArray;
.line 442
new-instance p1, Lcom/google/android/exoplayer2/util/LongArray;
invoke-direct {p1}, Lcom/google/android/exoplayer2/util/LongArray;-><init>()V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->cueClusterPositions:Lcom/google/android/exoplayer2/util/LongArray;
goto :goto_84
.line 429
:cond_53
iget-wide v3, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentPosition:J
cmp-long p1, v3, v1
if-eqz p1, :cond_66
cmp-long p1, v3, p2
if-nez p1, :cond_5e
goto :goto_66
.line 431
:cond_5e
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
const-string p2, "Multiple Segment elements not supported"
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 433
:cond_66
:goto_66
iput-wide p2, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentPosition:J
.line 434
iput-wide p4, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->segmentContentSize:J
goto :goto_84
.line 468
:cond_6b
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iput-boolean v3, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->hasContentEncryption:Z
goto :goto_84
:cond_70
const/4 p1, -0x1
.line 437
iput p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryId:I
.line 438
iput-wide v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seekEntryPosition:J
goto :goto_84
.line 445
:cond_76
iput-boolean v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->seenClusterPositionForCurrentCuePoint:Z
goto :goto_84
.line 471
:cond_79
new-instance p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
const/4 p2, 0x0
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;-><init>(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$1;)V
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
goto :goto_84
.line 462
:cond_82
iput-boolean v1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->sampleSeenReferenceBlock:Z
:cond_84
:goto_84
return-void
.end method
.method stringElement(ILjava/lang/String;)V
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
const/16 v0, 0x86
if-eq p1, v0, :cond_42
const/16 v0, 0x4282
if-eq p1, v0, :cond_14
const v0, 0x22b59c
if-eq p1, v0, :cond_e
goto :goto_46
.line 710
:cond_e
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
# setter for: Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->language:Ljava/lang/String;
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->access$202(Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;Ljava/lang/String;)Ljava/lang/String;
goto :goto_46
:cond_14
const-string/jumbo p1, "webm"
.line 702
invoke-virtual {p1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-nez p1, :cond_46
const-string p1, "matroska"
invoke-virtual {p1, p2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
if-eqz p1, :cond_26
goto :goto_46
.line 703
:cond_26
new-instance p1, Lcom/google/android/exoplayer2/ParserException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "DocType "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p2, " not supported"
invoke-virtual {v0, p2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw p1
.line 707
:cond_42
iget-object p1, p0, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor;->currentTrack:Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;
iput-object p2, p1, Lcom/google/android/exoplayer2/extractor/mkv/MatroskaExtractor$Track;->codecId:Ljava/lang/String;
:cond_46
:goto_46
return-void
.end method