AdaptiveTrackSelection$Factory.smali
.class public final Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;
.super Ljava/lang/Object;
.source "AdaptiveTrackSelection.java"
# interfaces
.implements Lcom/google/android/exoplayer2/trackselection/TrackSelection$Factory;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x19
name = "Factory"
.end annotation
# instance fields
.field private final bandwidthFraction:F
.field private final bandwidthMeter:Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.field private blockFixedTrackSelectionBandwidth:Z
.field private final bufferedFractionToLiveEdgeForQualityIncrease:F
.field private final clock:Lcom/google/android/exoplayer2/util/Clock;
.field private final maxDurationForQualityDecreaseMs:I
.field private final minDurationForQualityIncreaseMs:I
.field private final minDurationToRetainAfterDiscardMs:I
.field private final minTimeBetweenBufferReevaluationMs:J
.field private trackBitrateEstimator:Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 10
.line 56
sget-object v8, Lcom/google/android/exoplayer2/util/Clock;->DEFAULT:Lcom/google/android/exoplayer2/util/Clock;
const/16 v1, 0x2710
const/16 v2, 0x61a8
const/16 v3, 0x61a8
const/high16 v4, 0x3f400000 # 0.75f
const/high16 v5, 0x3f400000 # 0.75f
const-wide/16 v6, 0x7d0
move-object v0, p0
invoke-direct/range {v0 .. v8}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;-><init>(IIIFFJLcom/google/android/exoplayer2/util/Clock;)V
.line 64
return-void
.end method
.method public constructor <init>(IIIF)V
.registers 14
.param p1, "minDurationForQualityIncreaseMs" # I
.param p2, "maxDurationForQualityDecreaseMs" # I
.param p3, "minDurationToRetainAfterDiscardMs" # I
.param p4, "bandwidthFraction" # F
.line 104
sget-object v8, Lcom/google/android/exoplayer2/util/Clock;->DEFAULT:Lcom/google/android/exoplayer2/util/Clock;
const/high16 v5, 0x3f400000 # 0.75f
const-wide/16 v6, 0x7d0
move-object v0, p0
move v1, p1
move v2, p2
move v3, p3
move v4, p4
invoke-direct/range {v0 .. v8}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;-><init>(IIIFFJLcom/google/android/exoplayer2/util/Clock;)V
.line 112
return-void
.end method
.method public constructor <init>(IIIFFJLcom/google/android/exoplayer2/util/Clock;)V
.registers 19
.param p1, "minDurationForQualityIncreaseMs" # I
.param p2, "maxDurationForQualityDecreaseMs" # I
.param p3, "minDurationToRetainAfterDiscardMs" # I
.param p4, "bandwidthFraction" # F
.param p5, "bufferedFractionToLiveEdgeForQualityIncrease" # F
.param p6, "minTimeBetweenBufferReevaluationMs" # J
.param p8, "clock" # Lcom/google/android/exoplayer2/util/Clock;
.line 172
const/4 v1, 0x0
move-object v0, p0
move v2, p1
move v3, p2
move v4, p3
move v5, p4
move v6, p5
move-wide/from16 v7, p6
move-object/from16 v9, p8
invoke-direct/range {v0 .. v9}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;-><init>(Lcom/google/android/exoplayer2/upstream/BandwidthMeter;IIIFFJLcom/google/android/exoplayer2/util/Clock;)V
.line 181
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/upstream/BandwidthMeter;)V
.registers 12
.param p1, "bandwidthMeter" # Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 73
sget-object v9, Lcom/google/android/exoplayer2/util/Clock;->DEFAULT:Lcom/google/android/exoplayer2/util/Clock;
const/16 v2, 0x2710
const/16 v3, 0x61a8
const/16 v4, 0x61a8
const/high16 v5, 0x3f400000 # 0.75f
const/high16 v6, 0x3f400000 # 0.75f
const-wide/16 v7, 0x7d0
move-object v0, p0
move-object v1, p1
invoke-direct/range {v0 .. v9}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;-><init>(Lcom/google/android/exoplayer2/upstream/BandwidthMeter;IIIFFJLcom/google/android/exoplayer2/util/Clock;)V
.line 82
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/upstream/BandwidthMeter;IIIF)V
.registers 16
.param p1, "bandwidthMeter" # Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.param p2, "minDurationForQualityIncreaseMs" # I
.param p3, "maxDurationForQualityDecreaseMs" # I
.param p4, "minDurationToRetainAfterDiscardMs" # I
.param p5, "bandwidthFraction" # F
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 126
sget-object v9, Lcom/google/android/exoplayer2/util/Clock;->DEFAULT:Lcom/google/android/exoplayer2/util/Clock;
const/high16 v6, 0x3f400000 # 0.75f
const-wide/16 v7, 0x7d0
move-object v0, p0
move-object v1, p1
move v2, p2
move v3, p3
move v4, p4
move v5, p5
invoke-direct/range {v0 .. v9}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;-><init>(Lcom/google/android/exoplayer2/upstream/BandwidthMeter;IIIFFJLcom/google/android/exoplayer2/util/Clock;)V
.line 135
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/upstream/BandwidthMeter;IIIFFJLcom/google/android/exoplayer2/util/Clock;)V
.registers 11
.param p1, "bandwidthMeter" # Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.param p2, "minDurationForQualityIncreaseMs" # I
.param p3, "maxDurationForQualityDecreaseMs" # I
.param p4, "minDurationToRetainAfterDiscardMs" # I
.param p5, "bandwidthFraction" # F
.param p6, "bufferedFractionToLiveEdgeForQualityIncrease" # F
.param p7, "minTimeBetweenBufferReevaluationMs" # J
.param p9, "clock" # Lcom/google/android/exoplayer2/util/Clock;
.annotation runtime Ljava/lang/Deprecated;
.end annotation
.line 196
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 197
iput-object p1, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->bandwidthMeter:Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.line 198
iput p2, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->minDurationForQualityIncreaseMs:I
.line 199
iput p3, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->maxDurationForQualityDecreaseMs:I
.line 200
iput p4, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->minDurationToRetainAfterDiscardMs:I
.line 201
iput p5, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->bandwidthFraction:F
.line 202
iput p6, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->bufferedFractionToLiveEdgeForQualityIncrease:F
.line 204
iput-wide p7, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->minTimeBetweenBufferReevaluationMs:J
.line 205
iput-object p9, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->clock:Lcom/google/android/exoplayer2/util/Clock;
.line 206
sget-object v0, Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;->DEFAULT:Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;
iput-object v0, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->trackBitrateEstimator:Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;
.line 207
return-void
.end method
.method private createAdaptiveTrackSelection(Lcom/google/android/exoplayer2/source/TrackGroup;Lcom/google/android/exoplayer2/upstream/BandwidthMeter;[I)Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;
.registers 22
.param p1, "group" # Lcom/google/android/exoplayer2/source/TrackGroup;
.param p2, "bandwidthMeter" # Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.param p3, "tracks" # [I
.line 260
move-object/from16 v0, p0
iget-object v1, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->bandwidthMeter:Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
if-eqz v1, :cond_9
.line 261
iget-object v1, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->bandwidthMeter:Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.end local p2 # "bandwidthMeter":Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.local v1, "bandwidthMeter":Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
goto :goto_b
.line 260
.end local v1 # "bandwidthMeter":Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.restart local p2 # "bandwidthMeter":Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
:cond_9
move-object/from16 v1, p2
.line 263
.end local p2 # "bandwidthMeter":Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.restart local v1 # "bandwidthMeter":Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
:goto_b
new-instance v17, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;
new-instance v5, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$DefaultBandwidthProvider;
iget v2, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->bandwidthFraction:F
invoke-direct {v5, v1, v2}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$DefaultBandwidthProvider;-><init>(Lcom/google/android/exoplayer2/upstream/BandwidthMeter;F)V
iget v2, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->minDurationForQualityIncreaseMs:I
int-to-long v6, v2
iget v2, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->maxDurationForQualityDecreaseMs:I
int-to-long v8, v2
iget v2, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->minDurationToRetainAfterDiscardMs:I
int-to-long v10, v2
iget v12, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->bufferedFractionToLiveEdgeForQualityIncrease:F
iget-wide v13, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->minTimeBetweenBufferReevaluationMs:J
iget-object v15, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->clock:Lcom/google/android/exoplayer2/util/Clock;
const/16 v16, 0x0
move-object/from16 v2, v17
move-object/from16 v3, p1
move-object/from16 v4, p3
invoke-direct/range {v2 .. v16}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;-><init>(Lcom/google/android/exoplayer2/source/TrackGroup;[ILcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$BandwidthProvider;JJJFJLcom/google/android/exoplayer2/util/Clock;Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$1;)V
.line 274
.local v2, "adaptiveTrackSelection":Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;
iget-object v3, v0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->trackBitrateEstimator:Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;
invoke-virtual {v2, v3}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;->experimental_setTrackBitrateEstimator(Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;)V
.line 275
return-object v2
.end method
# virtual methods
.method public varargs synthetic createTrackSelection(Lcom/google/android/exoplayer2/source/TrackGroup;Lcom/google/android/exoplayer2/upstream/BandwidthMeter;[I)Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.registers 4
.annotation runtime Ljava/lang/Deprecated;
.end annotation
invoke-static {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Factory$-CC;->$default$createTrackSelection(Lcom/google/android/exoplayer2/trackselection/TrackSelection$Factory;Lcom/google/android/exoplayer2/source/TrackGroup;Lcom/google/android/exoplayer2/upstream/BandwidthMeter;[I)Lcom/google/android/exoplayer2/trackselection/TrackSelection;
move-result-object p1
return-object p1
.end method
.method public createTrackSelections([Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;Lcom/google/android/exoplayer2/upstream/BandwidthMeter;)[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.registers 12
.param p1, "definitions" # [Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;
.param p2, "bandwidthMeter" # Lcom/google/android/exoplayer2/upstream/BandwidthMeter;
.line 232
array-length v0, p1
new-array v0, v0, [Lcom/google/android/exoplayer2/trackselection/TrackSelection;
.line 233
.local v0, "selections":[Lcom/google/android/exoplayer2/trackselection/TrackSelection;
const/4 v1, 0x0
.line 234
.local v1, "adaptiveSelection":Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;
const/4 v2, 0x0
.line 235
.local v2, "totalFixedBandwidth":I
const/4 v3, 0x0
.local v3, "i":I
:goto_6
array-length v4, p1
if-ge v3, v4, :cond_40
.line 236
aget-object v4, p1, v3
.line 237
.local v4, "definition":Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;
if-nez v4, :cond_e
.line 238
goto :goto_3d
.line 240
:cond_e
iget-object v5, v4, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;->tracks:[I
array-length v5, v5
const/4 v6, 0x1
if-le v5, v6, :cond_1f
.line 241
iget-object v5, v4, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;->group:Lcom/google/android/exoplayer2/source/TrackGroup;
iget-object v6, v4, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;->tracks:[I
.line 242
invoke-direct {p0, v5, p2, v6}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->createAdaptiveTrackSelection(Lcom/google/android/exoplayer2/source/TrackGroup;Lcom/google/android/exoplayer2/upstream/BandwidthMeter;[I)Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;
move-result-object v1
.line 243
aput-object v1, v0, v3
goto :goto_3d
.line 245
:cond_1f
new-instance v5, Lcom/google/android/exoplayer2/trackselection/FixedTrackSelection;
iget-object v6, v4, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;->group:Lcom/google/android/exoplayer2/source/TrackGroup;
iget-object v7, v4, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;->tracks:[I
const/4 v8, 0x0
aget v7, v7, v8
invoke-direct {v5, v6, v7}, Lcom/google/android/exoplayer2/trackselection/FixedTrackSelection;-><init>(Lcom/google/android/exoplayer2/source/TrackGroup;I)V
aput-object v5, v0, v3
.line 246
iget-object v5, v4, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;->group:Lcom/google/android/exoplayer2/source/TrackGroup;
iget-object v6, v4, Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;->tracks:[I
aget v6, v6, v8
invoke-virtual {v5, v6}, Lcom/google/android/exoplayer2/source/TrackGroup;->getFormat(I)Lcom/google/android/exoplayer2/Format;
move-result-object v5
iget v5, v5, Lcom/google/android/exoplayer2/Format;->bitrate:I
.line 247
.local v5, "trackBitrate":I
const/4 v6, -0x1
if-eq v5, v6, :cond_3d
.line 248
add-int/2addr v2, v5
.line 235
.end local v4 # "definition":Lcom/google/android/exoplayer2/trackselection/TrackSelection$Definition;
.end local v5 # "trackBitrate":I
:cond_3d
:goto_3d
add-int/lit8 v3, v3, 0x1
goto :goto_6
.line 252
.end local v3 # "i":I
:cond_40
iget-boolean v3, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->blockFixedTrackSelectionBandwidth:Z
if-eqz v3, :cond_4a
if-eqz v1, :cond_4a
.line 253
int-to-long v3, v2
invoke-virtual {v1, v3, v4}, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection;->experimental_setNonAllocatableBandwidth(J)V
.line 255
:cond_4a
return-object v0
.end method
.method public experimental_enableBlockFixedTrackSelectionBandwidth()V
.registers 2
.line 226
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->blockFixedTrackSelectionBandwidth:Z
.line 227
return-void
.end method
.method public experimental_setTrackBitrateEstimator(Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;)V
.registers 2
.param p1, "trackBitrateEstimator" # Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;
.line 217
iput-object p1, p0, Lcom/google/android/exoplayer2/trackselection/AdaptiveTrackSelection$Factory;->trackBitrateEstimator:Lcom/google/android/exoplayer2/trackselection/TrackBitrateEstimator;
.line 218
return-void
.end method