1
0
mirror of https://github.com/videojs/video.js.git synced 2025-02-02 11:34:50 +02:00

Merge branch 'feature/duration-cacheing'

This commit is contained in:
Steve Heffernan 2012-04-25 15:20:07 -07:00
commit 048b808153
2 changed files with 18 additions and 2 deletions

View File

@ -1,3 +1,4 @@
* Duration is now setable (need ed for HLS m3u8 files)
* Event binders (on/off/one) now return the player instance
* Stopped player from going back to beginningg on ended event.
* Added support for percent width/height and fluid layouts

View File

@ -75,6 +75,7 @@ _V_.Player = _V_.Component.extend({
this.on("play", this.onPlay);
this.on("pause", this.onPause);
this.on("progress", this.onProgress);
this.on("durationchange", this.onDurationChange);
this.on("error", this.onError);
// When the API is ready, loop through the components and add to the player.
@ -358,6 +359,12 @@ _V_.Player = _V_.Component.extend({
}
},
// Update duration with durationchange event
// Allows for cacheing value instead of asking player each time.
onDurationChange: function(){
this.duration(this.techGet("duration"));
},
onError: function(e) {
_V_.log("Video Error", e);
},
@ -470,8 +477,16 @@ _V_.Player = _V_.Component.extend({
// http://dev.w3.org/html5/spec/video.html#dom-media-duration
// Duration should return NaN if not available. ParseFloat will turn false-ish values to NaN.
duration: function(){
return parseFloat(this.techGet("duration"));
duration: function(seconds){
if (seconds !== undefined) {
// Cache the last set value for optimiized scrubbing (esp. Flash)
this.values.duration = parseFloat(seconds);
return this;
}
return this.values.duration;
},
// Calculates how much time is left. Not in spec, but useful.