Package com.castlabs.sdk.thumbs
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
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interface
Because loading Thumbnails is usually an asynchronous process, this callback interface needs to be implemented to receive the results when a thumbnail was requested.static final class
The result provided by the Future returned when requesting a Thumbnail through one of thegetThumbnail(long, int, long)
orgetThumbnail(long, int, long)
APIs -
Method Summary
Modifier and TypeMethodDescriptionvoid
Cancels any queued Thumbnail Requests.void
destroy()
Free up all the resources, meaning this provider will not be used anymoregetDownloadableResources
(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.default Future<ThumbnailProvider.ThumbnailResult>
getThumbnail
(long positionUs, int thumbnailIndex) Load the exact thumbnail for the given position and return aFuture
linked to the operation.getThumbnail
(long positionUs, int thumbnailIndex, long positionToleranceUs) Load the thumbnail for the given position and return aFuture
linked to the operation.default void
getThumbnail
(long positionUs, ThumbnailProvider.Callback callback, int thumbnailIndex) Load the exact thumbnail for the given position and return it through the provided callback.void
getThumbnail
(long positionUs, ThumbnailProvider.Callback callback, int thumbnailIndex, long positionToleranceUs) Load the thumbnail for the given position and return it through the provided callback.void
setLoadingStrategy
(LoadingStrategy loadingStrategy) Updates theLoadingStrategy
of this provider.
-
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 microsecondscallback
- The callback that will be triggered once data are availablethumbnailIndex
- 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 aFuture
linked to the operation.Same as calling
getThumbnail(long, int, long)
with a tolerance of 0- Parameters:
positionUs
- The position in microsecondsthumbnailIndex
- 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 aFuture
linked to the operation.- Parameters:
positionUs
- The position in microsecondsthumbnailIndex
- Position of the Thumbnail relative to its timestamppositionToleranceUs
- 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 microsecondscallback
- The callback that will be triggered once data are availablethumbnailIndex
- Position of the Thumbnail relative to its timestamppositionToleranceUs
- 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 downloadbasePath
- The base folder for this downloadbundle
- 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
Updates theLoadingStrategy
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.
-