PgsDecoder.smali
.class public final Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;
.super Lcom/google/android/exoplayer2/text/SimpleSubtitleDecoder;
.source "PgsDecoder.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;
}
.end annotation
# static fields
.field private static final INFLATE_HEADER:B = 0x78t
.field private static final SECTION_TYPE_BITMAP_PICTURE:I
.field private static final SECTION_TYPE_END:I
.field private static final SECTION_TYPE_IDENTIFIER:I
.field private static final SECTION_TYPE_PALETTE:I
# instance fields
.field private final buffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final cueBuilder:Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;
.field private final inflatedBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private inflater:Ljava/util/zip/Inflater;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x157a
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->SECTION_TYPE_BITMAP_PICTURE:I
const v0, 0x15ef
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->SECTION_TYPE_END:I
const v0, 0x1579
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->SECTION_TYPE_IDENTIFIER:I
const v0, 0x157b
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->SECTION_TYPE_PALETTE:I
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 47
const-string v0, "PgsDecoder"
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/SimpleSubtitleDecoder;-><init>(Ljava/lang/String;)V
.line 48
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/pgs/PgsDecoder;->buffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 49
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/pgs/PgsDecoder;->inflatedBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 50
new-instance v0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;
invoke-direct {v0}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->cueBuilder:Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;
.line 51
return-void
.end method
.method private maybeInflateData(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.registers 4
.param p1, "buffer" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 69
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v0
if-lez v0, :cond_30
invoke-virtual {p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->peekUnsignedByte()I
move-result v0
const/16 v1, 0x78
if-ne v0, v1, :cond_30
.line 70
iget-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->inflater:Ljava/util/zip/Inflater;
if-nez v0, :cond_19
.line 71
new-instance v0, Ljava/util/zip/Inflater;
invoke-direct {v0}, Ljava/util/zip/Inflater;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->inflater:Ljava/util/zip/Inflater;
.line 73
:cond_19
iget-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->inflatedBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->inflater:Ljava/util/zip/Inflater;
invoke-static {p1, v0, v1}, Lcom/google/android/exoplayer2/util/Util;->inflate(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/util/ParsableByteArray;Ljava/util/zip/Inflater;)Z
move-result v0
if-eqz v0, :cond_30
.line 74
iget-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->inflatedBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v0, v0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
iget-object v1, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->inflatedBuffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v1
invoke-virtual {p1, v0, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 77
:cond_30
return-void
.end method
.method private static readNextSection(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;)Lcom/google/android/exoplayer2/text/Cue;
.registers 8
.param p0, "buffer" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.param p1, "cueBuilder" # Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;
.line 80
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v0
.line 81
.local v0, "limit":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v1
.line 82
.local v1, "sectionType":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v2
.line 84
.local v2, "sectionLength":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->getPosition()I
move-result v3
add-int/2addr v3, v2
.line 85
.local v3, "nextSectionPosition":I
if-le v3, v0, :cond_18
.line 86
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 87
const/4 v4, 0x0
return-object v4
.line 90
:cond_18
const/4 v4, 0x0
.line 91
.local v4, "cue":Lcom/google/android/exoplayer2/text/Cue;
const/16 v5, 0x80
if-eq v1, v5, :cond_2d
packed-switch v1, :pswitch_data_3a
goto :goto_35
.line 99
:pswitch_21
invoke-static {p1, p0, v2}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;->access$200(Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 100
goto :goto_35
.line 96
:pswitch_25
invoke-static {p1, p0, v2}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;->access$100(Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 97
goto :goto_35
.line 93
:pswitch_29
invoke-static {p1, p0, v2}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;->access$000(Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
.line 94
goto :goto_35
.line 102
:cond_2d
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;->build()Lcom/google/android/exoplayer2/text/Cue;
move-result-object v4
.line 103
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;->reset()V
.line 104
nop
.line 109
:goto_35
invoke-virtual {p0, v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->setPosition(I)V
.line 110
return-object v4
nop
:pswitch_data_3a
.packed-switch 0x14
:pswitch_29
:pswitch_25
:pswitch_21
.end packed-switch
.end method
# virtual methods
.method protected decode([BIZ)Lcom/google/android/exoplayer2/text/Subtitle;
.registers 7
.param p1, "data" # [B
.param p2, "size" # I
.param p3, "reset" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 55
iget-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->buffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v0, p1, p2}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 56
iget-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->buffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->maybeInflateData(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.line 57
iget-object v0, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->cueBuilder:Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;->reset()V
.line 58
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 59
.local v0, "cues":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Lcom/google/android/exoplayer2/text/Cue;>;"
:goto_14
iget-object v1, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->buffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v1
const/4 v2, 0x3
if-lt v1, v2, :cond_2b
.line 60
iget-object v1, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->buffer:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v2, p0, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->cueBuilder:Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;
invoke-static {v1, v2}, Lcom/google/android/exoplayer2/text/pgs/PgsDecoder;->readNextSection(Lcom/google/android/exoplayer2/util/ParsableByteArray;Lcom/google/android/exoplayer2/text/pgs/PgsDecoder$CueBuilder;)Lcom/google/android/exoplayer2/text/Cue;
move-result-object v1
.line 61
.local v1, "cue":Lcom/google/android/exoplayer2/text/Cue;
if-eqz v1, :cond_2a
.line 62
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 64
.end local v1 # "cue":Lcom/google/android/exoplayer2/text/Cue;
:cond_2a
goto :goto_14
.line 65
:cond_2b
new-instance v1, Lcom/google/android/exoplayer2/text/pgs/PgsSubtitle;
invoke-static {v0}, Ljava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
move-result-object v2
invoke-direct {v1, v2}, Lcom/google/android/exoplayer2/text/pgs/PgsSubtitle;-><init>(Ljava/util/List;)V
return-object v1
.end method