SsaDecoder.smali
.class public final Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;
.super Lcom/google/android/exoplayer2/text/SimpleSubtitleDecoder;
.source "SsaDecoder.java"
# static fields
.field private static final DIALOGUE_LINE_PREFIX:Ljava/lang/String; = "Dialogue: "
.field private static final FORMAT_LINE_PREFIX:Ljava/lang/String; = "Format: "
.field private static final SSA_TIMECODE_PATTERN:Ljava/util/regex/Pattern;
.field private static final TAG:Ljava/lang/String; = "SsaDecoder"
# instance fields
.field private formatEndIndex:I
.field private formatKeyCount:I
.field private formatStartIndex:I
.field private formatTextIndex:I
.field private final haveInitializationData:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 39
const-string v0, "(?:(\\d+):)?(\\d+):(\\d+)(?::|\\.)(\\d+)"
invoke-static {v0}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v0
sput-object v0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->SSA_TIMECODE_PATTERN:Ljava/util/regex/Pattern;
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 52
const/4 v0, 0x0
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;-><init>(Ljava/util/List;)V
.line 53
return-void
.end method
.method public constructor <init>(Ljava/util/List;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"[B>;)V"
}
.end annotation
.line 62
.local p1, "initializationData":Ljava/util/List;, "Ljava/util/List<[B>;"
const-string v0, "SsaDecoder"
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/SimpleSubtitleDecoder;-><init>(Ljava/lang/String;)V
.line 63
const/4 v0, 0x0
if-eqz p1, :cond_36
invoke-interface {p1}, Ljava/util/List;->isEmpty()Z
move-result v1
if-nez v1, :cond_36
.line 64
const/4 v1, 0x1
iput-boolean v1, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->haveInitializationData:Z
.line 65
invoke-interface {p1, v0}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v0
check-cast v0, [B
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Util;->fromUtf8Bytes([B)Ljava/lang/String;
move-result-object v0
.line 66
.local v0, "formatLine":Ljava/lang/String;
const-string v2, "Format: "
invoke-virtual {v0, v2}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v2
invoke-static {v2}, Lcom/google/android/exoplayer2/util/Assertions;->checkArgument(Z)V
.line 67
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseFormatLine(Ljava/lang/String;)V
.line 68
new-instance v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-interface {p1, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
check-cast v1, [B
invoke-direct {v2, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>([B)V
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseHeader(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.line 69
.end local v0 # "formatLine":Ljava/lang/String;
goto :goto_38
.line 70
:cond_36
iput-boolean v0, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->haveInitializationData:Z
.line 72
:goto_38
return-void
.end method
.method private parseDialogueLine(Ljava/lang/String;Ljava/util/List;Lcom/google/android/exoplayer2/util/LongArray;)V
.registers 15
.param p1, "dialogueLine" # Ljava/lang/String;
.param p3, "cueTimesUs" # Lcom/google/android/exoplayer2/util/LongArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/text/Cue;",
">;",
"Lcom/google/android/exoplayer2/util/LongArray;",
")V"
}
.end annotation
.line 169
.local p2, "cues":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/text/Cue;>;"
iget v0, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatKeyCount:I
const-string v1, "SsaDecoder"
if-nez v0, :cond_1b
.line 170
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Skipping dialogue line before complete format: "
invoke-virtual {v0, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-static {v1, v0}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 171
return-void
.line 174
:cond_1b
const-string v0, "Dialogue: "
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
invoke-virtual {p1, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
iget v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatKeyCount:I
.line 175
const-string v3, ","
invoke-virtual {v0, v3, v2}, Ljava/lang/String;->split(Ljava/lang/String;I)[Ljava/lang/String;
move-result-object v0
.line 176
.local v0, "lineValues":[Ljava/lang/String;
array-length v2, v0
iget v3, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatKeyCount:I
if-eq v2, v3, :cond_47
.line 177
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
const-string v3, "Skipping dialogue line with fewer columns than format: "
invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v2
invoke-static {v1, v2}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 178
return-void
.line 181
:cond_47
iget v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatStartIndex:I
aget-object v2, v0, v2
invoke-static {v2}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseTimecodeUs(Ljava/lang/String;)J
move-result-wide v2
.line 182
.local v2, "startTimeUs":J
const-string v4, "Skipping invalid timing: "
const-wide v5, -0x7fffffffffffffffL # -4.9E-324
cmp-long v7, v2, v5
if-nez v7, :cond_6d
.line 183
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v1, v4}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 184
return-void
.line 187
:cond_6d
const-wide v7, -0x7fffffffffffffffL # -4.9E-324
.line 188
.local v7, "endTimeUs":J
iget v9, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatEndIndex:I
aget-object v9, v0, v9
.line 189
.local v9, "endTimeString":Ljava/lang/String;
invoke-virtual {v9}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v10
invoke-virtual {v10}, Ljava/lang/String;->isEmpty()Z
move-result v10
if-nez v10, :cond_9b
.line 190
invoke-static {v9}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseTimecodeUs(Ljava/lang/String;)J
move-result-wide v7
.line 191
cmp-long v10, v7, v5
if-nez v10, :cond_9b
.line 192
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-static {v1, v4}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 193
return-void
.line 197
:cond_9b
iget v1, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatTextIndex:I
aget-object v1, v0, v1
.line 198
const-string v4, "\\{.*?\\}"
const-string v10, ""
invoke-virtual {v1, v4, v10}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
.line 199
const-string v4, "\n"
const-string v10, "\\\\N"
invoke-virtual {v1, v10, v4}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
.line 200
const-string v10, "\\\\n"
invoke-virtual {v1, v10, v4}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
.line 201
.local v1, "text":Ljava/lang/String;
new-instance v4, Lcom/google/android/exoplayer2/text/Cue;
invoke-direct {v4, v1}, Lcom/google/android/exoplayer2/text/Cue;-><init>(Ljava/lang/CharSequence;)V
invoke-interface {p2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 202
invoke-virtual {p3, v2, v3}, Lcom/google/android/exoplayer2/util/LongArray;->add(J)V
.line 203
cmp-long v4, v7, v5
if-eqz v4, :cond_cb
.line 204
const/4 v4, 0x0
invoke-interface {p2, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 205
invoke-virtual {p3, v7, v8}, Lcom/google/android/exoplayer2/util/LongArray;->add(J)V
.line 207
:cond_cb
return-void
.end method
.method private parseEventBody(Lcom/google/android/exoplayer2/util/ParsableByteArray;Ljava/util/List;Lcom/google/android/exoplayer2/util/LongArray;)V
.registers 6
.param p1, "data" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p3, "cueTimesUs" # Lcom/google/android/exoplayer2/util/LongArray;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/util/ParsableByteArray;",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/text/Cue;",
">;",
"Lcom/google/android/exoplayer2/util/LongArray;",
")V"
}
.end annotation
.line 116
.local p2, "cues":Ljava/util/List;, "Ljava/util/List<Lcom/google/android/exoplayer2/text/Cue;>;"
:cond_0
:goto_0
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLine()Ljava/lang/String;
move-result-object v0
move-object v1, v0
.local v1, "currentLine":Ljava/lang/String;
if-eqz v0, :cond_23
.line 117
iget-boolean v0, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->haveInitializationData:Z
if-nez v0, :cond_17
const-string v0, "Format: "
invoke-virtual {v1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_17
.line 118
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseFormatLine(Ljava/lang/String;)V
goto :goto_0
.line 119
:cond_17
const-string v0, "Dialogue: "
invoke-virtual {v1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_0
.line 120
invoke-direct {p0, v1, p2, p3}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseDialogueLine(Ljava/lang/String;Ljava/util/List;Lcom/google/android/exoplayer2/util/LongArray;)V
goto :goto_0
.line 123
:cond_23
return-void
.end method
.method private parseFormatLine(Ljava/lang/String;)V
.registers 11
.param p1, "formatLine" # Ljava/lang/String;
.line 131
const-string v0, "Format: "
invoke-virtual {v0}, Ljava/lang/String;->length()I
move-result v0
invoke-virtual {p1, v0}, Ljava/lang/String;->substring(I)Ljava/lang/String;
move-result-object v0
const-string v1, ","
invoke-static {v0, v1}, Landroid/text/TextUtils;->split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
move-result-object v0
.line 132
.local v0, "values":[Ljava/lang/String;
array-length v1, v0
iput v1, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatKeyCount:I
.line 133
const/4 v1, -0x1
iput v1, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatStartIndex:I
.line 134
iput v1, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatEndIndex:I
.line 135
iput v1, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatTextIndex:I
.line 136
const/4 v2, 0x0
.local v2, "i":I
:goto_1b
iget v3, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatKeyCount:I
const/4 v4, 0x0
if-ge v2, v3, :cond_73
.line 137
aget-object v3, v0, v2
invoke-virtual {v3}, Ljava/lang/String;->trim()Ljava/lang/String;
move-result-object v3
invoke-static {v3}, Lcom/google/android/exoplayer2/util/Util;->toLowerInvariant(Ljava/lang/String;)Ljava/lang/String;
move-result-object v3
.line 138
.local v3, "key":Ljava/lang/String;
invoke-virtual {v3}, Ljava/lang/String;->hashCode()I
move-result v5
const v6, 0x188db
const/4 v7, 0x2
const/4 v8, 0x1
if-eq v5, v6, :cond_55
const v6, 0x36452d
if-eq v5, v6, :cond_4a
const v6, 0x68ac462
if-eq v5, v6, :cond_40
:cond_3f
goto :goto_5f
:cond_40
const-string/jumbo v5, "start"
invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_3f
goto :goto_60
:cond_4a
const-string/jumbo v4, "text"
invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_3f
const/4 v4, 0x2
goto :goto_60
:cond_55
const-string v4, "end"
invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_3f
const/4 v4, 0x1
goto :goto_60
:goto_5f
const/4 v4, -0x1
:goto_60
if-eqz v4, :cond_6d
if-eq v4, v8, :cond_6a
if-eq v4, v7, :cond_67
goto :goto_70
.line 146
:cond_67
iput v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatTextIndex:I
.line 147
goto :goto_70
.line 143
:cond_6a
iput v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatEndIndex:I
.line 144
goto :goto_70
.line 140
:cond_6d
iput v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatStartIndex:I
.line 141
nop
.line 136
.end local v3 # "key":Ljava/lang/String;
:goto_70
add-int/lit8 v2, v2, 0x1
goto :goto_1b
.line 153
.end local v2 # "i":I
:cond_73
iget v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatStartIndex:I
if-eq v2, v1, :cond_7f
iget v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatEndIndex:I
if-eq v2, v1, :cond_7f
iget v2, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatTextIndex:I
if-ne v2, v1, :cond_81
.line 157
:cond_7f
iput v4, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->formatKeyCount:I
.line 159
:cond_81
return-void
.end method
.method private parseHeader(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.registers 4
.param p1, "data" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 98
:cond_0
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLine()Ljava/lang/String;
move-result-object v0
move-object v1, v0
.local v1, "currentLine":Ljava/lang/String;
if-eqz v0, :cond_10
.line 100
const-string v0, "[Events]"
invoke-virtual {v1, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_0
.line 102
return-void
.line 105
:cond_10
return-void
.end method
.method public static parseTimecodeUs(Ljava/lang/String;)J
.registers 10
.param p0, "timeString" # Ljava/lang/String;
.line 216
sget-object v0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->SSA_TIMECODE_PATTERN:Ljava/util/regex/Pattern;
invoke-virtual {v0, p0}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object v0
.line 217
.local v0, "matcher":Ljava/util/regex/Matcher;
invoke-virtual {v0}, Ljava/util/regex/Matcher;->matches()Z
move-result v1
if-nez v1, :cond_12
.line 218
const-wide v1, -0x7fffffffffffffffL # -4.9E-324
return-wide v1
.line 220
:cond_12
const/4 v1, 0x1
invoke-virtual {v0, v1}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String;
move-result-object v1
invoke-static {v1}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v1
const-wide/16 v3, 0x3c
mul-long v1, v1, v3
mul-long v1, v1, v3
const-wide/32 v5, 0xf4240
mul-long v1, v1, v5
.line 221
.local v1, "timestampUs":J
const/4 v7, 0x2
invoke-virtual {v0, v7}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String;
move-result-object v7
invoke-static {v7}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v7
mul-long v7, v7, v3
mul-long v7, v7, v5
add-long/2addr v1, v7
.line 222
const/4 v3, 0x3
invoke-virtual {v0, v3}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String;
move-result-object v3
invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v3
mul-long v3, v3, v5
add-long/2addr v1, v3
.line 223
const/4 v3, 0x4
invoke-virtual {v0, v3}, Ljava/util/regex/Matcher;->group(I)Ljava/lang/String;
move-result-object v3
invoke-static {v3}, Ljava/lang/Long;->parseLong(Ljava/lang/String;)J
move-result-wide v3
const-wide/16 v5, 0x2710
mul-long v3, v3, v5
add-long/2addr v1, v3
.line 224
return-wide v1
.end method
# virtual methods
.method protected bridge synthetic decode([BIZ)Lcom/google/android/exoplayer2/text/Subtitle;
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 35
invoke-virtual {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->decode([BIZ)Lcom/google/android/exoplayer2/text/ssa/SsaSubtitle;
move-result-object p1
return-object p1
.end method
.method protected decode([BIZ)Lcom/google/android/exoplayer2/text/ssa/SsaSubtitle;
.registers 10
.param p1, "bytes" # [B
.param p2, "length" # I
.param p3, "reset" # Z
.line 76
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 77
.local v0, "cues":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lcom/google/android/exoplayer2/text/Cue;>;"
new-instance v1, Lcom/google/android/exoplayer2/util/LongArray;
invoke-direct {v1}, Lcom/google/android/exoplayer2/util/LongArray;-><init>()V
.line 79
.local v1, "cueTimesUs":Lcom/google/android/exoplayer2/util/LongArray;
new-instance v2, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {v2, p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>([BI)V
.line 80
.local v2, "data":Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-boolean v3, p0, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->haveInitializationData:Z
if-nez v3, :cond_16
.line 81
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseHeader(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.line 83
:cond_16
invoke-direct {p0, v2, v0, v1}, Lcom/google/android/exoplayer2/text/ssa/SsaDecoder;->parseEventBody(Lcom/google/android/exoplayer2/util/ParsableByteArray;Ljava/util/List;Lcom/google/android/exoplayer2/util/LongArray;)V
.line 85
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v3
new-array v3, v3, [Lcom/google/android/exoplayer2/text/Cue;
.line 86
.local v3, "cuesArray":[Lcom/google/android/exoplayer2/text/Cue;
invoke-virtual {v0, v3}, Ljava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
.line 87
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/LongArray;->toArray()[J
move-result-object v4
.line 88
.local v4, "cueTimesUsArray":[J
new-instance v5, Lcom/google/android/exoplayer2/text/ssa/SsaSubtitle;
invoke-direct {v5, v3, v4}, Lcom/google/android/exoplayer2/text/ssa/SsaSubtitle;-><init>([Lcom/google/android/exoplayer2/text/Cue;[J)V
return-object v5
.end method