Merge branch 'current-res-test'

This commit is contained in:
Kasper Moskwiak 2015-11-08 23:05:27 +01:00
commit 3bd9d52002

View file

@ -22,11 +22,14 @@
currentResolution = {}, // stores current resolution currentResolution = {}, // stores current resolution
menuItemsHolder = {}; // stores menuItems menuItemsHolder = {}; // stores menuItems
function setSourcesSanitized(player, sources, label) { function setSourcesSanitized(player, sources, label, customSourcePicker) {
currentResolution = { currentResolution = {
label: label, label: label,
sources: sources sources: sources
}; };
if(typeof customSourcePicker === 'function'){
return customSourcePicker(player, sources, label);
}
return player.src(sources.map(function(src) { return player.src(sources.map(function(src) {
return {src: src.src, type: src.type, res: src.res}; return {src: src.src, type: src.type, res: src.res};
})); }));
@ -58,7 +61,7 @@
this.label.innerHTML = this.options_.label; this.label.innerHTML = this.options_.label;
} }
}, },
onClick: function(){ onClick: function(customSourcePicker){
this.onClickListener(this); this.onClickListener(this);
// Remember player state // Remember player state
var currentTime = this.player_.currentTime(); var currentTime = this.player_.currentTime();
@ -71,7 +74,7 @@
// Change player source and wait for loadeddata event, then play video // Change player source and wait for loadeddata event, then play video
// loadedmetadata doesn't work right now for flash. // loadedmetadata doesn't work right now for flash.
// Probably because of https://github.com/videojs/video-js-swf/issues/124 // Probably because of https://github.com/videojs/video-js-swf/issues/124
setSourcesSanitized(this.player_, this.src, this.options_.label).one('loadeddata', function() { setSourcesSanitized(this.player_, this.src, this.options_.label, customSourcePicker).one('loadeddata', function() {
this.player_.currentTime(currentTime); this.player_.currentTime(currentTime);
this.player_.handleTechSeeked_(); this.player_.handleTechSeeked_();
if(!isPaused){ if(!isPaused){
@ -170,12 +173,13 @@
/** /**
* Returns current resolution or sets one when label is specified * Returns current resolution or sets one when label is specified
* @param {String} [label] label name * @param {String} [label] label name
* @param {Function} [customSourcePicker] custom function to choose source. Takes 3 arguments: player, sources, label. Must return player object.
* @returns {Object} current resolution object {label: '', sources: []} if used as getter or player object if used as setter * @returns {Object} current resolution object {label: '', sources: []} if used as getter or player object if used as setter
*/ */
player.currentResolution = function(label){ player.currentResolution = function(label, customSourcePicker){
if(label == null) { return currentResolution; } if(label == null) { return currentResolution; }
if(menuItemsHolder[label] != null){ if(menuItemsHolder[label] != null){
menuItemsHolder[label].onClick(); menuItemsHolder[label].onClick(customSourcePicker);
} }
return player; return player;
}; };