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