mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +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) {
|
if (playbackState != Player.STATE_IDLE && playbackState != Player.STATE_ENDED) {
|
||||||
long delayMs;
|
long delayMs;
|
||||||
if (player.getPlayWhenReady() && playbackState == Player.STATE_READY) {
|
if (player.getPlayWhenReady() && playbackState == Player.STATE_READY) {
|
||||||
delayMs = 1000 - (position % 1000);
|
float playbackSpeed = player.getPlaybackParameters().speed;
|
||||||
if (delayMs < 200) {
|
if (playbackSpeed <= 0.1f) {
|
||||||
delayMs += 1000;
|
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 {
|
} else {
|
||||||
delayMs = 1000;
|
delayMs = 1000;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue