WebvttDecoder.smali
.class public final Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;
.super Lcom/google/android/exoplayer2/text/SimpleSubtitleDecoder;
.source "WebvttDecoder.java"
# static fields
.field private static final COMMENT_START:Ljava/lang/String; = "NOTE"
.field private static final EVENT_COMMENT:I
.field private static final EVENT_CUE:I
.field private static final EVENT_END_OF_FILE:I
.field private static final EVENT_NONE:I
.field private static final EVENT_STYLE_BLOCK:I
.field private static final STYLE_START:Ljava/lang/String; = "STYLE"
# instance fields
.field private final cssParser:Lcom/google/android/exoplayer2/text/webvtt/CssParser;
.field private final cueParser:Lcom/google/android/exoplayer2/text/webvtt/WebvttCueParser;
.field private final definedStyles:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/text/webvtt/WebvttCssStyle;",
">;"
}
.end annotation
.end field
.field private final parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final webvttCueBuilder:Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x156e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->EVENT_COMMENT:I
const v0, 0x156c
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->EVENT_CUE:I
const v0, 0x156f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->EVENT_END_OF_FILE:I
const v0, -0x1570
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->EVENT_NONE:I
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->EVENT_STYLE_BLOCK:I
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 49
const-string v0, "WebvttDecoder"
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/SimpleSubtitleDecoder;-><init>(Ljava/lang/String;)V
.line 50
new-instance v0, Lcom/google/android/exoplayer2/text/webvtt/WebvttCueParser;
invoke-direct {v0}, Lcom/google/android/exoplayer2/text/webvtt/WebvttCueParser;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->cueParser:Lcom/google/android/exoplayer2/text/webvtt/WebvttCueParser;
.line 51
new-instance v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 52
new-instance v0, Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;
invoke-direct {v0}, Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->webvttCueBuilder:Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;
.line 53
new-instance v0, Lcom/google/android/exoplayer2/text/webvtt/CssParser;
invoke-direct {v0}, Lcom/google/android/exoplayer2/text/webvtt/CssParser;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->cssParser:Lcom/google/android/exoplayer2/text/webvtt/CssParser;
.line 54
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->definedStyles:Ljava/util/List;
.line 55
return-void
.end method
.method private static getNextEvent(Lcom/google/android/exoplayer2/util/ParsableByteArray;)I
.registers 5
.param p0, "parsableWebvttData" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 104
const/4 v0, -0x1
.line 105
.local v0, "foundEvent":I
const/4 v1, 0x0
.line 106
.local v1, "currentInputPosition":I
:goto_2
const/4 v2, -0x1
if-ne v0, v2, :cond_27
.line 107
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->getPosition()I
move-result v1
.line 108
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLine()Ljava/lang/String;
move-result-object v2
.line 109
.local v2, "line":Ljava/lang/String;
if-nez v2, :cond_11
.line 110
const/4 v0, 0x0
goto :goto_26
.line 111
:cond_11
const-string v3, "STYLE"
invoke-virtual {v3, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_1b
.line 112
const/4 v0, 0x2
goto :goto_26
.line 113
:cond_1b
const-string v3, "NOTE"
invoke-virtual {v2, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result v3
if-eqz v3, :cond_25
.line 114
const/4 v0, 0x1
goto :goto_26
.line 116
:cond_25
const/4 v0, 0x3
.line 118
.end local v2 # "line":Ljava/lang/String;
:goto_26
goto :goto_2
.line 119
:cond_27
invoke-virtual {p0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 120
return v0
.end method
.method private static skipComment(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.registers 2
.param p0, "parsableWebvttData" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 124
:goto_0
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLine()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_b
goto :goto_0
.line 125
:cond_b
return-void
.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 31
invoke-virtual {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->decode([BIZ)Lcom/google/android/exoplayer2/text/webvtt/WebvttSubtitle;
move-result-object p1
return-object p1
.end method
.method protected decode([BIZ)Lcom/google/android/exoplayer2/text/webvtt/WebvttSubtitle;
.registers 10
.param p1, "bytes" # [B
.param p2, "length" # I
.param p3, "reset" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 60
iget-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0, p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 62
iget-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->webvttCueBuilder:Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;->reset()V
.line 63
iget-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->definedStyles:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->clear()V
.line 67
:try_start_f
iget-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v0}, Lcom/google/android/exoplayer2/text/webvtt/WebvttParserUtil;->validateWebvttHeaderLine(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
:try_end_14
.catch Lcom/google/android/exoplayer2/ParserException; {:try_start_f .. :try_end_14} :catch_86
.line 70
nop
.line 71
:goto_15
iget-object v0, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLine()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_22
goto :goto_15
.line 74
:cond_22
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 75
.local v0, "subtitles":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lcom/google/android/exoplayer2/text/webvtt/WebvttCue;>;"
:cond_27
:goto_27
iget-object v1, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v1}, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->getNextEvent(Lcom/google/android/exoplayer2/util/ParsableByteArray;)I
move-result v1
move v2, v1
.local v2, "event":I
if-eqz v1, :cond_80
.line 76
const/4 v1, 0x1
if-ne v2, v1, :cond_39
.line 77
iget-object v1, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-static {v1}, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->skipComment(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
goto :goto_27
.line 78
:cond_39
const/4 v1, 0x2
if-ne v2, v1, :cond_5f
.line 79
invoke-virtual {v0}, Ljava/util/ArrayList;->isEmpty()Z
move-result v1
if-eqz v1, :cond_57
.line 82
iget-object v1, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readLine()Ljava/lang/String;
.line 83
iget-object v1, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->cssParser:Lcom/google/android/exoplayer2/text/webvtt/CssParser;
iget-object v3, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/text/webvtt/CssParser;->parseBlock(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Lcom/google/android/exoplayer2/text/webvtt/WebvttCssStyle;
move-result-object v1
.line 84
.local v1, "styleBlock":Lcom/google/android/exoplayer2/text/webvtt/WebvttCssStyle;
if-eqz v1, :cond_7f
.line 85
iget-object v3, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->definedStyles:Ljava/util/List;
invoke-interface {v3, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_7f
.line 80
.end local v1 # "styleBlock":Lcom/google/android/exoplayer2/text/webvtt/WebvttCssStyle;
:cond_57
new-instance v1, Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
const-string v3, "A style block was found after the first cue."
invoke-direct {v1, v3}, Lcom/google/android/exoplayer2/text/SubtitleDecoderException;-><init>(Ljava/lang/String;)V
throw v1
.line 87
:cond_5f
const/4 v1, 0x3
if-ne v2, v1, :cond_7f
.line 88
iget-object v1, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->cueParser:Lcom/google/android/exoplayer2/text/webvtt/WebvttCueParser;
iget-object v3, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->parsableWebvttData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v4, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->webvttCueBuilder:Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;
iget-object v5, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->definedStyles:Ljava/util/List;
invoke-virtual {v1, v3, v4, v5}, Lcom/google/android/exoplayer2/text/webvtt/WebvttCueParser;->parseCue(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;Ljava/util/List;)Z
move-result v1
if-eqz v1, :cond_27
.line 89
iget-object v1, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->webvttCueBuilder:Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;->build()Lcom/google/android/exoplayer2/text/webvtt/WebvttCue;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 90
iget-object v1, p0, Lcom/google/android/exoplayer2/text/webvtt/WebvttDecoder;->webvttCueBuilder:Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/text/webvtt/WebvttCue$Builder;->reset()V
goto :goto_27
.line 87
:cond_7f
:goto_7f
goto :goto_27
.line 94
:cond_80
new-instance v1, Lcom/google/android/exoplayer2/text/webvtt/WebvttSubtitle;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/text/webvtt/WebvttSubtitle;-><init>(Ljava/util/List;)V
return-object v1
.line 68
.end local v0 # "subtitles":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lcom/google/android/exoplayer2/text/webvtt/WebvttCue;>;"
.end local v2 # "event":I
:catch_86
move-exception v0
.line 69
.local v0, "e":Lcom/google/android/exoplayer2/ParserException;
new-instance v1, Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/text/SubtitleDecoderException;-><init>(Ljava/lang/Exception;)V
goto :goto_8e
:goto_8d
throw v1
:goto_8e
goto :goto_8d
.end method