AvcConfig.smali
.class public final Lcom/google/android/exoplayer2/video/AvcConfig;
.super Ljava/lang/Object;
.source "AvcConfig.java"
# instance fields
.field public final height:I
.field public final initializationData:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"[B>;"
}
.end annotation
.end field
.field public final nalUnitLengthFieldLength:I
.field public final pixelWidthAspectRatio:F
.field public final width:I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>(Ljava/util/List;IIIF)V
.registers 6
.param p2, "nalUnitLengthFieldLength" # I
.param p3, "width" # I
.param p4, "height" # I
.param p5, "pixelWidthAspectRatio" # F
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"[B>;IIIF)V"
}
.end annotation
.line 82
.local p1, "initializationData":Ljava/util/List;, "Ljava/util/List<[B>;"
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 83
iput-object p1, p0, Lcom/google/android/exoplayer2/video/AvcConfig;->initializationData:Ljava/util/List;
.line 84
iput p2, p0, Lcom/google/android/exoplayer2/video/AvcConfig;->nalUnitLengthFieldLength:I
.line 85
iput p3, p0, Lcom/google/android/exoplayer2/video/AvcConfig;->width:I
.line 86
iput p4, p0, Lcom/google/android/exoplayer2/video/AvcConfig;->height:I
.line 87
iput p5, p0, Lcom/google/android/exoplayer2/video/AvcConfig;->pixelWidthAspectRatio:F
.line 88
return-void
.end method
.method private static buildNalUnitForChild(Lcom/google/android/exoplayer2/util/ParsableByteArray;)[B
.registers 4
.param p0, "data" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.line 91
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedShort()I
move-result v0
.line 92
.local v0, "length":I
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->getPosition()I
move-result v1
.line 93
.local v1, "offset":I
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 94
iget-object v2, p0, Lcom/google/android/exoplayer2/util/ParsableByteArray;->data:[B
invoke-static {v2, v1, v0}, Lcom/google/android/exoplayer2/util/CodecSpecificDataUtil;->buildNalUnit([BII)[B
move-result-object v2
return-object v2
.end method
.method public static parse(Lcom/google/android/exoplayer2/util/ParsableByteArray;)Lcom/google/android/exoplayer2/video/AvcConfig;
.registers 15
.param p0, "data" # Lcom/google/android/exoplayer2/util/ParsableByteArray;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ParserException;
}
.end annotation
.line 48
const/4 v0, 0x4
:try_start_1
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->skipBytes(I)V
.line 49
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v0
const/4 v1, 0x3
and-int/2addr v0, v1
add-int/lit8 v0, v0, 0x1
.line 50
.local v0, "nalUnitLengthFieldLength":I
if-eq v0, v1, :cond_6c
.line 53
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 54
.local v1, "initializationData":Ljava/util/List;, "Ljava/util/List<[B>;"
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v2
and-int/lit8 v8, v2, 0x1f
.line 55
.local v8, "numSequenceParameterSets":I
const/4 v2, 0x0
.local v2, "j":I
:goto_1a
if-ge v2, v8, :cond_26
.line 56
invoke-static {p0}, Lcom/google/android/exoplayer2/video/AvcConfig;->buildNalUnitForChild(Lcom/google/android/exoplayer2/util/ParsableByteArray;)[B
move-result-object v3
invoke-interface {v1, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 55
add-int/lit8 v2, v2, 0x1
goto :goto_1a
.line 58
.end local v2 # "j":I
:cond_26
invoke-virtual {p0}, Lcom/google/android/exoplayer2/util/ParsableByteArray;->readUnsignedByte()I
move-result v2
move v9, v2
.line 59
.local v9, "numPictureParameterSets":I
const/4 v2, 0x0
.restart local v2 # "j":I
:goto_2c
if-ge v2, v9, :cond_38
.line 60
invoke-static {p0}, Lcom/google/android/exoplayer2/video/AvcConfig;->buildNalUnitForChild(Lcom/google/android/exoplayer2/util/ParsableByteArray;)[B
move-result-object v3
invoke-interface {v1, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 59
add-int/lit8 v2, v2, 0x1
goto :goto_2c
.line 63
.end local v2 # "j":I
:cond_38
const/4 v2, -0x1
.line 64
.local v2, "width":I
const/4 v3, -0x1
.line 65
.local v3, "height":I
const/high16 v4, 0x3f800000 # 1.0f
.line 66
.local v4, "pixelWidthAspectRatio":F
if-lez v8, :cond_5d
.line 67
const/4 v5, 0x0
invoke-interface {v1, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v6
check-cast v6, [B
.line 68
.local v6, "sps":[B
invoke-interface {v1, v5}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, [B
array-length v7, v6
invoke-static {v5, v0, v7}, Lcom/google/android/exoplayer2/util/NalUnitUtil;->parseSpsNalUnit([BII)Lcom/google/android/exoplayer2/util/NalUnitUtil$SpsData;
move-result-object v5
.line 70
.local v5, "spsData":Lcom/google/android/exoplayer2/util/NalUnitUtil$SpsData;
iget v7, v5, Lcom/google/android/exoplayer2/util/NalUnitUtil$SpsData;->width:I
move v2, v7
.line 71
iget v7, v5, Lcom/google/android/exoplayer2/util/NalUnitUtil$SpsData;->height:I
move v3, v7
.line 72
iget v7, v5, Lcom/google/android/exoplayer2/util/NalUnitUtil$SpsData;->pixelWidthAspectRatio:F
move v4, v7
move v10, v2
move v11, v3
move v12, v4
goto :goto_60
.line 66
.end local v5 # "spsData":Lcom/google/android/exoplayer2/util/NalUnitUtil$SpsData;
.end local v6 # "sps":[B
:cond_5d
move v10, v2
move v11, v3
move v12, v4
.line 74
.end local v2 # "width":I
.end local v3 # "height":I
.end local v4 # "pixelWidthAspectRatio":F
.local v10, "width":I
.local v11, "height":I
.local v12, "pixelWidthAspectRatio":F
:goto_60
new-instance v13, Lcom/google/android/exoplayer2/video/AvcConfig;
move-object v2, v13
move-object v3, v1
move v4, v0
move v5, v10
move v6, v11
move v7, v12
invoke-direct/range {v2 .. v7}, Lcom/google/android/exoplayer2/video/AvcConfig;-><init>(Ljava/util/List;IIIF)V
return-object v13
.line 51
.end local v1 # "initializationData":Ljava/util/List;, "Ljava/util/List<[B>;"
.end local v8 # "numSequenceParameterSets":I
.end local v9 # "numPictureParameterSets":I
.end local v10 # "width":I
.end local v11 # "height":I
.end local v12 # "pixelWidthAspectRatio":F
:cond_6c
new-instance v1, Ljava/lang/IllegalStateException;
invoke-direct {v1}, Ljava/lang/IllegalStateException;-><init>()V
.end local p0 # "data":Lcom/google/android/exoplayer2/util/ParsableByteArray;
throw v1
:try_end_72
.catch Ljava/lang/ArrayIndexOutOfBoundsException; {:try_start_1 .. :try_end_72} :catch_72
.line 76
.end local v0 # "nalUnitLengthFieldLength":I
.restart local p0 # "data":Lcom/google/android/exoplayer2/util/ParsableByteArray;
:catch_72
move-exception v0
.line 77
.local v0, "e":Ljava/lang/ArrayIndexOutOfBoundsException;
new-instance v1, Lcom/google/android/exoplayer2/ParserException;
const-string v2, "Error parsing AVC config"
invoke-direct {v1, v2, v0}, Lcom/google/android/exoplayer2/ParserException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
goto :goto_7c
:goto_7b
throw v1
:goto_7c
goto :goto_7b
.end method