mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
1775 lines
43 KiB
Smali
1775 lines
43 KiB
Smali
.class public Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;
|
|
.super Landroidx/media3/exoplayer/trackselection/BaseTrackSelection;
|
|
.source "AdaptiveTrackSelection.java"
|
|
|
|
|
|
# annotations
|
|
.annotation system Ldalvik/annotation/MemberClasses;
|
|
value = {
|
|
Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;,
|
|
Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$Factory;
|
|
}
|
|
.end annotation
|
|
|
|
|
|
# static fields
|
|
.field public static final DEFAULT_BANDWIDTH_FRACTION:F = 0.7f
|
|
|
|
.field public static final DEFAULT_BUFFERED_FRACTION_TO_LIVE_EDGE_FOR_QUALITY_INCREASE:F = 0.75f
|
|
|
|
.field public static final DEFAULT_MAX_DURATION_FOR_QUALITY_DECREASE_MS:I = 0x61a8
|
|
|
|
.field public static final DEFAULT_MAX_HEIGHT_TO_DISCARD:I = 0x2cf
|
|
|
|
.field public static final DEFAULT_MAX_WIDTH_TO_DISCARD:I = 0x4ff
|
|
|
|
.field public static final DEFAULT_MIN_DURATION_FOR_QUALITY_INCREASE_MS:I = 0x2710
|
|
|
|
.field public static final DEFAULT_MIN_DURATION_TO_RETAIN_AFTER_DISCARD_MS:I = 0x61a8
|
|
|
|
.field private static final MIN_TIME_BETWEEN_BUFFER_REEVALUTATION_MS:J = 0x3e8L
|
|
|
|
.field private static final TAG:Ljava/lang/String; = "AdaptiveTrackSelection"
|
|
|
|
|
|
# instance fields
|
|
.field private final adaptationCheckpoints:Lcom/google/common/collect/ImmutableList;
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"Lcom/google/common/collect/ImmutableList<",
|
|
"Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;",
|
|
">;"
|
|
}
|
|
.end annotation
|
|
.end field
|
|
|
|
.field private final bandwidthFraction:F
|
|
|
|
.field private final bandwidthMeter:Landroidx/media3/exoplayer/upstream/BandwidthMeter;
|
|
|
|
.field private final bufferedFractionToLiveEdgeForQualityIncrease:F
|
|
|
|
.field private final clock:Landroidx/media3/common/util/Clock;
|
|
|
|
.field private lastBufferEvaluationMediaChunk:Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
.field private lastBufferEvaluationMs:J
|
|
|
|
.field private latestBitrateEstimate:J
|
|
|
|
.field private final maxDurationForQualityDecreaseUs:J
|
|
|
|
.field private final maxHeightToDiscard:I
|
|
|
|
.field private final maxWidthToDiscard:I
|
|
|
|
.field private final minDurationForQualityIncreaseUs:J
|
|
|
|
.field private final minDurationToRetainAfterDiscardUs:J
|
|
|
|
.field private playbackSpeed:F
|
|
|
|
.field private reason:I
|
|
|
|
.field private selectedIndex:I
|
|
|
|
|
|
# direct methods
|
|
.method protected constructor <init>(Landroidx/media3/common/TrackGroup;[IILandroidx/media3/exoplayer/upstream/BandwidthMeter;JJJIIFFLjava/util/List;Landroidx/media3/common/util/Clock;)V
|
|
.locals 7
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"(",
|
|
"Landroidx/media3/common/TrackGroup;",
|
|
"[II",
|
|
"Landroidx/media3/exoplayer/upstream/BandwidthMeter;",
|
|
"JJJIIFF",
|
|
"Ljava/util/List<",
|
|
"Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;",
|
|
">;",
|
|
"Landroidx/media3/common/util/Clock;",
|
|
")V"
|
|
}
|
|
.end annotation
|
|
|
|
move-object v0, p0
|
|
|
|
.line 392
|
|
invoke-direct {p0, p1, p2, p3}, Landroidx/media3/exoplayer/trackselection/BaseTrackSelection;-><init>(Landroidx/media3/common/TrackGroup;[II)V
|
|
|
|
cmp-long v1, p9, p5
|
|
|
|
if-gez v1, :cond_0
|
|
|
|
const-string v1, "AdaptiveTrackSelection"
|
|
|
|
const-string v2, "Adjusting minDurationToRetainAfterDiscardMs to be at least minDurationForQualityIncreaseMs"
|
|
|
|
.line 394
|
|
invoke-static {v1, v2}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
|
|
|
|
move-object v3, p4
|
|
|
|
move-wide v1, p5
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
move-object v3, p4
|
|
|
|
move-wide/from16 v1, p9
|
|
|
|
:goto_0
|
|
iput-object v3, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->bandwidthMeter:Landroidx/media3/exoplayer/upstream/BandwidthMeter;
|
|
|
|
const-wide/16 v3, 0x3e8
|
|
|
|
mul-long v5, p5, v3
|
|
|
|
iput-wide v5, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->minDurationForQualityIncreaseUs:J
|
|
|
|
mul-long v5, p7, v3
|
|
|
|
iput-wide v5, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->maxDurationForQualityDecreaseUs:J
|
|
|
|
mul-long/2addr v1, v3
|
|
|
|
iput-wide v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->minDurationToRetainAfterDiscardUs:J
|
|
|
|
move/from16 v1, p11
|
|
|
|
iput v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->maxWidthToDiscard:I
|
|
|
|
move/from16 v1, p12
|
|
|
|
iput v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->maxHeightToDiscard:I
|
|
|
|
move/from16 v1, p13
|
|
|
|
iput v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->bandwidthFraction:F
|
|
|
|
move/from16 v1, p14
|
|
|
|
iput v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->bufferedFractionToLiveEdgeForQualityIncrease:F
|
|
|
|
.line 409
|
|
invoke-static/range {p15 .. p15}, Lcom/google/common/collect/ImmutableList;->copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object v1
|
|
|
|
iput-object v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->adaptationCheckpoints:Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-object/from16 v1, p16
|
|
|
|
iput-object v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->clock:Landroidx/media3/common/util/Clock;
|
|
|
|
const/high16 v1, 0x3f800000 # 1.0f
|
|
|
|
iput v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->playbackSpeed:F
|
|
|
|
const/4 v1, 0x0
|
|
|
|
iput v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->reason:I
|
|
|
|
const-wide v1, -0x7fffffffffffffffL # -4.9E-324
|
|
|
|
iput-wide v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMs:J
|
|
|
|
const-wide/high16 v1, -0x8000000000000000L
|
|
|
|
iput-wide v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->latestBitrateEstimate:J
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public constructor <init>(Landroidx/media3/common/TrackGroup;[ILandroidx/media3/exoplayer/upstream/BandwidthMeter;)V
|
|
.locals 17
|
|
|
|
move-object/from16 v0, p0
|
|
|
|
move-object/from16 v1, p1
|
|
|
|
move-object/from16 v2, p2
|
|
|
|
move-object/from16 v4, p3
|
|
|
|
const/4 v3, 0x0
|
|
|
|
const-wide/16 v5, 0x2710
|
|
|
|
const-wide/16 v7, 0x61a8
|
|
|
|
const-wide/16 v9, 0x61a8
|
|
|
|
const/16 v11, 0x4ff
|
|
|
|
const/16 v12, 0x2cf
|
|
|
|
const v13, 0x3f333333 # 0.7f
|
|
|
|
const/high16 v14, 0x3f400000 # 0.75f
|
|
|
|
.line 343
|
|
invoke-static {}, Lcom/google/common/collect/ImmutableList;->of()Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object v15
|
|
|
|
sget-object v16, Landroidx/media3/common/util/Clock;->DEFAULT:Landroidx/media3/common/util/Clock;
|
|
|
|
.line 331
|
|
invoke-direct/range {v0 .. v16}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;-><init>(Landroidx/media3/common/TrackGroup;[IILandroidx/media3/exoplayer/upstream/BandwidthMeter;JJJIIFFLjava/util/List;Landroidx/media3/common/util/Clock;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method static synthetic access$000([Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;)Lcom/google/common/collect/ImmutableList;
|
|
.locals 0
|
|
|
|
.line 49
|
|
invoke-static {p0}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getAdaptationCheckpoints([Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;)Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method private static addCheckpoint(Ljava/util/List;[J)V
|
|
.locals 7
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"(",
|
|
"Ljava/util/List<",
|
|
"Lcom/google/common/collect/ImmutableList$Builder<",
|
|
"Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;",
|
|
">;>;[J)V"
|
|
}
|
|
.end annotation
|
|
|
|
const-wide/16 v0, 0x0
|
|
|
|
const/4 v2, 0x0
|
|
|
|
move v3, v2
|
|
|
|
.line 817
|
|
:goto_0
|
|
array-length v4, p1
|
|
|
|
if-ge v3, v4, :cond_0
|
|
|
|
.line 818
|
|
aget-wide v4, p1, v3
|
|
|
|
add-long/2addr v0, v4
|
|
|
|
add-int/lit8 v3, v3, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
.line 820
|
|
:cond_0
|
|
:goto_1
|
|
invoke-interface {p0}, Ljava/util/List;->size()I
|
|
|
|
move-result v3
|
|
|
|
if-ge v2, v3, :cond_2
|
|
|
|
.line 821
|
|
invoke-interface {p0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v3
|
|
|
|
check-cast v3, Lcom/google/common/collect/ImmutableList$Builder;
|
|
|
|
if-nez v3, :cond_1
|
|
|
|
goto :goto_2
|
|
|
|
.line 825
|
|
:cond_1
|
|
new-instance v4, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;
|
|
|
|
aget-wide v5, p1, v2
|
|
|
|
invoke-direct {v4, v0, v1, v5, v6}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;-><init>(JJ)V
|
|
|
|
invoke-virtual {v3, v4}, Lcom/google/common/collect/ImmutableList$Builder;->add(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder;
|
|
|
|
:goto_2
|
|
add-int/lit8 v2, v2, 0x1
|
|
|
|
goto :goto_1
|
|
|
|
:cond_2
|
|
return-void
|
|
.end method
|
|
|
|
.method private determineIdealSelectedIndex(JJ)I
|
|
.locals 4
|
|
|
|
.line 600
|
|
invoke-direct {p0, p3, p4}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getAllocatedBandwidth(J)J
|
|
|
|
move-result-wide p3
|
|
|
|
const/4 v0, 0x0
|
|
|
|
move v1, v0
|
|
|
|
.line 602
|
|
:goto_0
|
|
iget v2, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->length:I
|
|
|
|
if-ge v0, v2, :cond_3
|
|
|
|
const-wide/high16 v2, -0x8000000000000000L
|
|
|
|
cmp-long v2, p1, v2
|
|
|
|
if-eqz v2, :cond_0
|
|
|
|
.line 603
|
|
invoke-virtual {p0, v0, p1, p2}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->isTrackExcluded(IJ)Z
|
|
|
|
move-result v2
|
|
|
|
if-nez v2, :cond_2
|
|
|
|
.line 604
|
|
:cond_0
|
|
invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getFormat(I)Landroidx/media3/common/Format;
|
|
|
|
move-result-object v1
|
|
|
|
.line 605
|
|
iget v2, v1, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
invoke-virtual {p0, v1, v2, p3, p4}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->canSelectFormat(Landroidx/media3/common/Format;IJ)Z
|
|
|
|
move-result v1
|
|
|
|
if-eqz v1, :cond_1
|
|
|
|
return v0
|
|
|
|
:cond_1
|
|
move v1, v0
|
|
|
|
:cond_2
|
|
add-int/lit8 v0, v0, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
:cond_3
|
|
return v1
|
|
.end method
|
|
|
|
.method private static getAdaptationCheckpoints([Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;)Lcom/google/common/collect/ImmutableList;
|
|
.locals 11
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"([",
|
|
"Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;",
|
|
")",
|
|
"Lcom/google/common/collect/ImmutableList<",
|
|
"Lcom/google/common/collect/ImmutableList<",
|
|
"Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;",
|
|
">;>;"
|
|
}
|
|
.end annotation
|
|
|
|
.line 712
|
|
new-instance v0, Ljava/util/ArrayList;
|
|
|
|
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
|
|
|
|
const/4 v1, 0x0
|
|
|
|
move v2, v1
|
|
|
|
.line 714
|
|
:goto_0
|
|
array-length v3, p0
|
|
|
|
const-wide/16 v4, 0x0
|
|
|
|
const/4 v6, 0x1
|
|
|
|
if-ge v2, v3, :cond_1
|
|
|
|
.line 715
|
|
aget-object v3, p0, v2
|
|
|
|
if-eqz v3, :cond_0
|
|
|
|
iget-object v3, v3, Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;->tracks:[I
|
|
|
|
array-length v3, v3
|
|
|
|
if-le v3, v6, :cond_0
|
|
|
|
.line 716
|
|
invoke-static {}, Lcom/google/common/collect/ImmutableList;->builder()Lcom/google/common/collect/ImmutableList$Builder;
|
|
|
|
move-result-object v3
|
|
|
|
.line 718
|
|
new-instance v6, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;
|
|
|
|
invoke-direct {v6, v4, v5, v4, v5}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;-><init>(JJ)V
|
|
|
|
invoke-virtual {v3, v6}, Lcom/google/common/collect/ImmutableList$Builder;->add(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder;
|
|
|
|
.line 719
|
|
invoke-interface {v0, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
|
|
|
|
goto :goto_1
|
|
|
|
:cond_0
|
|
const/4 v3, 0x0
|
|
|
|
.line 721
|
|
invoke-interface {v0, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
|
|
|
|
:goto_1
|
|
add-int/lit8 v2, v2, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
.line 725
|
|
:cond_1
|
|
invoke-static {p0}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getSortedTrackBitrates([Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;)[[J
|
|
|
|
move-result-object v2
|
|
|
|
.line 726
|
|
array-length v3, v2
|
|
|
|
new-array v3, v3, [I
|
|
|
|
.line 727
|
|
array-length v7, v2
|
|
|
|
new-array v7, v7, [J
|
|
|
|
move v8, v1
|
|
|
|
.line 728
|
|
:goto_2
|
|
array-length v9, v2
|
|
|
|
if-ge v8, v9, :cond_3
|
|
|
|
.line 729
|
|
aget-object v9, v2, v8
|
|
|
|
array-length v10, v9
|
|
|
|
if-nez v10, :cond_2
|
|
|
|
move-wide v9, v4
|
|
|
|
goto :goto_3
|
|
|
|
:cond_2
|
|
aget-wide v9, v9, v1
|
|
|
|
:goto_3
|
|
aput-wide v9, v7, v8
|
|
|
|
add-int/lit8 v8, v8, 0x1
|
|
|
|
goto :goto_2
|
|
|
|
.line 731
|
|
:cond_3
|
|
invoke-static {v0, v7}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->addCheckpoint(Ljava/util/List;[J)V
|
|
|
|
.line 733
|
|
invoke-static {v2}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getSwitchOrder([[J)Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object v4
|
|
|
|
move v5, v1
|
|
|
|
.line 734
|
|
:goto_4
|
|
invoke-virtual {v4}, Lcom/google/common/collect/ImmutableList;->size()I
|
|
|
|
move-result v8
|
|
|
|
if-ge v5, v8, :cond_4
|
|
|
|
.line 735
|
|
invoke-virtual {v4, v5}, Lcom/google/common/collect/ImmutableList;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v8
|
|
|
|
check-cast v8, Ljava/lang/Integer;
|
|
|
|
invoke-virtual {v8}, Ljava/lang/Integer;->intValue()I
|
|
|
|
move-result v8
|
|
|
|
.line 736
|
|
aget v9, v3, v8
|
|
|
|
add-int/2addr v9, v6
|
|
|
|
aput v9, v3, v8
|
|
|
|
.line 737
|
|
aget-object v10, v2, v8
|
|
|
|
aget-wide v9, v10, v9
|
|
|
|
aput-wide v9, v7, v8
|
|
|
|
.line 738
|
|
invoke-static {v0, v7}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->addCheckpoint(Ljava/util/List;[J)V
|
|
|
|
add-int/lit8 v5, v5, 0x1
|
|
|
|
goto :goto_4
|
|
|
|
:cond_4
|
|
move v2, v1
|
|
|
|
.line 741
|
|
:goto_5
|
|
array-length v3, p0
|
|
|
|
if-ge v2, v3, :cond_6
|
|
|
|
.line 742
|
|
invoke-interface {v0, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v3
|
|
|
|
if-eqz v3, :cond_5
|
|
|
|
.line 743
|
|
aget-wide v3, v7, v2
|
|
|
|
const-wide/16 v5, 0x2
|
|
|
|
mul-long/2addr v3, v5
|
|
|
|
aput-wide v3, v7, v2
|
|
|
|
:cond_5
|
|
add-int/lit8 v2, v2, 0x1
|
|
|
|
goto :goto_5
|
|
|
|
.line 746
|
|
:cond_6
|
|
invoke-static {v0, v7}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->addCheckpoint(Ljava/util/List;[J)V
|
|
|
|
.line 747
|
|
invoke-static {}, Lcom/google/common/collect/ImmutableList;->builder()Lcom/google/common/collect/ImmutableList$Builder;
|
|
|
|
move-result-object p0
|
|
|
|
.line 748
|
|
:goto_6
|
|
invoke-interface {v0}, Ljava/util/List;->size()I
|
|
|
|
move-result v2
|
|
|
|
if-ge v1, v2, :cond_8
|
|
|
|
.line 749
|
|
invoke-interface {v0, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v2
|
|
|
|
check-cast v2, Lcom/google/common/collect/ImmutableList$Builder;
|
|
|
|
if-nez v2, :cond_7
|
|
|
|
.line 750
|
|
invoke-static {}, Lcom/google/common/collect/ImmutableList;->of()Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object v2
|
|
|
|
goto :goto_7
|
|
|
|
:cond_7
|
|
invoke-virtual {v2}, Lcom/google/common/collect/ImmutableList$Builder;->build()Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object v2
|
|
|
|
:goto_7
|
|
invoke-virtual {p0, v2}, Lcom/google/common/collect/ImmutableList$Builder;->add(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder;
|
|
|
|
add-int/lit8 v1, v1, 0x1
|
|
|
|
goto :goto_6
|
|
|
|
.line 752
|
|
:cond_8
|
|
invoke-virtual {p0}, Lcom/google/common/collect/ImmutableList$Builder;->build()Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method private getAllocatedBandwidth(J)J
|
|
.locals 7
|
|
|
|
.line 671
|
|
invoke-direct {p0, p1, p2}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getTotalAllocatableBandwidth(J)J
|
|
|
|
move-result-wide p1
|
|
|
|
iget-object v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->adaptationCheckpoints:Lcom/google/common/collect/ImmutableList;
|
|
|
|
.line 672
|
|
invoke-virtual {v0}, Lcom/google/common/collect/ImmutableList;->isEmpty()Z
|
|
|
|
move-result v0
|
|
|
|
if-eqz v0, :cond_0
|
|
|
|
return-wide p1
|
|
|
|
:cond_0
|
|
const/4 v0, 0x1
|
|
|
|
move v1, v0
|
|
|
|
:goto_0
|
|
iget-object v2, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->adaptationCheckpoints:Lcom/google/common/collect/ImmutableList;
|
|
|
|
.line 676
|
|
invoke-virtual {v2}, Lcom/google/common/collect/ImmutableList;->size()I
|
|
|
|
move-result v2
|
|
|
|
sub-int/2addr v2, v0
|
|
|
|
if-ge v1, v2, :cond_1
|
|
|
|
iget-object v2, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->adaptationCheckpoints:Lcom/google/common/collect/ImmutableList;
|
|
|
|
.line 677
|
|
invoke-virtual {v2, v1}, Lcom/google/common/collect/ImmutableList;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v2
|
|
|
|
check-cast v2, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;
|
|
|
|
iget-wide v2, v2, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;->totalBandwidth:J
|
|
|
|
cmp-long v2, v2, p1
|
|
|
|
if-gez v2, :cond_1
|
|
|
|
add-int/lit8 v1, v1, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
:cond_1
|
|
iget-object v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->adaptationCheckpoints:Lcom/google/common/collect/ImmutableList;
|
|
|
|
add-int/lit8 v2, v1, -0x1
|
|
|
|
.line 680
|
|
invoke-virtual {v0, v2}, Lcom/google/common/collect/ImmutableList;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v0
|
|
|
|
check-cast v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;
|
|
|
|
iget-object p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->adaptationCheckpoints:Lcom/google/common/collect/ImmutableList;
|
|
|
|
.line 681
|
|
invoke-virtual {p0, v1}, Lcom/google/common/collect/ImmutableList;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object p0
|
|
|
|
check-cast p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;
|
|
|
|
.line 682
|
|
iget-wide v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;->totalBandwidth:J
|
|
|
|
sub-long/2addr p1, v1
|
|
|
|
long-to-float p1, p1
|
|
|
|
iget-wide v1, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;->totalBandwidth:J
|
|
|
|
iget-wide v3, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;->totalBandwidth:J
|
|
|
|
sub-long/2addr v1, v3
|
|
|
|
long-to-float p2, v1
|
|
|
|
div-float/2addr p1, p2
|
|
|
|
.line 685
|
|
iget-wide v1, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;->allocatedBandwidth:J
|
|
|
|
iget-wide v3, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;->allocatedBandwidth:J
|
|
|
|
iget-wide v5, v0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection$AdaptationCheckpoint;->allocatedBandwidth:J
|
|
|
|
sub-long/2addr v3, v5
|
|
|
|
long-to-float p0, v3
|
|
|
|
mul-float/2addr p1, p0
|
|
|
|
float-to-long p0, p1
|
|
|
|
add-long/2addr v1, p0
|
|
|
|
return-wide v1
|
|
.end method
|
|
|
|
.method private getLastChunkDurationUs(Ljava/util/List;)J
|
|
.locals 4
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"(",
|
|
"Ljava/util/List<",
|
|
"+",
|
|
"Landroidx/media3/exoplayer/source/chunk/MediaChunk;",
|
|
">;)J"
|
|
}
|
|
.end annotation
|
|
|
|
.line 661
|
|
invoke-interface {p1}, Ljava/util/List;->isEmpty()Z
|
|
|
|
move-result p0
|
|
|
|
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
|
|
|
|
if-eqz p0, :cond_0
|
|
|
|
return-wide v0
|
|
|
|
.line 664
|
|
:cond_0
|
|
invoke-static {p1}, Lcom/google/common/collect/Iterables;->getLast(Ljava/lang/Iterable;)Ljava/lang/Object;
|
|
|
|
move-result-object p0
|
|
|
|
check-cast p0, Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
.line 665
|
|
iget-wide v2, p0, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->startTimeUs:J
|
|
|
|
cmp-long p1, v2, v0
|
|
|
|
if-eqz p1, :cond_1
|
|
|
|
iget-wide v2, p0, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->endTimeUs:J
|
|
|
|
cmp-long p1, v2, v0
|
|
|
|
if-eqz p1, :cond_1
|
|
|
|
.line 666
|
|
iget-wide v0, p0, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->endTimeUs:J
|
|
|
|
iget-wide p0, p0, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->startTimeUs:J
|
|
|
|
sub-long/2addr v0, p0
|
|
|
|
:cond_1
|
|
return-wide v0
|
|
.end method
|
|
|
|
.method private getNextChunkDurationUs([Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;Ljava/util/List;)J
|
|
.locals 4
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"([",
|
|
"Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;",
|
|
"Ljava/util/List<",
|
|
"+",
|
|
"Landroidx/media3/exoplayer/source/chunk/MediaChunk;",
|
|
">;)J"
|
|
}
|
|
.end annotation
|
|
|
|
iget v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->selectedIndex:I
|
|
|
|
.line 640
|
|
array-length v1, p1
|
|
|
|
if-ge v0, v1, :cond_0
|
|
|
|
aget-object v0, p1, v0
|
|
|
|
invoke-interface {v0}, Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;->next()Z
|
|
|
|
move-result v0
|
|
|
|
if-eqz v0, :cond_0
|
|
|
|
iget p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->selectedIndex:I
|
|
|
|
.line 641
|
|
aget-object p0, p1, p0
|
|
|
|
.line 642
|
|
invoke-interface {p0}, Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;->getChunkEndTimeUs()J
|
|
|
|
move-result-wide p1
|
|
|
|
invoke-interface {p0}, Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;->getChunkStartTimeUs()J
|
|
|
|
move-result-wide v0
|
|
|
|
sub-long/2addr p1, v0
|
|
|
|
return-wide p1
|
|
|
|
.line 646
|
|
:cond_0
|
|
array-length v0, p1
|
|
|
|
const/4 v1, 0x0
|
|
|
|
:goto_0
|
|
if-ge v1, v0, :cond_2
|
|
|
|
aget-object v2, p1, v1
|
|
|
|
.line 647
|
|
invoke-interface {v2}, Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;->next()Z
|
|
|
|
move-result v3
|
|
|
|
if-eqz v3, :cond_1
|
|
|
|
.line 648
|
|
invoke-interface {v2}, Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;->getChunkEndTimeUs()J
|
|
|
|
move-result-wide p0
|
|
|
|
invoke-interface {v2}, Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;->getChunkStartTimeUs()J
|
|
|
|
move-result-wide v0
|
|
|
|
sub-long/2addr p0, v0
|
|
|
|
return-wide p0
|
|
|
|
:cond_1
|
|
add-int/lit8 v1, v1, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
.line 653
|
|
:cond_2
|
|
invoke-direct {p0, p2}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getLastChunkDurationUs(Ljava/util/List;)J
|
|
|
|
move-result-wide p0
|
|
|
|
return-wide p0
|
|
.end method
|
|
|
|
.method private static getSortedTrackBitrates([Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;)[[J
|
|
.locals 10
|
|
|
|
.line 757
|
|
array-length v0, p0
|
|
|
|
new-array v0, v0, [[J
|
|
|
|
const/4 v1, 0x0
|
|
|
|
move v2, v1
|
|
|
|
.line 758
|
|
:goto_0
|
|
array-length v3, p0
|
|
|
|
if-ge v2, v3, :cond_3
|
|
|
|
.line 759
|
|
aget-object v3, p0, v2
|
|
|
|
if-nez v3, :cond_0
|
|
|
|
new-array v3, v1, [J
|
|
|
|
.line 761
|
|
aput-object v3, v0, v2
|
|
|
|
goto :goto_2
|
|
|
|
.line 764
|
|
:cond_0
|
|
iget-object v4, v3, Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;->tracks:[I
|
|
|
|
array-length v4, v4
|
|
|
|
new-array v4, v4, [J
|
|
|
|
aput-object v4, v0, v2
|
|
|
|
move v4, v1
|
|
|
|
.line 765
|
|
:goto_1
|
|
iget-object v5, v3, Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;->tracks:[I
|
|
|
|
array-length v5, v5
|
|
|
|
if-ge v4, v5, :cond_2
|
|
|
|
.line 766
|
|
iget-object v5, v3, Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;->group:Landroidx/media3/common/TrackGroup;
|
|
|
|
iget-object v6, v3, Landroidx/media3/exoplayer/trackselection/ExoTrackSelection$Definition;->tracks:[I
|
|
|
|
aget v6, v6, v4
|
|
|
|
invoke-virtual {v5, v6}, Landroidx/media3/common/TrackGroup;->getFormat(I)Landroidx/media3/common/Format;
|
|
|
|
move-result-object v5
|
|
|
|
iget v5, v5, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
int-to-long v5, v5
|
|
|
|
.line 767
|
|
aget-object v7, v0, v2
|
|
|
|
const-wide/16 v8, -0x1
|
|
|
|
cmp-long v8, v5, v8
|
|
|
|
if-nez v8, :cond_1
|
|
|
|
const-wide/16 v5, 0x0
|
|
|
|
:cond_1
|
|
aput-wide v5, v7, v4
|
|
|
|
add-int/lit8 v4, v4, 0x1
|
|
|
|
goto :goto_1
|
|
|
|
.line 769
|
|
:cond_2
|
|
aget-object v3, v0, v2
|
|
|
|
invoke-static {v3}, Ljava/util/Arrays;->sort([J)V
|
|
|
|
:goto_2
|
|
add-int/lit8 v2, v2, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
:cond_3
|
|
return-object v0
|
|
.end method
|
|
|
|
.method private static getSwitchOrder([[J)Lcom/google/common/collect/ImmutableList;
|
|
.locals 14
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"([[J)",
|
|
"Lcom/google/common/collect/ImmutableList<",
|
|
"Ljava/lang/Integer;",
|
|
">;"
|
|
}
|
|
.end annotation
|
|
|
|
.line 785
|
|
invoke-static {}, Lcom/google/common/collect/MultimapBuilder;->treeKeys()Lcom/google/common/collect/MultimapBuilder$MultimapBuilderWithKeys;
|
|
|
|
move-result-object v0
|
|
|
|
invoke-virtual {v0}, Lcom/google/common/collect/MultimapBuilder$MultimapBuilderWithKeys;->arrayListValues()Lcom/google/common/collect/MultimapBuilder$ListMultimapBuilder;
|
|
|
|
move-result-object v0
|
|
|
|
invoke-virtual {v0}, Lcom/google/common/collect/MultimapBuilder$ListMultimapBuilder;->build()Lcom/google/common/collect/ListMultimap;
|
|
|
|
move-result-object v0
|
|
|
|
const/4 v1, 0x0
|
|
|
|
move v2, v1
|
|
|
|
.line 786
|
|
:goto_0
|
|
array-length v3, p0
|
|
|
|
if-ge v2, v3, :cond_5
|
|
|
|
.line 787
|
|
aget-object v3, p0, v2
|
|
|
|
array-length v4, v3
|
|
|
|
const/4 v5, 0x1
|
|
|
|
if-gt v4, v5, :cond_0
|
|
|
|
goto :goto_5
|
|
|
|
.line 790
|
|
:cond_0
|
|
array-length v3, v3
|
|
|
|
new-array v4, v3, [D
|
|
|
|
move v5, v1
|
|
|
|
.line 791
|
|
:goto_1
|
|
aget-object v6, p0, v2
|
|
|
|
array-length v7, v6
|
|
|
|
const-wide/16 v8, 0x0
|
|
|
|
if-ge v5, v7, :cond_2
|
|
|
|
.line 793
|
|
aget-wide v6, v6, v5
|
|
|
|
const-wide/16 v10, -0x1
|
|
|
|
cmp-long v10, v6, v10
|
|
|
|
if-nez v10, :cond_1
|
|
|
|
goto :goto_2
|
|
|
|
:cond_1
|
|
long-to-double v6, v6
|
|
|
|
invoke-static {v6, v7}, Ljava/lang/Math;->log(D)D
|
|
|
|
move-result-wide v8
|
|
|
|
:goto_2
|
|
aput-wide v8, v4, v5
|
|
|
|
add-int/lit8 v5, v5, 0x1
|
|
|
|
goto :goto_1
|
|
|
|
:cond_2
|
|
add-int/lit8 v3, v3, -0x1
|
|
|
|
.line 795
|
|
aget-wide v5, v4, v3
|
|
|
|
aget-wide v10, v4, v1
|
|
|
|
sub-double/2addr v5, v10
|
|
|
|
move v7, v1
|
|
|
|
:goto_3
|
|
if-ge v7, v3, :cond_4
|
|
|
|
.line 797
|
|
aget-wide v10, v4, v7
|
|
|
|
add-int/lit8 v7, v7, 0x1
|
|
|
|
aget-wide v12, v4, v7
|
|
|
|
add-double/2addr v10, v12
|
|
|
|
const-wide/high16 v12, 0x3fe0000000000000L # 0.5
|
|
|
|
mul-double/2addr v10, v12
|
|
|
|
cmpl-double v12, v5, v8
|
|
|
|
if-nez v12, :cond_3
|
|
|
|
const-wide/high16 v10, 0x3ff0000000000000L # 1.0
|
|
|
|
goto :goto_4
|
|
|
|
.line 799
|
|
:cond_3
|
|
aget-wide v12, v4, v1
|
|
|
|
sub-double/2addr v10, v12
|
|
|
|
div-double/2addr v10, v5
|
|
|
|
.line 800
|
|
:goto_4
|
|
invoke-static {v10, v11}, Ljava/lang/Double;->valueOf(D)Ljava/lang/Double;
|
|
|
|
move-result-object v10
|
|
|
|
invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
|
|
|
|
move-result-object v11
|
|
|
|
invoke-interface {v0, v10, v11}, Lcom/google/common/collect/Multimap;->put(Ljava/lang/Object;Ljava/lang/Object;)Z
|
|
|
|
goto :goto_3
|
|
|
|
:cond_4
|
|
:goto_5
|
|
add-int/lit8 v2, v2, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
.line 803
|
|
:cond_5
|
|
invoke-interface {v0}, Lcom/google/common/collect/Multimap;->values()Ljava/util/Collection;
|
|
|
|
move-result-object p0
|
|
|
|
invoke-static {p0}, Lcom/google/common/collect/ImmutableList;->copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;
|
|
|
|
move-result-object p0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method private getTotalAllocatableBandwidth(J)J
|
|
.locals 7
|
|
|
|
iget-object v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->bandwidthMeter:Landroidx/media3/exoplayer/upstream/BandwidthMeter;
|
|
|
|
.line 691
|
|
invoke-interface {v0}, Landroidx/media3/exoplayer/upstream/BandwidthMeter;->getBitrateEstimate()J
|
|
|
|
move-result-wide v0
|
|
|
|
iput-wide v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->latestBitrateEstimate:J
|
|
|
|
long-to-float v0, v0
|
|
|
|
iget v1, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->bandwidthFraction:F
|
|
|
|
mul-float/2addr v0, v1
|
|
|
|
float-to-long v0, v0
|
|
|
|
iget-object v2, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->bandwidthMeter:Landroidx/media3/exoplayer/upstream/BandwidthMeter;
|
|
|
|
.line 693
|
|
invoke-interface {v2}, Landroidx/media3/exoplayer/upstream/BandwidthMeter;->getTimeToFirstByteEstimateUs()J
|
|
|
|
move-result-wide v2
|
|
|
|
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
|
|
|
|
cmp-long v6, v2, v4
|
|
|
|
if-eqz v6, :cond_1
|
|
|
|
cmp-long v4, p1, v4
|
|
|
|
if-nez v4, :cond_0
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
long-to-float p1, p1
|
|
|
|
iget p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->playbackSpeed:F
|
|
|
|
div-float p0, p1, p0
|
|
|
|
long-to-float p2, v2
|
|
|
|
sub-float/2addr p0, p2
|
|
|
|
const/4 p2, 0x0
|
|
|
|
.line 698
|
|
invoke-static {p0, p2}, Ljava/lang/Math;->max(FF)F
|
|
|
|
move-result p0
|
|
|
|
long-to-float p2, v0
|
|
|
|
mul-float/2addr p2, p0
|
|
|
|
div-float/2addr p2, p1
|
|
|
|
float-to-long p0, p2
|
|
|
|
return-wide p0
|
|
|
|
:cond_1
|
|
:goto_0
|
|
long-to-float p1, v0
|
|
|
|
iget p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->playbackSpeed:F
|
|
|
|
div-float/2addr p1, p0
|
|
|
|
float-to-long p0, p1
|
|
|
|
return-wide p0
|
|
.end method
|
|
|
|
.method private minDurationForQualityIncreaseUs(JJ)J
|
|
.locals 3
|
|
|
|
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
|
|
|
|
cmp-long v2, p1, v0
|
|
|
|
if-nez v2, :cond_0
|
|
|
|
iget-wide p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->minDurationForQualityIncreaseUs:J
|
|
|
|
return-wide p0
|
|
|
|
:cond_0
|
|
cmp-long v0, p3, v0
|
|
|
|
if-eqz v0, :cond_1
|
|
|
|
sub-long/2addr p1, p3
|
|
|
|
:cond_1
|
|
long-to-float p1, p1
|
|
|
|
iget p2, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->bufferedFractionToLiveEdgeForQualityIncrease:F
|
|
|
|
mul-float/2addr p1, p2
|
|
|
|
float-to-long p1, p1
|
|
|
|
iget-wide p3, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->minDurationForQualityIncreaseUs:J
|
|
|
|
.line 630
|
|
invoke-static {p1, p2, p3, p4}, Ljava/lang/Math;->min(JJ)J
|
|
|
|
move-result-wide p0
|
|
|
|
return-wide p0
|
|
.end method
|
|
|
|
|
|
# virtual methods
|
|
.method protected canSelectFormat(Landroidx/media3/common/Format;IJ)Z
|
|
.locals 0
|
|
|
|
int-to-long p0, p2
|
|
|
|
cmp-long p0, p0, p3
|
|
|
|
if-gtz p0, :cond_0
|
|
|
|
const/4 p0, 0x1
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
const/4 p0, 0x0
|
|
|
|
:goto_0
|
|
return p0
|
|
.end method
|
|
|
|
.method public disable()V
|
|
.locals 1
|
|
|
|
const/4 v0, 0x0
|
|
|
|
iput-object v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMediaChunk:Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public enable()V
|
|
.locals 2
|
|
|
|
const-wide v0, -0x7fffffffffffffffL # -4.9E-324
|
|
|
|
iput-wide v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMs:J
|
|
|
|
const/4 v0, 0x0
|
|
|
|
iput-object v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMediaChunk:Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method public evaluateQueueSize(JLjava/util/List;)I
|
|
.locals 10
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"(J",
|
|
"Ljava/util/List<",
|
|
"+",
|
|
"Landroidx/media3/exoplayer/source/chunk/MediaChunk;",
|
|
">;)I"
|
|
}
|
|
.end annotation
|
|
|
|
iget-object v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->clock:Landroidx/media3/common/util/Clock;
|
|
|
|
.line 505
|
|
invoke-interface {v0}, Landroidx/media3/common/util/Clock;->elapsedRealtime()J
|
|
|
|
move-result-wide v0
|
|
|
|
.line 506
|
|
invoke-virtual {p0, v0, v1, p3}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->shouldEvaluateQueueSize(JLjava/util/List;)Z
|
|
|
|
move-result v2
|
|
|
|
if-nez v2, :cond_0
|
|
|
|
.line 507
|
|
invoke-interface {p3}, Ljava/util/List;->size()I
|
|
|
|
move-result p0
|
|
|
|
return p0
|
|
|
|
:cond_0
|
|
iput-wide v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMs:J
|
|
|
|
.line 510
|
|
invoke-interface {p3}, Ljava/util/List;->isEmpty()Z
|
|
|
|
move-result v2
|
|
|
|
if-eqz v2, :cond_1
|
|
|
|
const/4 v2, 0x0
|
|
|
|
goto :goto_0
|
|
|
|
:cond_1
|
|
invoke-static {p3}, Lcom/google/common/collect/Iterables;->getLast(Ljava/lang/Iterable;)Ljava/lang/Object;
|
|
|
|
move-result-object v2
|
|
|
|
check-cast v2, Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
:goto_0
|
|
iput-object v2, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMediaChunk:Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
.line 512
|
|
invoke-interface {p3}, Ljava/util/List;->isEmpty()Z
|
|
|
|
move-result v2
|
|
|
|
const/4 v3, 0x0
|
|
|
|
if-eqz v2, :cond_2
|
|
|
|
return v3
|
|
|
|
.line 515
|
|
:cond_2
|
|
invoke-interface {p3}, Ljava/util/List;->size()I
|
|
|
|
move-result v2
|
|
|
|
add-int/lit8 v4, v2, -0x1
|
|
|
|
.line 516
|
|
invoke-interface {p3, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v4
|
|
|
|
check-cast v4, Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
.line 517
|
|
iget-wide v4, v4, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->startTimeUs:J
|
|
|
|
sub-long/2addr v4, p1
|
|
|
|
iget v6, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->playbackSpeed:F
|
|
|
|
.line 518
|
|
invoke-static {v4, v5, v6}, Landroidx/media3/common/util/Util;->getPlayoutDurationForMediaDuration(JF)J
|
|
|
|
move-result-wide v4
|
|
|
|
.line 520
|
|
invoke-virtual {p0}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getMinDurationToRetainAfterDiscardUs()J
|
|
|
|
move-result-wide v6
|
|
|
|
cmp-long v4, v4, v6
|
|
|
|
if-gez v4, :cond_3
|
|
|
|
return v2
|
|
|
|
.line 524
|
|
:cond_3
|
|
invoke-direct {p0, p3}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getLastChunkDurationUs(Ljava/util/List;)J
|
|
|
|
move-result-wide v4
|
|
|
|
invoke-direct {p0, v0, v1, v4, v5}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->determineIdealSelectedIndex(JJ)I
|
|
|
|
move-result v0
|
|
|
|
.line 525
|
|
invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getFormat(I)Landroidx/media3/common/Format;
|
|
|
|
move-result-object v0
|
|
|
|
:goto_1
|
|
if-ge v3, v2, :cond_5
|
|
|
|
.line 530
|
|
invoke-interface {p3, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
|
|
|
|
move-result-object v1
|
|
|
|
check-cast v1, Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
.line 531
|
|
iget-object v4, v1, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->trackFormat:Landroidx/media3/common/Format;
|
|
|
|
.line 532
|
|
iget-wide v8, v1, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->startTimeUs:J
|
|
|
|
sub-long/2addr v8, p1
|
|
|
|
iget v1, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->playbackSpeed:F
|
|
|
|
.line 534
|
|
invoke-static {v8, v9, v1}, Landroidx/media3/common/util/Util;->getPlayoutDurationForMediaDuration(JF)J
|
|
|
|
move-result-wide v8
|
|
|
|
cmp-long v1, v8, v6
|
|
|
|
if-ltz v1, :cond_4
|
|
|
|
.line 535
|
|
iget v1, v4, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
iget v5, v0, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
if-ge v1, v5, :cond_4
|
|
|
|
iget v1, v4, Landroidx/media3/common/Format;->height:I
|
|
|
|
const/4 v5, -0x1
|
|
|
|
if-eq v1, v5, :cond_4
|
|
|
|
iget v1, v4, Landroidx/media3/common/Format;->height:I
|
|
|
|
iget v8, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->maxHeightToDiscard:I
|
|
|
|
if-gt v1, v8, :cond_4
|
|
|
|
iget v1, v4, Landroidx/media3/common/Format;->width:I
|
|
|
|
if-eq v1, v5, :cond_4
|
|
|
|
iget v1, v4, Landroidx/media3/common/Format;->width:I
|
|
|
|
iget v5, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->maxWidthToDiscard:I
|
|
|
|
if-gt v1, v5, :cond_4
|
|
|
|
iget v1, v4, Landroidx/media3/common/Format;->height:I
|
|
|
|
iget v4, v0, Landroidx/media3/common/Format;->height:I
|
|
|
|
if-ge v1, v4, :cond_4
|
|
|
|
return v3
|
|
|
|
:cond_4
|
|
add-int/lit8 v3, v3, 0x1
|
|
|
|
goto :goto_1
|
|
|
|
:cond_5
|
|
return v2
|
|
.end method
|
|
|
|
.method public getLatestBitrateEstimate()J
|
|
.locals 2
|
|
|
|
iget-wide v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->latestBitrateEstimate:J
|
|
|
|
return-wide v0
|
|
.end method
|
|
|
|
.method protected getMinDurationToRetainAfterDiscardUs()J
|
|
.locals 2
|
|
|
|
iget-wide v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->minDurationToRetainAfterDiscardUs:J
|
|
|
|
return-wide v0
|
|
.end method
|
|
|
|
.method public getSelectedIndex()I
|
|
.locals 0
|
|
|
|
iget p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->selectedIndex:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public getSelectionData()Ljava/lang/Object;
|
|
.locals 0
|
|
|
|
const/4 p0, 0x0
|
|
|
|
return-object p0
|
|
.end method
|
|
|
|
.method public getSelectionReason()I
|
|
.locals 0
|
|
|
|
iget p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->reason:I
|
|
|
|
return p0
|
|
.end method
|
|
|
|
.method public onPlaybackSpeed(F)V
|
|
.locals 0
|
|
|
|
iput p1, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->playbackSpeed:F
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.method protected shouldEvaluateQueueSize(JLjava/util/List;)Z
|
|
.locals 4
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"(J",
|
|
"Ljava/util/List<",
|
|
"+",
|
|
"Landroidx/media3/exoplayer/source/chunk/MediaChunk;",
|
|
">;)Z"
|
|
}
|
|
.end annotation
|
|
|
|
iget-wide v0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMs:J
|
|
|
|
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
|
|
|
|
cmp-long v2, v0, v2
|
|
|
|
if-eqz v2, :cond_1
|
|
|
|
sub-long/2addr p1, v0
|
|
|
|
const-wide/16 v0, 0x3e8
|
|
|
|
cmp-long p1, p1, v0
|
|
|
|
if-gez p1, :cond_1
|
|
|
|
.line 578
|
|
invoke-interface {p3}, Ljava/util/List;->isEmpty()Z
|
|
|
|
move-result p1
|
|
|
|
if-nez p1, :cond_0
|
|
|
|
invoke-static {p3}, Lcom/google/common/collect/Iterables;->getLast(Ljava/lang/Iterable;)Ljava/lang/Object;
|
|
|
|
move-result-object p1
|
|
|
|
check-cast p1, Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
iget-object p0, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->lastBufferEvaluationMediaChunk:Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
invoke-virtual {p1, p0}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
|
|
|
|
move-result p0
|
|
|
|
if-nez p0, :cond_0
|
|
|
|
goto :goto_0
|
|
|
|
:cond_0
|
|
const/4 p0, 0x0
|
|
|
|
goto :goto_1
|
|
|
|
:cond_1
|
|
:goto_0
|
|
const/4 p0, 0x1
|
|
|
|
:goto_1
|
|
return p0
|
|
.end method
|
|
|
|
.method public updateSelectedTrack(JJJLjava/util/List;[Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;)V
|
|
.locals 5
|
|
.annotation system Ldalvik/annotation/Signature;
|
|
value = {
|
|
"(JJJ",
|
|
"Ljava/util/List<",
|
|
"+",
|
|
"Landroidx/media3/exoplayer/source/chunk/MediaChunk;",
|
|
">;[",
|
|
"Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;",
|
|
")V"
|
|
}
|
|
.end annotation
|
|
|
|
iget-object p1, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->clock:Landroidx/media3/common/util/Clock;
|
|
|
|
.line 443
|
|
invoke-interface {p1}, Landroidx/media3/common/util/Clock;->elapsedRealtime()J
|
|
|
|
move-result-wide p1
|
|
|
|
.line 444
|
|
invoke-direct {p0, p8, p7}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getNextChunkDurationUs([Landroidx/media3/exoplayer/source/chunk/MediaChunkIterator;Ljava/util/List;)J
|
|
|
|
move-result-wide v0
|
|
|
|
iget p8, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->reason:I
|
|
|
|
if-nez p8, :cond_0
|
|
|
|
const/4 p3, 0x1
|
|
|
|
iput p3, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->reason:I
|
|
|
|
.line 449
|
|
invoke-direct {p0, p1, p2, v0, v1}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->determineIdealSelectedIndex(JJ)I
|
|
|
|
move-result p1
|
|
|
|
iput p1, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->selectedIndex:I
|
|
|
|
return-void
|
|
|
|
:cond_0
|
|
iget v2, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->selectedIndex:I
|
|
|
|
.line 456
|
|
invoke-interface {p7}, Ljava/util/List;->isEmpty()Z
|
|
|
|
move-result v3
|
|
|
|
const/4 v4, -0x1
|
|
|
|
if-eqz v3, :cond_1
|
|
|
|
move v3, v4
|
|
|
|
goto :goto_0
|
|
|
|
:cond_1
|
|
invoke-static {p7}, Lcom/google/common/collect/Iterables;->getLast(Ljava/lang/Iterable;)Ljava/lang/Object;
|
|
|
|
move-result-object v3
|
|
|
|
check-cast v3, Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
iget-object v3, v3, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->trackFormat:Landroidx/media3/common/Format;
|
|
|
|
invoke-virtual {p0, v3}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->indexOf(Landroidx/media3/common/Format;)I
|
|
|
|
move-result v3
|
|
|
|
:goto_0
|
|
if-eq v3, v4, :cond_2
|
|
|
|
.line 459
|
|
invoke-static {p7}, Lcom/google/common/collect/Iterables;->getLast(Ljava/lang/Iterable;)Ljava/lang/Object;
|
|
|
|
move-result-object p7
|
|
|
|
check-cast p7, Landroidx/media3/exoplayer/source/chunk/MediaChunk;
|
|
|
|
iget p8, p7, Landroidx/media3/exoplayer/source/chunk/MediaChunk;->trackSelectionReason:I
|
|
|
|
move v2, v3
|
|
|
|
.line 461
|
|
:cond_2
|
|
invoke-direct {p0, p1, p2, v0, v1}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->determineIdealSelectedIndex(JJ)I
|
|
|
|
move-result p7
|
|
|
|
if-eq p7, v2, :cond_4
|
|
|
|
.line 463
|
|
invoke-virtual {p0, v2, p1, p2}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->isTrackExcluded(IJ)Z
|
|
|
|
move-result p1
|
|
|
|
if-nez p1, :cond_4
|
|
|
|
.line 465
|
|
invoke-virtual {p0, v2}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getFormat(I)Landroidx/media3/common/Format;
|
|
|
|
move-result-object p1
|
|
|
|
.line 466
|
|
invoke-virtual {p0, p7}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->getFormat(I)Landroidx/media3/common/Format;
|
|
|
|
move-result-object p2
|
|
|
|
.line 468
|
|
invoke-direct {p0, p5, p6, v0, v1}, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->minDurationForQualityIncreaseUs(JJ)J
|
|
|
|
move-result-wide p5
|
|
|
|
.line 469
|
|
iget v0, p2, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
iget v1, p1, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
if-le v0, v1, :cond_3
|
|
|
|
cmp-long p5, p3, p5
|
|
|
|
if-gez p5, :cond_3
|
|
|
|
goto :goto_1
|
|
|
|
.line 474
|
|
:cond_3
|
|
iget p2, p2, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
iget p1, p1, Landroidx/media3/common/Format;->bitrate:I
|
|
|
|
if-ge p2, p1, :cond_4
|
|
|
|
iget-wide p1, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->maxDurationForQualityDecreaseUs:J
|
|
|
|
cmp-long p1, p3, p1
|
|
|
|
if-ltz p1, :cond_4
|
|
|
|
:goto_1
|
|
move p7, v2
|
|
|
|
:cond_4
|
|
if-ne p7, v2, :cond_5
|
|
|
|
goto :goto_2
|
|
|
|
:cond_5
|
|
const/4 p8, 0x3
|
|
|
|
:goto_2
|
|
iput p8, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->reason:I
|
|
|
|
iput p7, p0, Landroidx/media3/exoplayer/trackselection/AdaptiveTrackSelection;->selectedIndex:I
|
|
|
|
return-void
|
|
.end method
|