Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DASH: Keep paused buffered data even if period is removed #7081

Open
ggabdol opened this issue Mar 13, 2020 · 2 comments
Open

DASH: Keep paused buffered data even if period is removed #7081

ggabdol opened this issue Mar 13, 2020 · 2 comments

Comments

@ggabdol
Copy link

ggabdol commented Mar 13, 2020

I'm playing dynamic DASH with multi-period. Is there a way to prevent ExoPlayer from jumping to the live edge while it's in paused state? The playback position jumps to the live-edge when MPD is updated.
Our expected behaviour is that when it's paused, the video screen remains the same even if the playback position gets out of the current period.
It seems that there are at least two places in the code that trigger the jumps. One is onInputFormatChanged() in MediaCodecRenderer, and the other one is

seekToPeriodPosition(periodId, playbackInfo.positionUs, /* forceDisableRenderers= */ true);
in ExoPlayerImplInternal.
Is there an opinionated way to configure the player so it stops updating MPD when the player is paused and the playback position is out of the current period?
We're using ExoPlayer 2.9.4.

@ojw28
Copy link
Contributor

ojw28 commented Mar 15, 2020

Is there a way to prevent ExoPlayer from jumping to the live edge while it's in paused state?

I don't think this is what ExoPlayer does. ExoPlayer will (or should) remain in the same playback position for as long as the player is paused. The seek bar will continue to update to indicate that more media is available, but the playback position itself will (or should) not change.

If this is not what you're seeing, please fill in the issue template with some concrete reproduction steps that would allow us to reproduce the issue.

@tonihei
Copy link
Collaborator

tonihei commented Mar 16, 2020

I think the reproduction steps above are already sufficient.

The problem occurs because the current period is no longer part of the manifest and when the player handles the manifest update, it will realize that and seek to the default position of the next available period instead.

This is in some way working as expected because there is no way playback can continue after the pause if the period doesn't even exist anymore. On the other hand, we allow pausing within a period even if the paused position falls behind the available live window.

I'll mark this issue as an enhancement to better support this pausing feature, but I think it's relatively low priority given the implementation difficulties and the relatively niche benefit.

@tonihei tonihei changed the title Jumping to the live edge on updated MPD while player is in paused state DASH: Keep paused buffered data even if period is removed Mar 16, 2020
@ojw28 ojw28 assigned tonihei and unassigned ojw28 and tonihei Mar 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants