# Package com.castlabs.android.player

- Interface Summary
  Interface | Description
  --- | ---
  AudioRendererListener | A listener that can be attached to the `PlayerController` to be informed about audio rendering events such as decoder initializations, format changes and frame drops.
  CatchupListener | Listener to get events related to the `catchup` feature.
  CLLibraryLoader.PostLoadAction | Register instances of this interface to call custom code triggered after all native libraries are loaded.
  ConfigurationProvider | Implementations of this interface allows to get updated configurations when needed.
  DrmLicenseLoader.Callback | The callback interface for license loader tasks
  ExtendedTrackSelector.EventListener | Interface which receives Track Selection-related callbacks.
  ExtendedTrackSelector.PlayerInfoProvider |
  ExternalSourceSelector | The interface defines the source (CDN) fallback selection.
  FormatChangeListener | This interface will receive events whenever the downstream `Format`s change.
  InitialPositionProvider | Callback to define an initial playing position right after the `Timeline` is ready.
  IPlayerView | This interface describes the visual component of the video player.
  ManifestModifier<T extends com.google.android.exoplayer2.offline.FilterableManifest> | Allows to modify a manifest before it's used for extracting track info.
  MediaTrackEventListener |
  MetadataListener | You can use this listener to get callbacks about timed Meta-Data attached to a stream.
  PeriodChangedListener | PeriodChangedListener
  PeriodInfoProvider | Implementations of this interface allows to get additional information on the period being played.
  PlaybackStateStorage | Implementations of this interface offer the basic infrastructure to load and save instances of `PlayerConfig`
  PlayerControllerListener | This is a high level listener interface that provides callbacks for lifecycle events of the player controller.
  PlayerControllerPlugin | A plugin interface that can be used to create plugins that need access to the `PlayerController`.
  PlayerControllerPlugin.Component | Implementations of this component can be used to gain controlled access to a `PlayerController`.
  PlayerControllerPlugin.ComponentViewListener | Interface which allows `Components` to work with their Views.
  PlayerControllerPlugin.VisualComponent | Special type of `PlayerControllerPlugin.Component` which also happens to depend on a View.
  PlayerListener | This is a high level listener interface that provides callbacks for events from a video player.
  PlayerPlugin | A plugin interface that is used to initialize player instances for different content formats such as HLS, DASH, or SmoothStreaming.
  PlayerService.NotificationHandler | Implementation of the interface can receive notification intents from the `PlayerService`.
  PlayerViewLifecycleDelegate.LifecycleListener | Callback to receive delegated Lifecycle events.
  PlayerViewPlugin | A plugin interface that can be used to create plugins that need access to the `IPlayerView` or the `PlayerController` that is responsible for the playback lifecycle.
  PlayerViewPlugin.PlayerViewComponent | Implementations of this view component can be used to gain controlled access to a `IPlayerView` and its `PlayerController`.
  Playlist | Common Playlist interface.
  SingleControllerPlaylist.PlaylistListener | Playlist-related events listener.
  SourceSelector | Deprecated.
  StreamingEventListener | You can use this listener to get callbacks about current content downloads.
  TimelineChangedListener |
  TimelineListener | Deprecated. Use `TimelineChangedListener` or `PeriodChangedListener` instead
  TrackRendererPlugin | This plugin interface can be used to implement a track renderer integration.
  TrackRendererPlugin.TrackRendererBuilder | Implementations of the builder a responsible to create `Renderer` instances.
  TrackSelectionListener | This is a high level listener interface that provides callbacks for track selection events.
  VideoRendererListener | A listener that can be attached to the `PlayerController` to be informed about video rendering events such as decoder initializations, format changes and frame drops.

- Class Summary
  Class | Description
  --- | ---
  AbrConfiguration | The ABR configuration.
  AbrConfiguration.Builder | A builder for ABR configuration instances
  AbstractAudioRendererListener | Abstract implementation of the `AudioRendererListener`
  AbstractCatchupListener | Abstract implementation of `CatchupListener` with empty methods for convenience.
  AbstractPlayerControllerListener | Abstract implementation of the `PlayerControllerListener`.
  AbstractPlayerListener | Abstract implementation of the `PlayerListener`.
  AbstractStreamingEventListener | Abstract implementation of the `StreamingEventListener`.
  AbstractVideoRendererListener | Abstract implementation of the `VideoRendererListener`
  AmLogicPlayerPlugin |
  AudioAttributes | Attributes for audio playback.
  AudioAttributes.Builder | Builder for `AudioAttributes`.
  AudioCapabilitiesManager | Common access point to store and keep updated device audio capabilities.
  AudioTrackListener | This is an implementation of the `MediaTrackEventListener` and `AudioRendererEventListener` that is used to delegate events from the track renderer to the `PlayerListener` instances that are registered with the current `PlayerController`.
  BandwidthMeterWrapper | Wrapper implementation around the bandwidth meter.
  BasePlayerModelBuilder | Helper class that takes care of the track renderer creation using the registered `TrackRendererPlugin` plugins.
  BufferConfiguration | Container object that stores the buffer configuration.
  BufferConfiguration.Builder |
  CastlabsBandwidthMeter | This class is a `TransferListener` receiving transfer progress and providing bandwidth metering via common ABR `BandwidthMeter` and Exo `BandwidthMeter` interfaces.
  CastlabsBandwidthMeter.Builder | Builder for a bandwidth meter.
  CatchupConfiguration | Represents a catchup configuration.
  CatchupConfiguration.Builder | Builder for a `CatchupConfiguration`.
  Chapter | Basic chapter model that consists of the chapter position, a title, and an image URL.
  ClearkeyTrackRendererBuilder |
  ClearTrackRendererPlugin | A renderer plugin that supports audio and video tracks that are not encrypted
  CLLibraryLoader | The library loader class is a class that provides static methods to register native libraries that will be loaded on request.
  CustomUtcTimingElement | Represents a UTCTiming element specifying how the client should synchronize its clock with the server.
  DashDescriptor | A Dash descriptor.
  DefaultMediaCodecSelector | The implementation of MediaCodecSelector allowing to find the decoder based on mimetype and secure flag as well as on codecs string.
  DefaultPlayerPlugin | *Internal* plugin that registers the default player implementations
  DefaultTrackTypeProvider | Default implementation of `TrackTypeProvider` with the video tracks separated according to the following video resolutions: SD, HD or UHD.
  DisplayInfo | Wraps information about currently connected displays.
  DrmKeyStorage |
  DrmLicenseLoader | Use the `DrmLicenseLoader.Builder` to create instances of the license loader.
  DrmLicenseLoader.Builder | Use this builder class to generate new instances of the `DrmLicenseLoader`.
  ExoSubtitlesRendererPlugin | Plugin which exposes a TrackRenderer for the default Exoplayer subtitles.
  ExoSubtitlesRendererPlugin.ExoSubtitleComponent |
  ExtendedMediaCodecVideoTrackRenderer | Extension of `MediaCodecVideoRenderer` to add customizations and extensions.
  ExtendedTrackSelector |
  ExternalSourceSelector.SourceData | Source (CDN) data container
  HlsClearKeyCache | Cache for `Drm.Clearkey`.
  IPTVPlayerPlugin |
  LiveConfiguration | Configuration object that groups all relevant parameters related to live streaming.
  LiveConfiguration.Builder |
  LowLatencyProfile | Profile that groups all the relevant parameters related to low latency live streaming.
  LowLatencyProfile.Builder |
  MediaCodecInfo | Container class holding the media codec name associated with the mimetype
  MemoryHlsClearKeyCache | Cache for `Drm.Clearkey` which stores keys in memory.
  MPDParser | Extends the default ExoPlayer DASH Manifest parsers.
  PeriodInfoProvider.PeriodInfo |
  PlayerConfig | Object which represents a specific Player configuration.
  PlayerConfig.Builder | A Builder for `PlayerConfig`.
  PlayerController | This class allows you to control and manage the video player instance and receive feedback during playback.
  PlayerListeners | This class helps to manage a set of `PlayerListener`s and delegates to the listener methods.
  PlayerPlugin.DrmInitDataProvider<T extends com.google.android.exoplayer2.offline.FilterableManifest> |
  PlayerService | This class implements a bounded Android Service that can be used to start a `PlayerController` in a service, send the player to background to continue audio playback, and resume video playback from a background session.
  PlayerView | The CastLabs PlayerView is a custom view that provides the video playback surface.
  PlayerViewLifecycleDelegate | The default lifecycle delegate.
  PlayerViewLifecycleDelegate.ResumeConfiguration | Configuration object which will dictate the behaviour of the `PlayerController` whenever the enclosing
  PlayerViewLifecycleDelegate.ResumeConfiguration.Builder |
  PlayerViewPlugin.SingleViewPlayerViewComponent<ViewType extends View> | Helper class which extracts all the common logic in a `PlayerViewPlugin.PlayerViewComponent` in case it only operates on one single View.
  SingleControllerPlaylist | `Playlist` implementation.
  TrackIndexOverride |
  TrackRendererPlugin.TrackRendererContainer | The builder interface creates instances of this container that wraps the renderer instance and an optional view component.
  TrackTypeProvider | The implementations of this interface should provide the track types, track group types and their weights according to some desired model.
  TrickplayConfiguration | Container which groups several Trickplay (speedup) configuration.
  TrickplayConfiguration.Builder | `TrickplayConfiguration` Builder.
  VideoFilterConfiguration |
  VideoFilterConfiguration.Builder | `VideoFilterConfiguration` builder static inner class.
  VideoTrackListener | This is an implementation of the `VideoRendererEventListener` that is used to delegate events from the track renderer to the `PlayerListener` instances that are registered with the current `PlayerController`.
  VisualComponentProxy | VisualComponent whose task is to communicate a `PlayerControllerPlugin.ComponentViewListener` with the `PlayerControllerPlugin.Component` machinery.

- Enum Summary
  Enum | Description
  --- | ---
  CatchupConfiguration.TimeReference | Timing reference which will be used to calculate the thresholds of the CatchupConfiguration
  CatchupConfiguration.Type | Represents the catchup strategy.
  ExternalSourceSelector.SwitchType | The type of the source (CDN) fallback
  PlayerController.State | Represents states of the player backend.
  TrackRendererPlugin.Type | The different content types
  TrickplayConfiguration.SpeedupMode | Speedup mode to use during Trickplay

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  AbrConfiguration.AbrMethod |
  DashDescriptor.DescriptorType |
  PlayerController.TrackType |
  PlayerView.ScalingMode |
  PlayerView.SurfaceType |