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 classUse this builder to create new instances of theDebugPlugin.static enumEnum representing the possible positions of the debug overlay. -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intThe ID of the debug overlay view.final booleanIf true, the debug overlay is enabled.final longThe initial rate limit in bits per second.final longThe threshold in microseconds for logging AV sync values.final longThe 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 theDebugPlayerControllerComponentassociated with the givenPlayerController.Getter for debugOverlayPositiongetId()booleanGetter for logAudioRendererEventsbooleanGetter for logDecoderCountersbooleanGetter for logDownloadCanceledbooleanGetter for logDownloadCompletedbooleanGetter for logDownloadErrorbooleanGetter for logDownloadStartedbooleanGetter for logDownloadUpstreamDiscardedbooleanGetter for logLoadControlbooleanGetter for logOpenBundlebooleanGetter for logPeriodInfobooleanGetter for logSupportedDrmbooleanGetter for logTimingDebugInfobooleanGetter for logTransferInfobooleanGetter for logging video frame metadatabooleanGetter for logVideoRendererEventsstatic OverlayControllerComponentgetOverlayController(PlayerController playerController) Gets theOverlayControllerComponentassociated with the givenPlayerController.Returns the rate limiter if it was enabled or nullbooleanGetter for rateLimiterEnabledReturns the debug media codec adapter factory if it was enabled or null.voidsetDebugOverlayPosition(DebugPlugin.DebugOverlayPosition debugOverlayPosition) Setter for debugOverlayPosition.voidsetLogAudioRendererEvents(boolean logAudioRendererEvents) Setter for logAudioRendererEventsvoidsetLogDecoderCounters(boolean logDecoderCounters) Setter for logDecoderCountersvoidsetLogDownloadCanceled(boolean logDownloadCanceled) Setter for logDownloadCanceledvoidsetLogDownloadCompleted(boolean logDownloadCompleted) Setter for logDownloadCompletedvoidsetLogDownloadError(boolean logDownloadError) Setter for logDownloadErrorvoidsetLogDownloadStarted(boolean logDownloadStarted) Setter for logDownloadStartedvoidsetLogDownloadUpstreamDiscarded(boolean logDownloadUpstreamDiscarded) Setter for logDownloadUpstreamDiscardedvoidsetLogLoadControl(boolean logLoadControl) Setter for logLoadControlvoidsetLogOpenBundle(boolean logOpenBundle) Setter for logOpenBundlevoidsetLogPeriodInfo(boolean logPeriodInfo) Setter for logPeriodInfovoidsetLogSupportedDrm(boolean logSupportedDrm) Setter for logSupportedDrmvoidsetLogTimingDebugInfo(boolean logTimingDebugInfo) Log timing info related to playback.voidsetLogTransferInfo(boolean logTransferInfo) Setter for logTransferInfovoidsetLogVideoFrameMetadata(boolean logVideoFrameMetadata) Setter for logging video frame metadatavoidsetLogVideoRendererEvents(boolean logVideoRendererEvents) Setter for logVideoRendererEventsvoidsetRateLimiterEnabled(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
DebugPlayerControllerComponentthroughgetDebugComponent(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
DebugPlayerControllerComponentthroughgetDebugComponent(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
DebugPlayerControllerComponentthroughgetDebugComponent(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
DebugPlayerControllerComponentthroughgetDebugComponent(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
DebugPlayerControllerComponentthroughgetDebugComponent(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
DebugPlayerControllerComponentthroughgetDebugComponent(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
OverlayControllerComponentthroughgetOverlayController(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 theDebugPlayerControllerComponentassociated 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
nullif not available
-
getOverlayController
@Nullable public static OverlayControllerComponent getOverlayController(@NonNull PlayerController playerController) Gets theOverlayControllerComponentassociated 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
nullif not available
-