Package com.castlabs.android.player

# Interface PlayerPlugin

All Known Implementing Classes:
  `AmLogicPlayerPlugin`, `DashPlayerPlugin`, `HlsPlayerPlugin`, `IPTVPlayerPlugin`

public interface PlayerPlugin
A plugin interface that is used to initialize player instances for different content formats such as HLS, DASH, or SmoothStreaming.

Instances of this plugin can be registered with `PlayerSDK.register(PlayerPlugin)`.

Since:
  3.0.0

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static class`
  `PlayerPlugin.DrmInitDataProvider<T extends com.google.android.exoplayer2.offline.FilterableManifest>`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `PlayerPlugin.DrmInitDataProvider`
  `createDrmInitDataProvider(ManifestModifier manifestModifier)`
  `com.google.android.exoplayer2.source.MediaSource`
  `createMediaSource(PlayerConfig config, PlayerController playerController)`
  Create the content media source based on the supplied path and the `PlayerController`
  `List<TrackRendererPlugin.TrackRendererContainer>`
  `createRendererContainers(PlayerController playerController, DrmConfiguration drmConfiguration)`
  Create the list of renderer containers based on the supplied `DrmConfiguration` and `PlayerController`
  `com.google.android.exoplayer2.RendererCapabilities[]`
  `getRendererCapabilities(Context context, DrmConfiguration drmConfiguration)`
  Retrieve array of supported RendererCapabilities.
  `boolean`
  `isFormatSupported(int format, DrmConfiguration configuration)`

- ## Method Details

  - ### isFormatSupported

    boolean isFormatSupported(int format, @Nullable DrmConfiguration configuration)
    Parameters:
      `format` - the content format (one of `SdkConsts.CONTENT_TYPE_UNKNOWN`, `SdkConsts.CONTENT_TYPE_DASH`, `SdkConsts.CONTENT_TYPE_HLS`, `SdkConsts.CONTENT_TYPE_SMOOTHSTREAMING`, or `SdkConsts.CONTENT_TYPE_MP4`)
      `configuration` - the drm configuration
    Returns:
      true if this plugin can create a player for the given content format and drm configuration

  - ### getRendererCapabilities

    @Nullable com.google.android.exoplayer2.RendererCapabilities[] getRendererCapabilities(@NonNull Context context, @Nullable DrmConfiguration drmConfiguration)
    Retrieve array of supported RendererCapabilities.
    Parameters:
      `context` - the context
      `drmConfiguration` - the drm configuration
    Returns:
      RendererCapabilities array supported by the player plugin or null

  - ### createDrmInitDataProvider

    @Nullable PlayerPlugin.DrmInitDataProvider createDrmInitDataProvider(ManifestModifier manifestModifier)

  - ### createMediaSource

    @NonNull com.google.android.exoplayer2.source.MediaSource createMediaSource(@NonNull PlayerConfig config, @NonNull PlayerController playerController)
    Create the content media source based on the supplied path and the `PlayerController`
    Parameters:
      `config` - The `PlayerConfig`
      `playerController` - The `PlayerController` instance
    Returns:
      The media source

  - ### createRendererContainers

    @NonNull List<TrackRendererPlugin.TrackRendererContainer> createRendererContainers(@NonNull PlayerController playerController, @Nullable DrmConfiguration drmConfiguration) throws CastlabsPlayerException
    Create the list of renderer containers based on the supplied `DrmConfiguration` and `PlayerController`
    Parameters:
      `playerController` - The `PlayerController` instance
      `drmConfiguration` - The `DrmConfiguration`, might be `null`
    Returns:
      The list of renderer containers
    Throws:
      `CastlabsPlayerException` - when render containers can not be created or an error occurs