diff --git a/lib/flowplayer/README.txt b/lib/flowplayer/README.txt index 1375e00f505..62e9422988b 100644 --- a/lib/flowplayer/README.txt +++ b/lib/flowplayer/README.txt @@ -1,7 +1,36 @@ Version history: +3.2.17 +------ +- #75 set the child display list different when a gradient is set. +- The clip property 'bufferLength' now accepts decimal values, for example bufferLength: 0.2 +- #121 XSS fix: Only load plugins and external config from the same domain as the player swf is loaded from +- Made it possible to tab out of the player and into the HTML page using the keyboard alone. +- Change links in the context menu and in the logos to point to http://flash.flowplayer.org +- Pausing a live stream now leaves the video frame visible #81 +- Audio plugin is not loaded nor used when the the provider is set excplicitly in the clip to a non-audio value, for + example to 'http' +- Allow playing another instream clip while already playing one. Issue #131 +- Fixed memory leaks related to repeatedly starting playback with the play() API method. #163 + 3.2.16 ------ +- new clip event onMetadataChange, dispatched for example when switching bitrate + +Fixes: + +- Shows logo in accelerated mode #20 +- mid-rolls freeze if multiple providers are used #42 +- onFire fired twice on replay #52 +- rtmp + hw accel + instream clips lose video, or aspect ratio #44 +- URL name parts containing semi-colons (;) should pass validation through linkUrl usage #53 +- cuepoints fired multiple times with the bitrateselect plugin #50 +- fix for dispatching onBegin in certain situations +- if onStart has been dispatched already prevent dispatching many onBegin events + + +3.2.15 +------ - #15 fixes for #627, handle the display init on startup. - #615 dispatch begin if in paused mode too early. - #629 if start has been dispatched already prevent dispatching many begin events. @@ -10,11 +39,11 @@ Version history: - #52 when replaying flag start has dispatched on the current clip. - #44 fixes for #627 check if the stagevideo dimensions and positioning has changed to update the stage video mask with. - unbinding and binding stage video events caused issues with instream playlists therefore has to be kept binded. - unbinded stage video events during seeking to prevent the mask repositioning. +- unbinded stage video events during seeking to prevent the mask repositioning. - #53 update url filter to accomodate for pretty urls with semi colons. - #50 if we have metadata already set it is being updated during seeks and switching, dispatch metadata change events instead. -3.2.15 +3.2.14 ------ - #614 when the clip ends if the next clip in the provider has a different provider close the provider stream. - #627 only detach / attach the display on start events which causes issues in buffering events after a seek in stagevideo. diff --git a/lib/flowplayer/README_audio.txt b/lib/flowplayer/README_audio.txt index 746c5ee8bbd..3a788b68c97 100644 --- a/lib/flowplayer/README_audio.txt +++ b/lib/flowplayer/README_audio.txt @@ -7,6 +7,7 @@ Version history: - #582 fixes for metadata events dispatching in playlists and when replaying same audio item, cleanup duration updating once download has completed, fixes for clearing the previous cover image display. - #611 close the channel and sound on stream not found errors. +- #614 fixes for auto buffering issues where a sound channel may not be active yet. 3.2.9 ----- diff --git a/lib/flowplayer/flowplayer-3.2.12.min.js b/lib/flowplayer/flowplayer-3.2.12.min.js deleted file mode 100644 index 53d2fbd80bd..00000000000 --- a/lib/flowplayer/flowplayer-3.2.12.min.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - * flowplayer.js 3.2.12. The Flowplayer API - * - * Copyright 2009-2011 Flowplayer Oy - * - * This file is part of Flowplayer. - * - * Flowplayer is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Flowplayer is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Flowplayer. If not, see . - * - * Date: ${date} - * Revision: ${revision} - */ -!function(){function h(p){console.log("$f.fireEvent",[].slice.call(p))}function l(r){if(!r||typeof r!="object"){return r}var p=new r.constructor();for(var q in r){if(r.hasOwnProperty(q)){p[q]=l(r[q])}}return p}function n(u,r){if(!u){return}var p,q=0,s=u.length;if(s===undefined){for(p in u){if(r.call(u[p],p,u[p])===false){break}}}else{for(var t=u[0];q1){var u=arguments[1],r=(arguments.length==3)?arguments[2]:{};if(typeof u=="string"){u={src:u}}u=j({bgcolor:"#000000",version:[10,1],expressInstall:"http://releases.flowplayer.org/swf/expressinstall.swf",cachebusting:false},u);if(typeof p=="string"){if(p.indexOf(".")!=-1){var t=[];n(o(p),function(){t.push(new b(this,l(u),l(r)))});return new d(t)}else{var s=c(p);return new b(s!==null?s:l(p),l(u),l(r))}}else{if(p){return new b(p,l(u),l(r))}}}return null};j(window.$f,{fireEvent:function(){var q=[].slice.call(arguments);var r=$f(q[0]);return r?r._fireEvent(q.slice(1)):null},addPlugin:function(p,q){b.prototype[p]=q;return $f},each:n,extend:j});if(typeof jQuery=="function"){jQuery.fn.flowplayer=function(r,q){if(!arguments.length||typeof arguments[0]=="number"){var p=[];this.each(function(){var s=$f(this);if(s){p.push(s)}});return arguments.length?p[arguments[0]]:new d(p)}return this.each(function(){$f(this,l(r),q?l(q):{})})}}}();!function(){var h=document.all,j="http://get.adobe.com/flashplayer",c=typeof jQuery=="function",e=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,b={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}function i(m,l){if(l){for(var f in l){if(l.hasOwnProperty(f)){m[f]=l[f]}}}return m}function a(f,n){var m=[];for(var l in f){if(f.hasOwnProperty(l)){m[l]=n(f[l])}}return m}window.flashembed=function(f,m,l){if(typeof f=="string"){f=document.getElementById(f.replace("#",""))}if(!f){return}if(typeof m=="string"){m={src:m}}return new d(f,i(i({},b),m),l)};var g=i(window.flashembed,{conf:b,getVersion:function(){var m,f;try{f=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(o){try{m=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");f=m&&m.GetVariable("$version")}catch(n){try{m=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");f=m&&m.GetVariable("$version")}catch(l){}}}f=e.exec(f);return f?[1*f[1],1*f[(f[1]*1>9?2:3)]*1]:[0,0]},asString:function(l){if(l===null||l===undefined){return null}var f=typeof l;if(f=="object"&&l.push){f="array"}switch(f){case"string":l=l.replace(new RegExp('(["\\\\])',"g"),"\\$1");l=l.replace(/^\s?(\d+\.?\d*)%/,"$1pct");return'"'+l+'"';case"array":return"["+a(l,function(o){return g.asString(o)}).join(",")+"]";case"function":return'"function()"';case"object":var m=[];for(var n in l){if(l.hasOwnProperty(n)){m.push('"'+n+'":'+g.asString(l[n]))}}return"{"+m.join(",")+"}"}return String(l).replace(/\s/g," ").replace(/\'/g,'"')},getHTML:function(o,l){o=i({},o);var n=''}o.width=o.height=o.id=o.w3c=o.src=null;o.onFail=o.version=o.expressInstall=null;for(var m in o){if(o[m]){n+=''}}var p="";if(l){for(var f in l){if(l[f]){var q=l[f];p+=f+"="+(/function|object/.test(typeof q)?g.asString(q):q)+"&"}}p=p.slice(0,-1);n+='"}n+="";return n},isSupported:function(f){return k[0]>f[0]||k[0]==f[0]&&k[1]>=f[1]}});var k=g.getVersion();function d(f,n,m){if(g.isSupported(n.version)){f.innerHTML=g.getHTML(n,m)}else{if(n.expressInstall&&g.isSupported([6,65])){f.innerHTML=g.getHTML(i(n,{src:n.expressInstall}),{MMredirectURL:encodeURIComponent(location.href),MMplayerType:"PlugIn",MMdoctitle:document.title})}else{if(!f.innerHTML.replace(/\s/g,"")){f.innerHTML="

Flash version "+n.version+" or greater is required

"+(k[0]>0?"Your version is "+k:"You have no flash plugin installed")+"

"+(f.tagName=="A"?"

Click here to download latest version

":"

Download latest version from here

");if(f.tagName=="A"||f.tagName=="DIV"){f.onclick=function(){location.href=j}}}if(n.onFail){var l=n.onFail.call(this);if(typeof l=="string"){f.innerHTML=l}}}}if(h){window[n.id]=document.getElementById(n.id)}i(this,{getRoot:function(){return f},getOptions:function(){return n},getConf:function(){return m},getApi:function(){return f.firstChild}})}if(c){jQuery.tools=jQuery.tools||{version:"3.2.12"};jQuery.tools.flashembed={conf:b};jQuery.fn.flashembed=function(l,f){return this.each(function(){$(this).data("flashembed",flashembed(this,l,f))})}}}(); \ No newline at end of file diff --git a/lib/flowplayer/flowplayer-3.2.12.js b/lib/flowplayer/flowplayer-3.2.13.js similarity index 98% rename from lib/flowplayer/flowplayer-3.2.12.js rename to lib/flowplayer/flowplayer-3.2.13.js index 0da9dbbe7e9..cb8dd86a5a1 100644 --- a/lib/flowplayer/flowplayer-3.2.12.js +++ b/lib/flowplayer/flowplayer-3.2.13.js @@ -1,5 +1,5 @@ /* - * flowplayer.js 3.2.12. The Flowplayer API + * flowplayer.js The Flowplayer API * * Copyright 2009-2011 Flowplayer Oy * @@ -18,8 +18,6 @@ * You should have received a copy of the GNU General Public License * along with Flowplayer. If not, see . * - * Date: ${date} - * Revision: ${revision} */ !function () { function h(p) { @@ -183,7 +181,7 @@ return A[1].call(t, B, x) } } - if (z && "onBeforeBegin,onMetaData,onStart,onUpdate,onResume".indexOf(w) != -1) { + if (z && "onBeforeBegin,onMetaData,onMetaDataChange,onStart,onUpdate,onResume".indexOf(w) != -1) { j(B, z); if (z.metaData) { if (!B.duration) { @@ -475,7 +473,7 @@ } return x }, getVersion: function () { - var J = "flowplayer.js 3.2.12"; + var J = "flowplayer.js @VERSION"; if (x.isLoaded()) { var I = w.fp_getVersion(); I.push(J); @@ -879,10 +877,13 @@ return new d(f, i(i({}, b), m), l) }; var g = i(window.flashembed, {conf: b, getVersion: function () { - var m, f; + var m, f, o; try { - f = navigator.plugins["Shockwave Flash"].description.slice(16) - } catch (o) { + o = navigator.plugins["Shockwave Flash"]; + if (o[0].enabledPlugin != null) { + f = o.description.slice(16) + } + } catch (p) { try { m = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); f = m && m.GetVariable("$version") @@ -1003,7 +1004,7 @@ } if (c) { - jQuery.tools = jQuery.tools || {version: "3.2.12"}; + jQuery.tools = jQuery.tools || {version: "@VERSION"}; jQuery.tools.flashembed = {conf: b}; jQuery.fn.flashembed = function (l, f) { return this.each(function () { diff --git a/lib/flowplayer/flowplayer-3.2.13.min.js b/lib/flowplayer/flowplayer-3.2.13.min.js new file mode 100644 index 00000000000..821945ad867 --- /dev/null +++ b/lib/flowplayer/flowplayer-3.2.13.min.js @@ -0,0 +1,22 @@ +/* + * flowplayer.js The Flowplayer API + * + * Copyright 2009-2011 Flowplayer Oy + * + * This file is part of Flowplayer. + * + * Flowplayer is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Flowplayer is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Flowplayer. If not, see . + * + */ +!function(){function h(p){console.log("$f.fireEvent",[].slice.call(p))}function l(r){if(!r||typeof r!="object"){return r}var p=new r.constructor();for(var q in r){if(r.hasOwnProperty(q)){p[q]=l(r[q])}}return p}function n(u,r){if(!u){return}var p,q=0,s=u.length;if(s===undefined){for(p in u){if(r.call(u[p],p,u[p])===false){break}}}else{for(var t=u[0];q1){var u=arguments[1],r=(arguments.length==3)?arguments[2]:{};if(typeof u=="string"){u={src:u}}u=j({bgcolor:"#000000",version:[10,1],expressInstall:"http://releases.flowplayer.org/swf/expressinstall.swf",cachebusting:false},u);if(typeof p=="string"){if(p.indexOf(".")!=-1){var t=[];n(o(p),function(){t.push(new b(this,l(u),l(r)))});return new d(t)}else{var s=c(p);return new b(s!==null?s:l(p),l(u),l(r))}}else{if(p){return new b(p,l(u),l(r))}}}return null};j(window.$f,{fireEvent:function(){var q=[].slice.call(arguments);var r=$f(q[0]);return r?r._fireEvent(q.slice(1)):null},addPlugin:function(p,q){b.prototype[p]=q;return $f},each:n,extend:j});if(typeof jQuery=="function"){jQuery.fn.flowplayer=function(r,q){if(!arguments.length||typeof arguments[0]=="number"){var p=[];this.each(function(){var s=$f(this);if(s){p.push(s)}});return arguments.length?p[arguments[0]]:new d(p)}return this.each(function(){$f(this,l(r),q?l(q):{})})}}}();!function(){var h=document.all,j="http://get.adobe.com/flashplayer",c=typeof jQuery=="function",e=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,b={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:true,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:false,cachebusting:false};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}function i(m,l){if(l){for(var f in l){if(l.hasOwnProperty(f)){m[f]=l[f]}}}return m}function a(f,n){var m=[];for(var l in f){if(f.hasOwnProperty(l)){m[l]=n(f[l])}}return m}window.flashembed=function(f,m,l){if(typeof f=="string"){f=document.getElementById(f.replace("#",""))}if(!f){return}if(typeof m=="string"){m={src:m}}return new d(f,i(i({},b),m),l)};var g=i(window.flashembed,{conf:b,getVersion:function(){var m,f,o;try{o=navigator.plugins["Shockwave Flash"];if(o[0].enabledPlugin!=null){f=o.description.slice(16)}}catch(p){try{m=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");f=m&&m.GetVariable("$version")}catch(n){try{m=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");f=m&&m.GetVariable("$version")}catch(l){}}}f=e.exec(f);return f?[1*f[1],1*f[(f[1]*1>9?2:3)]*1]:[0,0]},asString:function(l){if(l===null||l===undefined){return null}var f=typeof l;if(f=="object"&&l.push){f="array"}switch(f){case"string":l=l.replace(new RegExp('(["\\\\])',"g"),"\\$1");l=l.replace(/^\s?(\d+\.?\d*)%/,"$1pct");return'"'+l+'"';case"array":return"["+a(l,function(o){return g.asString(o)}).join(",")+"]";case"function":return'"function()"';case"object":var m=[];for(var n in l){if(l.hasOwnProperty(n)){m.push('"'+n+'":'+g.asString(l[n]))}}return"{"+m.join(",")+"}"}return String(l).replace(/\s/g," ").replace(/\'/g,'"')},getHTML:function(o,l){o=i({},o);var n=''}o.width=o.height=o.id=o.w3c=o.src=null;o.onFail=o.version=o.expressInstall=null;for(var m in o){if(o[m]){n+=''}}var p="";if(l){for(var f in l){if(l[f]){var q=l[f];p+=f+"="+(/function|object/.test(typeof q)?g.asString(q):q)+"&"}}p=p.slice(0,-1);n+='"}n+="";return n},isSupported:function(f){return k[0]>f[0]||k[0]==f[0]&&k[1]>=f[1]}});var k=g.getVersion();function d(f,n,m){if(g.isSupported(n.version)){f.innerHTML=g.getHTML(n,m)}else{if(n.expressInstall&&g.isSupported([6,65])){f.innerHTML=g.getHTML(i(n,{src:n.expressInstall}),{MMredirectURL:encodeURIComponent(location.href),MMplayerType:"PlugIn",MMdoctitle:document.title})}else{if(!f.innerHTML.replace(/\s/g,"")){f.innerHTML="

Flash version "+n.version+" or greater is required

"+(k[0]>0?"Your version is "+k:"You have no flash plugin installed")+"

"+(f.tagName=="A"?"

Click here to download latest version

":"

Download latest version from here

");if(f.tagName=="A"||f.tagName=="DIV"){f.onclick=function(){location.href=j}}}if(n.onFail){var l=n.onFail.call(this);if(typeof l=="string"){f.innerHTML=l}}}}if(h){window[n.id]=document.getElementById(n.id)}i(this,{getRoot:function(){return f},getOptions:function(){return n},getConf:function(){return m},getApi:function(){return f.firstChild}})}if(c){jQuery.tools=jQuery.tools||{version:"@VERSION"};jQuery.tools.flashembed={conf:b};jQuery.fn.flashembed=function(l,f){return this.each(function(){$(this).data("flashembed",flashembed(this,l,f))})}}}(); \ No newline at end of file diff --git a/lib/flowplayer/flowplayer-3.2.16.swf b/lib/flowplayer/flowplayer-3.2.16.swf deleted file mode 100644 index a7f1e5cf4d9..00000000000 Binary files a/lib/flowplayer/flowplayer-3.2.16.swf and /dev/null differ diff --git a/lib/flowplayer/flowplayer-3.2.18.swf b/lib/flowplayer/flowplayer-3.2.18.swf new file mode 100644 index 00000000000..aed1fcb126a Binary files /dev/null and b/lib/flowplayer/flowplayer-3.2.18.swf differ diff --git a/lib/flowplayer/flowplayer.audio-3.2.10.swf b/lib/flowplayer/flowplayer.audio-3.2.10.swf deleted file mode 100644 index 6dd0af32ba6..00000000000 Binary files a/lib/flowplayer/flowplayer.audio-3.2.10.swf and /dev/null differ diff --git a/lib/flowplayer/flowplayer.audio-3.2.11.swf b/lib/flowplayer/flowplayer.audio-3.2.11.swf new file mode 100644 index 00000000000..6c11d55170a Binary files /dev/null and b/lib/flowplayer/flowplayer.audio-3.2.11.swf differ diff --git a/lib/flowplayer/flowplayer.controls-3.2.15.swf b/lib/flowplayer/flowplayer.controls-3.2.15.swf deleted file mode 100644 index 8809004d45e..00000000000 Binary files a/lib/flowplayer/flowplayer.controls-3.2.15.swf and /dev/null differ diff --git a/lib/flowplayer/flowplayer.controls-3.2.16.swf b/lib/flowplayer/flowplayer.controls-3.2.16.swf new file mode 100644 index 00000000000..eacc8c0293d Binary files /dev/null and b/lib/flowplayer/flowplayer.controls-3.2.16.swf differ diff --git a/lib/javascript-static.js b/lib/javascript-static.js index c00a0ef5cbc..242294146cf 100644 --- a/lib/javascript-static.js +++ b/lib/javascript-static.js @@ -1793,9 +1793,9 @@ M.util.load_flowplayer = function() { for(var i=0; i 0 && video.height > 0) { - var src = {src: M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.16.swf', width: video.width, height: video.height}; + var src = {src: M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf', width: video.width, height: video.height}; } else { - var src = M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.16.swf'; + var src = M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf'; } flowplayer(video.id, src, { plugins: {controls: controls}, @@ -1895,17 +1895,17 @@ M.util.load_flowplayer = function() { controls.height = 25; controls.time = true; } - flowplayer(audio.id, M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.16.swf', { - plugins: {controls: controls, audio: {url: M.cfg.wwwroot + '/lib/flowplayer/flowplayer.audio-3.2.10.swf'}}, + flowplayer(audio.id, M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.18.swf', { + plugins: {controls: controls, audio: {url: M.cfg.wwwroot + '/lib/flowplayer/flowplayer.audio-3.2.11.swf'}}, clip: {url: audio.fileurl, provider: "audio", autoPlay: false} }); } } if (M.cfg.jsrev == -1) { - var jsurl = M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.12.js'; + var jsurl = M.cfg.wwwroot + '/lib/flowplayer/flowplayer-3.2.13.js'; } else { - var jsurl = M.cfg.wwwroot + '/lib/javascript.php?jsfile=/lib/flowplayer/flowplayer-3.2.12.min.js&rev=' + M.cfg.jsrev; + var jsurl = M.cfg.wwwroot + '/lib/javascript.php?jsfile=/lib/flowplayer/flowplayer-3.2.13.min.js&rev=' + M.cfg.jsrev; } var fileref = document.createElement('script'); fileref.setAttribute('type','text/javascript'); diff --git a/lib/thirdpartylibs.xml b/lib/thirdpartylibs.xml index ed5ce6a1e0e..95812bc1bc9 100644 --- a/lib/thirdpartylibs.xml +++ b/lib/thirdpartylibs.xml @@ -81,7 +81,7 @@ flowplayer Flowplayer GPL - 3.2.16 + 3.2.18 3.0+