Class DebugPlugin
PlayerSDK.register(Plugin)
to enable
additional debug logs.
Instances of the debug plugin can be created using the DebugPlugin.Builder
. The builder is also
used to configure the plugin and its logging capabilities. For example:
PlayerSDK.register(new DebugPlugin.Builder()
.logOpenBundle(true)
.get()
);
The debug plugin does also expose a rate limiter that can be enabled with
DebugPlugin.Builder.enableRateLimiter(boolean, long)
and accessed at runtime with
DebugPlugin debugPlugin = PlayerSDK.getPlugin(DebugPlugin.class);
if (debugPlugin != null) {
RateLimiter rateLimiter = debugPlugin.getRateLimiter();
}
The features of this plugin can be enabled or disabled after it registered to the
PlayerSDK
. For example to enable the rate limiter:
DebugPlugin debugPlugin = PlayerSDK.getPlugin(DebugPlugin.class);
if (debugPlugin != null) {
debugPlugin.setRateLimiterEnabled(true);
}
Or the debug overlay could be shown or hidden after registration. The position of
the debug overlay could also be changed. For example:
debugPlugin.setDebugOverlayPosition(debugOverlayPosition);
debugPlugin.hideDebugOverlay();
The debug overlay should be enabled before registration in order to show, hide or
change the position of it.- Since:
- 4.1.11
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Use this builder to create new instances of theDebugPlugin
.static enum
Enum representing the possible positions of the debug overlay. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
The ID of the debug overlay view.final boolean
If true, the debug overlay is enabled.final long
The initial rate limit in bits per second.final long
The threshold in microseconds for logging AV sync values.final long
The period in microseconds for logging mean and deviation of AV sync values.A list of request types to log.A list of response types to log. -
Method Summary
Modifier and TypeMethodDescriptiongetDebugComponent
(PlayerController playerController) Gets theDebugPlayerControllerComponent
associated with the givenPlayerController
.Getter for debugOverlayPositiongetId()
boolean
Getter for logAudioRendererEventsboolean
Getter for logDecoderCountersboolean
Getter for logDownloadCanceledboolean
Getter for logDownloadCompletedboolean
Getter for logDownloadErrorboolean
Getter for logDownloadStartedboolean
Getter for logDownloadUpstreamDiscardedboolean
Getter for logLoadControlboolean
Getter for logOpenBundleboolean
Getter for logPeriodInfoboolean
Getter for logSupportedDrmboolean
Getter for logTimingDebugInfoboolean
Getter for logTransferInfoboolean
Getter for logging video frame metadataboolean
Getter for logVideoRendererEventsstatic OverlayControllerComponent
getOverlayController
(PlayerController playerController) Gets theOverlayControllerComponent
associated with the givenPlayerController
.Returns the rate limiter if it was enabled or nullboolean
Getter for rateLimiterEnabledReturns the debug media codec adapter factory if it was enabled or null.void
setDebugOverlayPosition
(DebugPlugin.DebugOverlayPosition debugOverlayPosition) Setter for debugOverlayPosition.void
setLogAudioRendererEvents
(boolean logAudioRendererEvents) Setter for logAudioRendererEventsvoid
setLogDecoderCounters
(boolean logDecoderCounters) Setter for logDecoderCountersvoid
setLogDownloadCanceled
(boolean logDownloadCanceled) Setter for logDownloadCanceledvoid
setLogDownloadCompleted
(boolean logDownloadCompleted) Setter for logDownloadCompletedvoid
setLogDownloadError
(boolean logDownloadError) Setter for logDownloadErrorvoid
setLogDownloadStarted
(boolean logDownloadStarted) Setter for logDownloadStartedvoid
setLogDownloadUpstreamDiscarded
(boolean logDownloadUpstreamDiscarded) Setter for logDownloadUpstreamDiscardedvoid
setLogLoadControl
(boolean logLoadControl) Setter for logLoadControlvoid
setLogOpenBundle
(boolean logOpenBundle) Setter for logOpenBundlevoid
setLogPeriodInfo
(boolean logPeriodInfo) Setter for logPeriodInfovoid
setLogSupportedDrm
(boolean logSupportedDrm) Setter for logSupportedDrmvoid
setLogTimingDebugInfo
(boolean logTimingDebugInfo) Log timing info related to playback.void
setLogTransferInfo
(boolean logTransferInfo) Setter for logTransferInfovoid
setLogVideoFrameMetadata
(boolean logVideoFrameMetadata) Setter for logging video frame metadatavoid
setLogVideoRendererEvents
(boolean logVideoRendererEvents) Setter for logVideoRendererEventsvoid
setRateLimiterEnabled
(boolean rateLimiterEnabled) Setter for rateLimiterEnabledMethods inherited from class com.castlabs.android.Plugin
init, onRemotePlay
-
Field Details
-
DEBUG_OVERLAY_ID
@IdRes public static final int DEBUG_OVERLAY_IDThe ID of the debug overlay view. -
enableDebugOverlay
public final boolean enableDebugOverlayIf true, the debug overlay is enabled. -
initialRateLimitBps
public final long initialRateLimitBpsThe initial rate limit in bits per second. -
logAVSyncThresholdUs
public final long logAVSyncThresholdUsThe threshold in microseconds for logging AV sync values. -
logMeanAndDeviationPeriodUs
public final long logMeanAndDeviationPeriodUsThe period in microseconds for logging mean and deviation of AV sync values. -
logRequestTypes
A list of request types to log. -
logResponseTypes
A list of response types to log.
-
-
Method Details
-
getLogOpenBundle
public boolean getLogOpenBundle()Getter for logOpenBundle- Returns:
- logOpenBundle
-
setLogOpenBundle
public void setLogOpenBundle(boolean logOpenBundle) Setter for logOpenBundle- Parameters:
logOpenBundle
- Sets this value to the property
-
getLogDownloadStarted
public boolean getLogDownloadStarted()Getter for logDownloadStarted- Returns:
- logDownloadStarted
-
setLogDownloadStarted
public void setLogDownloadStarted(boolean logDownloadStarted) Setter for logDownloadStarted- Parameters:
logDownloadStarted
- Sets this value to the property
-
getLogDownloadCompleted
public boolean getLogDownloadCompleted()Getter for logDownloadCompleted- Returns:
- logDownloadCompleted
-
setLogDownloadCompleted
public void setLogDownloadCompleted(boolean logDownloadCompleted) Setter for logDownloadCompleted- Parameters:
logDownloadCompleted
- Sets this value to the property
-
getLogDownloadCanceled
public boolean getLogDownloadCanceled()Getter for logDownloadCanceled- Returns:
- logDownloadCanceled
-
setLogDownloadCanceled
public void setLogDownloadCanceled(boolean logDownloadCanceled) Setter for logDownloadCanceled- Parameters:
logDownloadCanceled
- Sets this value to the property
-
getLogDownloadUpstreamDiscarded
public boolean getLogDownloadUpstreamDiscarded()Getter for logDownloadUpstreamDiscarded- Returns:
- logDownloadUpstreamDiscarded
-
setLogDownloadUpstreamDiscarded
public void setLogDownloadUpstreamDiscarded(boolean logDownloadUpstreamDiscarded) Setter for logDownloadUpstreamDiscarded- Parameters:
logDownloadUpstreamDiscarded
- Sets this value to the property
-
getLogDownloadError
public boolean getLogDownloadError()Getter for logDownloadError- Returns:
- logDownloadError
-
setLogDownloadError
public void setLogDownloadError(boolean logDownloadError) Setter for logDownloadError- Parameters:
logDownloadError
- Sets this value to the property
-
getLogVideoRendererEvents
public boolean getLogVideoRendererEvents()Getter for logVideoRendererEvents- Returns:
- logVideoRendererEvents
-
setLogVideoRendererEvents
public void setLogVideoRendererEvents(boolean logVideoRendererEvents) Setter for logVideoRendererEventsNote the value set here will only take effect once the component overlay is created. If you want to change the value at runtime, you need to get an instance of
DebugPlayerControllerComponent
throughgetDebugComponent(PlayerController)
and callDebugPlayerControllerComponent.enableLogVideoRendererEvents()
orDebugPlayerControllerComponent.disableLogVideoRendererEvents()
.- Parameters:
logVideoRendererEvents
- Sets this value to the property
-
getLogAudioRendererEvents
public boolean getLogAudioRendererEvents()Getter for logAudioRendererEvents- Returns:
- logAudioRendererEvents
-
setLogAudioRendererEvents
public void setLogAudioRendererEvents(boolean logAudioRendererEvents) Setter for logAudioRendererEventsNote the value set here will only take effect once the component overlay is created. If you want to change the value at runtime, you need to get an instance of
DebugPlayerControllerComponent
throughgetDebugComponent(PlayerController)
and callDebugPlayerControllerComponent.enableLogAudioRendererEvents()
orDebugPlayerControllerComponent.disableLogAudioRendererEvents()
.- Parameters:
logAudioRendererEvents
- Sets this value to the property
-
getLogDecoderCounters
public boolean getLogDecoderCounters()Getter for logDecoderCounters- Returns:
- logDecoderCounters
-
setLogDecoderCounters
public void setLogDecoderCounters(boolean logDecoderCounters) Setter for logDecoderCountersNote the value set here will only take effect once the component overlay is created. If you want to change the value at runtime, you need to get an instance of
DebugPlayerControllerComponent
throughgetDebugComponent(PlayerController)
and callDebugPlayerControllerComponent.enableLogDecoderCounters()
orDebugPlayerControllerComponent.disableLogDecoderCounters()
.- Parameters:
logDecoderCounters
- Sets this value to the property
-
getLogTransferInfo
public boolean getLogTransferInfo()Getter for logTransferInfo- Returns:
- logTransferInfo
-
setLogTransferInfo
public void setLogTransferInfo(boolean logTransferInfo) Setter for logTransferInfoNote the value set here will only take effect once the component overlay is created. If you want to change the value at runtime, you need to get an instance of
DebugPlayerControllerComponent
throughgetDebugComponent(PlayerController)
and callDebugPlayerControllerComponent.enableLogTransferInfo()
orDebugPlayerControllerComponent.disableLogTransferInfo()
.- Parameters:
logTransferInfo
- Sets this value to the property
-
getLogTimingDebugInfo
public boolean getLogTimingDebugInfo()Getter for logTimingDebugInfo- Returns:
- whether timing info logging is enabled
-
setLogTimingDebugInfo
public void setLogTimingDebugInfo(boolean logTimingDebugInfo) Log timing info related to playback. This is particularly helpful for live streams- Parameters:
logTimingDebugInfo
- set whether to log timing info
-
getLogPeriodInfo
public boolean getLogPeriodInfo()Getter for logPeriodInfo- Returns:
- logPeriodInfo
-
setLogPeriodInfo
public void setLogPeriodInfo(boolean logPeriodInfo) Setter for logPeriodInfoNote the value set here will only take effect once the component overlay is created. If you want to change the value at runtime, you need to get an instance of
DebugPlayerControllerComponent
throughgetDebugComponent(PlayerController)
and callDebugPlayerControllerComponent.enableLogPeriodInfo()
orDebugPlayerControllerComponent.disableLogPeriodInfo()
.- Parameters:
logPeriodInfo
- Sets this value to the property
-
getLogSupportedDrm
public boolean getLogSupportedDrm()Getter for logSupportedDrm- Returns:
- logSupportedDrm
-
setLogSupportedDrm
public void setLogSupportedDrm(boolean logSupportedDrm) Setter for logSupportedDrm- Parameters:
logSupportedDrm
- Sets this value to the property
-
getLogLoadControl
public boolean getLogLoadControl()Getter for logLoadControl- Returns:
- logLoadControl
-
setLogLoadControl
public void setLogLoadControl(boolean logLoadControl) Setter for logLoadControlNote the value set here will only take effect once the component overlay is created. If you want to change the value at runtime, you need to get an instance of
DebugPlayerControllerComponent
throughgetDebugComponent(PlayerController)
and callDebugPlayerControllerComponent.enableLogLoadControl()
orDebugPlayerControllerComponent.disableLogLoadControl()
.- Parameters:
logLoadControl
- Sets this value to the property
-
getRateLimiterEnabled
public boolean getRateLimiterEnabled()Getter for rateLimiterEnabled- Returns:
- rateLimiterEnabled
-
setRateLimiterEnabled
public void setRateLimiterEnabled(boolean rateLimiterEnabled) Setter for rateLimiterEnabled- Parameters:
rateLimiterEnabled
- Sets this value to the property
-
setLogVideoFrameMetadata
public void setLogVideoFrameMetadata(boolean logVideoFrameMetadata) Setter for logging video frame metadata- Parameters:
logVideoFrameMetadata
- true to enable logging video frame metadata, false otherwise.
-
getLogVideoFrameMetadata
public boolean getLogVideoFrameMetadata()Getter for logging video frame metadata- Returns:
- logVideoFrameMetadata
-
getDebugOverlayPosition
Getter for debugOverlayPosition- Returns:
- debugOverlayPosition
-
setDebugOverlayPosition
Setter for debugOverlayPosition.Note the value set here will only take effect when the debug overlay is created. If you want to change the position at runtime, you need to get an instance of
OverlayControllerComponent
throughgetOverlayController(PlayerController)
and callOverlayControllerComponent.setDebugOverlayPosition(DebugOverlayPosition)
.- Parameters:
debugOverlayPosition
- Sets this value to the property
-
getId
-
getRateLimiter
Returns the rate limiter if it was enabled or null- Returns:
- rate limiter or null
-
getVideoCodecAdapterFactory
Returns the debug media codec adapter factory if it was enabled or null.- Returns:
- The debug media codec adapter factory or null.
-
getDebugComponent
@Nullable public static DebugPlayerControllerComponent getDebugComponent(@NonNull PlayerController playerController) Gets theDebugPlayerControllerComponent
associated with the givenPlayerController
.Example usage:
DebugPlayerControllerComponent component = DebugPlugin.getDebugComponent(playerController); if (component != null) { component.enableLogPeriodInfo(); }
- Parameters:
playerController
- the controller to query- Returns:
- the debug component instance or
null
if not available
-
getOverlayController
@Nullable public static OverlayControllerComponent getOverlayController(@NonNull PlayerController playerController) Gets theOverlayControllerComponent
associated with the givenPlayerController
.Example usage:
OverlayControllerComponent overlay = DebugPlugin.getOverlayController(playerController); if (overlay != null) { overlay.enableDebugOverlay(); }
- Parameters:
playerController
- the controller to query- Returns:
- the overlay controller instance or
null
if not available
-