Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
0b7865ea
authored
May 04, 2021
by
aquilescanta
Committed by
bachinger
May 04, 2021
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add PlaybackException error codes
PiperOrigin-RevId: 371919596
parent
a264a0a0
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
143 additions
and
11 deletions
library/common/src/main/java/com/google/android/exoplayer2/PlaybackException.java
library/common/src/main/java/com/google/android/exoplayer2/PlaybackException.java
View file @
0b7865ea
...
...
@@ -31,18 +31,148 @@ import java.lang.annotation.RetentionPolicy;
public
class
PlaybackException
extends
Exception
implements
Bundleable
{
/**
*
An error code identifying the source of the playback failure. Note that new types may be added
*
in the future and error handling should handle unknown type valu
es.
*
Integer codes that identify causes of player errors. This list of errors may be extended in
*
future versions, and {@link Player} implementations may define custom error cod
es.
*/
@Documented
@Retention
(
RetentionPolicy
.
SOURCE
)
@IntDef
({
ERROR_CODE_UNKNOWN
})
@IntDef
(
open
=
true
,
value
=
{
ERROR_CODE_UNSPECIFIED
,
ERROR_CODE_REMOTE_ERROR
,
ERROR_CODE_BEHIND_LIVE_WINDOW
,
ERROR_CODE_IO_UNSPECIFIED
,
ERROR_CODE_IO_NETWORK_UNAVAILABLE
,
ERROR_CODE_IO_NETWORK_CONNECTION_FAILED
,
ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT
,
ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED
,
ERROR_CODE_IO_BAD_HTTP_STATUS
,
ERROR_CODE_IO_DNS_FAILED
,
ERROR_CODE_IO_FILE_NOT_FOUND
,
ERROR_CODE_IO_NO_PERMISSION
,
ERROR_CODE_PARSING_MANIFEST_MALFORMED
,
ERROR_CODE_PARSING_CONTAINER_MALFORMED
,
ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED
,
ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED
,
ERROR_CODE_DECODER_INIT_FAILED
,
ERROR_CODE_DECODING_FAILED
,
ERROR_CODE_DECODING_FORMAT_EXCEEDS_CAPABILITIES
,
ERROR_CODE_DECODING_FORMAT_UNSUPPORTED
,
ERROR_CODE_AUDIO_TRACK_INIT_FAILED
,
ERROR_CODE_AUDIO_TRACK_WRITE_FAILED
,
ERROR_CODE_DRM_SCHEME_UNSUPPORTED
,
ERROR_CODE_DRM_PROVISIONING_FAILED
,
ERROR_CODE_DRM_CONTENT_ERROR
,
ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED
,
ERROR_CODE_DRM_DISALLOWED_OPERATION
,
ERROR_CODE_DRM_SYSTEM_ERROR
,
ERROR_CODE_DRM_DEVICE_REVOKED
})
public
@interface
ErrorCode
{}
public
static
final
int
ERROR_CODE_UNKNOWN
=
0
;
// Miscellaneous errors (1xxx).
/** Caused by an error whose cause could not be identified. */
public
static
final
int
ERROR_CODE_UNSPECIFIED
=
1000
;
/**
* Caused by an unidentified error in a remote Player, which is a Player that runs on a different
* host or process.
*/
public
static
final
int
ERROR_CODE_REMOTE_ERROR
=
1001
;
/** Caused by the loading position falling behind the sliding window of available live content. */
public
static
final
int
ERROR_CODE_BEHIND_LIVE_WINDOW
=
1002
;
// Input/Output errors (2xxx).
/** Caused by an Input/Output error which could not be identified. */
public
static
final
int
ERROR_CODE_IO_UNSPECIFIED
=
2000
;
/** Caused by the lack of network connectivity while trying to access a network resource. */
public
static
final
int
ERROR_CODE_IO_NETWORK_UNAVAILABLE
=
2001
;
/** Caused by a failure while establishing a network connection. */
public
static
final
int
ERROR_CODE_IO_NETWORK_CONNECTION_FAILED
=
2002
;
/** Caused by a network timeout, meaning the server is taking too long to fulfill a request. */
public
static
final
int
ERROR_CODE_IO_NETWORK_CONNECTION_TIMEOUT
=
2003
;
/** Caused by an existing connection being unexpectedly closed. */
public
static
final
int
ERROR_CODE_IO_NETWORK_CONNECTION_CLOSED
=
2004
;
/** Caused by an HTTP server returning an unexpected HTTP response status code. */
public
static
final
int
ERROR_CODE_IO_BAD_HTTP_STATUS
=
2005
;
/** Caused by the player failing to resolve a hostname. */
public
static
final
int
ERROR_CODE_IO_DNS_FAILED
=
2006
;
/** Caused by a non-existent file. */
public
static
final
int
ERROR_CODE_IO_FILE_NOT_FOUND
=
2007
;
/**
* Caused by lack of permission to perform an IO operation. For example, lack of permission to
* access internet or external storage.
*/
public
static
final
int
ERROR_CODE_IO_NO_PERMISSION
=
2008
;
// Content parsing errors (3xxx).
/**
* Caused by a parsing error associated to a media manifest. Examples of a media manifest are a
* DASH or a SmoothStreaming manifest, or an HLS playlist.
*/
public
static
final
int
ERROR_CODE_PARSING_MANIFEST_MALFORMED
=
3000
;
/** Caused by a parsing error associated to a media container format bitstream. */
public
static
final
int
ERROR_CODE_PARSING_CONTAINER_MALFORMED
=
3001
;
/**
* Caused by attempting to extract a file with an unsupported media container format, or an
* unsupported media container feature.
*/
public
static
final
int
ERROR_CODE_PARSING_CONTAINER_UNSUPPORTED
=
3002
;
/**
* Caused by an unsupported feature in a media manifest. Examples of a media manifest are a DASH
* or a SmoothStreaming manifest, or an HLS playlist.
*/
public
static
final
int
ERROR_CODE_PARSING_MANIFEST_UNSUPPORTED
=
3003
;
// Decoding errors (4xxx).
/** Caused by a decoder initialization failure. */
public
static
final
int
ERROR_CODE_DECODER_INIT_FAILED
=
4000
;
/** Caused by a failure while trying to decode media samples. */
public
static
final
int
ERROR_CODE_DECODING_FAILED
=
4001
;
/** Caused by trying to decode content whose format exceeds the capabilities of the device. */
public
static
final
int
ERROR_CODE_DECODING_FORMAT_EXCEEDS_CAPABILITIES
=
4002
;
/** Caused by trying to decode content whose format is not supported. */
public
static
final
int
ERROR_CODE_DECODING_FORMAT_UNSUPPORTED
=
4003
;
// AudioTrack errors (5xxx).
/** Caused by an AudioTrack initialization failure. */
public
static
final
int
ERROR_CODE_AUDIO_TRACK_INIT_FAILED
=
5000
;
/** Caused by an AudioTrack write operation failure. */
public
static
final
int
ERROR_CODE_AUDIO_TRACK_WRITE_FAILED
=
5001
;
// DRM errors (6xxx).
/**
* Caused by a chosen DRM protection scheme not being supported by the device. Examples of DRM
* protection schemes are ClearKey and Widevine.
*/
public
static
final
int
ERROR_CODE_DRM_SCHEME_UNSUPPORTED
=
6000
;
/** Caused by a failure while provisioning the device. */
public
static
final
int
ERROR_CODE_DRM_PROVISIONING_FAILED
=
6001
;
/** Caused by attempting to play incompatible DRM-protected content. */
public
static
final
int
ERROR_CODE_DRM_CONTENT_ERROR
=
6002
;
/** Caused by a failure while trying to obtain a license. */
public
static
final
int
ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED
=
6003
;
/** Caused by an operation being disallowed by a license policy. */
public
static
final
int
ERROR_CODE_DRM_DISALLOWED_OPERATION
=
6004
;
/** Caused by an error in the DRM system. */
public
static
final
int
ERROR_CODE_DRM_SYSTEM_ERROR
=
6005
;
/** Caused by the device having revoked DRM privileges. */
public
static
final
int
ERROR_CODE_DRM_DEVICE_REVOKED
=
6006
;
/**
* Player implementations that want to surface custom errors can use error codes greater than this
* value, so as to avoid collision with other error codes defined in this class.
*/
public
static
final
int
CUSTOM_ERROR_CODE_BASE
=
1000000
;
/** An error code which identifies the source of the playback failure. */
@ErrorCode
public
final
int
errorCode
;
public
final
int
errorCode
;
/** The value of {@link SystemClock#elapsedRealtime()} when this exception was created. */
public
final
long
timestampMs
;
...
...
@@ -50,12 +180,12 @@ public class PlaybackException extends Exception implements Bundleable {
/**
* Creates an instance.
*
* @param errorCode An {@link ErrorCode} which identifies the cause of the error.
* @param errorCode A number which identifies the cause of the error. May be one of the {@link
* ErrorCode ErrorCodes}.
* @param cause See {@link #getCause()}.
* @param message See {@link #getMessage()}.
*/
public
PlaybackException
(
@Nullable
String
message
,
@Nullable
Throwable
cause
,
@ErrorCode
int
errorCode
)
{
public
PlaybackException
(
@Nullable
String
message
,
@Nullable
Throwable
cause
,
int
errorCode
)
{
this
(
message
,
cause
,
errorCode
,
Clock
.
DEFAULT
.
elapsedRealtime
());
}
...
...
@@ -111,8 +241,10 @@ public class PlaybackException extends Exception implements Bundleable {
* @return The created instance.
*/
protected
static
PlaybackException
fromBundle
(
Bundle
bundle
)
{
int
type
=
bundle
.
getInt
(
keyForField
(
FIELD_INT_ERROR_CODE
),
/* defaultValue= */
ERROR_CODE_UNKNOWN
);
@ErrorCode
int
errorCode
=
bundle
.
getInt
(
keyForField
(
FIELD_INT_ERROR_CODE
),
/* defaultValue= */
ERROR_CODE_UNSPECIFIED
);
long
timestampMs
=
bundle
.
getLong
(
keyForField
(
FIELD_LONG_TIME_STAMP_MS
),
...
...
@@ -140,7 +272,7 @@ public class PlaybackException extends Exception implements Bundleable {
}
}
}
return
new
PlaybackException
(
message
,
cause
,
typ
e
,
timestampMs
);
return
new
PlaybackException
(
message
,
cause
,
errorCod
e
,
timestampMs
);
}
/**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment