H265Reader$SampleReader.smali
.class final Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
.super Ljava/lang/Object;
.source "H265Reader.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/google/android/exoplayer2/extractor/ts/H265Reader;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1a
name = "SampleReader"
.end annotation
# static fields
.field private static final FIRST_SLICE_FLAG_OFFSET:I
# instance fields
.field private isFirstParameterSet:Z
.field private isFirstSlice:Z
.field private lookingForFirstSliceFlag:Z
.field private nalUnitBytesRead:I
.field private nalUnitHasKeyframeData:Z
.field private nalUnitStartPosition:J
.field private nalUnitTimeUs:J
.field private final output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.field private readingSample:Z
.field private sampleIsKeyframe:Z
.field private samplePosition:J
.field private sampleTimeUs:J
.field private writingParameterSets:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x156d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->FIRST_SLICE_FLAG_OFFSET:I
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
.registers 2
.param p1, "output" # Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 418
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 419
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 420
return-void
.end method
.method private outputSample(I)V
.registers 10
.param p1, "offset" # I
.line 487
iget-boolean v3, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->sampleIsKeyframe:Z
.line 488
.local v3, "flags":I
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitStartPosition:J
iget-wide v4, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->samplePosition:J
sub-long/2addr v0, v4
long-to-int v7, v0
.line 489
.local v7, "size":I
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget-wide v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->sampleTimeUs:J
const/4 v6, 0x0
move v4, v7
move v5, p1
invoke-interface/range {v0 .. v6}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleMetadata(JIIILcom/google/android/exoplayer2/extractor/TrackOutput$CryptoData;)V
.line 490
return-void
.end method
# virtual methods
.method public endNalUnit(JI)V
.registers 6
.param p1, "position" # J
.param p3, "offset" # I
.line 468
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->writingParameterSets:Z
if-eqz v0, :cond_10
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstSlice:Z
if-eqz v0, :cond_10
.line 470
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitHasKeyframeData:Z
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->sampleIsKeyframe:Z
.line 471
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->writingParameterSets:Z
goto :goto_35
.line 472
:cond_10
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstParameterSet:Z
if-nez v0, :cond_18
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstSlice:Z
if-eqz v0, :cond_35
.line 474
:cond_18
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->readingSample:Z
if-eqz v0, :cond_26
.line 476
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitStartPosition:J
sub-long v0, p1, v0
long-to-int v1, v0
.line 477
.local v1, "nalUnitLength":I
add-int v0, p3, v1
invoke-direct {p0, v0}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->outputSample(I)V
.line 479
.end local v1 # "nalUnitLength":I
:cond_26
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitStartPosition:J
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->samplePosition:J
.line 480
iget-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitTimeUs:J
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->sampleTimeUs:J
.line 481
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->readingSample:Z
.line 482
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitHasKeyframeData:Z
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->sampleIsKeyframe:Z
.line 484
:cond_35
:goto_35
return-void
.end method
.method public readNalUnitData([BII)V
.registers 7
.param p1, "data" # [B
.param p2, "offset" # I
.param p3, "limit" # I
.line 456
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->lookingForFirstSliceFlag:Z
if-eqz v0, :cond_1f
.line 457
add-int/lit8 v0, p2, 0x2
iget v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitBytesRead:I
sub-int/2addr v0, v1
.line 458
.local v0, "headerOffset":I
if-ge v0, p3, :cond_1a
.line 459
aget-byte v1, p1, v0
and-int/lit16 v1, v1, 0x80
const/4 v2, 0x0
if-eqz v1, :cond_14
const/4 v1, 0x1
goto :goto_15
:cond_14
const/4 v1, 0x0
:goto_15
iput-boolean v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstSlice:Z
.line 460
iput-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->lookingForFirstSliceFlag:Z
goto :goto_1f
.line 462
:cond_1a
sub-int v2, p3, p2
add-int/2addr v1, v2
iput v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitBytesRead:I
.line 465
.end local v0 # "headerOffset":I
:cond_1f
:goto_1f
return-void
.end method
.method public reset()V
.registers 2
.line 423
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->lookingForFirstSliceFlag:Z
.line 424
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstSlice:Z
.line 425
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstParameterSet:Z
.line 426
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->readingSample:Z
.line 427
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->writingParameterSets:Z
.line 428
return-void
.end method
.method public startNalUnit(JIIJ)V
.registers 10
.param p1, "position" # J
.param p3, "offset" # I
.param p4, "nalUnitType" # I
.param p5, "pesTimeUs" # J
.line 431
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstSlice:Z
.line 432
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstParameterSet:Z
.line 433
iput-wide p5, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitTimeUs:J
.line 434
iput v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitBytesRead:I
.line 435
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitStartPosition:J
.line 437
const/4 v1, 0x1
const/16 v2, 0x20
if-lt p4, v2, :cond_28
.line 438
iget-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->writingParameterSets:Z
if-nez v2, :cond_1d
iget-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->readingSample:Z
if-eqz v2, :cond_1d
.line 440
invoke-direct {p0, p3}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->outputSample(I)V
.line 441
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->readingSample:Z
.line 443
:cond_1d
const/16 v2, 0x22
if-gt p4, v2, :cond_28
.line 445
iget-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->writingParameterSets:Z
xor-int/2addr v2, v1
iput-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->isFirstParameterSet:Z
.line 446
iput-boolean v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->writingParameterSets:Z
.line 451
:cond_28
const/16 v2, 0x10
if-lt p4, v2, :cond_32
const/16 v2, 0x15
if-gt p4, v2, :cond_32
const/4 v2, 0x1
goto :goto_33
:cond_32
const/4 v2, 0x0
:goto_33
iput-boolean v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->nalUnitHasKeyframeData:Z
.line 452
if-nez v2, :cond_3b
const/16 v2, 0x9
if-gt p4, v2, :cond_3c
:cond_3b
const/4 v0, 0x1
:cond_3c
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->lookingForFirstSliceFlag:Z
.line 453
return-void
.end method