CeaDecoder.smali
.class abstract Lcom/google/android/exoplayer2/text/cea/CeaDecoder;
.super Ljava/lang/Object;
.source "CeaDecoder.java"
# interfaces
.implements Lcom/google/android/exoplayer2/text/SubtitleDecoder;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaOutputBuffer;,
Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
}
.end annotation
# static fields
.field private static final NUM_INPUT_BUFFERS:I
.field private static final NUM_OUTPUT_BUFFERS:I
# instance fields
.field private final availableInputBuffers:Ljava/util/ArrayDeque;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayDeque<",
"Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;",
">;"
}
.end annotation
.end field
.field private final availableOutputBuffers:Ljava/util/ArrayDeque;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayDeque<",
"Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;",
">;"
}
.end annotation
.end field
.field private dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
.field private playbackPositionUs:J
.field private queuedInputBufferCount:J
.field private final queuedInputBuffers:Ljava/util/PriorityQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/PriorityQueue<",
"Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x1565
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->NUM_INPUT_BUFFERS:I
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->NUM_OUTPUT_BUFFERS:I
return-void
.end method
.method public constructor <init>()V
.registers 5
.line 46
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 47
new-instance v0, Ljava/util/ArrayDeque;
invoke-direct {v0}, Ljava/util/ArrayDeque;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableInputBuffers:Ljava/util/ArrayDeque;
.line 48
const/4 v0, 0x0
.local v0, "i":I
:goto_b
const/16 v1, 0xa
const/4 v2, 0x0
if-ge v0, v1, :cond_1d
.line 49
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableInputBuffers:Ljava/util/ArrayDeque;
new-instance v3, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
invoke-direct {v3, v2}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;-><init>(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$1;)V
invoke-virtual {v1, v3}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z
.line 48
add-int/lit8 v0, v0, 0x1
goto :goto_b
.line 51
.end local v0 # "i":I
:cond_1d
new-instance v0, Ljava/util/ArrayDeque;
invoke-direct {v0}, Ljava/util/ArrayDeque;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableOutputBuffers:Ljava/util/ArrayDeque;
.line 52
const/4 v0, 0x0
.restart local v0 # "i":I
:goto_25
const/4 v1, 0x2
if-ge v0, v1, :cond_35
.line 53
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableOutputBuffers:Ljava/util/ArrayDeque;
new-instance v3, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaOutputBuffer;
invoke-direct {v3, p0, v2}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaOutputBuffer;-><init>(Lcom/google/android/exoplayer2/text/cea/CeaDecoder;Lcom/google/android/exoplayer2/text/cea/CeaDecoder$1;)V
invoke-virtual {v1, v3}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z
.line 52
add-int/lit8 v0, v0, 0x1
goto :goto_25
.line 55
.end local v0 # "i":I
:cond_35
new-instance v0, Ljava/util/PriorityQueue;
invoke-direct {v0}, Ljava/util/PriorityQueue;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBuffers:Ljava/util/PriorityQueue;
.line 56
return-void
.end method
.method private releaseInputBuffer(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;)V
.registers 3
.param p1, "inputBuffer" # Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
.line 133
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;->clear()V
.line 134
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableInputBuffers:Ljava/util/ArrayDeque;
invoke-virtual {v0, p1}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z
.line 135
return-void
.end method
# virtual methods
.method protected abstract createSubtitle()Lcom/google/android/exoplayer2/text/Subtitle;
.end method
.method protected abstract decode(Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;)V
.end method
.method public dequeueInputBuffer()Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 68
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
if-nez v0, :cond_6
const/4 v0, 0x1
goto :goto_7
:cond_6
const/4 v0, 0x0
:goto_7
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkState(Z)V
.line 69
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableInputBuffers:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v0
if-eqz v0, :cond_14
.line 70
const/4 v0, 0x0
return-object v0
.line 72
:cond_14
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableInputBuffers:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->pollFirst()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
.line 73
return-object v0
.end method
.method public bridge synthetic dequeueInputBuffer()Ljava/lang/Object;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 33
invoke-virtual {p0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeueInputBuffer()Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;
move-result-object v0
return-object v0
.end method
.method public dequeueOutputBuffer()Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
.registers 10
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 92
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableOutputBuffers:Ljava/util/ArrayDeque;
invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_a
.line 93
return-object v1
.line 98
:cond_a
:goto_a
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBuffers:Ljava/util/PriorityQueue;
invoke-virtual {v0}, Ljava/util/PriorityQueue;->isEmpty()Z
move-result v0
if-nez v0, :cond_6f
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBuffers:Ljava/util/PriorityQueue;
.line 99
invoke-virtual {v0}, Ljava/util/PriorityQueue;->peek()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
iget-wide v2, v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;->timeUs:J
iget-wide v4, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->playbackPositionUs:J
cmp-long v0, v2, v4
if-gtz v0, :cond_6f
.line 100
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBuffers:Ljava/util/PriorityQueue;
invoke-virtual {v0}, Ljava/util/PriorityQueue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
.line 104
.local v0, "inputBuffer":Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;->isEndOfStream()Z
move-result v2
if-eqz v2, :cond_40
.line 105
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableOutputBuffers:Ljava/util/ArrayDeque;
invoke-virtual {v1}, Ljava/util/ArrayDeque;->pollFirst()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
.line 106
.local v1, "outputBuffer":Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
const/4 v2, 0x4
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;->addFlag(I)V
.line 107
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->releaseInputBuffer(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;)V
.line 108
return-object v1
.line 111
.end local v1 # "outputBuffer":Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
:cond_40
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->decode(Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;)V
.line 114
invoke-virtual {p0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->isNewSubtitleDataAvailable()Z
move-result v2
if-eqz v2, :cond_6b
.line 117
invoke-virtual {p0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->createSubtitle()Lcom/google/android/exoplayer2/text/Subtitle;
move-result-object v2
.line 118
.local v2, "subtitle":Lcom/google/android/exoplayer2/text/Subtitle;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;->isDecodeOnly()Z
move-result v3
if-nez v3, :cond_6b
.line 119
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableOutputBuffers:Ljava/util/ArrayDeque;
invoke-virtual {v1}, Ljava/util/ArrayDeque;->pollFirst()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
.line 120
.restart local v1 # "outputBuffer":Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
iget-wide v4, v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;->timeUs:J
const-wide v7, 0x7fffffffffffffffL
move-object v3, v1
move-object v6, v2
invoke-virtual/range {v3 .. v8}, Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;->setContent(JLcom/google/android/exoplayer2/text/Subtitle;J)V
.line 121
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->releaseInputBuffer(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;)V
.line 122
return-object v1
.line 126
.end local v1 # "outputBuffer":Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
.end local v2 # "subtitle":Lcom/google/android/exoplayer2/text/Subtitle;
:cond_6b
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->releaseInputBuffer(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;)V
.line 127
.end local v0 # "inputBuffer":Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
goto :goto_a
.line 129
:cond_6f
return-object v1
.end method
.method public bridge synthetic dequeueOutputBuffer()Ljava/lang/Object;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 33
invoke-virtual {p0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeueOutputBuffer()Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
move-result-object v0
return-object v0
.end method
.method public flush()V
.registers 3
.line 144
const-wide/16 v0, 0x0
iput-wide v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBufferCount:J
.line 145
iput-wide v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->playbackPositionUs:J
.line 146
:goto_6
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBuffers:Ljava/util/PriorityQueue;
invoke-virtual {v0}, Ljava/util/PriorityQueue;->isEmpty()Z
move-result v0
if-nez v0, :cond_1a
.line 147
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBuffers:Ljava/util/PriorityQueue;
invoke-virtual {v0}, Ljava/util/PriorityQueue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->releaseInputBuffer(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;)V
goto :goto_6
.line 149
:cond_1a
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
if-eqz v0, :cond_24
.line 150
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->releaseInputBuffer(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;)V
.line 151
const/4 v0, 0x0
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
.line 153
:cond_24
return-void
.end method
.method public abstract getName()Ljava/lang/String;
.end method
.method protected abstract isNewSubtitleDataAvailable()Z
.end method
.method public queueInputBuffer(Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;)V
.registers 7
.param p1, "inputBuffer" # Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 78
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
if-ne p1, v0, :cond_6
const/4 v0, 0x1
goto :goto_7
:cond_6
const/4 v0, 0x0
:goto_7
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkArgument(Z)V
.line 79
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;->isDecodeOnly()Z
move-result v0
if-eqz v0, :cond_16
.line 82
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->releaseInputBuffer(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;)V
goto :goto_29
.line 84
:cond_16
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
iget-wide v1, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBufferCount:J
const-wide/16 v3, 0x1
add-long/2addr v3, v1
iput-wide v3, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBufferCount:J
# setter for: Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;->queuedInputBufferCount:J
invoke-static {v0, v1, v2}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;->access$202(Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;J)J
.line 85
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queuedInputBuffers:Ljava/util/PriorityQueue;
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
invoke-virtual {v0, v1}, Ljava/util/PriorityQueue;->add(Ljava/lang/Object;)Z
.line 87
:goto_29
const/4 v0, 0x0
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->dequeuedInputBuffer:Lcom/google/android/exoplayer2/text/cea/CeaDecoder$CeaInputBuffer;
.line 88
return-void
.end method
.method public bridge synthetic queueInputBuffer(Ljava/lang/Object;)V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 33
check-cast p1, Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;
invoke-virtual {p0, p1}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->queueInputBuffer(Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;)V
return-void
.end method
.method public release()V
.registers 1
.line 158
return-void
.end method
.method protected releaseOutputBuffer(Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;)V
.registers 3
.param p1, "outputBuffer" # Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
.line 138
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;->clear()V
.line 139
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->availableOutputBuffers:Ljava/util/ArrayDeque;
invoke-virtual {v0, p1}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z
.line 140
return-void
.end method
.method public setPositionUs(J)V
.registers 3
.param p1, "positionUs" # J
.line 63
iput-wide p1, p0, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->playbackPositionUs:J
.line 64
return-void
.end method