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