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
02ed809a
authored
Aug 17, 2020
by
olly
Committed by
kim-vde
Aug 17, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Tweak offload disable Javadoc
PiperOrigin-RevId: 326998407
parent
10fa745f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
18 deletions
library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java
library/core/src/main/java/com/google/android/exoplayer2/audio/DefaultAudioSink.java
View file @
02ed809a
...
...
@@ -327,15 +327,7 @@ public final class DefaultAudioSink implements AudioSink {
private
AuxEffectInfo
auxEffectInfo
;
private
boolean
tunneling
;
private
long
lastFeedElapsedRealtimeMs
;
/**
* Do not retrying offload if it just failed.
*
* <p>{@link AudioManager#isOffloadedPlaybackSupported(AudioFormat,
* android.media.AudioAttributes)} does not guaranty that offload is available (eg: using {@link
* android.media.AudioPlaybackCaptureConfiguration}) will disable offload. As a result only try
* once per track/seek to play in offload mode.
*/
private
boolean
disableOffloadAfterFailureUntilNextConfiguration
;
private
boolean
offloadDisabledUntilNextConfiguration
;
/**
* Creates a new default audio sink.
...
...
@@ -466,7 +458,7 @@ public final class DefaultAudioSink implements AudioSink {
return
SINK_FORMAT_SUPPORTED_WITH_TRANSCODING
;
}
if
(
enableOffload
&&
!
disableOffloadAfterFailure
UntilNextConfiguration
&&
!
offloadDisabled
UntilNextConfiguration
&&
isOffloadedPlaybackSupported
(
format
,
audioAttributes
))
{
return
SINK_FORMAT_SUPPORTED_DIRECTLY
;
}
...
...
@@ -575,8 +567,7 @@ public final class DefaultAudioSink implements AudioSink {
"Invalid output channel config (mode="
+
outputMode
+
") for: "
+
inputFormat
);
}
disableOffloadAfterFailureUntilNextConfiguration
=
false
;
offloadDisabledUntilNextConfiguration
=
false
;
Configuration
pendingConfiguration
=
new
Configuration
(
inputFormat
,
...
...
@@ -836,9 +827,7 @@ public final class DefaultAudioSink implements AudioSink {
return
Assertions
.
checkNotNull
(
configuration
)
.
buildAudioTrack
(
tunneling
,
audioAttributes
,
audioSessionId
);
}
catch
(
InitializationException
e
)
{
if
(
configuration
.
outputModeIsOffload
())
{
disableOffloadAfterFailureUntilNextConfiguration
=
true
;
}
maybeDisableOffload
();
throw
e
;
}
}
...
...
@@ -929,8 +918,8 @@ public final class DefaultAudioSink implements AudioSink {
if
(
bytesWritten
<
0
)
{
boolean
isRecoverable
=
isAudioTrackDeadObject
(
bytesWritten
);
if
(
isRecoverable
&&
configuration
.
outputModeIsOffload
()
)
{
disableOffloadAfterFailureUntilNextConfiguration
=
true
;
if
(
isRecoverable
)
{
maybeDisableOffload
()
;
}
throw
new
WriteException
(
bytesWritten
);
}
...
...
@@ -966,6 +955,16 @@ public final class DefaultAudioSink implements AudioSink {
}
}
private
void
maybeDisableOffload
()
{
if
(!
configuration
.
outputModeIsOffload
())
{
return
;
}
// Offload was requested, but may not be available. There are cases when this can occur even if
// AudioManager.isOffloadedPlaybackSupported returned true. For example, due to use of an
// AudioPlaybackCaptureConfiguration. Disable offload until the sink is next configured.
offloadDisabledUntilNextConfiguration
=
true
;
}
private
static
boolean
isAudioTrackDeadObject
(
int
status
)
{
return
Util
.
SDK_INT
>=
24
&&
status
==
AudioTrack
.
ERROR_DEAD_OBJECT
;
}
...
...
@@ -1200,7 +1199,7 @@ public final class DefaultAudioSink implements AudioSink {
}
audioSessionId
=
C
.
AUDIO_SESSION_ID_UNSET
;
playing
=
false
;
disableOffloadAfterFailure
UntilNextConfiguration
=
false
;
offloadDisabled
UntilNextConfiguration
=
false
;
}
// Internal methods.
...
...
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