Error Codes
The library follows hexadecimal error system. The least significant 16-bits (Bits 0-15) indicate a Component Error Code and the most significant 16-bits (Bits 16-31) indicate the Categories that the error falls into.
Categories
Error Category | Mask | Description |
---|---|---|
Network Error | 0x10000 | Indicates that the error occurrence is network. related |
Server Error | 0x20000 | Indicates a server response failure. |
Thirdparty Error | 0x40000 | Indicates a failure in thirdparty components such as External Player, Thirdparty Libraries etc., |
Reserved | 0x80000 | Reserved for future use. |
Reserved | 0x100000 | Reserved for future use. |
Reserved | 0x200000 | Reserved for future use. |
Playback Error | 0x400000 | Indicates that the error occurrence is during a Playback. |
Download Error | 0x800000 | Indicates that the error occurrence is during a Download. |
- 0x40* - Playback Error most probably due to player itself.
- 0x41* - Playback error due to Network failure.
- 0x42* - Playback error due to Server response failure.
- 0x80* - Download error most probably due to the downloader itself.
- 0x81* - Download error due to Network failure.
- 0x82* - Download error due to Server response failure.
Specific Error Codes
Error Code | Hexadecimal value | Component Error Code | Description |
---|---|---|---|
MEDIA_SOURCE_FAILURE | 0x400201 | 0x201 | Indicates that an error has occurred while loading the MediaSource. |
MEDIA_SOURCE_TIMEOUT | 0x400202 | 0x202 | Indicates that Fetching of the Media Source from network timeout. |
DRM_PROVISIONING_FAILURE | 0x400203 | 0x203 | Indicates that an error has occurred while Provisioning Model Certificates on the specific device. |
DRM_PROVISIONING_TIMEOUT | 0x400204 | 0x204 | Indicates that Fetching of DRM Provisioning Data from Network timeout. |
DRM_LICENSE_FAILURE | 0x400205 | 0x205 | Indicates that an error has occurred while Loading DRM Keys for a particular content either from network (or) persistent storage. |
DRM_LICENSE_TIMEOUT | 0x400206 | 0x206 | Indicates that Fetching of DRM Keys from network timeout. |
DRM_LICENSE_EXPIRED | 0x400207 | 0x207 | Indicates that Loaded DRM Keys are expired. |
MEDIA_PLAYBACK_FAILURE | 0x400208 | 0x208 | Indicates that rendering of media failed. |
MEDIA_PLAYBACK_STALE | 0x400209 | 0x209 | Indicates Player playback has stalled. |
OUT_OF_MEMORY_ERROR | 0x40020A | 0x20A | Indicates that Player is Out Of Memory and is unable to allocate Resources. |
DEVICE_FAILURE | 0x40020B | 0x20B | Indicates that Device failed to handle the Media Content. |
EXTERNAL_ABORT | 0x40020C | 0x20C | Indicates that Playback was aborted by external sources because of Application specific Policy Restrictions. |
INVALID_LIVE_MEDIA_SEGMENT | 0x40020D | 0x20D | Indicates that Playback failed because of BehindLiveWindowException i.e. the playback is behind the allowed live window. |
NETWORK_CONNECTION_FAILURE | 0x40020E | 0x20E | Indicates that an error has occurred due to inactive network connection. |
NETWORK_END_POINT_UNREACHABLE | 0x40020F | 0x20F | Indicates that an error has occurred because of URL's domain is misspelled or does not exist, a socket timeout, the target host is unreachable or the server unexpectedly closes the connection even with active network connection. |
PLAYBACK_BUFFER_TIMEOUT | 0x400215 | 0x215 | Indicated that Buffering timeout has occurred. |
Error Object
The Error object returned by the library is a linked list that traces the error occurrence from an higer-level component, to the lower-level component where the error actually occurred.
The Player component can talk to an internal component that in turn talks to head-end server. If the server returns an error-ful response, the Error
object returned from the player component might have internalError
property set to the error thrown
by the internal component which might actually be a server error information.
The more deeper we go in the linked list , the more specific the
Error
would be. It's upto the application developers to utilize the depth ofError
information as they desire.
interface Error {
/**
* Unique Error Code with all Category Masking Set.
*/
val errorCode: Int
/**
* Error message describing the Error.
*/
val errorMessage: String
/**
* The internal root-cause of the Error if any.
*/
val internalError: Error?
/**
* The internal Contextual description of the Error if any.
* This is usually set if the error is from a third-party source.
*/
val contextDescription: String?
/**
* A Computed property that returns the component error code
* removing all CATEGORY MASK.
*/
val componentErrorCode: Int
}
Player Restart
We recommend configuring the player to restart automatically on encountering error PlayerErrorCodes.PLAYBACK_BUFFER_TIMEOUT
to improve playback reliability.
fun playerError(error: Error) {
val errorCode = error.errorCode
val hexErrorCode = error.hexErrorCode()
if (error.hexErrorCode() == PlayerErrorCodes.PLAYBACK_BUFFER_TIMEOUT.toString()) {
// Re-prepare the player (re-authorize and create a new player instance).
}
}