EventSampleStream.smali
.class final Lcom/google/android/exoplayer2/source/dash/EventSampleStream;
.super Ljava/lang/Object;
.source "EventSampleStream.java"
# interfaces
.implements Lcom/google/android/exoplayer2/source/SampleStream;
# instance fields
.field private currentIndex:I
.field private final eventMessageEncoder:Lcom/google/android/exoplayer2/metadata/emsg/EventMessageEncoder;
.field private eventStream:Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
.field private eventStreamAppendable:Z
.field private eventTimesUs:[J
.field private isFormatSentDownstream:Z
.field private pendingSeekPositionUs:J
.field private final upstreamFormat:Lcom/google/android/exoplayer2/Format;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;Lcom/google/android/exoplayer2/Format;Z)V
.registers 6
.param p1, "eventStream" # Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
.param p2, "upstreamFormat" # Lcom/google/android/exoplayer2/Format;
.param p3, "eventStreamAppendable" # Z
.line 47
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 48
iput-object p2, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->upstreamFormat:Lcom/google/android/exoplayer2/Format;
.line 49
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStream:Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
.line 50
new-instance v0, Lcom/google/android/exoplayer2/metadata/emsg/EventMessageEncoder;
invoke-direct {v0}, Lcom/google/android/exoplayer2/metadata/emsg/EventMessageEncoder;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventMessageEncoder:Lcom/google/android/exoplayer2/metadata/emsg/EventMessageEncoder;
.line 51
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
iput-wide v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->pendingSeekPositionUs:J
.line 52
iget-object v0, p1, Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;->presentationTimesUs:[J
iput-object v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
.line 53
invoke-virtual {p0, p1, p3}, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->updateEventStream(Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;Z)V
.line 54
return-void
.end method
# virtual methods
.method public eventStreamId()Ljava/lang/String;
.registers 2
.line 57
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStream:Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;->id()Ljava/lang/String;
move-result-object v0
return-object v0
.end method
.method public isReady()Z
.registers 2
.line 90
const/4 v0, 0x1
return v0
.end method
.method public maybeThrowError()V
.registers 1
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 96
return-void
.end method
.method public readData(Lcom/google/android/exoplayer2/FormatHolder;Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;Z)I
.registers 12
.param p1, "formatHolder" # Lcom/google/android/exoplayer2/FormatHolder;
.param p2, "buffer" # Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;
.param p3, "formatRequired" # Z
.line 101
const/4 v0, 0x1
if-nez p3, :cond_45
iget-boolean v1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->isFormatSentDownstream:Z
if-nez v1, :cond_8
goto :goto_45
.line 106
:cond_8
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
iget-object v2, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
array-length v2, v2
const/4 v3, -0x4
const/4 v4, -0x3
if-ne v1, v2, :cond_1b
.line 107
iget-boolean v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStreamAppendable:Z
if-nez v0, :cond_1a
.line 108
const/4 v0, 0x4
invoke-virtual {p2, v0}, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->setFlags(I)V
.line 109
return v3
.line 111
:cond_1a
return v4
.line 114
:cond_1b
add-int/lit8 v2, v1, 0x1
iput v2, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
.line 115
.local v1, "sampleIndex":I
iget-object v2, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventMessageEncoder:Lcom/google/android/exoplayer2/metadata/emsg/EventMessageEncoder;
iget-object v5, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStream:Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
iget-object v5, v5, Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;->events:[Lcom/google/android/exoplayer2/metadata/emsg/EventMessage;
aget-object v5, v5, v1
iget-object v6, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStream:Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
iget-wide v6, v6, Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;->timescale:J
invoke-virtual {v2, v5, v6, v7}, Lcom/google/android/exoplayer2/metadata/emsg/EventMessageEncoder;->encode(Lcom/google/android/exoplayer2/metadata/emsg/EventMessage;J)[B
move-result-object v2
.line 117
.local v2, "serializedEvent":[B
if-eqz v2, :cond_44
.line 118
array-length v4, v2
invoke-virtual {p2, v4}, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->ensureSpaceForWrite(I)V
.line 119
invoke-virtual {p2, v0}, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->setFlags(I)V
.line 120
iget-object v0, p2, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer;
invoke-virtual {v0, v2}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 121
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
aget-wide v4, v0, v1
iput-wide v4, p2, Lcom/google/android/exoplayer2/decoder/DecoderInputBuffer;->timeUs:J
.line 122
return v3
.line 124
:cond_44
return v4
.line 102
.end local v1 # "sampleIndex":I
.end local v2 # "serializedEvent":[B
:cond_45
:goto_45
iget-object v1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->upstreamFormat:Lcom/google/android/exoplayer2/Format;
iput-object v1, p1, Lcom/google/android/exoplayer2/FormatHolder;->format:Lcom/google/android/exoplayer2/Format;
.line 103
iput-boolean v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->isFormatSentDownstream:Z
.line 104
const/4 v0, -0x5
return v0
.end method
.method public seekToUs(J)V
.registers 7
.param p1, "positionUs" # J
.line 81
iget-object v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
.line 82
const/4 v1, 0x0
const/4 v2, 0x1
invoke-static {v0, p1, p2, v2, v1}, Lcom/google/android/exoplayer2/util/Util;->binarySearchCeil([JJZZ)I
move-result v0
iput v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
.line 84
iget-boolean v3, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStreamAppendable:Z
if-eqz v3, :cond_14
iget-object v3, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
array-length v3, v3
if-ne v0, v3, :cond_14
const/4 v1, 0x1
:cond_14
move v0, v1
.line 85
.local v0, "isPendingSeek":Z
if-eqz v0, :cond_19
move-wide v1, p1
goto :goto_1e
:cond_19
const-wide v1, -0x7fffffffffffffffL # -4.9E-324
:goto_1e
iput-wide v1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->pendingSeekPositionUs:J
.line 86
return-void
.end method
.method public skipData(J)I
.registers 7
.param p1, "positionUs" # J
.line 130
iget v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
iget-object v1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
.line 131
const/4 v2, 0x1
const/4 v3, 0x0
invoke-static {v1, p1, p2, v2, v3}, Lcom/google/android/exoplayer2/util/Util;->binarySearchCeil([JJZZ)I
move-result v1
invoke-static {v0, v1}, Ljava/lang/Math;->max(II)I
move-result v0
.line 132
.local v0, "newIndex":I
iget v1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
sub-int v1, v0, v1
.line 133
.local v1, "skipped":I
iput v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
.line 134
return v1
.end method
.method public updateEventStream(Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;Z)V
.registers 11
.param p1, "eventStream" # Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
.param p2, "eventStreamAppendable" # Z
.line 61
iget v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
const-wide v1, -0x7fffffffffffffffL # -4.9E-324
if-nez v0, :cond_b
move-wide v4, v1
goto :goto_11
:cond_b
iget-object v3, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
add-int/lit8 v0, v0, -0x1
aget-wide v4, v3, v0
:goto_11
move-wide v3, v4
.line 63
.local v3, "lastReadPositionUs":J
iput-boolean p2, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStreamAppendable:Z
.line 64
iput-object p1, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventStream:Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;
.line 65
iget-object v0, p1, Lcom/google/android/exoplayer2/source/dash/manifest/EventStream;->presentationTimesUs:[J
iput-object v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->eventTimesUs:[J
.line 66
iget-wide v5, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->pendingSeekPositionUs:J
cmp-long v7, v5, v1
if-eqz v7, :cond_24
.line 67
invoke-virtual {p0, v5, v6}, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->seekToUs(J)V
goto :goto_30
.line 68
:cond_24
cmp-long v5, v3, v1
if-eqz v5, :cond_30
.line 69
nop
.line 70
const/4 v1, 0x0
invoke-static {v0, v3, v4, v1, v1}, Lcom/google/android/exoplayer2/util/Util;->binarySearchCeil([JJZZ)I
move-result v0
iput v0, p0, Lcom/google/android/exoplayer2/source/dash/EventSampleStream;->currentIndex:I
.line 73
:cond_30
:goto_30
return-void
.end method