public interface

SequenceableLoader

 androidx.media3.exoplayer.source.SequenceableLoader

Subclasses:

CompositeSequenceableLoader, ClippingMediaPeriod, MediaPeriod, MaskingMediaPeriod, ChunkSampleStream<T>, FakeAdaptiveMediaPeriod, FakeMediaPeriod

Gradle dependencies

compile group: 'androidx.media3', name: 'media3-exoplayer', version: '1.5.0-alpha01'

  • groupId: androidx.media3
  • artifactId: media3-exoplayer
  • version: 1.5.0-alpha01

Artifact androidx.media3:media3-exoplayer:1.5.0-alpha01 it located at Google repository (https://maven.google.com/)

Overview

A loader that can proceed in approximate synchronization with other loaders.

Summary

Methods
public booleancontinueLoading(LoadingInfo loadingInfo)

Attempts to continue loading.

public longgetBufferedPositionUs()

Returns an estimate of the position up to which data is buffered.

public longgetNextLoadPositionUs()

Returns the next load time, or C.TIME_END_OF_SOURCE if loading has finished.

public booleanisLoading()

Returns whether the loader is currently loading.

public voidreevaluateBuffer(long positionUs)

Re-evaluates the buffer given the playback position.

Methods

public long getBufferedPositionUs()

Returns an estimate of the position up to which data is buffered.

Returns:

An estimate of the absolute position in microseconds up to which data is buffered, or C.TIME_END_OF_SOURCE if the data is fully buffered.

public long getNextLoadPositionUs()

Returns the next load time, or C.TIME_END_OF_SOURCE if loading has finished.

public boolean continueLoading(LoadingInfo loadingInfo)

Attempts to continue loading.

Parameters:

loadingInfo: The LoadingInfo when attempting to continue loading.

Returns:

True if progress was made, meaning that SequenceableLoader.getNextLoadPositionUs() will return a different value than prior to the call. False otherwise.

public boolean isLoading()

Returns whether the loader is currently loading.

public void reevaluateBuffer(long positionUs)

Re-evaluates the buffer given the playback position.

Re-evaluation may discard buffered media or cancel ongoing loads so that media can be re-buffered in a different quality.

Parameters:

positionUs: The current playback position in microseconds. If playback of this period has not yet started, the value will be the starting position in this period minus the duration of any media in previous periods still to be played.

Source

/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package androidx.media3.exoplayer.source;

import androidx.media3.common.C;
import androidx.media3.common.util.UnstableApi;
import androidx.media3.exoplayer.LoadingInfo;

// TODO: Clarify the requirements for implementing this interface [Internal ref: b/36250203].
/** A loader that can proceed in approximate synchronization with other loaders. */
@UnstableApi
public interface SequenceableLoader {

  /** A callback to be notified of {@link SequenceableLoader} events. */
  interface Callback<T extends SequenceableLoader> {

    /**
     * Called by the loader to indicate that it wishes for its {@link #continueLoading(LoadingInfo)}
     * method to be called when it can continue to load data. Called on the playback thread.
     */
    void onContinueLoadingRequested(T source);
  }

  /**
   * Returns an estimate of the position up to which data is buffered.
   *
   * @return An estimate of the absolute position in microseconds up to which data is buffered, or
   *     {@link C#TIME_END_OF_SOURCE} if the data is fully buffered.
   */
  long getBufferedPositionUs();

  /** Returns the next load time, or {@link C#TIME_END_OF_SOURCE} if loading has finished. */
  long getNextLoadPositionUs();

  /**
   * Attempts to continue loading.
   *
   * @param loadingInfo The {@link LoadingInfo} when attempting to continue loading.
   * @return True if progress was made, meaning that {@link #getNextLoadPositionUs()} will return a
   *     different value than prior to the call. False otherwise.
   */
  boolean continueLoading(LoadingInfo loadingInfo);

  /** Returns whether the loader is currently loading. */
  boolean isLoading();

  /**
   * Re-evaluates the buffer given the playback position.
   *
   * <p>Re-evaluation may discard buffered media or cancel ongoing loads so that media can be
   * re-buffered in a different quality.
   *
   * @param positionUs The current playback position in microseconds. If playback of this period has
   *     not yet started, the value will be the starting position in this period minus the duration
   *     of any media in previous periods still to be played.
   */
  void reevaluateBuffer(long positionUs);
}