MappingTrackSelector.smali
.class public abstract Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector;
.super Lcom/google/android/exoplayer2/trackselection/TrackSelector;
.source "MappingTrackSelector.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
}
.end annotation
# instance fields
.field private currentMappedTrackInfo:Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 1
.line 42
invoke-direct {p0}, Lcom/google/android/exoplayer2/trackselection/TrackSelector;-><init>()V
return-void
.end method
.method private static findRenderer([Lcom/google/android/exoplayer2/RendererCapabilities;Lcom/google/android/exoplayer2/source/TrackGroup;)I
.registers 9
.param p0, "rendererCapabilities" # [Lcom/google/android/exoplayer2/RendererCapabilities;
.param p1, "group" # Lcom/google/android/exoplayer2/source/TrackGroup;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 448
array-length v0, p0
.line 449
.local v0, "bestRendererIndex":I
const/4 v1, 0x0
.line 450
.local v1, "bestFormatSupportLevel":I
const/4 v2, 0x0
.local v2, "rendererIndex":I
:goto_3
array-length v3, p0
if-ge v2, v3, :cond_25
.line 451
aget-object v3, p0, v2
.line 452
.local v3, "rendererCapability":Lcom/google/android/exoplayer2/RendererCapabilities;
const/4 v4, 0x0
.local v4, "trackIndex":I
:goto_9
iget v5, p1, Lcom/google/android/exoplayer2/source/TrackGroup;->length:I
if-ge v4, v5, :cond_22
.line 453
invoke-virtual {p1, v4}, Lcom/google/android/exoplayer2/source/TrackGroup;->getFormat(I)Lcom/google/android/exoplayer2/Format;
move-result-object v5
invoke-interface {v3, v5}, Lcom/google/android/exoplayer2/RendererCapabilities;->supportsFormat(Lcom/google/android/exoplayer2/Format;)I
move-result v5
and-int/lit8 v5, v5, 0x7
.line 455
.local v5, "formatSupportLevel":I
if-le v5, v1, :cond_1f
.line 456
move v0, v2
.line 457
move v1, v5
.line 458
const/4 v6, 0x4
if-ne v1, v6, :cond_1f
.line 460
return v0
.line 452
.end local v5 # "formatSupportLevel":I
:cond_1f
add-int/lit8 v4, v4, 0x1
goto :goto_9
.line 450
.end local v3 # "rendererCapability":Lcom/google/android/exoplayer2/RendererCapabilities;
.end local v4 # "trackIndex":I
:cond_22
add-int/lit8 v2, v2, 0x1
goto :goto_3
.line 465
.end local v2 # "rendererIndex":I
:cond_25
return v0
.end method
.method private static getFormatSupport(Lcom/google/android/exoplayer2/RendererCapabilities;Lcom/google/android/exoplayer2/source/TrackGroup;)[I
.registers 5
.param p0, "rendererCapabilities" # Lcom/google/android/exoplayer2/RendererCapabilities;
.param p1, "group" # Lcom/google/android/exoplayer2/source/TrackGroup;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 480
iget v0, p1, Lcom/google/android/exoplayer2/source/TrackGroup;->length:I
new-array v0, v0, [I
.line 481
.local v0, "formatSupport":[I
const/4 v1, 0x0
.local v1, "i":I
:goto_5
iget v2, p1, Lcom/google/android/exoplayer2/source/TrackGroup;->length:I
if-ge v1, v2, :cond_16
.line 482
invoke-virtual {p1, v1}, Lcom/google/android/exoplayer2/source/TrackGroup;->getFormat(I)Lcom/google/android/exoplayer2/Format;
move-result-object v2
invoke-interface {p0, v2}, Lcom/google/android/exoplayer2/RendererCapabilities;->supportsFormat(Lcom/google/android/exoplayer2/Format;)I
move-result v2
aput v2, v0, v1
.line 481
add-int/lit8 v1, v1, 0x1
goto :goto_5
.line 484
.end local v1 # "i":I
:cond_16
return-object v0
.end method
.method private static getMixedMimeTypeAdaptationSupports([Lcom/google/android/exoplayer2/RendererCapabilities;)[I
.registers 4
.param p0, "rendererCapabilities" # [Lcom/google/android/exoplayer2/RendererCapabilities;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 498
array-length v0, p0
new-array v0, v0, [I
.line 499
.local v0, "mixedMimeTypeAdaptationSupport":[I
const/4 v1, 0x0
.local v1, "i":I
:goto_4
array-length v2, v0
if-ge v1, v2, :cond_12
.line 500
aget-object v2, p0, v1
invoke-interface {v2}, Lcom/google/android/exoplayer2/RendererCapabilities;->supportsMixedMimeTypeAdaptation()I
move-result v2
aput v2, v0, v1
.line 499
add-int/lit8 v1, v1, 0x1
goto :goto_4
.line 502
.end local v1 # "i":I
:cond_12
return-object v0
.end method
# virtual methods
.method public final getCurrentMappedTrackInfo()Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
.registers 2
.line 322
iget-object v0, p0, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector;->currentMappedTrackInfo:Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
return-object v0
.end method
.method public final onSelectionActivated(Ljava/lang/Object;)V
.registers 3
.param p1, "info" # Ljava/lang/Object;
.line 329
move-object v0, p1
check-cast v0, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
iput-object v0, p0, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector;->currentMappedTrackInfo:Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
.line 330
return-void
.end method
.method protected abstract selectTracks(Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;[[[I[I)Landroid/util/Pair;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;",
"[[[I[I)",
"Landroid/util/Pair<",
"[",
"Lcom/google/android/exoplayer2/RendererConfiguration;",
"[",
"Lcom/google/android/exoplayer2/trackselection/TrackSelection;",
">;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.end method
.method public final selectTracks([Lcom/google/android/exoplayer2/RendererCapabilities;Lcom/google/android/exoplayer2/source/TrackGroupArray;Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;Lcom/google/android/exoplayer2/Timeline;)Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
.registers 21
.param p1, "rendererCapabilities" # [Lcom/google/android/exoplayer2/RendererCapabilities;
.param p2, "trackGroups" # Lcom/google/android/exoplayer2/source/TrackGroupArray;
.param p3, "periodId" # Lcom/google/android/exoplayer2/source/MediaSource$MediaPeriodId;
.param p4, "timeline" # Lcom/google/android/exoplayer2/Timeline;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 342
move-object/from16 v0, p1
move-object/from16 v1, p2
array-length v2, v0
add-int/lit8 v2, v2, 0x1
new-array v2, v2, [I
.line 343
.local v2, "rendererTrackGroupCounts":[I
array-length v3, v0
add-int/lit8 v3, v3, 0x1
new-array v3, v3, [[Lcom/google/android/exoplayer2/source/TrackGroup;
.line 344
.local v3, "rendererTrackGroups":[[Lcom/google/android/exoplayer2/source/TrackGroup;
array-length v4, v0
add-int/lit8 v4, v4, 0x1
new-array v4, v4, [[[I
.line 345
.local v4, "rendererFormatSupports":[[[I
const/4 v5, 0x0
.local v5, "i":I
:goto_14
array-length v6, v3
if-ge v5, v6, :cond_26
.line 346
iget v6, v1, Lcom/google/android/exoplayer2/source/TrackGroupArray;->length:I
new-array v6, v6, [Lcom/google/android/exoplayer2/source/TrackGroup;
aput-object v6, v3, v5
.line 347
iget v6, v1, Lcom/google/android/exoplayer2/source/TrackGroupArray;->length:I
new-array v6, v6, [[I
aput-object v6, v4, v5
.line 345
add-int/lit8 v5, v5, 0x1
goto :goto_14
.line 351
.end local v5 # "i":I
:cond_26
nop
.line 352
invoke-static/range {p1 .. p1}, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector;->getMixedMimeTypeAdaptationSupports([Lcom/google/android/exoplayer2/RendererCapabilities;)[I
move-result-object v11
.line 356
.local v11, "rendererMixedMimeTypeAdaptationSupports":[I
const/4 v5, 0x0
.local v5, "groupIndex":I
:goto_2c
iget v6, v1, Lcom/google/android/exoplayer2/source/TrackGroupArray;->length:I
if-ge v5, v6, :cond_5a
.line 357
invoke-virtual {v1, v5}, Lcom/google/android/exoplayer2/source/TrackGroupArray;->get(I)Lcom/google/android/exoplayer2/source/TrackGroup;
move-result-object v6
.line 359
.local v6, "group":Lcom/google/android/exoplayer2/source/TrackGroup;
invoke-static {v0, v6}, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector;->findRenderer([Lcom/google/android/exoplayer2/RendererCapabilities;Lcom/google/android/exoplayer2/source/TrackGroup;)I
move-result v7
.line 361
.local v7, "rendererIndex":I
array-length v8, v0
if-ne v7, v8, :cond_40
iget v8, v6, Lcom/google/android/exoplayer2/source/TrackGroup;->length:I
new-array v8, v8, [I
goto :goto_46
:cond_40
aget-object v8, v0, v7
.line 362
invoke-static {v8, v6}, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector;->getFormatSupport(Lcom/google/android/exoplayer2/RendererCapabilities;Lcom/google/android/exoplayer2/source/TrackGroup;)[I
move-result-object v8
:goto_46
nop
.line 364
.local v8, "rendererFormatSupport":[I
aget v9, v2, v7
.line 365
.local v9, "rendererTrackGroupCount":I
aget-object v10, v3, v7
aput-object v6, v10, v9
.line 366
aget-object v10, v4, v7
aput-object v8, v10, v9
.line 367
aget v10, v2, v7
add-int/lit8 v10, v10, 0x1
aput v10, v2, v7
.line 356
.end local v6 # "group":Lcom/google/android/exoplayer2/source/TrackGroup;
.end local v7 # "rendererIndex":I
.end local v8 # "rendererFormatSupport":[I
.end local v9 # "rendererTrackGroupCount":I
add-int/lit8 v5, v5, 0x1
goto :goto_2c
.line 371
.end local v5 # "groupIndex":I
:cond_5a
array-length v5, v0
new-array v12, v5, [Lcom/google/android/exoplayer2/source/TrackGroupArray;
.line 372
.local v12, "rendererTrackGroupArrays":[Lcom/google/android/exoplayer2/source/TrackGroupArray;
array-length v5, v0
new-array v13, v5, [I
.line 373
.local v13, "rendererTrackTypes":[I
const/4 v5, 0x0
.local v5, "i":I
:goto_61
array-length v6, v0
if-ge v5, v6, :cond_8a
.line 374
aget v6, v2, v5
.line 375
.local v6, "rendererTrackGroupCount":I
new-instance v7, Lcom/google/android/exoplayer2/source/TrackGroupArray;
aget-object v8, v3, v5
.line 377
invoke-static {v8, v6}, Lcom/google/android/exoplayer2/util/Util;->nullSafeArrayCopy([Ljava/lang/Object;I)[Ljava/lang/Object;
move-result-object v8
check-cast v8, [Lcom/google/android/exoplayer2/source/TrackGroup;
invoke-direct {v7, v8}, Lcom/google/android/exoplayer2/source/TrackGroupArray;-><init>([Lcom/google/android/exoplayer2/source/TrackGroup;)V
aput-object v7, v12, v5
.line 378
aget-object v7, v4, v5
.line 379
invoke-static {v7, v6}, Lcom/google/android/exoplayer2/util/Util;->nullSafeArrayCopy([Ljava/lang/Object;I)[Ljava/lang/Object;
move-result-object v7
check-cast v7, [[I
aput-object v7, v4, v5
.line 380
aget-object v7, v0, v5
invoke-interface {v7}, Lcom/google/android/exoplayer2/RendererCapabilities;->getTrackType()I
move-result v7
aput v7, v13, v5
.line 373
.end local v6 # "rendererTrackGroupCount":I
add-int/lit8 v5, v5, 0x1
goto :goto_61
.line 384
.end local v5 # "i":I
:cond_8a
array-length v5, v0
aget v14, v2, v5
.line 385
.local v14, "unmappedTrackGroupCount":I
new-instance v10, Lcom/google/android/exoplayer2/source/TrackGroupArray;
array-length v5, v0
aget-object v5, v3, v5
.line 387
invoke-static {v5, v14}, Lcom/google/android/exoplayer2/util/Util;->nullSafeArrayCopy([Ljava/lang/Object;I)[Ljava/lang/Object;
move-result-object v5
check-cast v5, [Lcom/google/android/exoplayer2/source/TrackGroup;
invoke-direct {v10, v5}, Lcom/google/android/exoplayer2/source/TrackGroupArray;-><init>([Lcom/google/android/exoplayer2/source/TrackGroup;)V
.line 391
.local v10, "unmappedTrackGroupArray":Lcom/google/android/exoplayer2/source/TrackGroupArray;
new-instance v15, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
move-object v5, v15
move-object v6, v13
move-object v7, v12
move-object v8, v11
move-object v9, v4
invoke-direct/range {v5 .. v10}, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;-><init>([I[Lcom/google/android/exoplayer2/source/TrackGroupArray;[I[[[ILcom/google/android/exoplayer2/source/TrackGroupArray;)V
.line 399
.local v5, "mappedTrackInfo":Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;
nop
.line 400
move-object/from16 v6, p0
invoke-virtual {v6, v5, v4, v11}, Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector;->selectTracks(Lcom/google/android/exoplayer2/trackselection/MappingTrackSelector$MappedTrackInfo;[[[I[I)Landroid/util/Pair;
move-result-object v7
.line 402
.local v7, "result":Landroid/util/Pair;, "Landroid/util/Pair<[Lcom/google/android/exoplayer2/RendererConfiguration;[Lcom/google/android/exoplayer2/trackselection/TrackSelection;>;"
new-instance v8, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;
iget-object v9, v7, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v9, [Lcom/google/android/exoplayer2/RendererConfiguration;
iget-object v15, v7, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v15, [Lcom/google/android/exoplayer2/trackselection/TrackSelection;
invoke-direct {v8, v9, v15, v5}, Lcom/google/android/exoplayer2/trackselection/TrackSelectorResult;-><init>([Lcom/google/android/exoplayer2/RendererConfiguration;[Lcom/google/android/exoplayer2/trackselection/TrackSelection;Ljava/lang/Object;)V
return-object v8
.end method