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
61abe595
authored
Aug 13, 2020
by
andrewlewis
Committed by
kim-vde
Aug 17, 2020
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Use consistent naming for 'offload scheduling enabled'
PiperOrigin-RevId: 326413842
parent
cde795ea
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
33 additions
and
32 deletions
library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java
library/core/src/main/java/com/google/android/exoplayer2/PlaybackInfo.java
library/core/src/main/java/com/google/android/exoplayer2/Player.java
library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java
testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java
library/core/src/main/java/com/google/android/exoplayer2/DefaultRenderersFactory.java
View file @
61abe595
...
...
@@ -242,8 +242,8 @@ public class DefaultRenderersFactory implements RenderersFactory {
* Sets whether audio should be played using the offload path.
*
* <p>Audio offload disables ExoPlayer audio processing, but significantly reduces the energy
* consumption of the playback when {@link
ExoPlayer#experimentalEnableOffloadScheduling(boolean)}
* is enabled.
* consumption of the playback when {@link
*
ExoPlayer#experimentalSetOffloadSchedulingEnabled(boolean) offload scheduling}
is enabled.
*
* <p>Most Android devices can only support one offload {@link android.media.AudioTrack} at a time
* and can invalidate it at any time. Thus an app can never be guaranteed that it will be able to
...
...
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayer.java
View file @
61abe595
...
...
@@ -602,12 +602,12 @@ public interface ExoPlayer extends Player {
boolean
getPauseAtEndOfMediaItems
();
/**
*
Enables audio offload scheduling, which runs ExoPlayer's main loop as rarely as possible when
* playing an audio stream using audio offload.
*
Sets whether audio offload scheduling is enabled. If enabled, ExoPlayer's main loop will as
*
rarely as possible when
playing an audio stream using audio offload.
*
* <p>Only use this scheduling mode if the player is not displaying anything to the user. For
* example when the application is in the background, or the screen is off. The player state
* (including position) is rarely updated (
between 10s and 1min
).
* (including position) is rarely updated (
roughly between every 10 seconds and 1 minute
).
*
* <p>While offload scheduling is enabled, player events may be delivered severely delayed and
* apps should not interact with the player. When returning to the foreground, disable offload
...
...
@@ -626,7 +626,7 @@ public interface ExoPlayer extends Player {
* DefaultRenderersFactory#setEnableAudioOffload} or the equivalent option passed to {@link
* com.google.android.exoplayer2.audio.DefaultAudioSink#DefaultAudioSink(AudioCapabilities,
* DefaultAudioSink.AudioProcessorChain, boolean, boolean, boolean)}.
* <li>an audio track is playing in a format which the device supports offloading (for example
* <li>an audio track is playing in a format which the device supports offloading (for example
,
* MP3 or AAC).
* <li>The {@link com.google.android.exoplayer2.audio.AudioSink} is playing with an offload
* {@link android.media.AudioTrack}.
...
...
@@ -634,7 +634,7 @@ public interface ExoPlayer extends Player {
*
* <p>This method is experimental, and will be renamed or removed in a future release.
*
* @param
enableOffloadScheduling
Whether to enable offload scheduling.
* @param
offloadSchedulingEnabled
Whether to enable offload scheduling.
*/
void
experimental
EnableOffloadScheduling
(
boolean
enableOffloadScheduling
);
void
experimental
SetOffloadSchedulingEnabled
(
boolean
offloadSchedulingEnabled
);
}
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java
View file @
61abe595
...
...
@@ -210,8 +210,8 @@ import java.util.concurrent.TimeoutException;
}
@Override
public
void
experimental
EnableOffloadScheduling
(
boolean
enableOffloadScheduling
)
{
internalPlayer
.
experimental
EnableOffloadScheduling
(
enableOffloadScheduling
);
public
void
experimental
SetOffloadSchedulingEnabled
(
boolean
offloadSchedulingEnabled
)
{
internalPlayer
.
experimental
SetOffloadSchedulingEnabled
(
offloadSchedulingEnabled
);
}
@Override
...
...
@@ -1366,7 +1366,7 @@ import java.util.concurrent.TimeoutException;
private
final
boolean
playbackSuppressionReasonChanged
;
private
final
boolean
isPlayingChanged
;
private
final
boolean
playbackSpeedChanged
;
private
final
boolean
offloadSchedulingChanged
;
private
final
boolean
offloadScheduling
Enabled
Changed
;
public
PlaybackInfoUpdate
(
PlaybackInfo
playbackInfo
,
...
...
@@ -1405,7 +1405,7 @@ import java.util.concurrent.TimeoutException;
previousPlaybackInfo
.
playbackSuppressionReason
!=
playbackInfo
.
playbackSuppressionReason
;
isPlayingChanged
=
isPlaying
(
previousPlaybackInfo
)
!=
isPlaying
(
playbackInfo
);
playbackSpeedChanged
=
previousPlaybackInfo
.
playbackSpeed
!=
playbackInfo
.
playbackSpeed
;
offloadSchedulingChanged
=
offloadScheduling
Enabled
Changed
=
previousPlaybackInfo
.
offloadSchedulingEnabled
!=
playbackInfo
.
offloadSchedulingEnabled
;
}
...
...
@@ -1484,7 +1484,7 @@ import java.util.concurrent.TimeoutException;
if
(
seekProcessed
)
{
invokeAll
(
listenerSnapshot
,
EventListener:
:
onSeekProcessed
);
}
if
(
offloadSchedulingChanged
)
{
if
(
offloadScheduling
Enabled
Changed
)
{
invokeAll
(
listenerSnapshot
,
listener
->
...
...
library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImplInternal.java
View file @
61abe595
...
...
@@ -141,7 +141,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
private
static
final
int
MSG_SET_SHUFFLE_ORDER
=
21
;
private
static
final
int
MSG_PLAYLIST_UPDATE_REQUESTED
=
22
;
private
static
final
int
MSG_SET_PAUSE_AT_END_OF_WINDOW
=
23
;
private
static
final
int
MSG_SET_OFFLOAD_SCHEDULING
=
24
;
private
static
final
int
MSG_SET_OFFLOAD_SCHEDULING
_ENABLED
=
24
;
private
static
final
int
ACTIVE_INTERVAL_MS
=
10
;
private
static
final
int
IDLE_INTERVAL_MS
=
1000
;
...
...
@@ -188,7 +188,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
private
boolean
shuffleModeEnabled
;
private
boolean
foregroundMode
;
private
boolean
requestForRendererSleep
;
private
boolean
enableOffloadScheduling
;
private
boolean
offloadSchedulingEnabled
;
private
int
enabledRendererCount
;
@Nullable
private
SeekPosition
pendingInitialSeekPosition
;
...
...
@@ -263,9 +263,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
throwWhenStuckBuffering
=
false
;
}
public
void
experimental
EnableOffloadScheduling
(
boolean
enableOffloadScheduling
)
{
public
void
experimental
SetOffloadSchedulingEnabled
(
boolean
offloadSchedulingEnabled
)
{
handler
.
obtainMessage
(
MSG_SET_OFFLOAD_SCHEDULING
,
enableOffloadScheduling
?
1
:
0
,
/* unused */
0
)
.
obtainMessage
(
MSG_SET_OFFLOAD_SCHEDULING_ENABLED
,
offloadSchedulingEnabled
?
1
:
0
,
/* unused */
0
)
.
sendToTarget
();
}
...
...
@@ -518,7 +519,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
case
MSG_SET_PAUSE_AT_END_OF_WINDOW:
setPauseAtEndOfWindowInternal
(
msg
.
arg1
!=
0
);
break
;
case
MSG_SET_OFFLOAD_SCHEDULING:
case
MSG_SET_OFFLOAD_SCHEDULING
_ENABLED
:
setOffloadSchedulingEnabledInternal
(
msg
.
arg1
==
1
);
break
;
case
MSG_RELEASE:
...
...
@@ -739,14 +740,14 @@ import java.util.concurrent.atomic.AtomicBoolean;
handleLoadingMediaPeriodChanged
(
/* loadingTrackSelectionChanged= */
false
);
}
private
void
setOffloadSchedulingEnabledInternal
(
boolean
enableOffloadScheduling
)
{
if
(
enableOffloadScheduling
==
this
.
enableOffloadScheduling
)
{
private
void
setOffloadSchedulingEnabledInternal
(
boolean
offloadSchedulingEnabled
)
{
if
(
offloadSchedulingEnabled
==
this
.
offloadSchedulingEnabled
)
{
return
;
}
this
.
enableOffloadScheduling
=
enableOffloadScheduling
;
this
.
offloadSchedulingEnabled
=
offloadSchedulingEnabled
;
@Player
.
State
int
state
=
playbackInfo
.
playbackState
;
if
(
enableOffloadScheduling
||
state
==
Player
.
STATE_ENDED
||
state
==
Player
.
STATE_IDLE
)
{
playbackInfo
=
playbackInfo
.
copyWithOffloadSchedulingEnabled
(
enableOffloadScheduling
);
if
(
offloadSchedulingEnabled
||
state
==
Player
.
STATE_ENDED
||
state
==
Player
.
STATE_IDLE
)
{
playbackInfo
=
playbackInfo
.
copyWithOffloadSchedulingEnabled
(
offloadSchedulingEnabled
);
}
else
{
handler
.
sendEmptyMessage
(
MSG_DO_SOME_WORK
);
}
...
...
@@ -953,8 +954,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
throw
new
IllegalStateException
(
"Playback stuck buffering and not loading"
);
}
}
if
(
enableOffloadScheduling
!=
playbackInfo
.
offloadSchedulingEnabled
)
{
playbackInfo
=
playbackInfo
.
copyWithOffloadSchedulingEnabled
(
enableOffloadScheduling
);
if
(
offloadSchedulingEnabled
!=
playbackInfo
.
offloadSchedulingEnabled
)
{
playbackInfo
=
playbackInfo
.
copyWithOffloadSchedulingEnabled
(
offloadSchedulingEnabled
);
}
if
((
shouldPlayWhenReady
()
&&
playbackInfo
.
playbackState
==
Player
.
STATE_READY
)
...
...
@@ -976,7 +977,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
}
private
void
maybeScheduleWakeup
(
long
operationStartTimeMs
,
long
intervalMs
)
{
if
(
enableOffloadScheduling
&&
requestForRendererSleep
)
{
if
(
offloadSchedulingEnabled
&&
requestForRendererSleep
)
{
return
;
}
...
...
@@ -1304,7 +1305,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
startPositionUs
,
/* totalBufferedDurationUs= */
0
,
startPositionUs
,
enableOffloadScheduling
);
offloadSchedulingEnabled
);
if
(
releaseMediaSourceList
)
{
mediaSourceList
.
release
();
}
...
...
library/core/src/main/java/com/google/android/exoplayer2/PlaybackInfo.java
View file @
61abe595
...
...
@@ -65,7 +65,7 @@ import com.google.android.exoplayer2.trackselection.TrackSelectorResult;
@PlaybackSuppressionReason
public
final
int
playbackSuppressionReason
;
/** The playback speed. */
public
final
float
playbackSpeed
;
/** Whether
the player is in offloadScheduling
. */
/** Whether
offload scheduling is enabled for the main player loop
. */
public
final
boolean
offloadSchedulingEnabled
;
/**
...
...
library/core/src/main/java/com/google/android/exoplayer2/Player.java
View file @
61abe595
...
...
@@ -607,7 +607,7 @@ public interface Player {
/**
* Called when the player has started or stopped offload scheduling after a call to {@link
* ExoPlayer#experimental
EnableOffloadScheduling
(boolean)}.
* ExoPlayer#experimental
SetOffloadSchedulingEnabled
(boolean)}.
*
* <p>This method is experimental, and will be renamed or removed in a future release.
*/
...
...
library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java
View file @
61abe595
...
...
@@ -630,8 +630,8 @@ public class SimpleExoPlayer extends BasePlayer
}
@Override
public
void
experimental
EnableOffloadScheduling
(
boolean
enableOffloadScheduling
)
{
player
.
experimental
EnableOffloadScheduling
(
enableOffloadScheduling
);
public
void
experimental
SetOffloadSchedulingEnabled
(
boolean
offloadSchedulingEnabled
)
{
player
.
experimental
SetOffloadSchedulingEnabled
(
offloadSchedulingEnabled
);
}
@Override
...
...
testutils/src/main/java/com/google/android/exoplayer2/testutil/StubExoPlayer.java
View file @
61abe595
...
...
@@ -467,7 +467,7 @@ public abstract class StubExoPlayer extends BasePlayer implements ExoPlayer {
}
@Override
public
void
experimental
EnableOffloadScheduling
(
boolean
enableOffloadScheduling
)
{
public
void
experimental
SetOffloadSchedulingEnabled
(
boolean
offloadSchedulingEnabled
)
{
throw
new
UnsupportedOperationException
();
}
}
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