Cea608Decoder.smali
.class public final Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;
.super Lcom/google/android/exoplayer2/text/cea/CeaDecoder;
.source "Cea608Decoder.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
}
.end annotation
# static fields
.field private static final BASIC_CHARACTER_SET:[I
.field private static final CC_FIELD_FLAG:I = 0x1
.field private static final CC_IMPLICIT_DATA_HEADER:B = -0x4t
.field private static final CC_MODE_PAINT_ON:I = 0x3
.field private static final CC_MODE_POP_ON:I = 0x2
.field private static final CC_MODE_ROLL_UP:I = 0x1
.field private static final CC_MODE_UNKNOWN:I = 0x0
.field private static final CC_TYPE_FLAG:I = 0x2
.field private static final CC_VALID_608_ID:I = 0x4
.field private static final CC_VALID_FLAG:I = 0x4
.field private static final COLORS:[I
.field private static final COLUMN_INDICES:[I
.field private static final CTRL_BACKSPACE:B = 0x21t
.field private static final CTRL_CARRIAGE_RETURN:B = 0x2dt
.field private static final CTRL_DELETE_TO_END_OF_ROW:B = 0x24t
.field private static final CTRL_END_OF_CAPTION:B = 0x2ft
.field private static final CTRL_ERASE_DISPLAYED_MEMORY:B = 0x2ct
.field private static final CTRL_ERASE_NON_DISPLAYED_MEMORY:B = 0x2et
.field private static final CTRL_RESUME_CAPTION_LOADING:B = 0x20t
.field private static final CTRL_RESUME_DIRECT_CAPTIONING:B = 0x29t
.field private static final CTRL_ROLL_UP_CAPTIONS_2_ROWS:B = 0x25t
.field private static final CTRL_ROLL_UP_CAPTIONS_3_ROWS:B = 0x26t
.field private static final CTRL_ROLL_UP_CAPTIONS_4_ROWS:B = 0x27t
.field private static final DEFAULT_CAPTIONS_ROW_COUNT:I = 0x4
.field private static final NTSC_CC_FIELD_1:I = 0x0
.field private static final NTSC_CC_FIELD_2:I = 0x1
.field private static final ROW_INDICES:[I
.field private static final SPECIAL_CHARACTER_SET:[I
.field private static final SPECIAL_ES_FR_CHARACTER_SET:[I
.field private static final SPECIAL_PT_DE_CHARACTER_SET:[I
# instance fields
.field private captionMode:I
.field private captionRowCount:I
.field private final ccData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final cueBuilders:Ljava/util/LinkedList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/LinkedList<",
"Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;",
">;"
}
.end annotation
.end field
.field private cues:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/text/Cue;",
">;"
}
.end annotation
.end field
.field private currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
.field private lastCues:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/text/Cue;",
">;"
}
.end annotation
.end field
.field private final packetLength:I
.field private repeatableControlCc1:B
.field private repeatableControlCc2:B
.field private repeatableControlSet:Z
.field private final selectedField:I
# direct methods
.method static constructor <clinit>()V
.registers 2
const/16 v0, 0x8
new-array v1, v0, [I
.line 57
fill-array-data v1, :array_3c
sput-object v1, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->ROW_INDICES:[I
new-array v0, v0, [I
.line 58
fill-array-data v0, :array_50
sput-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->COLUMN_INDICES:[I
const/4 v0, 0x7
new-array v0, v0, [I
.line 59
fill-array-data v0, :array_64
sput-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->COLORS:[I
const/16 v0, 0x60
new-array v0, v0, [I
.line 118
fill-array-data v0, :array_76
sput-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->BASIC_CHARACTER_SET:[I
const/16 v0, 0x10
new-array v0, v0, [I
.line 146
fill-array-data v0, :array_13a
sput-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->SPECIAL_CHARACTER_SET:[I
const/16 v0, 0x20
new-array v1, v0, [I
.line 166
fill-array-data v1, :array_15e
sput-object v1, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->SPECIAL_ES_FR_CHARACTER_SET:[I
new-array v0, v0, [I
.line 176
fill-array-data v0, :array_1a2
sput-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->SPECIAL_PT_DE_CHARACTER_SET:[I
return-void
nop
:array_3c
.array-data 4
0xb
0x1
0x3
0xc
0xe
0x5
0x7
0x9
.end array-data
:array_50
.array-data 4
0x0
0x4
0x8
0xc
0x10
0x14
0x18
0x1c
.end array-data
:array_64
.array-data 4
-0x1
-0xff0100
-0xffff01
-0xff0001
-0x10000
-0x100
-0xff01
.end array-data
:array_76
.array-data 4
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0xe1
0x2b
0x2c
0x2d
0x2e
0x2f
0x30
0x31
0x32
0x33
0x34
0x35
0x36
0x37
0x38
0x39
0x3a
0x3b
0x3c
0x3d
0x3e
0x3f
0x40
0x41
0x42
0x43
0x44
0x45
0x46
0x47
0x48
0x49
0x4a
0x4b
0x4c
0x4d
0x4e
0x4f
0x50
0x51
0x52
0x53
0x54
0x55
0x56
0x57
0x58
0x59
0x5a
0x5b
0xe9
0x5d
0xed
0xf3
0xfa
0x61
0x62
0x63
0x64
0x65
0x66
0x67
0x68
0x69
0x6a
0x6b
0x6c
0x6d
0x6e
0x6f
0x70
0x71
0x72
0x73
0x74
0x75
0x76
0x77
0x78
0x79
0x7a
0xe7
0xf7
0xd1
0xf1
0x25a0
.end array-data
:array_13a
.array-data 4
0xae
0xb0
0xbd
0xbf
0x2122
0xa2
0xa3
0x266a
0xe0
0x20
0xe8
0xe2
0xea
0xee
0xf4
0xfb
.end array-data
:array_15e
.array-data 4
0xc1
0xc9
0xd3
0xda
0xdc
0xfc
0x2018
0xa1
0x2a
0x27
0x2014
0xa9
0x2120
0x2022
0x201c
0x201d
0xc0
0xc2
0xc7
0xc8
0xca
0xcb
0xeb
0xce
0xcf
0xef
0xd4
0xd9
0xf9
0xdb
0xab
0xbb
.end array-data
:array_1a2
.array-data 4
0xc3
0xe3
0xcd
0xcc
0xec
0xd2
0xf2
0xd5
0xf5
0x7b
0x7d
0x5c
0x5e
0x5f
0x7c
0x7e
0xc4
0xe4
0xd6
0xf6
0xdf
0xa5
0xa4
0x2502
0xc5
0xe5
0xd8
0xf8
0x250c
0x2510
0x2514
0x2518
.end array-data
.end method
.method public constructor <init>(Ljava/lang/String;I)V
.registers 7
.line 201
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;-><init>()V
.line 202
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/cea/Cea608Decoder;->ccData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 203
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cueBuilders:Ljava/util/LinkedList;
.line 204
new-instance v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
const/4 v1, 0x0
const/4 v2, 0x4
invoke-direct {v0, v1, v2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;-><init>(II)V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
const-string v0, "application/x-mp4-cea-608"
.line 205
invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result p1
const/4 v0, 0x2
const/4 v3, 0x3
if-eqz p1, :cond_26
const/4 p1, 0x2
goto :goto_27
:cond_26
const/4 p1, 0x3
:goto_27
iput p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->packetLength:I
if-eq p2, v3, :cond_31
if-eq p2, v2, :cond_31
const/4 p1, 0x1
.line 215
iput p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->selectedField:I
goto :goto_33
.line 209
:cond_31
iput v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->selectedField:I
.line 218
:goto_33
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->setCaptionMode(I)V
.line 219
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->resetCueBuilders()V
return-void
.end method
.method private static getChar(B)C
.registers 2
and-int/lit8 p0, p0, 0x7f
add-int/lit8 p0, p0, -0x20
.line 523
sget-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->BASIC_CHARACTER_SET:[I
aget p0, v0, p0
int-to-char p0, p0
return p0
.end method
.method private getDisplayCues()Ljava/util/List;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List<",
"Lcom/google/android/exoplayer2/text/Cue;",
">;"
}
.end annotation
.line 491
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
const/4 v1, 0x0
.line 492
:goto_6
iget-object v2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cueBuilders:Ljava/util/LinkedList;
invoke-virtual {v2}, Ljava/util/LinkedList;->size()I
move-result v2
if-ge v1, v2, :cond_22
.line 493
iget-object v2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cueBuilders:Ljava/util/LinkedList;
invoke-virtual {v2, v1}, Ljava/util/LinkedList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {v2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->build()Lcom/google/android/exoplayer2/text/Cue;
move-result-object v2
if-eqz v2, :cond_1f
.line 495
invoke-interface {v0, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z
:cond_1f
add-int/lit8 v1, v1, 0x1
goto :goto_6
:cond_22
return-object v0
.end method
.method private static getExtendedEsFrChar(B)C
.registers 2
and-int/lit8 p0, p0, 0x1f
.line 533
sget-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->SPECIAL_ES_FR_CHARACTER_SET:[I
aget p0, v0, p0
int-to-char p0, p0
return p0
.end method
.method private static getExtendedPtDeChar(B)C
.registers 2
and-int/lit8 p0, p0, 0x1f
.line 538
sget-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->SPECIAL_PT_DE_CHARACTER_SET:[I
aget p0, v0, p0
int-to-char p0, p0
return p0
.end method
.method private static getSpecialChar(B)C
.registers 2
and-int/lit8 p0, p0, 0xf
.line 528
sget-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->SPECIAL_CHARACTER_SET:[I
aget p0, v0, p0
int-to-char p0, p0
return p0
.end method
.method private handleCtrl(BB)Z
.registers 6
.line 340
invoke-static {p1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->isRepeatable(B)Z
move-result v0
if-eqz v0, :cond_1d
.line 346
iget-boolean v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlSet:Z
const/4 v2, 0x1
if-eqz v1, :cond_17
iget-byte v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlCc1:B
if-ne v1, p1, :cond_17
iget-byte v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlCc2:B
if-ne v1, p2, :cond_17
const/4 p1, 0x0
.line 350
iput-boolean p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlSet:Z
return v2
.line 356
:cond_17
iput-boolean v2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlSet:Z
.line 357
iput-byte p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlCc1:B
.line 358
iput-byte p2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlCc2:B
.line 362
:cond_1d
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->isMidrowCtrlCode(BB)Z
move-result v1
if-eqz v1, :cond_27
.line 363
invoke-direct {p0, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->handleMidrowCtrl(B)V
goto :goto_48
.line 364
:cond_27
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->isPreambleAddressCode(BB)Z
move-result v1
if-eqz v1, :cond_31
.line 365
invoke-direct {p0, p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->handlePreambleAddressCode(BB)V
goto :goto_48
.line 366
:cond_31
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->isTabCtrlCode(BB)Z
move-result v1
if-eqz v1, :cond_3f
.line 367
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
add-int/lit8 p2, p2, -0x20
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->tab(I)V
goto :goto_48
.line 368
:cond_3f
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->isMiscCode(BB)Z
move-result p1
if-eqz p1, :cond_48
.line 369
invoke-direct {p0, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->handleMiscCode(B)V
:cond_48
:goto_48
return v0
.end method
.method private handleMidrowCtrl(B)V
.registers 6
and-int/lit8 v0, p1, 0x1
const/4 v1, 0x1
if-ne v0, v1, :cond_7
const/4 v0, 0x1
goto :goto_8
:cond_7
const/4 v0, 0x0
.line 381
:goto_8
iget-object v2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {v2, v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setUnderline(Z)V
shr-int/2addr p1, v1
and-int/lit8 p1, p1, 0xf
const/4 v0, 0x7
if-ne p1, v0, :cond_2a
.line 385
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
new-instance v0, Landroid/text/style/StyleSpan;
const/4 v2, 0x2
invoke-direct {v0, v2}, Landroid/text/style/StyleSpan;-><init>(I)V
invoke-virtual {p1, v0, v2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setMidrowStyle(Landroid/text/style/CharacterStyle;I)V
.line 386
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
new-instance v0, Landroid/text/style/ForegroundColorSpan;
const/4 v2, -0x1
invoke-direct {v0, v2}, Landroid/text/style/ForegroundColorSpan;-><init>(I)V
invoke-virtual {p1, v0, v1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setMidrowStyle(Landroid/text/style/CharacterStyle;I)V
goto :goto_38
.line 388
:cond_2a
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
new-instance v2, Landroid/text/style/ForegroundColorSpan;
sget-object v3, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->COLORS:[I
aget p1, v3, p1
invoke-direct {v2, p1}, Landroid/text/style/ForegroundColorSpan;-><init>(I)V
invoke-virtual {v0, v2, v1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setMidrowStyle(Landroid/text/style/CharacterStyle;I)V
:goto_38
return-void
.end method
.method private handleMiscCode(B)V
.registers 6
const/16 v0, 0x20
const/4 v1, 0x2
if-eq p1, v0, :cond_61
const/16 v0, 0x29
const/4 v2, 0x3
if-eq p1, v0, :cond_5d
const/4 v0, 0x1
packed-switch p1, :pswitch_data_66
.line 456
iget v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionMode:I
if-nez v1, :cond_13
return-void
:cond_13
const/16 v3, 0x21
if-eq p1, v3, :cond_44
packed-switch p1, :pswitch_data_70
goto :goto_49
.line 471
:pswitch_1b
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->getDisplayCues()Ljava/util/List;
move-result-object p1
iput-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cues:Ljava/util/List;
.line 472
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->resetCueBuilders()V
goto :goto_49
.line 468
:pswitch_25
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->resetCueBuilders()V
goto :goto_49
:pswitch_29
if-ne v1, v0, :cond_49
.line 477
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->isEmpty()Z
move-result p1
if-nez p1, :cond_49
.line 478
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->rollUp()V
goto :goto_49
:pswitch_39
const/4 p1, 0x0
.line 462
iput-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cues:Ljava/util/List;
if-eq v1, v0, :cond_40
if-ne v1, v2, :cond_49
.line 464
:cond_40
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->resetCueBuilders()V
goto :goto_49
.line 482
:cond_44
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->backspace()V
:cond_49
:goto_49
return-void
:pswitch_4a
const/4 p1, 0x4
.line 445
iput p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionRowCount:I
.line 446
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->setCaptionMode(I)V
return-void
.line 441
:pswitch_51
iput v2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionRowCount:I
.line 442
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->setCaptionMode(I)V
return-void
.line 437
:pswitch_57
iput v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionRowCount:I
.line 438
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->setCaptionMode(I)V
return-void
.line 452
:cond_5d
invoke-direct {p0, v2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->setCaptionMode(I)V
return-void
.line 449
:cond_61
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->setCaptionMode(I)V
return-void
nop
:pswitch_data_66
.packed-switch 0x25
:pswitch_57
:pswitch_51
:pswitch_4a
.end packed-switch
:pswitch_data_70
.packed-switch 0x2c
:pswitch_39
:pswitch_29
:pswitch_25
:pswitch_1b
.end packed-switch
.end method
.method private handlePreambleAddressCode(BB)V
.registers 8
.line 395
sget-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->ROW_INDICES:[I
const/4 v1, 0x7
and-int/2addr p1, v1
aget p1, v0, p1
and-int/lit8 v0, p2, 0x20
const/4 v2, 0x1
if-eqz v0, :cond_d
const/4 v0, 0x1
goto :goto_e
:cond_d
const/4 v0, 0x0
:goto_e
if-eqz v0, :cond_12
add-int/lit8 p1, p1, 0x1
.line 407
:cond_12
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->getRow()I
move-result v0
if-eq p1, v0, :cond_3b
.line 408
iget v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionMode:I
if-eq v0, v2, :cond_36
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->isEmpty()Z
move-result v0
if-nez v0, :cond_36
.line 409
new-instance v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
iget v3, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionMode:I
iget v4, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionRowCount:I
invoke-direct {v0, v3, v4}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;-><init>(II)V
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
.line 410
iget-object v3, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cueBuilders:Ljava/util/LinkedList;
invoke-virtual {v3, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 412
:cond_36
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setRow(I)V
:cond_3b
and-int/lit8 p1, p2, 0x1
if-ne p1, v2, :cond_49
.line 416
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
new-instance v0, Landroid/text/style/UnderlineSpan;
invoke-direct {v0}, Landroid/text/style/UnderlineSpan;-><init>()V
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setPreambleStyle(Landroid/text/style/CharacterStyle;)V
:cond_49
shr-int/lit8 p1, p2, 0x1
and-int/lit8 p1, p1, 0xf
if-gt p1, v1, :cond_77
if-ne p1, v1, :cond_68
.line 424
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
new-instance p2, Landroid/text/style/StyleSpan;
const/4 v0, 0x2
invoke-direct {p2, v0}, Landroid/text/style/StyleSpan;-><init>(I)V
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setPreambleStyle(Landroid/text/style/CharacterStyle;)V
.line 425
iget-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
new-instance p2, Landroid/text/style/ForegroundColorSpan;
const/4 v0, -0x1
invoke-direct {p2, v0}, Landroid/text/style/ForegroundColorSpan;-><init>(I)V
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setPreambleStyle(Landroid/text/style/CharacterStyle;)V
goto :goto_81
.line 427
:cond_68
iget-object p2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
new-instance v0, Landroid/text/style/ForegroundColorSpan;
sget-object v1, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->COLORS:[I
aget p1, v1, p1
invoke-direct {v0, p1}, Landroid/text/style/ForegroundColorSpan;-><init>(I)V
invoke-virtual {p2, v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setPreambleStyle(Landroid/text/style/CharacterStyle;)V
goto :goto_81
.line 430
:cond_77
iget-object p2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
sget-object v0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->COLUMN_INDICES:[I
and-int/2addr p1, v1
aget p1, v0, p1
invoke-virtual {p2, p1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->setIndent(I)V
:goto_81
return-void
.end method
.method private static isMidrowCtrlCode(BB)Z
.registers 3
and-int/lit16 p0, p0, 0xf7
const/16 v0, 0x11
if-ne p0, v0, :cond_e
and-int/lit16 p0, p1, 0xf0
const/16 p1, 0x20
if-ne p0, p1, :cond_e
const/4 p0, 0x1
goto :goto_f
:cond_e
const/4 p0, 0x0
:goto_f
return p0
.end method
.method private static isMiscCode(BB)Z
.registers 3
and-int/lit16 p0, p0, 0xf7
const/16 v0, 0x14
if-ne p0, v0, :cond_e
and-int/lit16 p0, p1, 0xf0
const/16 p1, 0x20
if-ne p0, p1, :cond_e
const/4 p0, 0x1
goto :goto_f
:cond_e
const/4 p0, 0x0
:goto_f
return p0
.end method
.method private static isPreambleAddressCode(BB)Z
.registers 3
and-int/lit16 p0, p0, 0xf0
const/16 v0, 0x10
if-ne p0, v0, :cond_e
and-int/lit16 p0, p1, 0xc0
const/16 p1, 0x40
if-ne p0, p1, :cond_e
const/4 p0, 0x1
goto :goto_f
:cond_e
const/4 p0, 0x0
:goto_f
return p0
.end method
.method private static isRepeatable(B)Z
.registers 2
and-int/lit16 p0, p0, 0xf0
const/16 v0, 0x10
if-ne p0, v0, :cond_8
const/4 p0, 0x1
goto :goto_9
:cond_8
const/4 p0, 0x0
:goto_9
return p0
.end method
.method private static isTabCtrlCode(BB)Z
.registers 3
and-int/lit16 p0, p0, 0xf7
const/16 v0, 0x17
if-ne p0, v0, :cond_10
const/16 p0, 0x21
if-lt p1, p0, :cond_10
const/16 p0, 0x23
if-gt p1, p0, :cond_10
const/4 p0, 0x1
goto :goto_11
:cond_10
const/4 p0, 0x0
:goto_11
return p0
.end method
.method private resetCueBuilders()V
.registers 4
.line 516
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
iget v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionMode:I
iget v2, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionRowCount:I
invoke-virtual {v0, v1, v2}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->reset(II)V
.line 517
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cueBuilders:Ljava/util/LinkedList;
invoke-virtual {v0}, Ljava/util/LinkedList;->clear()V
.line 518
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cueBuilders:Ljava/util/LinkedList;
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {v0, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
return-void
.end method
.method private setCaptionMode(I)V
.registers 3
.line 502
iget v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionMode:I
if-ne v0, p1, :cond_5
return-void
.line 506
:cond_5
iput p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionMode:I
.line 508
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->resetCueBuilders()V
const/4 v0, 0x1
if-eq p1, v0, :cond_f
if-nez p1, :cond_12
:cond_f
const/4 p1, 0x0
.line 511
iput-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cues:Ljava/util/List;
:cond_12
return-void
.end method
# virtual methods
.method protected createSubtitle()Lcom/google/android/exoplayer2/text/Subtitle;
.registers 3
.line 252
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cues:Ljava/util/List;
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->lastCues:Ljava/util/List;
.line 253
new-instance v1, Lcom/google/android/exoplayer2/text/cea/CeaSubtitle;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/text/cea/CeaSubtitle;-><init>(Ljava/util/List;)V
return-object v1
.end method
.method protected decode(Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;)V
.registers 11
.line 258
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->ccData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v1, p1, Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;->data:Ljava/nio/ByteBuffer;
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v1
iget-object p1, p1, Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;->data:Ljava/nio/ByteBuffer;
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->limit()I
move-result p1
invoke-virtual {v0, v1, p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
const/4 p1, 0x0
const/4 v0, 0x1
const/4 v1, 0x0
const/4 v2, 0x0
.line 261
:cond_15
:goto_15
iget-object v3, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->ccData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v3}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v3
iget v4, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->packetLength:I
if-lt v3, v4, :cond_ba
const/4 v3, 0x2
if-ne v4, v3, :cond_24
const/4 v4, -0x4
goto :goto_2b
.line 262
:cond_24
iget-object v4, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->ccData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 263
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v4
int-to-byte v4, v4
.line 264
:goto_2b
iget-object v5, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->ccData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v5}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v5
and-int/lit8 v5, v5, 0x7f
int-to-byte v5, v5
.line 265
iget-object v6, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->ccData:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v6}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v6
and-int/lit8 v6, v6, 0x7f
int-to-byte v6, v6
and-int/lit8 v7, v4, 0x6
const/4 v8, 0x4
if-eq v7, v8, :cond_43
goto :goto_15
.line 276
:cond_43
iget v7, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->selectedField:I
if-ne v7, v0, :cond_4b
and-int/lit8 v7, v4, 0x1
if-nez v7, :cond_15
:cond_4b
iget v7, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->selectedField:I
if-ne v7, v3, :cond_54
and-int/lit8 v3, v4, 0x1
if-eq v3, v0, :cond_54
goto :goto_15
:cond_54
if-nez v5, :cond_59
if-nez v6, :cond_59
goto :goto_15
:cond_59
and-int/lit16 v1, v5, 0xf7
const/16 v3, 0x11
if-ne v1, v3, :cond_6f
and-int/lit16 v1, v6, 0xf0
const/16 v3, 0x30
if-ne v1, v3, :cond_6f
.line 294
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-static {v6}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->getSpecialChar(B)C
move-result v3
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->append(C)V
goto :goto_b7
:cond_6f
and-int/lit16 v1, v5, 0xf6
const/16 v3, 0x12
if-ne v1, v3, :cond_98
and-int/lit16 v1, v6, 0xe0
const/16 v3, 0x20
if-ne v1, v3, :cond_98
.line 304
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->backspace()V
and-int/lit8 v1, v5, 0x1
if-nez v1, :cond_8e
.line 307
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-static {v6}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->getExtendedEsFrChar(B)C
move-result v3
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->append(C)V
goto :goto_b7
.line 310
:cond_8e
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-static {v6}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->getExtendedPtDeChar(B)C
move-result v3
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->append(C)V
goto :goto_b7
:cond_98
and-int/lit16 v1, v5, 0xe0
if-nez v1, :cond_a1
.line 318
invoke-direct {p0, v5, v6}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->handleCtrl(BB)Z
move-result v2
goto :goto_b7
.line 323
:cond_a1
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-static {v5}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->getChar(B)C
move-result v3
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->append(C)V
and-int/lit16 v1, v6, 0xe0
if-eqz v1, :cond_b7
.line 325
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->currentCueBuilder:Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;
invoke-static {v6}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->getChar(B)C
move-result v3
invoke-virtual {v1, v3}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder$CueBuilder;->append(C)V
:cond_b7
:goto_b7
const/4 v1, 0x1
goto/16 :goto_15
:cond_ba
if-eqz v1, :cond_cd
if-nez v2, :cond_c0
.line 331
iput-boolean p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlSet:Z
.line 333
:cond_c0
iget p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionMode:I
if-eq p1, v0, :cond_c7
const/4 v0, 0x3
if-ne p1, v0, :cond_cd
.line 334
:cond_c7
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->getDisplayCues()Ljava/util/List;
move-result-object p1
iput-object p1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cues:Ljava/util/List;
:cond_cd
return-void
.end method
.method public bridge synthetic dequeueInputBuffer()Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 42
invoke-super {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 bridge synthetic dequeueOutputBuffer()Lcom/google/android/exoplayer2/text/SubtitleOutputBuffer;
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 42
invoke-super {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 229
invoke-super {p0}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->flush()V
const/4 v0, 0x0
.line 230
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cues:Ljava/util/List;
.line 231
iput-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->lastCues:Ljava/util/List;
const/4 v0, 0x0
.line 232
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->setCaptionMode(I)V
.line 233
invoke-direct {p0}, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->resetCueBuilders()V
const/4 v1, 0x4
.line 234
iput v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->captionRowCount:I
.line 235
iput-boolean v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlSet:Z
.line 236
iput-byte v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlCc1:B
.line 237
iput-byte v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->repeatableControlCc2:B
return-void
.end method
.method public getName()Ljava/lang/String;
.registers 2
const-string v0, "Cea608Decoder"
return-object v0
.end method
.method protected isNewSubtitleDataAvailable()Z
.registers 3
.line 247
iget-object v0, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->cues:Ljava/util/List;
iget-object v1, p0, Lcom/google/android/exoplayer2/text/cea/Cea608Decoder;->lastCues:Ljava/util/List;
if-eq v0, v1, :cond_8
const/4 v0, 0x1
goto :goto_9
:cond_8
const/4 v0, 0x0
:goto_9
return v0
.end method
.method public bridge synthetic queueInputBuffer(Lcom/google/android/exoplayer2/text/SubtitleInputBuffer;)V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/text/SubtitleDecoderException;
}
.end annotation
.line 42
invoke-super {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
return-void
.end method
.method public bridge synthetic setPositionUs(J)V
.registers 3
.line 42
invoke-super {p0, p1, p2}, Lcom/google/android/exoplayer2/text/cea/CeaDecoder;->setPositionUs(J)V
return-void
.end method