SampleQueue.smali
.class public Lcom/google/android/exoplayer2/source/SampleQueue;
.super Ljava/lang/Object;
.source "SampleQueue.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/TrackOutput;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;,
Lcom/google/android/exoplayer2/source/SampleQueue$UpstreamFormatChangedListener;
}
.end annotation
# static fields
.field public static final ADVANCE_FAILED:I
.field private static final INITIAL_SCRATCH_SIZE:I
# instance fields
.field private final allocationLength:I
.field private final allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
.field private downstreamFormat:Lcom/google/android/exoplayer2/Format;
.field private final extrasHolder:Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
.field private firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.field private lastUnadjustedFormat:Lcom/google/android/exoplayer2/Format;
.field private final metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
.field private pendingFormatAdjustment:Z
.field private pendingSplice:Z
.field private readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.field private sampleOffsetUs:J
.field private final scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private totalBytesWritten:J
.field private upstreamFormatChangeListener:Lcom/google/android/exoplayer2/source/SampleQueue$UpstreamFormatChangedListener;
.field private writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, -0x1570
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/source/SampleQueue;->ADVANCE_FAILED:I
const v0, 0x154f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/source/SampleQueue;->INITIAL_SCRATCH_SIZE:I
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/upstream/Allocator;)V
.registers 6
.param p1, "allocator" # Lcom/google/android/exoplayer2/upstream/Allocator;
.line 79
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 80
iput-object p1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
.line 81
invoke-interface {p1}, Lcom/google/android/exoplayer2/upstream/Allocator;->getIndividualAllocationLength()I
move-result v0
iput v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocationLength:I
.line 82
new-instance v0, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-direct {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
.line 83
new-instance v0, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
invoke-direct {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->extrasHolder:Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
.line 84
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/16 v1, 0x20
invoke-direct {v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>(I)V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 85
new-instance v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocationLength:I
const-wide/16 v2, 0x0
invoke-direct {v0, v2, v3, v1}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;-><init>(JI)V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 86
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 87
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 88
return-void
.end method
.method private advanceReadTo(J)V
.registers 6
.param p1, "absolutePosition" # J
.line 486
:goto_0
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
cmp-long v2, p1, v0
if-ltz v2, :cond_f
.line 487
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
goto :goto_0
.line 489
:cond_f
return-void
.end method
.method private clearAllocationNodes(Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;)V
.registers 7
.param p1, "fromNode" # Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 606
iget-boolean v0, p1, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->wasInitialized:Z
if-nez v0, :cond_5
.line 607
return-void
.line 612
:cond_5
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-boolean v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->wasInitialized:Z
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v1, v1, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->startPosition:J
iget-wide v3, p1, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->startPosition:J
sub-long/2addr v1, v3
long-to-int v2, v1
iget v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocationLength:I
div-int/2addr v2, v1
add-int/2addr v0, v2
.line 614
.local v0, "allocationCount":I
new-array v1, v0, [Lcom/google/android/exoplayer2/upstream/Allocation;
.line 615
.local v1, "allocationsToRelease":[Lcom/google/android/exoplayer2/upstream/Allocation;
move-object v2, p1
.line 616
.local v2, "currentNode":Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
const/4 v3, 0x0
.local v3, "i":I
:goto_19
array-length v4, v1
if-ge v3, v4, :cond_27
.line 617
iget-object v4, v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->allocation:Lcom/google/android/exoplayer2/upstream/Allocation;
aput-object v4, v1, v3
.line 618
invoke-virtual {v2}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->clear()Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
move-result-object v2
.line 616
add-int/lit8 v3, v3, 0x1
goto :goto_19
.line 620
.end local v3 # "i":I
:cond_27
iget-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
invoke-interface {v3, v1}, Lcom/google/android/exoplayer2/upstream/Allocator;->release([Lcom/google/android/exoplayer2/upstream/Allocation;)V
.line 621
return-void
.end method
.method private discardDownstreamTo(J)V
.registers 8
.param p1, "absolutePosition" # J
.line 501
const-wide/16 v0, -0x1
cmp-long v2, p1, v0
if-nez v2, :cond_7
.line 502
return-void
.line 504
:cond_7
:goto_7
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
cmp-long v2, p1, v0
if-ltz v2, :cond_21
.line 505
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v1, v1, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->allocation:Lcom/google/android/exoplayer2/upstream/Allocation;
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/upstream/Allocator;->release(Lcom/google/android/exoplayer2/upstream/Allocation;)V
.line 506
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->clear()Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
goto :goto_7
.line 510
:cond_21
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->startPosition:J
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->startPosition:J
cmp-long v4, v0, v2
if-gez v4, :cond_31
.line 511
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 513
:cond_31
return-void
.end method
.method private static getAdjustedSampleFormat(Lcom/google/android/exoplayer2/Format;J)Lcom/google/android/exoplayer2/Format;
.registers 8
.param p0, "format" # Lcom/google/android/exoplayer2/Format;
.param p1, "sampleOffsetUs" # J
.line 659
if-nez p0, :cond_4
.line 660
const/4 v0, 0x0
return-object v0
.line 662
:cond_4
const-wide/16 v0, 0x0
cmp-long v2, p1, v0
if-eqz v2, :cond_1c
iget-wide v0, p0, Lcom/google/android/exoplayer2/Format;->subsampleOffsetUs:J
const-wide v2, 0x7fffffffffffffffL
cmp-long v4, v0, v2
if-eqz v4, :cond_1c
.line 663
iget-wide v0, p0, Lcom/google/android/exoplayer2/Format;->subsampleOffsetUs:J
add-long/2addr v0, p1
invoke-virtual {p0, v0, v1}, Lcom/google/android/exoplayer2/Format;->copyWithSubsampleOffsetUs(J)Lcom/google/android/exoplayer2/Format;
move-result-object p0
.line 665
:cond_1c
return-object p0
.end method
.method private postAppend(I)V
.registers 7
.param p1, "length" # I
.line 645
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
int-to-long v2, p1
add-long/2addr v0, v2
iput-wide v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
.line 646
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
cmp-long v4, v0, v2
if-nez v4, :cond_14
.line 647
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 649
:cond_14
return-void
.end method
.method private preAppend(I)I
.registers 8
.param p1, "length" # I
.line 632
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-boolean v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->wasInitialized:Z
if-nez v0, :cond_1c
.line 633
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
invoke-interface {v1}, Lcom/google/android/exoplayer2/upstream/Allocator;->allocate()Lcom/google/android/exoplayer2/upstream/Allocation;
move-result-object v1
new-instance v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v3, v3, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
iget v5, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocationLength:I
invoke-direct {v2, v3, v4, v5}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;-><init>(JI)V
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->initialize(Lcom/google/android/exoplayer2/upstream/Allocation;Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;)V
.line 636
:cond_1c
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
iget-wide v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
sub-long/2addr v0, v2
long-to-int v1, v0
invoke-static {p1, v1}, Ljava/lang/Math;->min(II)I
move-result v0
return v0
.end method
.method private readData(JLjava/nio/ByteBuffer;I)V
.registers 11
.param p1, "absolutePosition" # J
.param p3, "target" # Ljava/nio/ByteBuffer;
.param p4, "length" # I
.line 443
invoke-direct {p0, p1, p2}, Lcom/google/android/exoplayer2/source/SampleQueue;->advanceReadTo(J)V
.line 444
move v0, p4
.line 445
.local v0, "remaining":I
:goto_4
if-lez v0, :cond_31
.line 446
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v1, v1, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
sub-long/2addr v1, p1
long-to-int v2, v1
invoke-static {v0, v2}, Ljava/lang/Math;->min(II)I
move-result v1
.line 447
.local v1, "toCopy":I
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v2, v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->allocation:Lcom/google/android/exoplayer2/upstream/Allocation;
.line 448
.local v2, "allocation":Lcom/google/android/exoplayer2/upstream/Allocation;
iget-object v3, v2, Lcom/google/android/exoplayer2/upstream/Allocation;->data:[B
iget-object v4, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
invoke-virtual {v4, p1, p2}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->translateOffset(J)I
move-result v4
invoke-virtual {p3, v3, v4, v1}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
.line 449
sub-int/2addr v0, v1
.line 450
int-to-long v3, v1
add-long/2addr p1, v3
.line 451
iget-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v3, v3, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
cmp-long v5, p1, v3
if-nez v5, :cond_30
.line 452
iget-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v3, v3, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iput-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 454
.end local v1 # "toCopy":I
.end local v2 # "allocation":Lcom/google/android/exoplayer2/upstream/Allocation;
:cond_30
goto :goto_4
.line 455
:cond_31
return-void
.end method
.method private readData(J[BI)V
.registers 11
.param p1, "absolutePosition" # J
.param p3, "target" # [B
.param p4, "length" # I
.line 465
invoke-direct {p0, p1, p2}, Lcom/google/android/exoplayer2/source/SampleQueue;->advanceReadTo(J)V
.line 466
move v0, p4
.line 467
.local v0, "remaining":I
:goto_4
if-lez v0, :cond_33
.line 468
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v1, v1, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
sub-long/2addr v1, p1
long-to-int v2, v1
invoke-static {v0, v2}, Ljava/lang/Math;->min(II)I
move-result v1
.line 469
.local v1, "toCopy":I
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v2, v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->allocation:Lcom/google/android/exoplayer2/upstream/Allocation;
.line 470
.local v2, "allocation":Lcom/google/android/exoplayer2/upstream/Allocation;
iget-object v3, v2, Lcom/google/android/exoplayer2/upstream/Allocation;->data:[B
iget-object v4, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
invoke-virtual {v4, p1, p2}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->translateOffset(J)I
move-result v4
sub-int v5, p4, v0
invoke-static {v3, v4, p3, v5, v1}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 472
sub-int/2addr v0, v1
.line 473
int-to-long v3, v1
add-long/2addr p1, v3
.line 474
iget-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v3, v3, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
cmp-long v5, p1, v3
if-nez v5, :cond_32
.line 475
iget-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v3, v3, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iput-object v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 477
.end local v1 # "toCopy":I
.end local v2 # "allocation":Lcom/google/android/exoplayer2/upstream/Allocation;
:cond_32
goto :goto_4
.line 478
:cond_33
return-void
.end method
.method private readEncryptionData(Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;)V
.registers 25
.param p1, "buffer" # Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;
.param p2, "extrasHolder" # Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
.line 371
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p2
iget-wide v3, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->offset:J
.line 374
.local v3, "offset":J
iget-object v5, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 v6, 0x1
invoke-virtual {v5, v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 375
iget-object v5, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v5, v5, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-direct {v0, v3, v4, v5, v6}, Lcom/google/android/exoplayer2/source/SampleQueue;->readData(J[BI)V
.line 376
const-wide/16 v7, 0x1
add-long/2addr v3, v7
.line 377
iget-object v5, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v5, v5, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
const/4 v7, 0x0
aget-byte v5, v5, v7
.line 378
.local v5, "signalByte":B
and-int/lit16 v8, v5, 0x80
if-eqz v8, :cond_24
goto :goto_25
:cond_24
const/4 v6, 0x0
.line 379
.local v6, "subsampleEncryption":Z
:goto_25
and-int/lit8 v8, v5, 0x7f
.line 382
.local v8, "ivSize":I
iget-object v9, v1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->cryptoInfo:Lcom/google/android/exoplayer2/decoder/CryptoInfo;
iget-object v9, v9, Lcom/google/android/exoplayer2/decoder/CryptoInfo;->iv:[B
if-nez v9, :cond_35
.line 383
iget-object v9, v1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->cryptoInfo:Lcom/google/android/exoplayer2/decoder/CryptoInfo;
const/16 v10, 0x10
new-array v10, v10, [B
iput-object v10, v9, Lcom/google/android/exoplayer2/decoder/CryptoInfo;->iv:[B
.line 385
:cond_35
iget-object v9, v1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->cryptoInfo:Lcom/google/android/exoplayer2/decoder/CryptoInfo;
iget-object v9, v9, Lcom/google/android/exoplayer2/decoder/CryptoInfo;->iv:[B
invoke-direct {v0, v3, v4, v9, v8}, Lcom/google/android/exoplayer2/source/SampleQueue;->readData(J[BI)V
.line 386
int-to-long v9, v8
add-long/2addr v3, v9
.line 390
if-eqz v6, :cond_58
.line 391
iget-object v9, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
const/4 v10, 0x2
invoke-virtual {v9, v10}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 392
iget-object v9, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v9, v9, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-direct {v0, v3, v4, v9, v10}, Lcom/google/android/exoplayer2/source/SampleQueue;->readData(J[BI)V
.line 393
const-wide/16 v9, 0x2
add-long/2addr v3, v9
.line 394
iget-object v9, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v9}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v9
move v15, v9
.local v9, "subsampleCount":I
goto :goto_5a
.line 396
.end local v9 # "subsampleCount":I
:cond_58
const/4 v9, 0x1
move v15, v9
.line 400
.local v15, "subsampleCount":I
:goto_5a
iget-object v9, v1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->cryptoInfo:Lcom/google/android/exoplayer2/decoder/CryptoInfo;
iget-object v9, v9, Lcom/google/android/exoplayer2/decoder/CryptoInfo;->numBytesOfClearData:[I
.line 401
.local v9, "clearDataSizes":[I
if-eqz v9, :cond_67
array-length v10, v9
if-ge v10, v15, :cond_64
goto :goto_67
:cond_64
move-object/from16 v18, v9
goto :goto_6b
.line 402
:cond_67
:goto_67
new-array v9, v15, [I
move-object/from16 v18, v9
.line 404
.end local v9 # "clearDataSizes":[I
.local v18, "clearDataSizes":[I
:goto_6b
iget-object v9, v1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->cryptoInfo:Lcom/google/android/exoplayer2/decoder/CryptoInfo;
iget-object v9, v9, Lcom/google/android/exoplayer2/decoder/CryptoInfo;->numBytesOfEncryptedData:[I
.line 405
.local v9, "encryptedDataSizes":[I
if-eqz v9, :cond_78
array-length v10, v9
if-ge v10, v15, :cond_75
goto :goto_78
:cond_75
move-object/from16 v19, v9
goto :goto_7c
.line 406
:cond_78
:goto_78
new-array v9, v15, [I
move-object/from16 v19, v9
.line 408
.end local v9 # "encryptedDataSizes":[I
.local v19, "encryptedDataSizes":[I
:goto_7c
if-eqz v6, :cond_aa
.line 409
mul-int/lit8 v9, v15, 0x6
.line 410
.local v9, "subsampleDataLength":I
iget-object v10, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v10, v9}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset(I)V
.line 411
iget-object v10, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v10, v10, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-direct {v0, v3, v4, v10, v9}, Lcom/google/android/exoplayer2/source/SampleQueue;->readData(J[BI)V
.line 412
int-to-long v10, v9
add-long/2addr v3, v10
.line 413
iget-object v10, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v10, v7}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 414
const/4 v7, 0x0
.local v7, "i":I
:goto_94
if-ge v7, v15, :cond_a9
.line 415
iget-object v10, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v10}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v10
aput v10, v18, v7
.line 416
iget-object v10, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->scratch:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v10}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedIntToInt()I
move-result v10
aput v10, v19, v7
.line 414
add-int/lit8 v7, v7, 0x1
goto :goto_94
.line 418
.end local v7 # "i":I
.end local v9 # "subsampleDataLength":I
:cond_a9
goto :goto_b6
.line 419
:cond_aa
aput v7, v18, v7
.line 420
iget v9, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->size:I
iget-wide v10, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->offset:J
sub-long v10, v3, v10
long-to-int v11, v10
sub-int/2addr v9, v11
aput v9, v19, v7
.line 424
:goto_b6
iget-object v7, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->cryptoData:Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;
.line 425
.local v7, "cryptoData":Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;
iget-object v9, v1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->cryptoInfo:Lcom/google/android/exoplayer2/decoder/CryptoInfo;
iget-object v13, v7, Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;->encryptionKey:[B
iget-object v10, v1, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->cryptoInfo:Lcom/google/android/exoplayer2/decoder/CryptoInfo;
iget-object v14, v10, Lcom/google/android/exoplayer2/decoder/CryptoInfo;->iv:[B
iget v12, v7, Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;->cryptoMode:I
iget v11, v7, Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;->encryptedBlocks:I
iget v10, v7, Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;->clearBlocks:I
move/from16 v17, v10
move v10, v15
move/from16 v16, v11
move-object/from16 v11, v18
move/from16 v20, v12
move-object/from16 v12, v19
move/from16 v21, v15
.end local v15 # "subsampleCount":I
.local v21, "subsampleCount":I
move/from16 v15, v20
invoke-virtual/range {v9 .. v17}, Lcom/google/android/exoplayer2/decoder/CryptoInfo;->set(I[I[I[B[BIII)V
.line 430
iget-wide v9, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->offset:J
sub-long v9, v3, v9
long-to-int v10, v9
.line 431
.local v10, "bytesRead":I
iget-wide v11, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->offset:J
int-to-long v13, v10
add-long/2addr v11, v13
iput-wide v11, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->offset:J
.line 432
iget v9, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->size:I
sub-int/2addr v9, v10
iput v9, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->size:I
.line 433
return-void
.end method
# virtual methods
.method public advanceTo(JZZ)I
.registers 6
.param p1, "timeUs" # J
.param p3, "toKeyframe" # Z
.param p4, "allowTimeBeyondBuffer" # Z
.line 300
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0, p1, p2, p3, p4}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->advanceTo(JZZ)I
move-result v0
return v0
.end method
.method public advanceToEnd()I
.registers 2
.line 283
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->advanceToEnd()I
move-result v0
return v0
.end method
.method public discardTo(JZZ)V
.registers 7
.param p1, "timeUs" # J
.param p3, "toKeyframe" # Z
.param p4, "stopAtReadPosition" # Z
.line 260
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0, p1, p2, p3, p4}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->discardTo(JZZ)J
move-result-wide v0
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/source/SampleQueue;->discardDownstreamTo(J)V
.line 261
return-void
.end method
.method public discardToEnd()V
.registers 3
.line 274
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->discardToEnd()J
move-result-wide v0
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/source/SampleQueue;->discardDownstreamTo(J)V
.line 275
return-void
.end method
.method public discardToRead()V
.registers 3
.line 267
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->discardToRead()J
move-result-wide v0
invoke-direct {p0, v0, v1}, Lcom/google/android/exoplayer2/source/SampleQueue;->discardDownstreamTo(J)V
.line 268
return-void
.end method
.method public discardUpstreamSamples(I)V
.registers 9
.param p1, "discardFromIndex" # I
.line 147
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->discardUpstreamSamples(I)J
move-result-wide v0
iput-wide v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
.line 148
const-wide/16 v2, 0x0
cmp-long v4, v0, v2
if-eqz v4, :cond_4b
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->startPosition:J
cmp-long v4, v0, v2
if-nez v4, :cond_17
goto :goto_4b
.line 155
:cond_17
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 156
.local v0, "lastNodeToKeep":Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
:goto_19
iget-wide v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
iget-wide v3, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
cmp-long v5, v1, v3
if-lez v5, :cond_24
.line 157
iget-object v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
goto :goto_19
.line 160
:cond_24
iget-object v1, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 161
.local v1, "firstNodeToDiscard":Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/source/SampleQueue;->clearAllocationNodes(Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;)V
.line 163
new-instance v2, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v3, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
iget v5, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocationLength:I
invoke-direct {v2, v3, v4, v5}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;-><init>(JI)V
iput-object v2, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 165
iget-wide v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
iget-wide v4, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->endPosition:J
cmp-long v6, v2, v4
if-nez v6, :cond_3f
iget-object v2, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
goto :goto_40
:cond_3f
move-object v2, v0
:goto_40
iput-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 167
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
if-ne v2, v1, :cond_5f
.line 168
iget-object v2, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->next:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iput-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
goto :goto_5f
.line 149
.end local v0 # "lastNodeToKeep":Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.end local v1 # "firstNodeToDiscard":Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
:cond_4b
:goto_4b
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/source/SampleQueue;->clearAllocationNodes(Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;)V
.line 150
new-instance v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
iget v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocationLength:I
invoke-direct {v0, v1, v2, v3}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;-><init>(JI)V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 151
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 152
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 171
:cond_5f
:goto_5f
return-void
.end method
.method public format(Lcom/google/android/exoplayer2/Format;)V
.registers 5
.param p1, "format" # Lcom/google/android/exoplayer2/Format;
.line 541
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->sampleOffsetUs:J
invoke-static {p1, v0, v1}, Lcom/google/android/exoplayer2/source/SampleQueue;->getAdjustedSampleFormat(Lcom/google/android/exoplayer2/Format;J)Lcom/google/android/exoplayer2/Format;
move-result-object v0
.line 542
.local v0, "adjustedFormat":Lcom/google/android/exoplayer2/Format;
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v1, v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->format(Lcom/google/android/exoplayer2/Format;)Z
move-result v1
.line 543
.local v1, "formatChanged":Z
iput-object p1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->lastUnadjustedFormat:Lcom/google/android/exoplayer2/Format;
.line 544
const/4 v2, 0x0
iput-boolean v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->pendingFormatAdjustment:Z
.line 545
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->upstreamFormatChangeListener:Lcom/google/android/exoplayer2/source/SampleQueue$UpstreamFormatChangedListener;
if-eqz v2, :cond_1a
if-eqz v1, :cond_1a
.line 546
invoke-interface {v2, v0}, Lcom/google/android/exoplayer2/source/SampleQueue$UpstreamFormatChangedListener;->onUpstreamFormatChanged(Lcom/google/android/exoplayer2/Format;)V
.line 548
:cond_1a
return-void
.end method
.method public getFirstIndex()I
.registers 2
.line 186
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->getFirstIndex()I
move-result v0
return v0
.end method
.method public getFirstTimestampUs()J
.registers 3
.line 238
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->getFirstTimestampUs()J
move-result-wide v0
return-wide v0
.end method
.method public getLargestQueuedTimestampUs()J
.registers 3
.line 224
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->getLargestQueuedTimestampUs()J
move-result-wide v0
return-wide v0
.end method
.method public getReadIndex()I
.registers 2
.line 193
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->getReadIndex()I
move-result v0
return v0
.end method
.method public getUpstreamFormat()Lcom/google/android/exoplayer2/Format;
.registers 2
.line 210
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->getUpstreamFormat()Lcom/google/android/exoplayer2/Format;
move-result-object v0
return-object v0
.end method
.method public getWriteIndex()I
.registers 2
.line 137
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->getWriteIndex()I
move-result v0
return v0
.end method
.method public hasNextSample()Z
.registers 2
.line 179
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->hasNextSample()Z
move-result v0
return v0
.end method
.method public isLastSampleQueued()Z
.registers 2
.line 233
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->isLastSampleQueued()Z
move-result v0
return v0
.end method
.method public peekSourceId()I
.registers 2
.line 203
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->peekSourceId()I
move-result v0
return v0
.end method
.method public read(Lcom/google/android/exoplayer2/FormatHolder;Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;ZZJ)I
.registers 14
.param p1, "formatHolder" # Lcom/google/android/exoplayer2/FormatHolder;
.param p2, "buffer" # Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;
.param p3, "formatRequired" # Z
.param p4, "loadingFinished" # Z
.param p5, "decodeOnlyUntilUs" # J
.line 333
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
iget-object v5, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->downstreamFormat:Lcom/google/android/exoplayer2/Format;
iget-object v6, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->extrasHolder:Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
move-object v1, p1
move-object v2, p2
move v3, p3
move v4, p4
invoke-virtual/range {v0 .. v6}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->read(Lcom/google/android/exoplayer2/FormatHolder;Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;ZZLcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;)I
move-result v0
.line 335
.local v0, "result":I
const/4 v1, -0x5
if-eq v0, v1, :cond_4f
const/4 v1, -0x4
if-eq v0, v1, :cond_1e
const/4 v1, -0x3
if-ne v0, v1, :cond_18
.line 354
return v1
.line 356
:cond_18
new-instance v1, Ljava/lang/IllegalStateException;
invoke-direct {v1}, Ljava/lang/IllegalStateException;-><init>()V
throw v1
.line 340
:cond_1e
invoke-virtual {p2}, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->isEndOfStream()Z
move-result v2
if-nez v2, :cond_4e
.line 341
iget-wide v2, p2, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->timeUs:J
cmp-long v4, v2, p5
if-gez v4, :cond_2f
.line 342
const/high16 v2, -0x80000000
invoke-virtual {p2, v2}, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->addFlag(I)V
.line 345
:cond_2f
invoke-virtual {p2}, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->isEncrypted()Z
move-result v2
if-eqz v2, :cond_3a
.line 346
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->extrasHolder:Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
invoke-direct {p0, p2, v2}, Lcom/google/android/exoplayer2/source/SampleQueue;->readEncryptionData(Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;)V
.line 349
:cond_3a
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->extrasHolder:Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
iget v2, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->size:I
invoke-virtual {p2, v2}, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->ensureSpaceForWrite(I)V
.line 350
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->extrasHolder:Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
iget-wide v2, v2, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->offset:J
iget-object v4, p2, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer;
iget-object v5, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->extrasHolder:Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;
iget v5, v5, Lcom/google/android/exoplayer2/source/SampleMetadataQueue$SampleExtrasHolder;->size:I
invoke-direct {p0, v2, v3, v4, v5}, Lcom/google/android/exoplayer2/source/SampleQueue;->readData(JLjava/nio/ByteBuffer;I)V
.line 352
:cond_4e
return v1
.line 337
:cond_4f
iget-object v2, p1, Lcom/google/android/exoplayer2/FormatHolder;->format:Lcom/google/android/exoplayer2/Format;
iput-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->downstreamFormat:Lcom/google/android/exoplayer2/Format;
.line 338
return v1
.end method
.method public reset()V
.registers 2
.line 96
const/4 v0, 0x0
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/source/SampleQueue;->reset(Z)V
.line 97
return-void
.end method
.method public reset(Z)V
.registers 6
.param p1, "resetUpstreamFormat" # Z
.line 108
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->reset(Z)V
.line 109
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/source/SampleQueue;->clearAllocationNodes(Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;)V
.line 110
new-instance v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocationLength:I
const-wide/16 v2, 0x0
invoke-direct {v0, v2, v3, v1}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;-><init>(JI)V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 111
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 112
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 113
iput-wide v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
.line 114
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->allocator:Lcom/google/android/exoplayer2/upstream/Allocator;
invoke-interface {v0}, Lcom/google/android/exoplayer2/upstream/Allocator;->trim()V
.line 115
return-void
.end method
.method public rewind()V
.registers 2
.line 245
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->rewind()V
.line 246
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->firstAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iput-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->readAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
.line 247
return-void
.end method
.method public sampleData(Lcom/google/android/exoplayer2/extractor/ExtractorInput;IZ)I
.registers 8
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.param p2, "length" # I
.param p3, "allowEndOfInput" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 553
invoke-direct {p0, p2}, Lcom/google/android/exoplayer2/source/SampleQueue;->preAppend(I)I
move-result p2
.line 554
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v0, v0, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->allocation:Lcom/google/android/exoplayer2/upstream/Allocation;
iget-object v0, v0, Lcom/google/android/exoplayer2/upstream/Allocation;->data:[B
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
.line 555
invoke-virtual {v1, v2, v3}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->translateOffset(J)I
move-result v1
.line 554
invoke-interface {p1, v0, v1, p2}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->read([BII)I
move-result v0
.line 556
.local v0, "bytesAppended":I
const/4 v1, -0x1
if-ne v0, v1, :cond_22
.line 557
if-eqz p3, :cond_1c
.line 558
return v1
.line 560
:cond_1c
new-instance v1, Ljava/io/EOFException;
invoke-direct {v1}, Ljava/io/EOFException;-><init>()V
throw v1
.line 562
:cond_22
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/source/SampleQueue;->postAppend(I)V
.line 563
return v0
.end method
.method public sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.registers 8
.param p1, "buffer" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p2, "length" # I
.line 568
:goto_0
if-lez p2, :cond_1c
.line 569
invoke-direct {p0, p2}, Lcom/google/android/exoplayer2/source/SampleQueue;->preAppend(I)I
move-result v0
.line 570
.local v0, "bytesAppended":I
iget-object v1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-object v1, v1, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->allocation:Lcom/google/android/exoplayer2/upstream/Allocation;
iget-object v1, v1, Lcom/google/android/exoplayer2/upstream/Allocation;->data:[B
iget-object v2, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->writeAllocationNode:Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;
iget-wide v3, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
.line 571
invoke-virtual {v2, v3, v4}, Lcom/google/android/exoplayer2/source/SampleQueue$AllocationNode;->translateOffset(J)I
move-result v2
.line 570
invoke-virtual {p1, v1, v2, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readBytes([BII)V
.line 572
sub-int/2addr p2, v0
.line 573
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/source/SampleQueue;->postAppend(I)V
.line 574
.end local v0 # "bytesAppended":I
goto :goto_0
.line 575
:cond_1c
return-void
.end method
.method public sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
.registers 22
.param p1, "timeUs" # J
.param p3, "flags" # I
.param p4, "size" # I
.param p5, "offset" # I
.param p6, "cryptoData" # Lcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;
.line 584
move-object v0, p0
iget-boolean v1, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->pendingFormatAdjustment:Z
if-eqz v1, :cond_a
.line 585
iget-object v1, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->lastUnadjustedFormat:Lcom/google/android/exoplayer2/Format;
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/source/SampleQueue;->format(Lcom/google/android/exoplayer2/Format;)V
.line 587
:cond_a
iget-wide v1, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->sampleOffsetUs:J
add-long v1, p1, v1
.line 588
.end local p1 # "timeUs":J
.local v1, "timeUs":J
iget-boolean v3, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->pendingSplice:Z
if-eqz v3, :cond_24
.line 589
and-int/lit8 v3, p3, 0x1
if-eqz v3, :cond_23
iget-object v3, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v3, v1, v2}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->attemptSplice(J)Z
move-result v3
if-nez v3, :cond_1f
goto :goto_23
.line 592
:cond_1f
const/4 v3, 0x0
iput-boolean v3, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->pendingSplice:Z
goto :goto_24
.line 590
:cond_23
:goto_23
return-void
.line 594
:cond_24
:goto_24
iget-wide v3, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->totalBytesWritten:J
move/from16 v11, p4
int-to-long v5, v11
sub-long/2addr v3, v5
move/from16 v12, p5
int-to-long v5, v12
sub-long v13, v3, v5
.line 595
.local v13, "absoluteOffset":J
iget-object v3, v0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
move-wide v4, v1
move/from16 v6, p3
move-wide v7, v13
move/from16 v9, p4
move-object/from16 v10, p6
invoke-virtual/range {v3 .. v10}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->commitSample(JIJILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
.line 596
return-void
.end method
.method public setReadPosition(I)Z
.registers 3
.param p1, "sampleIndex" # I
.line 312
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->setReadPosition(I)Z
move-result v0
return v0
.end method
.method public setSampleOffsetUs(J)V
.registers 6
.param p1, "sampleOffsetUs" # J
.line 533
iget-wide v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->sampleOffsetUs:J
cmp-long v2, v0, p1
if-eqz v2, :cond_b
.line 534
iput-wide p1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->sampleOffsetUs:J
.line 535
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->pendingFormatAdjustment:Z
.line 537
:cond_b
return-void
.end method
.method public setUpstreamFormatChangeListener(Lcom/google/android/exoplayer2/source/SampleQueue$UpstreamFormatChangedListener;)V
.registers 2
.param p1, "listener" # Lcom/google/android/exoplayer2/source/SampleQueue$UpstreamFormatChangedListener;
.line 523
iput-object p1, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->upstreamFormatChangeListener:Lcom/google/android/exoplayer2/source/SampleQueue$UpstreamFormatChangedListener;
.line 524
return-void
.end method
.method public sourceId(I)V
.registers 3
.param p1, "sourceId" # I
.line 123
iget-object v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->metadataQueue:Lcom/google/android/exoplayer2/source/SampleMetadataQueue;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/source/SampleMetadataQueue;->sourceId(I)V
.line 124
return-void
.end method
.method public splice()V
.registers 2
.line 130
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/SampleQueue;->pendingSplice:Z
.line 131
return-void
.end method