H265Reader.smali
.class public final Lcom/google/android/exoplayer2/extractor/ts/H265Reader;
.super Ljava/lang/Object;
.source "H265Reader.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/ts/ElementaryStreamReader;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
}
.end annotation
# static fields
.field private static final BLA_W_LP:I
.field private static final CRA_NUT:I
.field private static final PPS_NUT:I
.field private static final PREFIX_SEI_NUT:I
.field private static final RASL_R:I
.field private static final SPS_NUT:I
.field private static final SUFFIX_SEI_NUT:I
.field private static final TAG:Ljava/lang/String; = "H265Reader"
.field private static final VPS_NUT:I
# instance fields
.field private formatId:Ljava/lang/String;
.field private hasOutputFormat:Z
.field private output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.field private pesTimeUs:J
.field private final pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.field private final prefixFlags:[Z
.field private final prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.field private sampleReader:Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
.field private final seiReader:Lcom/google/android/exoplayer2/extractor/ts/SeiReader;
.field private final seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.field private final sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.field private final suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.field private totalBytesWritten:J
.field private final vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x157f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->BLA_W_LP:I
const v0, 0x157a
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->CRA_NUT:I
const v0, 0x154d
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->PPS_NUT:I
const v0, 0x1548
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->PREFIX_SEI_NUT:I
const v0, 0x1566
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->RASL_R:I
const v0, 0x154e
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->SPS_NUT:I
const v0, 0x1547
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->SUFFIX_SEI_NUT:I
const v0, 0x154f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->VPS_NUT:I
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/extractor/ts/SeiReader;)V
.registers 5
.param p1, "seiReader" # Lcom/google/android/exoplayer2/extractor/ts/SeiReader;
.line 74
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 75
iput-object p1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiReader:Lcom/google/android/exoplayer2/extractor/ts/SeiReader;
.line 76
const/4 v0, 0x3
new-array v0, v0, [Z
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixFlags:[Z
.line 77
new-instance v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
const/16 v1, 0x80
const/16 v2, 0x20
invoke-direct {v0, v2, v1}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;-><init>(II)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.line 78
new-instance v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
const/16 v2, 0x21
invoke-direct {v0, v2, v1}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;-><init>(II)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.line 79
new-instance v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
const/16 v2, 0x22
invoke-direct {v0, v2, v1}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;-><init>(II)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.line 80
new-instance v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
const/16 v2, 0x27
invoke-direct {v0, v2, v1}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;-><init>(II)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.line 81
new-instance v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
const/16 v2, 0x28
invoke-direct {v0, v2, v1}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;-><init>(II)V
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.line 82
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/extractor/ts/H265Reader;->seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 83
return-void
.end method
.method private endNalUnit(JIIJ)V
.registers 12
.param p1, "position" # J
.param p3, "offset" # I
.param p4, "discardPadding" # I
.param p5, "pesTimeUs" # J
.line 188
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->hasOutputFormat:Z
if-eqz v0, :cond_a
.line 189
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sampleReader:Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
invoke-virtual {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->endNalUnit(JI)V
goto :goto_45
.line 191
:cond_a
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->endNalUnit(I)Z
.line 192
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->endNalUnit(I)Z
.line 193
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->endNalUnit(I)Z
.line 194
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->isCompleted()Z
move-result v0
if-eqz v0, :cond_45
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->isCompleted()Z
move-result v0
if-eqz v0, :cond_45
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->isCompleted()Z
move-result v0
if-eqz v0, :cond_45
.line 195
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->formatId:Ljava/lang/String;
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget-object v4, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-static {v1, v2, v3, v4}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->parseMediaFormat(Ljava/lang/String;Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;)Lcom/google/android/exoplayer2/Format;
move-result-object v1
invoke-interface {v0, v1}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->format(Lcom/google/android/exoplayer2/Format;)V
.line 196
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->hasOutputFormat:Z
.line 199
:cond_45
:goto_45
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->endNalUnit(I)Z
move-result v0
const/4 v1, 0x5
if-eqz v0, :cond_6f
.line 200
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget-object v0, v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget v2, v2, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
invoke-static {v0, v2}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->unescapeStream([BI)I
move-result v0
.line 201
.local v0, "unescapedLength":I
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget-object v3, v3, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
invoke-virtual {v2, v3, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 204
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 205
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiReader:Lcom/google/android/exoplayer2/extractor/ts/SeiReader;
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v2, p5, p6, v3}, Lcom/google/android/exoplayer2/extractor/ts/SeiReader;->consume(JLcom/google/android/exoplayer2/util/ParsableByteArray;)V
.line 207
.end local v0 # "unescapedLength":I
:cond_6f
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->endNalUnit(I)Z
move-result v0
if-eqz v0, :cond_98
.line 208
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget-object v0, v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget v2, v2, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
invoke-static {v0, v2}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->unescapeStream([BI)I
move-result v0
.line 209
.restart local v0 # "unescapedLength":I
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
iget-object v3, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
iget-object v3, v3, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
invoke-virtual {v2, v3, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->reset([BI)V
.line 212
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v2, v1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 213
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiReader:Lcom/google/android/exoplayer2/extractor/ts/SeiReader;
iget-object v2, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiWrapper:Lcom/google/android/exoplayer2/util/ParsableByteArray;
invoke-virtual {v1, p5, p6, v2}, Lcom/google/android/exoplayer2/extractor/ts/SeiReader;->consume(JLcom/google/android/exoplayer2/util/ParsableByteArray;)V
.line 215
.end local v0 # "unescapedLength":I
:cond_98
return-void
.end method
.method private nalUnitData([BII)V
.registers 5
.param p1, "dataArray" # [B
.param p2, "offset" # I
.param p3, "limit" # I
.line 176
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->hasOutputFormat:Z
if-eqz v0, :cond_a
.line 177
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sampleReader:Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
invoke-virtual {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->readNalUnitData([BII)V
goto :goto_19
.line 179
:cond_a
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->appendToNalUnit([BII)V
.line 180
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->appendToNalUnit([BII)V
.line 181
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->appendToNalUnit([BII)V
.line 183
:goto_19
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->appendToNalUnit([BII)V
.line 184
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p1, p2, p3}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->appendToNalUnit([BII)V
.line 185
return-void
.end method
.method private static parseMediaFormat(Ljava/lang/String;Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;)Lcom/google/android/exoplayer2/Format;
.registers 35
.param p0, "formatId" # Ljava/lang/String;
.param p1, "vps" # Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.param p2, "sps" # Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.param p3, "pps" # Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
.line 220
move-object/from16 v0, p1
move-object/from16 v1, p2
move-object/from16 v2, p3
iget v3, v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
iget v4, v1, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
add-int/2addr v3, v4
iget v4, v2, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
add-int/2addr v3, v4
new-array v3, v3, [B
.line 221
.local v3, "csd":[B
iget-object v4, v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
iget v5, v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
const/4 v6, 0x0
invoke-static {v4, v6, v3, v6, v5}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 222
iget-object v4, v1, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
iget v5, v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
iget v7, v1, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
invoke-static {v4, v6, v3, v5, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 223
iget-object v4, v2, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
iget v5, v0, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
iget v7, v1, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
add-int/2addr v5, v7
iget v7, v2, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
invoke-static {v4, v6, v3, v5, v7}, Ljava/lang/System;->arraycopy(Ljava/lang/Object;ILjava/lang/Object;II)V
.line 226
new-instance v4, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;
iget-object v5, v1, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalData:[B
iget v7, v1, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->nalLength:I
invoke-direct {v4, v5, v6, v7}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;-><init>([BII)V
.line 227
.local v4, "bitArray":Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;
const/16 v5, 0x2c
invoke-virtual {v4, v5}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 228
const/4 v5, 0x3
invoke-virtual {v4, v5}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBits(I)I
move-result v7
.line 229
.local v7, "maxSubLayersMinus1":I
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBit()V
.line 232
const/16 v8, 0x58
invoke-virtual {v4, v8}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 233
const/16 v8, 0x8
invoke-virtual {v4, v8}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 234
const/4 v9, 0x0
.line 235
.local v9, "toSkip":I
const/4 v10, 0x0
.local v10, "i":I
:goto_4f
if-ge v10, v7, :cond_64
.line 236
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v11
if-eqz v11, :cond_59
.line 237
add-int/lit8 v9, v9, 0x59
.line 239
:cond_59
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v11
if-eqz v11, :cond_61
.line 240
add-int/lit8 v9, v9, 0x8
.line 235
:cond_61
add-int/lit8 v10, v10, 0x1
goto :goto_4f
.line 243
.end local v10 # "i":I
:cond_64
invoke-virtual {v4, v9}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 244
const/4 v10, 0x2
if-lez v7, :cond_71
.line 245
rsub-int/lit8 v11, v7, 0x8
mul-int/lit8 v11, v11, 0x2
invoke-virtual {v4, v11}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 248
:cond_71
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 249
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v11
.line 250
.local v11, "chromaFormatIdc":I
if-ne v11, v5, :cond_7d
.line 251
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBit()V
.line 253
:cond_7d
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v5
.line 254
.local v5, "picWidthInLumaSamples":I
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v12
.line 255
.local v12, "picHeightInLumaSamples":I
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v13
if-eqz v13, :cond_b5
.line 256
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v13
.line 257
.local v13, "confWinLeftOffset":I
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v14
.line 258
.local v14, "confWinRightOffset":I
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v15
.line 259
.local v15, "confWinTopOffset":I
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v16
.line 261
.local v16, "confWinBottomOffset":I
const/4 v6, 0x1
if-eq v11, v6, :cond_a4
if-ne v11, v10, :cond_a1
goto :goto_a4
:cond_a1
const/16 v18, 0x1
goto :goto_a6
:cond_a4
:goto_a4
const/16 v18, 0x2
.line 262
.local v18, "subWidthC":I
:goto_a6
if-ne v11, v6, :cond_a9
const/4 v6, 0x2
.line 263
.local v6, "subHeightC":I
:cond_a9
add-int v19, v13, v14
mul-int v19, v19, v18
sub-int v5, v5, v19
.line 264
add-int v19, v15, v16
mul-int v19, v19, v6
sub-int v12, v12, v19
.line 266
.end local v6 # "subHeightC":I
.end local v13 # "confWinLeftOffset":I
.end local v14 # "confWinRightOffset":I
.end local v15 # "confWinTopOffset":I
.end local v16 # "confWinBottomOffset":I
.end local v18 # "subWidthC":I
:cond_b5
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 267
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 268
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v6
.line 270
.local v6, "log2MaxPicOrderCntLsbMinus4":I
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v13
if-eqz v13, :cond_c8
const/16 v17, 0x0
goto :goto_ca
:cond_c8
move/from16 v17, v7
:goto_ca
move/from16 v13, v17
.local v13, "i":I
:goto_cc
if-gt v13, v7, :cond_da
.line 271
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 272
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 273
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 270
add-int/lit8 v13, v13, 0x1
goto :goto_cc
.line 275
.end local v13 # "i":I
:cond_da
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 276
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 277
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 278
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 279
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 280
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 282
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v13
.line 283
.local v13, "scalingListEnabled":Z
if-eqz v13, :cond_fb
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v14
if-eqz v14, :cond_fb
.line 284
invoke-static {v4}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->skipScalingList(Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;)V
.line 286
:cond_fb
invoke-virtual {v4, v10}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 287
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v14
if-eqz v14, :cond_110
.line 289
invoke-virtual {v4, v8}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 290
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 291
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 292
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBit()V
.line 295
:cond_110
invoke-static {v4}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->skipShortTermRefPicSets(Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;)V
.line 296
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v14
if-eqz v14, :cond_12c
.line 298
const/4 v14, 0x0
.local v14, "i":I
:goto_11a
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v15
if-ge v14, v15, :cond_12c
.line 299
add-int/lit8 v15, v6, 0x4
.line 301
.local v15, "ltRefPicPocLsbSpsLength":I
add-int/lit8 v8, v15, 0x1
invoke-virtual {v4, v8}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 298
.end local v15 # "ltRefPicPocLsbSpsLength":I
add-int/lit8 v14, v14, 0x1
const/16 v8, 0x8
goto :goto_11a
.line 304
.end local v14 # "i":I
:cond_12c
invoke-virtual {v4, v10}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBits(I)V
.line 305
const/high16 v8, 0x3f800000 # 1.0f
.line 306
.local v8, "pixelWidthHeightRatio":F
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v10
if-eqz v10, :cond_17a
.line 307
invoke-virtual {v4}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v10
if-eqz v10, :cond_17a
.line 308
const/16 v10, 0x8
invoke-virtual {v4, v10}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBits(I)I
move-result v10
.line 309
.local v10, "aspectRatioIdc":I
const/16 v14, 0xff
if-ne v10, v14, :cond_15a
.line 310
const/16 v14, 0x10
invoke-virtual {v4, v14}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBits(I)I
move-result v15
.line 311
.local v15, "sarWidth":I
invoke-virtual {v4, v14}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBits(I)I
move-result v14
.line 312
.local v14, "sarHeight":I
if-eqz v15, :cond_159
if-eqz v14, :cond_159
.line 313
int-to-float v0, v15
int-to-float v1, v14
div-float/2addr v0, v1
move v8, v0
.line 315
.end local v14 # "sarHeight":I
.end local v15 # "sarWidth":I
:cond_159
goto :goto_17a
:cond_15a
sget-object v0, Lcom/google/android/exoplayer2/util/NalUnitUtil;->ASPECT_RATIO_IDC_VALUES:[F
array-length v0, v0
if-ge v10, v0, :cond_164
.line 316
sget-object v0, Lcom/google/android/exoplayer2/util/NalUnitUtil;->ASPECT_RATIO_IDC_VALUES:[F
aget v8, v0, v10
goto :goto_17a
.line 318
:cond_164
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Unexpected aspect_ratio_idc value: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "H265Reader"
invoke-static {v1, v0}, Lcom/google/android/exoplayer2/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 323
.end local v10 # "aspectRatioIdc":I
:cond_17a
:goto_17a
const/16 v21, 0x0
const/16 v22, -0x1
const/16 v23, -0x1
const/high16 v26, -0x40800000 # -1.0f
.line 325
invoke-static {v3}, Ljava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;
move-result-object v27
const/16 v28, -0x1
const/16 v30, 0x0
.line 323
const-string/jumbo v20, "video/hevc"
move-object/from16 v19, p0
move/from16 v24, v5
move/from16 v25, v12
move/from16 v29, v8
invoke-static/range {v19 .. v30}, Lcom/google/android/exoplayer2/Format;->createVideoSampleFormat(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIFLjava/util/List;IFLcom/google/android/exoplayer2/drm/DrmInitData;)Lcom/google/android/exoplayer2/Format;
move-result-object v0
return-object v0
.end method
.method private static skipScalingList(Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;)V
.registers 7
.param p0, "bitArray" # Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;
.line 332
const/4 v0, 0x0
.local v0, "sizeId":I
:goto_1
const/4 v1, 0x4
if-ge v0, v1, :cond_35
.line 333
const/4 v2, 0x0
.local v2, "matrixId":I
:goto_5
const/4 v3, 0x6
if-ge v2, v3, :cond_32
.line 334
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v3
const/4 v4, 0x1
if-nez v3, :cond_13
.line 336
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
goto :goto_2c
.line 338
:cond_13
const/16 v3, 0x40
shl-int/lit8 v5, v0, 0x1
add-int/2addr v5, v1
shl-int v5, v4, v5
invoke-static {v3, v5}, Ljava/lang/Math;->min(II)I
move-result v3
.line 339
.local v3, "coefNum":I
if-le v0, v4, :cond_23
.line 341
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readSignedExpGolombCodedInt()I
.line 343
:cond_23
const/4 v5, 0x0
.local v5, "i":I
:goto_24
if-ge v5, v3, :cond_2c
.line 344
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readSignedExpGolombCodedInt()I
.line 343
add-int/lit8 v5, v5, 0x1
goto :goto_24
.line 333
.end local v3 # "coefNum":I
.end local v5 # "i":I
:cond_2c
:goto_2c
const/4 v3, 0x3
if-ne v0, v3, :cond_30
const/4 v4, 0x3
:cond_30
add-int/2addr v2, v4
goto :goto_5
.line 332
.end local v2 # "matrixId":I
:cond_32
add-int/lit8 v0, v0, 0x1
goto :goto_1
.line 349
.end local v0 # "sizeId":I
:cond_35
return-void
.end method
.method private static skipShortTermRefPicSets(Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;)V
.registers 8
.param p0, "bitArray" # Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;
.line 356
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v0
.line 357
.local v0, "numShortTermRefPicSets":I
const/4 v1, 0x0
.line 363
.local v1, "interRefPicSetPredictionFlag":Z
const/4 v2, 0x0
.line 364
.local v2, "previousNumDeltaPocs":I
const/4 v3, 0x0
.local v3, "stRpsIdx":I
:goto_7
if-ge v3, v0, :cond_4c
.line 365
if-eqz v3, :cond_f
.line 366
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v1
.line 368
:cond_f
if-eqz v1, :cond_27
.line 369
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBit()V
.line 370
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 371
const/4 v4, 0x0
.local v4, "j":I
:goto_18
if-gt v4, v2, :cond_26
.line 372
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readBit()Z
move-result v5
if-eqz v5, :cond_23
.line 373
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBit()V
.line 371
:cond_23
add-int/lit8 v4, v4, 0x1
goto :goto_18
.end local v4 # "j":I
:cond_26
goto :goto_49
.line 377
:cond_27
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v4
.line 378
.local v4, "numNegativePics":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
move-result v5
.line 379
.local v5, "numPositivePics":I
add-int v2, v4, v5
.line 380
const/4 v6, 0x0
.local v6, "i":I
:goto_32
if-ge v6, v4, :cond_3d
.line 381
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 382
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBit()V
.line 380
add-int/lit8 v6, v6, 0x1
goto :goto_32
.line 384
.end local v6 # "i":I
:cond_3d
const/4 v6, 0x0
.restart local v6 # "i":I
:goto_3e
if-ge v6, v5, :cond_49
.line 385
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->readUnsignedExpGolombCodedInt()I
.line 386
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableNalUnitBitArray;->skipBit()V
.line 384
add-int/lit8 v6, v6, 0x1
goto :goto_3e
.line 364
.end local v4 # "numNegativePics":I
.end local v5 # "numPositivePics":I
.end local v6 # "i":I
:cond_49
:goto_49
add-int/lit8 v3, v3, 0x1
goto :goto_7
.line 390
.end local v3 # "stRpsIdx":I
:cond_4c
return-void
.end method
.method private startNalUnit(JIIJ)V
.registers 15
.param p1, "position" # J
.param p3, "offset" # I
.param p4, "nalUnitType" # I
.param p5, "pesTimeUs" # J
.line 164
iget-boolean v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->hasOutputFormat:Z
if-eqz v0, :cond_e
.line 165
iget-object v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sampleReader:Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
move-wide v2, p1
move v4, p3
move v5, p4
move-wide v6, p5
invoke-virtual/range {v1 .. v7}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->startNalUnit(JIIJ)V
goto :goto_1d
.line 167
:cond_e
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->startNalUnit(I)V
.line 168
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->startNalUnit(I)V
.line 169
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->startNalUnit(I)V
.line 171
:goto_1d
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->startNalUnit(I)V
.line 172
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0, p4}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->startNalUnit(I)V
.line 173
return-void
.end method
# virtual methods
.method public consume(Lcom/google/android/exoplayer2/util/ParsableByteArray;)V
.registers 20
.param p1, "data" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
move-object/from16 v7, p0
move-object/from16 v8, p1
.line 114
:goto_4
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v0
if-lez v0, :cond_63
.line 115
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->getPosition()I
move-result v0
.line 116
.local v0, "offset":I
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->limit()I
move-result v9
.line 117
.local v9, "limit":I
iget-object v10, v8, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
.line 120
.local v10, "dataArray":[B
iget-wide v1, v7, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->totalBytesWritten:J
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v3
int-to-long v3, v3
add-long/2addr v1, v3
iput-wide v1, v7, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->totalBytesWritten:J
.line 121
iget-object v1, v7, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
invoke-virtual/range {p1 .. p1}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->bytesLeft()I
move-result v2
invoke-interface {v1, v8, v2}, Lcom/google/android/exoplayer2/extractor/TrackOutput;->sampleData(Lcom/google/android/exoplayer2/util/ParsableByteArray;I)V
move v11, v0
.line 124
.end local v0 # "offset":I
.local v11, "offset":I
:goto_28
if-ge v11, v9, :cond_62
.line 125
iget-object v0, v7, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixFlags:[Z
invoke-static {v10, v11, v9, v0}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->findNalUnit([BII[Z)I
move-result v12
.line 127
.local v12, "nalUnitOffset":I
if-ne v12, v9, :cond_36
.line 129
invoke-direct {v7, v10, v11, v9}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->nalUnitData([BII)V
.line 130
return-void
.line 134
:cond_36
invoke-static {v10, v12}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->getH265NalUnitType([BI)I
move-result v13
.line 138
.local v13, "nalUnitType":I
sub-int v14, v12, v11
.line 139
.local v14, "lengthToNalUnit":I
if-lez v14, :cond_41
.line 140
invoke-direct {v7, v10, v11, v12}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->nalUnitData([BII)V
.line 143
:cond_41
sub-int v15, v9, v12
.line 144
.local v15, "bytesWrittenPastPosition":I
iget-wide v0, v7, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->totalBytesWritten:J
int-to-long v2, v15
sub-long v16, v0, v2
.line 148
.local v16, "absolutePosition":J
if-gez v14, :cond_4d
neg-int v0, v14
move v4, v0
goto :goto_4f
:cond_4d
const/4 v0, 0x0
const/4 v4, 0x0
:goto_4f
iget-wide v5, v7, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pesTimeUs:J
move-object/from16 v0, p0
move-wide/from16 v1, v16
move v3, v15
invoke-direct/range {v0 .. v6}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->endNalUnit(JIIJ)V
.line 151
iget-wide v5, v7, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pesTimeUs:J
move v4, v13
invoke-direct/range {v0 .. v6}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->startNalUnit(JIIJ)V
.line 153
add-int/lit8 v11, v12, 0x3
.line 154
.end local v12 # "nalUnitOffset":I
.end local v13 # "nalUnitType":I
.end local v14 # "lengthToNalUnit":I
.end local v15 # "bytesWrittenPastPosition":I
.end local v16 # "absolutePosition":J
goto :goto_28
.line 155
.end local v9 # "limit":I
.end local v10 # "dataArray":[B
.end local v11 # "offset":I
:cond_62
goto :goto_4
.line 156
:cond_63
return-void
.end method
.method public createTracks(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;Lcom/google/android/exoplayer2/extractor/ts/TsPayloadReader$TrackIdGenerator;)V
.registers 5
.param p1, "extractorOutput" # Lcom/google/android/exoplayer2/extractor/ExtractorOutput;
.param p2, "idGenerator" # Lcom/google/android/exoplayer2/extractor/ts/TsPayloadReader$TrackIdGenerator;
.line 99
invoke-virtual {p2}, Lcom/google/android/exoplayer2/extractor/ts/TsPayloadReader$TrackIdGenerator;->generateNewId()V
.line 100
invoke-virtual {p2}, Lcom/google/android/exoplayer2/extractor/ts/TsPayloadReader$TrackIdGenerator;->getFormatId()Ljava/lang/String;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->formatId:Ljava/lang/String;
.line 101
invoke-virtual {p2}, Lcom/google/android/exoplayer2/extractor/ts/TsPayloadReader$TrackIdGenerator;->getTrackId()I
move-result v0
const/4 v1, 0x2
invoke-interface {p1, v0, v1}, Lcom/google/android/exoplayer2/extractor/ExtractorOutput;->track(II)Lcom/google/android/exoplayer2/extractor/TrackOutput;
move-result-object v0
iput-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->output:Lcom/google/android/exoplayer2/extractor/TrackOutput;
.line 102
new-instance v1, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
invoke-direct {v1, v0}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;-><init>(Lcom/google/android/exoplayer2/extractor/TrackOutput;)V
iput-object v1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sampleReader:Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
.line 103
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->seiReader:Lcom/google/android/exoplayer2/extractor/ts/SeiReader;
invoke-virtual {v0, p1, p2}, Lcom/google/android/exoplayer2/extractor/ts/SeiReader;->createTracks(Lcom/google/android/exoplayer2/extractor/ExtractorOutput;Lcom/google/android/exoplayer2/extractor/ts/TsPayloadReader$TrackIdGenerator;)V
.line 104
return-void
.end method
.method public packetFinished()V
.registers 1
.line 161
return-void
.end method
.method public packetStarted(JI)V
.registers 4
.param p1, "pesTimeUs" # J
.param p3, "flags" # I
.line 109
iput-wide p1, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pesTimeUs:J
.line 110
return-void
.end method
.method public seek()V
.registers 3
.line 87
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixFlags:[Z
invoke-static {v0}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->clearPrefixFlags([Z)V
.line 88
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->vps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->reset()V
.line 89
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->reset()V
.line 90
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->pps:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->reset()V
.line 91
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->prefixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->reset()V
.line 92
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->suffixSei:Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/NalUnitTargetBuffer;->reset()V
.line 93
iget-object v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->sampleReader:Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/extractor/ts/H265Reader$SampleReader;->reset()V
.line 94
const-wide/16 v0, 0x0
iput-wide v0, p0, Lcom/google/android/exoplayer2/extractor/ts/H265Reader;->totalBytesWritten:J
.line 95
return-void
.end method