Class IPTVPlayerPlugin

java.lang.Object
com.castlabs.android.player.IPTVPlayerPlugin
All Implemented Interfaces:
PlayerPlugin

public class IPTVPlayerPlugin extends Object implements PlayerPlugin
A player plugin implementation for IPTV content. This plugin handles the creation and configuration of media sources and renderers for IPTV streams, including support for CAS (Conditional Access System) and DRM.
  • Constructor Details

    • IPTVPlayerPlugin

      public IPTVPlayerPlugin(boolean playsClearWithExo)
      Creates a new IPTV player plugin with the specified clear playback mode.
      Parameters:
      playsClearWithExo - Whether to use ExoPlayer for clear content playback
    • IPTVPlayerPlugin

      public IPTVPlayerPlugin()
      Creates a new IPTV player plugin with default settings.
    • IPTVPlayerPlugin

      public IPTVPlayerPlugin(com.google.android.exoplayer2.analytics.IptvAnalyticsListener.EventDispatcher dispatcher)
      Creates a new IPTV player plugin with the specified event dispatcher.
      Parameters:
      dispatcher - The event dispatcher to use for analytics events
  • Method Details

    • setDispatcher

      public void setDispatcher(com.google.android.exoplayer2.analytics.IptvAnalyticsListener.EventDispatcher dispatcher)
      Sets the event dispatcher for analytics events.
      Parameters:
      dispatcher - The event dispatcher to use
    • setRtpQueueSizeInPackets

      public void setRtpQueueSizeInPackets(int rtpQueueSizeInPackets)
      Sets the RTP queue size in packets.
      Parameters:
      rtpQueueSizeInPackets - The number of packets to buffer in the RTP queue
    • setDiscontiniuityThreshold

      public void setDiscontiniuityThreshold(long discontinuityThreshold)
      Sets the discontinuity threshold for stream synchronization.
      Parameters:
      discontinuityThreshold - The threshold in microseconds
    • setIgnoreDataTillVideoKeyframe

      public void setIgnoreDataTillVideoKeyframe(boolean ignoreDataTillVideoKeyframe)
      Sets whether to ignore data until a video keyframe is received.
      Parameters:
      ignoreDataTillVideoKeyframe - true to ignore data until keyframe, false otherwise
    • removeWVCASLicense

      public void removeWVCASLicense(String lic)
      Removes a Widevine CAS license.
      Parameters:
      lic - The license to remove
    • isFormatSupported

      public boolean isFormatSupported(int format, @Nullable DrmConfiguration configuration)
      Description copied from interface: PlayerPlugin
      Check if this plugin can create a player for the given content format and DRM configuration.
      Specified by:
      isFormatSupported in interface PlayerPlugin
      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 public com.google.android.exoplayer2.RendererCapabilities[] getRendererCapabilities(@NonNull Context context, @Nullable DrmConfiguration drmConfiguration)
      Description copied from interface: PlayerPlugin
      Retrieve array of supported RendererCapabilities.
      Specified by:
      getRendererCapabilities in interface PlayerPlugin
      Parameters:
      context - the context
      drmConfiguration - the drm configuration
      Returns:
      RendererCapabilities array supported by the player plugin or null
    • createDrmInitDataProvider

      @Nullable public PlayerPlugin.DrmInitDataProvider createDrmInitDataProvider(ManifestModifier manifestModifier)
      Description copied from interface: PlayerPlugin
      Specified by:
      createDrmInitDataProvider in interface PlayerPlugin
      Parameters:
      manifestModifier - The manifest modifier.
      Returns:
      The created PlayerPlugin.DrmInitDataProvider or null if not supported.
    • createMediaSource

      @RequiresApi(api=19) @NonNull public com.google.android.exoplayer2.source.MediaSource createMediaSource(@NonNull PlayerConfig config, boolean attachInitialPositionProvider, @NonNull PlayerController playerController)
      Description copied from interface: PlayerPlugin
      Create the content media source based on the supplied path and the PlayerController
      Specified by:
      createMediaSource in interface PlayerPlugin
      Parameters:
      config - The PlayerConfig
      attachInitialPositionProvider - Whether toattach the initial position provider to the media source
      playerController - The PlayerController instance
      Returns:
      The media source
    • createRendererContainers

      @NonNull public List<TrackRendererPlugin.TrackRendererContainer> createRendererContainers(@NonNull PlayerController playerController, @Nullable DrmConfiguration drmConfiguration) throws CastlabsPlayerException
      Description copied from interface: PlayerPlugin
      Create the list of renderer containers based on the supplied DrmConfiguration and PlayerController
      Specified by:
      createRendererContainers in interface PlayerPlugin
      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
    • setTransferListener

      public void setTransferListener(com.google.android.exoplayer2.upstream.TransferListener transferListener)
      Sets the transfer listener for monitoring data transfer events.
      Parameters:
      transferListener - The transfer listener to use