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

Replace DVRInfo metric with dvrwindowchanged event and MediaPlayer API #1355

Closed
LloydW93 opened this issue Apr 26, 2016 · 5 comments
Closed
Labels
Code Refactor stale To be used by automatic issue staling and closing to indicate that this issue is about to be closed
Milestone

Comments

@LloydW93
Copy link
Member

LloydW93 commented Apr 26, 2016

Previously, in issue #838, the wallclock interval was decreased due to it increasing startup delay.

However, looking at where this is used today, it is only used to control buffer pruning and updating the availability window - and running this every 50ms is in my opinion excessive.

Meanwhile, the DVRInfo metric is updated on every buffer level change, even when the content is on demand. This means that if you pause playback, the client does not have any events to inform it of a change in the available window. In the case of a UI that draws a control bar for the current availability window such as http://is.gd/ExzwTu, this results in a broken experience for users.

To solve both of these problems in our use case, we increased the wall clock time to 1000, and send the DVRInfo event every tick, for dynamic content only: https://github.com/Dash-Industry-Forum/dash.js/compare/development...bbc:dvr-wallclock?expand=1

To improve this behaviour more generally though, I think we need to consider:

  • The value of a global wall clock timer that is now only used in two places, as everywhere else now has its own timers (with intervals that make sense for that specific use).
  • Whether using 'metricadded' of type DVRInfo is the best way to get the current availability window (I may be missing an API for this). In an ideal world it'd be possible to set seekable on the videoModel (Seekable differs from non-MSE behavior w3c/media-source#5), but it currently isn't.
  • The general situation with metric data slowly increasing resource usage. Dash.js 2.1.1's behaviour is to append the current DVRInfo to an array every 50ms, even for ondemand content. Can we look at truncating the array (and other metric arrays) after, say, 1000 data points?
@dsparacio
Copy link
Contributor

Adding reference to this issue as it may be related #887

@dsparacio
Copy link
Contributor

I am for removing DVR Info as a metric and using event driven data and model store.

@LloydW93
Copy link
Member Author

LloydW93 commented May 9, 2016

I think it makes sense to break this into separate issues (as alluded to by the bullet points in the original message):

I'll update this issue title to cover the changes to the first part only, and raise new issues for the others.

@LloydW93 LloydW93 added this to the 2.2.0 milestone May 9, 2016
@LloydW93 LloydW93 changed the title Wallclock time and DVRInfo metrics Replace DVRInfo metric with dvrwindowchanged event and MediaPlayer API May 9, 2016
@dsparacio dsparacio modified the milestones: v2.3.0, 2.2.0 Jul 5, 2016
@dsparacio dsparacio modified the milestones: v2.4.0, v2.3.0 Sep 6, 2016
@dsparacio dsparacio modified the milestones: v2.5.0, v2.4.0 Jan 4, 2017
@stale
Copy link

stale bot commented Feb 26, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the stale To be used by automatic issue staling and closing to indicate that this issue is about to be closed label Feb 26, 2021
@stale
Copy link

stale bot commented Mar 5, 2021

This issue has been automatically closed because no further activity occurred. If you think this issue is still relevant please reopen it. Thank you for your contributions.

@stale stale bot closed this as completed Mar 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Code Refactor stale To be used by automatic issue staling and closing to indicate that this issue is about to be closed
Projects
None yet
Development

No branches or pull requests

2 participants