Interface ThumbnailProvider

All Known Subinterfaces:
StandaloneThumbnailProvider
All Known Implementing Classes:
BifThumbnailProvider, JpgThumbnailProvider, VttThumbnailProvider

public interface ThumbnailProvider
Implementations of this interface provide thumbnails for positions in the current track.
Since:
4.0.0
  • Method Details

    • getThumbnail

      default void getThumbnail(long positionUs, ThumbnailProvider.Callback callback, @ThumbnailIndex int thumbnailIndex)
      Load the exact thumbnail for the given position and return it through the provided callback.

      Same as calling getThumbnail(long, Callback, int, long) with a tolerance of 0

      Parameters:
      positionUs - The position in microseconds
      callback - The callback that will be triggered once data are available
      thumbnailIndex - Position of the Thumbnail relative to its timestamp
    • getThumbnail

      default Future<ThumbnailProvider.ThumbnailResult> getThumbnail(long positionUs, @ThumbnailIndex int thumbnailIndex)
      Load the exact thumbnail for the given position and return a Future linked to the operation.

      Same as calling getThumbnail(long, int, long) with a tolerance of 0

      Parameters:
      positionUs - The position in microseconds
      thumbnailIndex - Position of the Thumbnail relative to its timestamp
      Returns:
      a Future identifying the request
    • getThumbnail

      Future<ThumbnailProvider.ThumbnailResult> getThumbnail(long positionUs, @ThumbnailIndex int thumbnailIndex, long positionToleranceUs)
      Load the thumbnail for the given position and return a Future linked to the operation.
      Parameters:
      positionUs - The position in microseconds
      thumbnailIndex - Position of the Thumbnail relative to its timestamp
      positionToleranceUs - Maximum tolerance time between the time of the requested thumbnail and a potentially already-loaded thumbnail in the index. If a matching nearby thumbnail with data is found, it will be returned immediately. Otherwise the requested thumbnail will be scheduled for fetching. If 0, the exact thumbnail will always be returned, loading it if necessary.
      Returns:
      a Future identifying the request
    • getThumbnail

      void getThumbnail(long positionUs, ThumbnailProvider.Callback callback, @ThumbnailIndex int thumbnailIndex, long positionToleranceUs)
      Load the thumbnail for the given position and return it through the provided callback.
      Parameters:
      positionUs - The position in microseconds
      callback - The callback that will be triggered once data are available
      thumbnailIndex - Position of the Thumbnail relative to its timestamp
      positionToleranceUs - Maximum tolerance time between the time of the requested thumbnail and a potentially already-loaded thumbnail in the index. If a matching nearby thumbnail with data is found, it will be returned immediately. Otherwise the requested thumbnail will be scheduled for fetching. If 0, the exact thumbnail will always be returned, loading it if necessary.
    • getDownloadableResources

      @Nullable DownloadableResource[] getDownloadableResources(String remoteManifestUrl, File basePath, Bundle bundle)
      This methods is used to integrate a thumbnail provider with the downloader plugins and implementation can return an array of resources that should be fetched for offline playback.
      Parameters:
      remoteManifestUrl - The manifest URL of the remote manifest that is the source of this download
      basePath - The base folder for this download
      bundle - The bundle that was used to start the initiate the download
      Returns:
      Array of downloadable resources or null
    • destroy

      void destroy()
      Free up all the resources, meaning this provider will not be used anymore
    • setLoadingStrategy

      void setLoadingStrategy(@NonNull LoadingStrategy loadingStrategy)
      Updates the LoadingStrategy of this provider. If thumbnails are already loading, this might not have an immediate effect.
      Parameters:
      loadingStrategy - the loading strategy to set
    • cancelPendingRequests

      void cancelPendingRequests()
      Cancels any queued Thumbnail Requests. Requests currently processing won't be cancelled.