VorbisUtil.smali
.class final Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;
.super Ljava/lang/Object;
.source "VorbisUtil.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;,
Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$VorbisIdHeader;,
Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CommentHeader;,
Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CodeBook;
}
.end annotation
# static fields
.field private static final TAG:Ljava/lang/String; = "VorbisUtil"
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>()V
.registers 1
.line 410
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 412
return-void
.end method
.method public static iLog(I)I
.registers 2
.param p0, "x" # I
.line 39
const/4 v0, 0x0
.line 40
.local v0, "val":I
:goto_1
if-lez p0, :cond_8
.line 41
add-int/lit8 v0, v0, 0x1
.line 42
ushr-int/lit8 p0, p0, 0x1
goto :goto_1
.line 44
:cond_8
return v0
.end method
.method private static mapType1QuantValues(JJ)J
.registers 10
.param p0, "entries" # J
.param p2, "dimension" # J
.line 407
long-to-double v0, p0
long-to-double v2, p2
const-wide/high16 v4, 0x3ff0000000000000L # 1.0
invoke-static {v2, v3}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v4, v2
invoke-static {v0, v1, v4, v5}, Ljava/lang/Math;->pow(DD)D
move-result-wide v0
invoke-static {v0, v1}, Ljava/lang/Math;->floor(D)D
move-result-wide v0
double-to-long v0, v0
return-wide v0
.end method
.method private static readBook(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CodeBook;
.registers 13
.param p0, "bitArray" # Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 346
const/16 v0, 0x18
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v1
const v2, 0x564342
if-ne v1, v2, :cond_c6
.line 350
const/16 v1, 0x10
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v1
.line 351
.local v1, "dimensions":I
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v0
.line 352
.local v0, "entries":I
new-array v8, v0, [J
.line 354
.local v8, "lengthMap":[J
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v9
.line 355
.local v9, "isOrdered":Z
const/4 v2, 0x5
const/4 v3, 0x1
if-nez v9, :cond_49
.line 356
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v4
.line 357
.local v4, "isSparse":Z
const/4 v5, 0x0
.local v5, "i":I
:goto_24
array-length v6, v8
if-ge v5, v6, :cond_48
.line 358
if-eqz v4, :cond_3d
.line 359
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v6
if-eqz v6, :cond_38
.line 360
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v6
add-int/2addr v6, v3
int-to-long v6, v6
aput-wide v6, v8, v5
goto :goto_45
.line 362
:cond_38
const-wide/16 v6, 0x0
aput-wide v6, v8, v5
goto :goto_45
.line 365
:cond_3d
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v6
add-int/2addr v6, v3
int-to-long v6, v6
aput-wide v6, v8, v5
.line 357
:goto_45
add-int/lit8 v5, v5, 0x1
goto :goto_24
.line 368
.end local v4 # "isSparse":Z
.end local v5 # "i":I
:cond_48
goto :goto_6e
.line 369
:cond_49
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v2
add-int/2addr v2, v3
.line 370
.local v2, "length":I
const/4 v4, 0x0
.local v4, "i":I
:goto_4f
array-length v5, v8
if-ge v4, v5, :cond_6e
.line 371
sub-int v5, v0, v4
invoke-static {v5}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->iLog(I)I
move-result v5
invoke-virtual {p0, v5}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v5
.line 372
.local v5, "num":I
const/4 v6, 0x0
.local v6, "j":I
:goto_5d
if-ge v6, v5, :cond_6a
array-length v7, v8
if-ge v4, v7, :cond_6a
.line 373
int-to-long v10, v2
aput-wide v10, v8, v4
.line 372
add-int/lit8 v4, v4, 0x1
add-int/lit8 v6, v6, 0x1
goto :goto_5d
.line 375
.end local v6 # "j":I
:cond_6a
nop
.end local v5 # "num":I
add-int/lit8 v2, v2, 0x1
.line 376
goto :goto_4f
.line 379
.end local v2 # "length":I
.end local v4 # "i":I
:cond_6e
:goto_6e
const/4 v2, 0x4
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v10
.line 380
.local v10, "lookupType":I
const/4 v4, 0x2
if-gt v10, v4, :cond_af
.line 382
if-eq v10, v3, :cond_7a
if-ne v10, v4, :cond_a3
.line 383
:cond_7a
const/16 v4, 0x20
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 384
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 385
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v2
add-int/2addr v2, v3
.line 386
.local v2, "valueBits":I
invoke-virtual {p0, v3}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 388
if-ne v10, v3, :cond_98
.line 389
if-eqz v1, :cond_95
.line 390
int-to-long v3, v0
int-to-long v5, v1
invoke-static {v3, v4, v5, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->mapType1QuantValues(JJ)J
move-result-wide v3
.local v3, "lookupValuesCount":J
goto :goto_9c
.line 392
.end local v3 # "lookupValuesCount":J
:cond_95
const-wide/16 v3, 0x0
.restart local v3 # "lookupValuesCount":J
goto :goto_9c
.line 395
.end local v3 # "lookupValuesCount":J
:cond_98
int-to-long v3, v0
int-to-long v5, v1
mul-long v3, v3, v5
.line 398
.restart local v3 # "lookupValuesCount":J
:goto_9c
int-to-long v5, v2
mul-long v5, v5, v3
long-to-int v6, v5
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 400
.end local v2 # "valueBits":I
.end local v3 # "lookupValuesCount":J
:cond_a3
new-instance v11, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CodeBook;
move-object v2, v11
move v3, v1
move v4, v0
move-object v5, v8
move v6, v10
move v7, v9
invoke-direct/range {v2 .. v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CodeBook;-><init>(II[JIZ)V
return-object v11
.line 381
:cond_af
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, "lookup type greater than 2 not decodable: "
invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v3, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v3
invoke-direct {v2, v3}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v2
.line 347
.end local v0 # "entries":I
.end local v1 # "dimensions":I
.end local v8 # "lengthMap":[J
.end local v9 # "isOrdered":Z
.end local v10 # "lookupType":I
:cond_c6
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "expected code book to start with [0x56, 0x43, 0x42] at "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 348
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->getPosition()I
move-result v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
goto :goto_e2
:goto_e1
throw v0
:goto_e2
goto :goto_e1
.end method
.method private static readFloors(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)V
.registers 16
.param p0, "bitArray" # Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 292
const/4 v0, 0x6
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v1
const/4 v2, 0x1
add-int/2addr v1, v2
.line 293
.local v1, "floorCount":I
const/4 v3, 0x0
.local v3, "i":I
:goto_8
if-ge v3, v1, :cond_af
.line 294
const/16 v4, 0x10
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v5
.line 295
.local v5, "floorType":I
const/4 v6, 0x4
const/16 v7, 0x8
if-eqz v5, :cond_8d
if-ne v5, v2, :cond_76
.line 308
const/4 v4, 0x5
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v4
.line 309
.local v4, "partitions":I
const/4 v8, -0x1
.line 310
.local v8, "maximumClass":I
new-array v9, v4, [I
.line 311
.local v9, "partitionClassList":[I
const/4 v10, 0x0
.local v10, "j":I
:goto_20
if-ge v10, v4, :cond_31
.line 312
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v11
aput v11, v9, v10
.line 313
aget v11, v9, v10
if-le v11, v8, :cond_2e
.line 314
aget v8, v9, v10
.line 311
:cond_2e
add-int/lit8 v10, v10, 0x1
goto :goto_20
.line 317
.end local v10 # "j":I
:cond_31
add-int/lit8 v10, v8, 0x1
new-array v10, v10, [I
.line 318
.local v10, "classDimensions":[I
const/4 v11, 0x0
.local v11, "j":I
:goto_36
array-length v12, v10
const/4 v13, 0x2
if-ge v11, v12, :cond_59
.line 319
const/4 v12, 0x3
invoke-virtual {p0, v12}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v12
add-int/2addr v12, v2
aput v12, v10, v11
.line 320
invoke-virtual {p0, v13}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v12
.line 321
.local v12, "classSubclasses":I
if-lez v12, :cond_4b
.line 322
invoke-virtual {p0, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 324
:cond_4b
const/4 v13, 0x0
.local v13, "k":I
:goto_4c
shl-int v14, v2, v12
if-ge v13, v14, :cond_56
.line 325
invoke-virtual {p0, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 324
add-int/lit8 v13, v13, 0x1
goto :goto_4c
.line 318
.end local v12 # "classSubclasses":I
.end local v13 # "k":I
:cond_56
add-int/lit8 v11, v11, 0x1
goto :goto_36
.line 328
.end local v11 # "j":I
:cond_59
invoke-virtual {p0, v13}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 329
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v6
.line 330
.local v6, "rangeBits":I
const/4 v7, 0x0
.line 331
.local v7, "count":I
const/4 v11, 0x0
.restart local v11 # "j":I
const/4 v12, 0x0
.local v12, "k":I
:goto_63
if-ge v11, v4, :cond_75
.line 332
aget v13, v9, v11
.line 333
.local v13, "idx":I
aget v14, v10, v13
add-int/2addr v7, v14
.line 334
:goto_6a
if-ge v12, v7, :cond_72
.line 335
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 334
add-int/lit8 v12, v12, 0x1
goto :goto_6a
.line 331
.end local v13 # "idx":I
:cond_72
add-int/lit8 v11, v11, 0x1
goto :goto_63
.line 338
.end local v11 # "j":I
.end local v12 # "k":I
:cond_75
goto :goto_ab
.line 340
.end local v4 # "partitions":I
.end local v6 # "rangeBits":I
.end local v7 # "count":I
.end local v8 # "maximumClass":I
.end local v9 # "partitionClassList":[I
.end local v10 # "classDimensions":[I
:cond_76
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v4, "floor type greater than 1 not decodable: "
invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.line 297
:cond_8d
invoke-virtual {p0, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 298
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 299
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 300
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 301
invoke-virtual {p0, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 302
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v4
add-int/2addr v4, v2
.line 303
.local v4, "floorNumberOfBooks":I
const/4 v6, 0x0
.local v6, "j":I
:goto_a2
if-ge v6, v4, :cond_aa
.line 304
invoke-virtual {p0, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 303
add-int/lit8 v6, v6, 0x1
goto :goto_a2
.line 306
.end local v6 # "j":I
:cond_aa
nop
.line 293
.end local v4 # "floorNumberOfBooks":I
.end local v5 # "floorType":I
:goto_ab
add-int/lit8 v3, v3, 0x1
goto/16 :goto_8
.line 343
.end local v3 # "i":I
:cond_af
return-void
.end method
.method private static readMappings(ILcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)V
.registers 12
.param p0, "channels" # I
.param p1, "bitArray" # Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 218
const/4 v0, 0x6
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v0
const/4 v1, 0x1
add-int/2addr v0, v1
.line 219
.local v0, "mappingsCount":I
const/4 v2, 0x0
.local v2, "i":I
:goto_8
if-ge v2, v0, :cond_8a
.line 220
const/16 v3, 0x10
invoke-virtual {p1, v3}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v3
.line 221
.local v3, "mappingType":I
if-eqz v3, :cond_29
.line 254
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "mapping type other than 0 not supported: "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
const-string v5, "VorbisUtil"
invoke-static {v5, v4}, Lcom/google/android/exoplayer2/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_7e
.line 224
:cond_29
invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v4
const/4 v5, 0x4
if-eqz v4, :cond_36
.line 225
invoke-virtual {p1, v5}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v4
add-int/2addr v4, v1
.local v4, "submaps":I
goto :goto_37
.line 227
.end local v4 # "submaps":I
:cond_36
const/4 v4, 0x1
.line 230
.restart local v4 # "submaps":I
:goto_37
invoke-virtual {p1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v6
const/16 v7, 0x8
if-eqz v6, :cond_5c
.line 231
invoke-virtual {p1, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v6
add-int/2addr v6, v1
.line 232
.local v6, "couplingSteps":I
const/4 v8, 0x0
.local v8, "j":I
:goto_45
if-ge v8, v6, :cond_5c
.line 233
add-int/lit8 v9, p0, -0x1
invoke-static {v9}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->iLog(I)I
move-result v9
invoke-virtual {p1, v9}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 234
add-int/lit8 v9, p0, -0x1
invoke-static {v9}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->iLog(I)I
move-result v9
invoke-virtual {p1, v9}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 232
add-int/lit8 v8, v8, 0x1
goto :goto_45
.line 239
.end local v6 # "couplingSteps":I
.end local v8 # "j":I
:cond_5c
const/4 v6, 0x2
invoke-virtual {p1, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v6
if-nez v6, :cond_81
.line 242
if-le v4, v1, :cond_6e
.line 243
const/4 v6, 0x0
.local v6, "j":I
:goto_66
if-ge v6, p0, :cond_6e
.line 244
invoke-virtual {p1, v5}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 243
add-int/lit8 v6, v6, 0x1
goto :goto_66
.line 247
.end local v6 # "j":I
:cond_6e
const/4 v5, 0x0
.local v5, "j":I
:goto_6f
if-ge v5, v4, :cond_7d
.line 248
invoke-virtual {p1, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 249
invoke-virtual {p1, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 250
invoke-virtual {p1, v7}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 247
add-int/lit8 v5, v5, 0x1
goto :goto_6f
.line 252
.end local v5 # "j":I
:cond_7d
nop
.line 219
.end local v3 # "mappingType":I
.end local v4 # "submaps":I
:goto_7e
add-int/lit8 v2, v2, 0x1
goto :goto_8
.line 240
.restart local v3 # "mappingType":I
.restart local v4 # "submaps":I
:cond_81
new-instance v1, Lcom/google/android/exoplayer2/ParserException;
const-string/jumbo v5, "to reserved bits must be zero after mapping coupling steps"
invoke-direct {v1, v5}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v1
.line 257
.end local v2 # "i":I
.end local v3 # "mappingType":I
.end local v4 # "submaps":I
:cond_8a
return-void
.end method
.method private static readModes(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)[Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;
.registers 9
.param p0, "bitArray" # Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;
.line 204
const/4 v0, 0x6
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v0
add-int/lit8 v0, v0, 0x1
.line 205
.local v0, "modeCount":I
new-array v1, v0, [Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;
.line 206
.local v1, "modes":[Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;
const/4 v2, 0x0
.local v2, "i":I
:goto_a
if-ge v2, v0, :cond_2a
.line 207
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v3
.line 208
.local v3, "blockFlag":Z
const/16 v4, 0x10
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v5
.line 209
.local v5, "windowType":I
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v4
.line 210
.local v4, "transformType":I
const/16 v6, 0x8
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v6
.line 211
.local v6, "mapping":I
new-instance v7, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;
invoke-direct {v7, v3, v5, v4, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;-><init>(ZIII)V
aput-object v7, v1, v2
.line 206
.end local v3 # "blockFlag":Z
.end local v4 # "transformType":I
.end local v5 # "windowType":I
.end local v6 # "mapping":I
add-int/lit8 v2, v2, 0x1
goto :goto_a
.line 213
.end local v2 # "i":I
:cond_2a
return-object v1
.end method
.method private static readResidues(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)V
.registers 13
.param p0, "bitArray" # Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 260
const/4 v0, 0x6
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v1
const/4 v2, 0x1
add-int/2addr v1, v2
.line 261
.local v1, "residueCount":I
const/4 v3, 0x0
.local v3, "i":I
:goto_8
if-ge v3, v1, :cond_67
.line 262
const/16 v4, 0x10
invoke-virtual {p0, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v4
.line 263
.local v4, "residueType":I
const/4 v5, 0x2
if-gt v4, v5, :cond_5f
.line 266
const/16 v5, 0x18
invoke-virtual {p0, v5}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 267
invoke-virtual {p0, v5}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 268
invoke-virtual {p0, v5}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 269
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v5
add-int/2addr v5, v2
.line 270
.local v5, "classifications":I
const/16 v6, 0x8
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 271
new-array v7, v5, [I
.line 272
.local v7, "cascade":[I
const/4 v8, 0x0
.local v8, "j":I
:goto_2b
if-ge v8, v5, :cond_46
.line 273
const/4 v9, 0x0
.line 274
.local v9, "highBits":I
const/4 v10, 0x3
invoke-virtual {p0, v10}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v10
.line 275
.local v10, "lowBits":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v11
if-eqz v11, :cond_3e
.line 276
const/4 v11, 0x5
invoke-virtual {p0, v11}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v9
.line 278
:cond_3e
mul-int/lit8 v11, v9, 0x8
add-int/2addr v11, v10
aput v11, v7, v8
.line 272
.end local v9 # "highBits":I
.end local v10 # "lowBits":I
add-int/lit8 v8, v8, 0x1
goto :goto_2b
.line 280
.end local v8 # "j":I
:cond_46
const/4 v8, 0x0
.restart local v8 # "j":I
:goto_47
if-ge v8, v5, :cond_5c
.line 281
const/4 v9, 0x0
.local v9, "k":I
:goto_4a
if-ge v9, v6, :cond_59
.line 282
aget v10, v7, v8
shl-int v11, v2, v9
and-int/2addr v10, v11
if-eqz v10, :cond_56
.line 283
invoke-virtual {p0, v6}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 281
:cond_56
add-int/lit8 v9, v9, 0x1
goto :goto_4a
.line 280
.end local v9 # "k":I
:cond_59
add-int/lit8 v8, v8, 0x1
goto :goto_47
.line 261
.end local v4 # "residueType":I
.end local v5 # "classifications":I
.end local v7 # "cascade":[I
.end local v8 # "j":I
:cond_5c
add-int/lit8 v3, v3, 0x1
goto :goto_8
.line 264
.restart local v4 # "residueType":I
:cond_5f
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
const-string v2, "residueType greater than 2 is not decodable"
invoke-direct {v0, v2}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.line 289
.end local v3 # "i":I
.end local v4 # "residueType":I
:cond_67
return-void
.end method
.method public static readVorbisCommentHeader(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CommentHeader;
.registers 11
.param p0, "headerData" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 92
const/4 v0, 0x3
const/4 v1, 0x0
invoke-static {v0, p0, v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->verifyVorbisHeaderCapturePattern(ILcom/google/android/exoplayer2/util/ParsableByteArray;Z)Z
.line 93
const/4 v0, 0x7
.line 95
.local v0, "length":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v1
long-to-int v2, v1
.line 96
.local v2, "len":I
add-int/lit8 v0, v0, 0x4
.line 97
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readString(I)Ljava/lang/String;
move-result-object v1
.line 98
.local v1, "vendor":Ljava/lang/String;
invoke-virtual {v1}, Ljava/lang/String;->length()I
move-result v3
add-int/2addr v0, v3
.line 100
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v3
.line 101
.local v3, "commentListLen":J
long-to-int v5, v3
new-array v5, v5, [Ljava/lang/String;
.line 102
.local v5, "comments":[Ljava/lang/String;
add-int/lit8 v0, v0, 0x4
.line 103
const/4 v6, 0x0
.local v6, "i":I
:goto_20
int-to-long v7, v6
cmp-long v9, v7, v3
if-gez v9, :cond_3c
.line 104
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v7
long-to-int v2, v7
.line 105
add-int/lit8 v0, v0, 0x4
.line 106
invoke-virtual {p0, v2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readString(I)Ljava/lang/String;
move-result-object v7
aput-object v7, v5, v6
.line 107
aget-object v7, v5, v6
invoke-virtual {v7}, Ljava/lang/String;->length()I
move-result v7
add-int/2addr v0, v7
.line 103
add-int/lit8 v6, v6, 0x1
goto :goto_20
.line 109
.end local v6 # "i":I
:cond_3c
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v6
and-int/lit8 v6, v6, 0x1
if-eqz v6, :cond_4c
.line 112
add-int/lit8 v0, v0, 0x1
.line 113
new-instance v6, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CommentHeader;
invoke-direct {v6, v1, v5, v0}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CommentHeader;-><init>(Ljava/lang/String;[Ljava/lang/String;I)V
return-object v6
.line 110
:cond_4c
new-instance v6, Lcom/google/android/exoplayer2/ParserException;
const-string v7, "framing bit expected to be set"
invoke-direct {v6, v7}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
goto :goto_55
:goto_54
throw v6
:goto_55
goto :goto_54
.end method
.method public static readVorbisIdentificationHeader(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$VorbisIdHeader;
.registers 28
.param p0, "headerData" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 59
move-object/from16 v0, p0
const/4 v1, 0x0
const/4 v2, 0x1
invoke-static {v2, v0, v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->verifyVorbisHeaderCapturePattern(ILcom/google/android/exoplayer2/util/ParsableByteArray;Z)Z
.line 61
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v16
.line 62
.local v16, "version":J
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v18
.line 63
.local v18, "channels":I
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianUnsignedInt()J
move-result-wide v19
.line 64
.local v19, "sampleRate":J
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianInt()I
move-result v21
.line 65
.local v21, "bitrateMax":I
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianInt()I
move-result v22
.line 66
.local v22, "bitrateNominal":I
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLittleEndianInt()I
move-result v23
.line 68
.local v23, "bitrateMin":I
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v15
.line 69
.local v15, "blockSize":I
and-int/lit8 v3, v15, 0xf
int-to-double v3, v3
const-wide/high16 v5, 0x4000000000000000L # 2.0
invoke-static {v5, v6, v3, v4}, Ljava/lang/Math;->pow(DD)D
move-result-wide v3
double-to-int v13, v3
.line 70
.local v13, "blockSize0":I
and-int/lit16 v3, v15, 0xf0
shr-int/lit8 v3, v3, 0x4
int-to-double v3, v3
invoke-static {v5, v6, v3, v4}, Ljava/lang/Math;->pow(DD)D
move-result-wide v3
double-to-int v12, v3
.line 72
.local v12, "blockSize1":I
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v3
and-int/2addr v3, v2
if-lez v3, :cond_40
const/4 v14, 0x1
goto :goto_41
:cond_40
const/4 v14, 0x0
.line 74
.local v14, "framingFlag":Z
:goto_41
iget-object v1, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-virtual/range {p0 .. p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v2
invoke-static {v1, v2}, Ljava/util/Arrays;->copyOf([BI)[B
move-result-object v1
.line 76
.local v1, "data":[B
new-instance v2, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$VorbisIdHeader;
move-object v3, v2
move-wide/from16 v4, v16
move/from16 v6, v18
move-wide/from16 v7, v19
move/from16 v9, v21
move/from16 v10, v22
move/from16 v11, v23
move/from16 v24, v12
.end local v12 # "blockSize1":I
.local v24, "blockSize1":I
move v12, v13
move/from16 v25, v13
.end local v13 # "blockSize0":I
.local v25, "blockSize0":I
move/from16 v13, v24
move/from16 v26, v15
.end local v15 # "blockSize":I
.local v26, "blockSize":I
move-object v15, v1
invoke-direct/range {v3 .. v15}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$VorbisIdHeader;-><init>(JIJIIIIIZ[B)V
return-object v2
.end method
.method public static readVorbisModes(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)[Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;
.registers 8
.param p0, "headerData" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "channels" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 175
const/4 v0, 0x5
const/4 v1, 0x0
invoke-static {v0, p0, v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->verifyVorbisHeaderCapturePattern(ILcom/google/android/exoplayer2/util/ParsableByteArray;Z)Z
.line 177
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
add-int/lit8 v0, v0, 0x1
.line 179
.local v0, "numberOfBooks":I
new-instance v1, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;
iget-object v2, p0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;-><init>([B)V
.line 180
.local v1, "bitArray":Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->getPosition()I
move-result v2
mul-int/lit8 v2, v2, 0x8
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->skipBits(I)V
.line 182
const/4 v2, 0x0
.local v2, "i":I
:goto_1c
if-ge v2, v0, :cond_24
.line 183
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->readBook(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$CodeBook;
.line 182
add-int/lit8 v2, v2, 0x1
goto :goto_1c
.line 186
.end local v2 # "i":I
:cond_24
const/4 v2, 0x6
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v2
add-int/lit8 v2, v2, 0x1
.line 187
.local v2, "timeCount":I
const/4 v3, 0x0
.local v3, "i":I
:goto_2c
if-ge v3, v2, :cond_41
.line 188
const/16 v4, 0x10
invoke-virtual {v1, v4}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBits(I)I
move-result v4
if-nez v4, :cond_39
.line 187
add-int/lit8 v3, v3, 0x1
goto :goto_2c
.line 189
:cond_39
new-instance v4, Lcom/google/android/exoplayer2/ParserException;
const-string v5, "placeholder of time domain transforms not zeroed out"
invoke-direct {v4, v5}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v4
.line 192
.end local v3 # "i":I
:cond_41
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->readFloors(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)V
.line 193
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->readResidues(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)V
.line 194
invoke-static {p1, v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->readMappings(ILcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)V
.line 196
invoke-static {v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil;->readModes(Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;)[Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;
move-result-object v3
.line 197
.local v3, "modes":[Lcom/google/android/exoplayer2/extractor/ogg/VorbisUtil$Mode;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/extractor/ogg/VorbisBitArray;->readBit()Z
move-result v4
if-eqz v4, :cond_55
.line 200
return-object v3
.line 198
:cond_55
new-instance v4, Lcom/google/android/exoplayer2/ParserException;
const-string v5, "framing bit after modes not set as expected"
invoke-direct {v4, v5}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
goto :goto_5e
:goto_5d
throw v4
:goto_5e
goto :goto_5d
.end method
.method public static verifyVorbisHeaderCapturePattern(ILcom/google/android/exoplayer2/util/ParsableByteArray;Z)Z
.registers 6
.param p0, "headerType" # I
.param p1, "header" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p2, "quiet" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 129
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v0
const/4 v1, 0x0
const/4 v2, 0x7
if-ge v0, v2, :cond_27
.line 130
if-eqz p2, :cond_b
.line 131
return v1
.line 133
:cond_b
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string/jumbo v2, "too short header: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.line 137
:cond_27
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
if-eq v0, p0, :cond_4b
.line 138
if-eqz p2, :cond_30
.line 139
return v1
.line 141
:cond_30
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "expected header type "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-static {p0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;
move-result-object v2
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.line 145
:cond_4b
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
const/16 v2, 0x76
if-ne v0, v2, :cond_7e
.line 146
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
const/16 v2, 0x6f
if-ne v0, v2, :cond_7e
.line 147
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
const/16 v2, 0x72
if-ne v0, v2, :cond_7e
.line 148
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
const/16 v2, 0x62
if-ne v0, v2, :cond_7e
.line 149
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
const/16 v2, 0x69
if-ne v0, v2, :cond_7e
.line 150
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
const/16 v2, 0x73
if-eq v0, v2, :cond_7c
goto :goto_7e
.line 157
:cond_7c
const/4 v0, 0x1
return v0
.line 151
:cond_7e
:goto_7e
if-eqz p2, :cond_81
.line 152
return v1
.line 154
:cond_81
new-instance v0, Lcom/google/android/exoplayer2/ParserException;
const-string v1, "expected characters \'vorbis\'"
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;)V
throw v0
.end method