mirror of
https://github.com/samsonjs/media.git
synced 2026-04-02 10:45:51 +00:00
Smoother PlaybackControlView updates when speed != 1
* If speed <= 0.1, update every second. * If 0.1 < speed < 1, update approximately once per second in real time, aligned so that each second boundary in media time has a corresponding updatae. * If speed == 1, keep existing behavior. * If 1 < speed <= 5, update every second in media time * If speed > 5, update every 200ms. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=170559037
This commit is contained in:
parent
096d7651d2
commit
fd576d2189
1 changed files with 13 additions and 3 deletions
|
|
@ -825,9 +825,19 @@ public class PlaybackControlView extends FrameLayout {
|
|||
if (playbackState != Player.STATE_IDLE && playbackState != Player.STATE_ENDED) {
|
||||
long delayMs;
|
||||
if (player.getPlayWhenReady() && playbackState == Player.STATE_READY) {
|
||||
delayMs = 1000 - (position % 1000);
|
||||
if (delayMs < 200) {
|
||||
delayMs += 1000;
|
||||
float playbackSpeed = player.getPlaybackParameters().speed;
|
||||
if (playbackSpeed <= 0.1f) {
|
||||
delayMs = 1000;
|
||||
} else if (playbackSpeed <= 5f) {
|
||||
long mediaTimeUpdatePeriodMs = 1000 / Math.max(1, Math.round(1 / playbackSpeed));
|
||||
long mediaTimeDelayMs = mediaTimeUpdatePeriodMs - (position % mediaTimeUpdatePeriodMs);
|
||||
if (mediaTimeDelayMs < (mediaTimeUpdatePeriodMs / 5)) {
|
||||
mediaTimeDelayMs += mediaTimeUpdatePeriodMs;
|
||||
}
|
||||
delayMs = playbackSpeed == 1 ? mediaTimeDelayMs
|
||||
: (long) (mediaTimeDelayMs / playbackSpeed);
|
||||
} else {
|
||||
delayMs = 200;
|
||||
}
|
||||
} else {
|
||||
delayMs = 1000;
|
||||
|
|
|
|||
Loading…
Reference in a new issue