webshims-rails 1.14.5 → 1.14.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +2 -0
- data/lib/webshims-rails/version.rb +2 -2
- data/readme.textile +7 -0
- data/vendor/assets/javascripts/webshims/polyfiller.js +38 -6
- data/vendor/assets/javascripts/webshims/shims/combos/1.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/combos/10.js +54 -19
- data/vendor/assets/javascripts/webshims/shims/combos/11.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/12.js +45 -21
- data/vendor/assets/javascripts/webshims/shims/combos/13.js +45 -21
- data/vendor/assets/javascripts/webshims/shims/combos/15.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/16.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/17.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/18.js +18 -81
- data/vendor/assets/javascripts/webshims/shims/combos/2.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/21.js +286 -179
- data/vendor/assets/javascripts/webshims/shims/combos/22.js +19 -1
- data/vendor/assets/javascripts/webshims/shims/combos/23.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/combos/25.js +311 -199
- data/vendor/assets/javascripts/webshims/shims/combos/26.js +22 -17
- data/vendor/assets/javascripts/webshims/shims/combos/27.js +22 -17
- data/vendor/assets/javascripts/webshims/shims/combos/3.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/30.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/31.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/34.js +41 -5
- data/vendor/assets/javascripts/webshims/shims/combos/4.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/combos/5.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/6.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/combos/7.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/8.js +48 -24
- data/vendor/assets/javascripts/webshims/shims/combos/9.js +54 -19
- data/vendor/assets/javascripts/webshims/shims/combos/98.js +24 -7
- data/vendor/assets/javascripts/webshims/shims/combos/99.js +24 -7
- data/vendor/assets/javascripts/webshims/shims/dom-extend.js +22 -4
- data/vendor/assets/javascripts/webshims/shims/es5.js +3 -1
- data/vendor/assets/javascripts/webshims/shims/es6.js +1 -5
- data/vendor/assets/javascripts/webshims/shims/filereader.js +22 -17
- data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +32 -15
- data/vendor/assets/javascripts/webshims/shims/forms-picker.js +18 -8
- data/vendor/assets/javascripts/webshims/shims/i18n/formcfg-fa.js +1 -1
- data/vendor/assets/javascripts/webshims/shims/jme/controls.css +11 -0
- data/vendor/assets/javascripts/webshims/shims/jme/controls.scss +16 -0
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols-lazy.js +3 -20
- data/vendor/assets/javascripts/webshims/shims/jme/mediacontrols.js +24 -7
- data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +26 -20
- data/vendor/assets/javascripts/webshims/shims/mediaelement-debug.js +9 -1
- data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +267 -178
- data/vendor/assets/javascripts/webshims/shims/picture.js +18 -81
- data/vendor/assets/javascripts/webshims/shims/plugins/jquery.ui.position.js +1 -9
- data/vendor/assets/javascripts/webshims/shims/sizzle.js +1 -8
- data/vendor/assets/javascripts/webshims/shims/styles/forms-ext.css +4 -0
- data/vendor/assets/javascripts/webshims/shims/styles/scss/forms-ext.scss +5 -0
- data/vendor/assets/javascripts/webshims/shims/styles/shim-ext.css +4 -0
- data/vendor/assets/javascripts/webshims/shims/swf/JarisFLVPlayer.swf +0 -0
- data/vendor/assets/javascripts/webshims/shims/track.js +19 -1
- data/vendor/assets/javascripts/webshims/shims/url.js +316 -0
- data/vendor/assets/javascripts/webshims/shims/usermedia-core.js +28 -0
- data/vendor/assets/javascripts/webshims/shims/usermedia-shim.js +179 -0
- metadata +5 -3
- data/vendor/assets/javascripts/webshims/extras/modernizr-custom.js +0 -511
@@ -29,6 +29,8 @@ webshims.register('mediacontrols-lazy', function($, webshims, window, doc, undef
|
|
29
29
|
;
|
30
30
|
return '<div><ul role="presentation">' + items.join('') +'</ul></div>';
|
31
31
|
};
|
32
|
+
var domPrefixes = webshims.domPrefixes;
|
33
|
+
var prefixed = webshims.prefixed;
|
32
34
|
|
33
35
|
|
34
36
|
if(!$.fn.wsTouchClick){
|
@@ -976,26 +978,7 @@ webshims.register('mediacontrols-lazy', function($, webshims, window, doc, undef
|
|
976
978
|
return chapterList;
|
977
979
|
}
|
978
980
|
|
979
|
-
var domPrefixes = ["webkit", "moz", "o", "ms"];
|
980
981
|
|
981
|
-
function prefixed(prop, obj){
|
982
|
-
var i, testProp;
|
983
|
-
var ret = false;
|
984
|
-
if(obj[prop]){
|
985
|
-
ret = prop;
|
986
|
-
}
|
987
|
-
if(!ret){
|
988
|
-
prop = prop.charAt(0).toUpperCase() + prop.slice(1);
|
989
|
-
for(i = 0; i < domPrefixes.length; i++){
|
990
|
-
testProp = domPrefixes[i]+prop;
|
991
|
-
if(testProp in obj){
|
992
|
-
ret = testProp;
|
993
|
-
break;
|
994
|
-
}
|
995
|
-
}
|
996
|
-
}
|
997
|
-
return ret;
|
998
|
-
}
|
999
982
|
|
1000
983
|
$.jme.defineMethod('getChapterTree', getChapterTree);
|
1001
984
|
|
@@ -1050,7 +1033,7 @@ webshims.register('mediacontrols-lazy', function($, webshims, window, doc, undef
|
|
1050
1033
|
data = $.jme.data(this);
|
1051
1034
|
sec = $.prop(data.media, 'duration');
|
1052
1035
|
}
|
1053
|
-
if(!sec){
|
1036
|
+
if(!sec || !isFinite(sec)){
|
1054
1037
|
sec = 0;
|
1055
1038
|
}
|
1056
1039
|
var formated = [];
|
@@ -50,7 +50,9 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
50
50
|
return cache[template] || '';
|
51
51
|
};
|
52
52
|
})();
|
53
|
-
var
|
53
|
+
var ios = /iP(hone|od|ad)/i.test(navigator.platform);
|
54
|
+
var ios6 = ios && parseInt(((navigator.appVersion).match(/OS (\d+)_\d+/) || ['','8'])[1], 10) < 7;
|
55
|
+
var hasYtBug = (!window.Modernizr || !Modernizr.videoautoplay) && (ios || /android/i.test(navigator.userAgent));
|
54
56
|
var loadLazy = function(){
|
55
57
|
if(!loadLazy.loaded){
|
56
58
|
loadLazy.loaded = true;
|
@@ -77,7 +79,8 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
77
79
|
};
|
78
80
|
|
79
81
|
webshims.loader.addModule('mediacontrols-lazy', {
|
80
|
-
src: 'jme/mediacontrols-lazy'
|
82
|
+
src: 'jme/mediacontrols-lazy',
|
83
|
+
d: ['dom-support']
|
81
84
|
});
|
82
85
|
|
83
86
|
var userActivity = {
|
@@ -100,6 +103,11 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
100
103
|
data.media.removeAttr('controls');
|
101
104
|
data.media.mediaLoad();
|
102
105
|
}
|
106
|
+
|
107
|
+
if(hasYtBug){
|
108
|
+
data.player.addClass('has-yt-bug');
|
109
|
+
}
|
110
|
+
|
103
111
|
data.media.prop('controls', false);
|
104
112
|
structure = getBarHtml();
|
105
113
|
data._controlbar = $( options.barStructure );
|
@@ -146,7 +154,7 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
146
154
|
})();
|
147
155
|
var $poster = $('<div class="ws-poster" />').insertAfter(data.media);
|
148
156
|
var posterState = (function(){
|
149
|
-
var lastPosterState, lastYoutubeState, lastPoster;
|
157
|
+
var lastPosterState, lastYoutubeState, lastPoster, isYt;
|
150
158
|
var hasFlash = window.swfmini && swfmini.hasFlashPlayerVersion('10.0.3');
|
151
159
|
var regYt = /youtube\.com\/[watch\?|v\/]+/i;
|
152
160
|
|
@@ -162,8 +170,10 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
162
170
|
data.player.addClass('no-backgroundsize');
|
163
171
|
}
|
164
172
|
data.media.on('play playing waiting seeked seeking', function(e){
|
165
|
-
|
166
|
-
|
173
|
+
if(!e){
|
174
|
+
e.type = 'playing';
|
175
|
+
}
|
176
|
+
if(isInitial && (!isYt || !hasYtBug || e.type == 'playing' || data.media.prop('readyState') > 1)){
|
167
177
|
isInitial = false;
|
168
178
|
data.player.removeClass('initial-state');
|
169
179
|
}
|
@@ -179,12 +189,16 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
179
189
|
data.player.addClass('ended-state');
|
180
190
|
}
|
181
191
|
});
|
192
|
+
|
182
193
|
return function(){
|
194
|
+
var hasYt;
|
183
195
|
var poster = data.media.attr('poster');
|
184
196
|
var hasPoster = !!poster;
|
185
197
|
var currentSrc = data.media.prop('currentSrc') || '';
|
186
|
-
|
187
|
-
|
198
|
+
|
199
|
+
isYt = regYt.test(currentSrc);
|
200
|
+
|
201
|
+
hasYt = (hasFlash && hasPoster) ? false : isYt;
|
188
202
|
|
189
203
|
if(!hasPoster && isYt){
|
190
204
|
poster = currentSrc.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i) || '';
|
@@ -214,6 +228,9 @@ webshims.register('mediacontrols', function($, webshims, window){
|
|
214
228
|
data.player.removeClass('ended-state');
|
215
229
|
}
|
216
230
|
|
231
|
+
//https://code.google.com/p/gdata-issues/issues/detail?id=5415
|
232
|
+
data.player[isYt ? 'addClass' : 'removeClass']('yt-video');
|
233
|
+
|
217
234
|
if(lastYoutubeState !== hasYt){
|
218
235
|
lastYoutubeState = hasYt;
|
219
236
|
data.player[hasYt ? 'addClass' : 'removeClass']('has-ytposter');
|
@@ -59,7 +59,7 @@
|
|
59
59
|
}
|
60
60
|
|
61
61
|
webshims.register('mediaelement-core', function($, webshims, window, document, undefined, options){
|
62
|
-
var hasSwf = swfmini.hasFlashPlayerVersion('
|
62
|
+
var hasSwf = swfmini.hasFlashPlayerVersion('11.3');
|
63
63
|
var mediaelement = webshims.mediaelement;
|
64
64
|
|
65
65
|
mediaelement.parseRtmp = function(data){
|
@@ -169,6 +169,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
169
169
|
loadYt();
|
170
170
|
}
|
171
171
|
};
|
172
|
+
|
172
173
|
|
173
174
|
webshims.addPolyfill('mediaelement-yt', {
|
174
175
|
test: !hasYt,
|
@@ -213,7 +214,16 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
213
214
|
if(src.indexOf('youtube.com/watch?') != -1 || src.indexOf('youtube.com/v/') != -1){
|
214
215
|
return 'video/youtube';
|
215
216
|
}
|
216
|
-
|
217
|
+
|
218
|
+
if(!src.indexOf('mediastream:') || !src.indexOf('blob:http')){
|
219
|
+
return 'usermedia';
|
220
|
+
}
|
221
|
+
|
222
|
+
if(!src.indexOf('webshimstream')){
|
223
|
+
return 'jarisplayer/stream';
|
224
|
+
}
|
225
|
+
|
226
|
+
if(!src.indexOf('rtmp')){
|
217
227
|
return nodeName+'/rtmp';
|
218
228
|
}
|
219
229
|
src = src.split('?')[0].split('#')[0].split('.');
|
@@ -230,28 +240,24 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
230
240
|
};
|
231
241
|
|
232
242
|
|
233
|
-
mediaelement.srces = function(mediaElem
|
243
|
+
mediaelement.srces = function(mediaElem){
|
244
|
+
var srces = [];
|
234
245
|
mediaElem = $(mediaElem);
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
if(src.src){srces.push(src);}
|
244
|
-
});
|
245
|
-
} else {
|
246
|
-
srces.push(src);
|
247
|
-
}
|
248
|
-
return srces;
|
246
|
+
var nodeName = mediaElem[0].nodeName.toLowerCase();
|
247
|
+
var src = getSrcObj(mediaElem, nodeName);
|
248
|
+
|
249
|
+
if(!src.src){
|
250
|
+
$('source', mediaElem).each(function(){
|
251
|
+
src = getSrcObj(this, nodeName);
|
252
|
+
if(src.src){srces.push(src);}
|
253
|
+
});
|
249
254
|
} else {
|
250
|
-
|
255
|
+
srces.push(src);
|
251
256
|
}
|
257
|
+
return srces;
|
252
258
|
};
|
253
259
|
|
254
|
-
mediaelement.swfMimeTypes = ['video/3gpp', 'video/x-msvideo', 'video/quicktime', 'video/x-m4v', 'video/mp4', 'video/m4p', 'video/x-flv', 'video/flv', 'audio/mpeg', 'audio/aac', 'audio/mp4', 'audio/x-m4a', 'audio/m4a', 'audio/mp3', 'audio/x-fla', 'audio/fla', 'youtube/flv', 'video/jarisplayer', 'jarisplayer/jarisplayer', 'video/youtube', 'video/rtmp', 'audio/rtmp'];
|
260
|
+
mediaelement.swfMimeTypes = ['video/3gpp', 'video/x-msvideo', 'video/quicktime', 'video/x-m4v', 'video/mp4', 'video/m4p', 'video/x-flv', 'video/flv', 'audio/mpeg', 'audio/aac', 'audio/mp4', 'audio/x-m4a', 'audio/m4a', 'audio/mp3', 'audio/x-fla', 'audio/fla', 'youtube/flv', 'video/jarisplayer', 'jarisplayer/jarisplayer', 'jarisplayer/stream', 'video/youtube', 'video/rtmp', 'audio/rtmp'];
|
255
261
|
|
256
262
|
mediaelement.canThirdPlaySrces = function(mediaElem, srces){
|
257
263
|
var ret = '';
|
@@ -281,7 +287,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
|
|
281
287
|
srces = srces || mediaelement.srces(mediaElem);
|
282
288
|
|
283
289
|
$.each(srces, function(i, src){
|
284
|
-
if(src.type && nativeCanPlay.call(mediaElem[0], src.type) ){
|
290
|
+
if(src.type == 'usermedia' || (src.type && nativeCanPlay.call(mediaElem[0], src.type)) ){
|
285
291
|
ret = src;
|
286
292
|
return false;
|
287
293
|
}
|
@@ -472,7 +472,8 @@
|
|
472
472
|
.attr({
|
473
473
|
src: src.src,
|
474
474
|
'data-type': container,
|
475
|
-
'controls': 'controls'
|
475
|
+
'controls': 'controls',
|
476
|
+
preload: 'none'
|
476
477
|
})
|
477
478
|
;
|
478
479
|
var resolvePromise = function(){
|
@@ -517,6 +518,8 @@
|
|
517
518
|
duration: $media.prop('duration'),
|
518
519
|
height: $media.prop('videoHeight'),
|
519
520
|
width: $media.prop('videoWidth')
|
521
|
+
//todo at test for seekable
|
522
|
+
//,seekable: ($media.prop('seekable') || []).length
|
520
523
|
};
|
521
524
|
}
|
522
525
|
src.decode[provider].success = true;
|
@@ -554,6 +557,11 @@
|
|
554
557
|
.on('mediaerror loadedmetadata', resolve)
|
555
558
|
.appendTo($element)
|
556
559
|
;
|
560
|
+
|
561
|
+
if(provider == 'native'){
|
562
|
+
$media.on('error', resolve);
|
563
|
+
}
|
564
|
+
|
557
565
|
$element.appendTo($container);
|
558
566
|
timeoutTimer = setTimeout(resolve, 40000);
|
559
567
|
playTimer = setTimeout(function(){
|
@@ -1,11 +1,11 @@
|
|
1
1
|
webshims.register('mediaelement-jaris', function($, webshims, window, document, undefined, options){
|
2
2
|
"use strict";
|
3
|
-
|
3
|
+
|
4
4
|
var mediaelement = webshims.mediaelement;
|
5
5
|
var swfmini = window.swfmini;
|
6
6
|
var support = webshims.support;
|
7
7
|
var hasNative = support.mediaelement;
|
8
|
-
var hasFlash = swfmini.hasFlashPlayerVersion('
|
8
|
+
var hasFlash = swfmini.hasFlashPlayerVersion('11.3');
|
9
9
|
var loadedSwf = 0;
|
10
10
|
var needsLoadPreload = 'ActiveXObject' in window && hasNative;
|
11
11
|
var getProps = {
|
@@ -38,18 +38,19 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
38
38
|
}
|
39
39
|
};
|
40
40
|
var getPropKeys = Object.keys(getProps);
|
41
|
-
|
41
|
+
|
42
42
|
var getSetProps = {
|
43
43
|
currentTime: 0,
|
44
44
|
volume: 1,
|
45
45
|
muted: false
|
46
46
|
};
|
47
47
|
var getSetPropKeys = Object.keys(getSetProps);
|
48
|
-
|
48
|
+
|
49
49
|
var playerStateObj = $.extend({
|
50
50
|
isActive: 'html5',
|
51
|
-
activating: 'html5',
|
51
|
+
activating: 'html5',
|
52
52
|
wasSwfReady: false,
|
53
|
+
_usermedia: null,
|
53
54
|
_bufferedEnd: 0,
|
54
55
|
_bufferedStart: 0,
|
55
56
|
currentTime: 0,
|
@@ -59,8 +60,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
59
60
|
lastDuration: 0,
|
60
61
|
_timeDif: 0.3
|
61
62
|
}, getProps, getSetProps);
|
62
|
-
|
63
|
-
|
63
|
+
|
64
|
+
|
64
65
|
var getSwfDataFromElem = function(elem){
|
65
66
|
try {
|
66
67
|
(elem.nodeName);
|
@@ -70,15 +71,15 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
70
71
|
var data = webshims.data(elem, 'mediaelement');
|
71
72
|
return (data && data.isActive == 'third') ? data : null;
|
72
73
|
};
|
73
|
-
|
74
|
+
|
74
75
|
var trigger = function(elem, evt){
|
75
76
|
evt = $.Event(evt);
|
76
77
|
evt.preventDefault();
|
77
78
|
$.event.trigger(evt, undefined, elem);
|
78
79
|
};
|
79
|
-
|
80
|
+
|
80
81
|
var playerSwfPath = options.playerPath || webshims.cfg.basePath + "swf/" + (options.playerName || 'JarisFLVPlayer.swf');
|
81
|
-
|
82
|
+
|
82
83
|
webshims.extendUNDEFProp(options.params, {
|
83
84
|
allowscriptaccess: 'always',
|
84
85
|
allowfullscreen: 'true',
|
@@ -92,7 +93,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
92
93
|
webshims.extendUNDEFProp(options.attrs, {
|
93
94
|
bgcolor: '#000000'
|
94
95
|
});
|
95
|
-
|
96
|
+
options.playerPath = playerSwfPath;
|
97
|
+
|
96
98
|
var setReadyState = function(readyState, data){
|
97
99
|
if(readyState < 3){
|
98
100
|
clearTimeout(data._canplaythroughTimer);
|
@@ -120,8 +122,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
120
122
|
$(data._elem).triggerHandler('seeked');
|
121
123
|
}
|
122
124
|
};
|
123
|
-
|
124
|
-
|
125
|
+
|
126
|
+
|
125
127
|
mediaelement.jarisEvent = {};
|
126
128
|
var localConnectionTimer;
|
127
129
|
var onEvent = {
|
@@ -136,7 +138,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
136
138
|
playing = override;
|
137
139
|
}
|
138
140
|
if(playing == idled || playing == null){
|
139
|
-
|
141
|
+
|
140
142
|
data.paused = !playing;
|
141
143
|
type = data.paused ? 'pause' : 'play';
|
142
144
|
data._ppFlag = true;
|
@@ -151,7 +153,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
151
153
|
},
|
152
154
|
onSeek: function(jaris, data){
|
153
155
|
data._lastSeektime = jaris.seekTime;
|
154
|
-
|
156
|
+
|
155
157
|
data.seeking = true;
|
156
158
|
$(data._elem).triggerHandler('seeking');
|
157
159
|
clearTimeout(data._seekedTimer);
|
@@ -167,19 +169,19 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
167
169
|
setReadyState(3, data);
|
168
170
|
},
|
169
171
|
onDataInitialized: function(jaris, data){
|
170
|
-
|
172
|
+
|
171
173
|
var oldDur = data.duration;
|
172
174
|
var durDelta;
|
173
175
|
data.duration = jaris.duration;
|
174
176
|
if(oldDur == data.duration || isNaN(data.duration)){return;}
|
175
|
-
|
177
|
+
|
176
178
|
if(data._calledMeta && ((durDelta = Math.abs(data.lastDuration - data.duration)) < 2)){return;}
|
177
|
-
|
178
|
-
|
179
|
-
|
179
|
+
|
180
|
+
|
181
|
+
|
180
182
|
data.videoHeight = jaris.height;
|
181
183
|
data.videoWidth = jaris.width;
|
182
|
-
|
184
|
+
|
183
185
|
if(!data.networkState){
|
184
186
|
data.networkState = 2;
|
185
187
|
}
|
@@ -235,7 +237,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
235
237
|
data.lastCalledTime = data.currentTime;
|
236
238
|
$.event.trigger('timeupdate', undefined, data._elem, true);
|
237
239
|
}
|
238
|
-
|
240
|
+
|
239
241
|
},
|
240
242
|
onProgress: function(jaris, data){
|
241
243
|
if(data.ended){
|
@@ -245,7 +247,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
245
247
|
return;
|
246
248
|
}
|
247
249
|
var percentage = jaris.loaded / jaris.total;
|
248
|
-
|
250
|
+
|
249
251
|
if(percentage > 0.02 && percentage < 0.2){
|
250
252
|
setReadyState(3, data);
|
251
253
|
} else if(percentage > 0.2){
|
@@ -258,10 +260,10 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
258
260
|
if(data._bufferedEnd && (data._bufferedEnd > percentage)){
|
259
261
|
data._bufferedStart = data.currentTime || 0;
|
260
262
|
}
|
261
|
-
|
263
|
+
|
262
264
|
data._bufferedEnd = percentage;
|
263
265
|
data.buffered.length = 1;
|
264
|
-
|
266
|
+
|
265
267
|
$.event.trigger('progress', undefined, data._elem, true);
|
266
268
|
},
|
267
269
|
onPlaybackFinished: function(jaris, data){
|
@@ -281,7 +283,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
281
283
|
ready: (function(){
|
282
284
|
var testAPI = function(data){
|
283
285
|
var passed = true;
|
284
|
-
|
286
|
+
|
285
287
|
try {
|
286
288
|
data.api.api_get('volume');
|
287
289
|
} catch(er){
|
@@ -289,17 +291,17 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
289
291
|
}
|
290
292
|
return passed;
|
291
293
|
};
|
292
|
-
|
294
|
+
|
293
295
|
return function(jaris, data){
|
294
296
|
var i = 0;
|
295
|
-
|
297
|
+
|
296
298
|
var doneFn = function(){
|
297
299
|
if(i > 9){
|
298
300
|
data.tryedReframeing = 0;
|
299
301
|
return;
|
300
302
|
}
|
301
303
|
i++;
|
302
|
-
|
304
|
+
|
303
305
|
data.tryedReframeing++;
|
304
306
|
if(testAPI(data)){
|
305
307
|
data.wasSwfReady = true;
|
@@ -329,25 +331,25 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
329
331
|
clearTimeout(localConnectionTimer);
|
330
332
|
clearTimeout(data.reframeTimer);
|
331
333
|
data.shadowElem.removeClass('flashblocker-assumed');
|
332
|
-
|
334
|
+
|
333
335
|
if(!i){
|
334
336
|
doneFn();
|
335
337
|
} else {
|
336
338
|
data.reframeTimer = setTimeout(doneFn, 9);
|
337
339
|
}
|
338
|
-
|
340
|
+
|
339
341
|
};
|
340
342
|
})()
|
341
343
|
};
|
342
|
-
|
344
|
+
|
343
345
|
onEvent.onMute = onEvent.onVolumeChange;
|
344
|
-
|
345
|
-
|
346
|
+
mediaelement.onEvent = onEvent;
|
347
|
+
|
346
348
|
var workActionQueue = function(data){
|
347
349
|
var actionLen = data.actionQueue.length;
|
348
350
|
var i = 0;
|
349
351
|
var operation;
|
350
|
-
|
352
|
+
|
351
353
|
if(actionLen && data.isActive == 'third'){
|
352
354
|
while(data.actionQueue.length && actionLen > i){
|
353
355
|
i++;
|
@@ -368,7 +370,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
368
370
|
if( (data._ppFlag === undefined && ($.prop(data._elem, 'autoplay')) || !data.paused)){
|
369
371
|
setTimeout(function(){
|
370
372
|
if(data.isActive == 'third' && (data._ppFlag === undefined || !data.paused)){
|
371
|
-
|
373
|
+
|
372
374
|
try {
|
373
375
|
$(data._elem).play();
|
374
376
|
data._ppFlag = true;
|
@@ -376,7 +378,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
376
378
|
}
|
377
379
|
}, 1);
|
378
380
|
}
|
379
|
-
|
381
|
+
|
380
382
|
if(data.muted){
|
381
383
|
$.prop(data._elem, 'muted', true);
|
382
384
|
}
|
@@ -384,8 +386,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
384
386
|
$.prop(data._elem, 'volume', data.volume);
|
385
387
|
}
|
386
388
|
};
|
387
|
-
|
388
|
-
|
389
|
+
|
390
|
+
|
389
391
|
var addMediaToStopEvents = $.noop;
|
390
392
|
if(hasNative){
|
391
393
|
var stopEvents = {
|
@@ -396,14 +398,14 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
396
398
|
var hidevents = hideEvtArray.map(function(evt){
|
397
399
|
return evt +'.webshimspolyfill';
|
398
400
|
}).join(' ');
|
399
|
-
|
401
|
+
|
400
402
|
var hidePlayerEvents = function(event){
|
401
403
|
var data = webshims.data(event.target, 'mediaelement');
|
402
404
|
if(!data){return;}
|
403
405
|
var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
|
404
406
|
if( isNativeHTML5 == (data.activating == 'third') ){
|
405
407
|
event.stopImmediatePropagation();
|
406
|
-
|
408
|
+
|
407
409
|
if(stopEvents[event.type]){
|
408
410
|
if(data.isActive != data.activating){
|
409
411
|
$(event.target).pause();
|
@@ -413,7 +415,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
413
415
|
}
|
414
416
|
}
|
415
417
|
};
|
416
|
-
|
418
|
+
|
417
419
|
addMediaToStopEvents = function(elem){
|
418
420
|
$(elem)
|
419
421
|
.off(hidevents)
|
@@ -425,8 +427,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
425
427
|
};
|
426
428
|
addMediaToStopEvents(document);
|
427
429
|
}
|
428
|
-
|
429
|
-
|
430
|
+
|
431
|
+
|
430
432
|
mediaelement.setActive = function(elem, type, data){
|
431
433
|
if(!data){
|
432
434
|
data = webshims.data(elem, 'mediaelement');
|
@@ -448,14 +450,14 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
448
450
|
}
|
449
451
|
$(elem).trigger('mediaelementapichange');
|
450
452
|
};
|
451
|
-
|
452
|
-
|
453
|
-
|
453
|
+
|
454
|
+
|
455
|
+
|
454
456
|
var resetSwfProps = (function(){
|
455
|
-
var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
|
457
|
+
var resetProtoProps = ['_calledMeta', 'lastDuration', '_bufferedEnd', 'lastCalledTime', '_usermedia', '_bufferedStart', '_ppFlag', 'currentSrc', 'currentTime', 'duration', 'ended', 'networkState', 'paused', 'seeking', 'videoHeight', 'videoWidth'];
|
456
458
|
var len = resetProtoProps.length;
|
457
459
|
return function(data){
|
458
|
-
|
460
|
+
|
459
461
|
if(!data){return;}
|
460
462
|
clearTimeout(data._seekedTimer);
|
461
463
|
var lenI = len;
|
@@ -472,8 +474,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
472
474
|
}
|
473
475
|
};
|
474
476
|
})();
|
475
|
-
|
476
|
-
|
477
|
+
|
478
|
+
|
477
479
|
var getComputedDimension = (function(){
|
478
480
|
var dimCache = {};
|
479
481
|
var getVideoDims = function(data){
|
@@ -495,7 +497,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
495
497
|
width: this.width,
|
496
498
|
height: this.height
|
497
499
|
};
|
498
|
-
|
500
|
+
|
499
501
|
if(dimCache[poster].height && dimCache[poster].width){
|
500
502
|
setElementDimension(data, $.prop(data._elem, 'controls'));
|
501
503
|
} else {
|
@@ -511,12 +513,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
511
513
|
}
|
512
514
|
return ret || {width: 300, height: data._elemNodeName == 'video' ? 150 : 50};
|
513
515
|
};
|
514
|
-
|
516
|
+
|
515
517
|
var getCssStyle = function(elem, style){
|
516
518
|
return elem.style[style] || (elem.currentStyle && elem.currentStyle[style]) || (window.getComputedStyle && (window.getComputedStyle( elem, null ) || {} )[style]) || '';
|
517
519
|
};
|
518
520
|
var minMaxProps = ['minWidth', 'maxWidth', 'minHeight', 'maxHeight'];
|
519
|
-
|
521
|
+
|
520
522
|
var addMinMax = function(elem, ret){
|
521
523
|
var i, prop;
|
522
524
|
var hasMinMax = false;
|
@@ -530,7 +532,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
530
532
|
return hasMinMax;
|
531
533
|
};
|
532
534
|
var retFn = function(data){
|
533
|
-
var videoDims, ratio
|
535
|
+
var videoDims, ratio;
|
534
536
|
var elem = data._elem;
|
535
537
|
var autos = {
|
536
538
|
width: getCssStyle(elem, 'width') == 'auto',
|
@@ -540,11 +542,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
540
542
|
width: !autos.width && $(elem).width(),
|
541
543
|
height: !autos.height && $(elem).height()
|
542
544
|
};
|
543
|
-
|
545
|
+
|
544
546
|
if(autos.width || autos.height){
|
545
547
|
videoDims = getVideoDims(data);
|
546
548
|
ratio = videoDims.width / videoDims.height;
|
547
|
-
|
549
|
+
|
548
550
|
if(autos.width && autos.height){
|
549
551
|
ret.width = videoDims.width;
|
550
552
|
ret.height = videoDims.height;
|
@@ -553,12 +555,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
553
555
|
} else if(autos.height){
|
554
556
|
ret.height = ret.width / ratio;
|
555
557
|
}
|
556
|
-
|
558
|
+
|
557
559
|
if(addMinMax(elem, ret)){
|
558
560
|
data.shadowElem.css(ret);
|
559
561
|
if(autos.width){
|
560
562
|
ret.width = data.shadowElem.height() * ratio;
|
561
|
-
}
|
563
|
+
}
|
562
564
|
if(autos.height){
|
563
565
|
ret.height = ((autos.width) ? ret.width : data.shadowElem.width()) / ratio;
|
564
566
|
}
|
@@ -566,11 +568,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
566
568
|
data.shadowElem.css(ret);
|
567
569
|
ret.height = data.shadowElem.width() / ratio;
|
568
570
|
ret.width = ret.height * ratio;
|
569
|
-
|
571
|
+
|
570
572
|
data.shadowElem.css(ret);
|
571
573
|
ret.width = data.shadowElem.height() * ratio;
|
572
574
|
ret.height = ret.width / ratio;
|
573
|
-
|
575
|
+
|
574
576
|
}
|
575
577
|
if(!webshims.support.mediaelement){
|
576
578
|
ret.width = data.shadowElem.width();
|
@@ -580,13 +582,13 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
580
582
|
}
|
581
583
|
return ret;
|
582
584
|
};
|
583
|
-
|
585
|
+
|
584
586
|
return retFn;
|
585
587
|
})();
|
586
|
-
|
588
|
+
|
587
589
|
var setElementDimension = function(data, hasControls){
|
588
590
|
var dims;
|
589
|
-
|
591
|
+
|
590
592
|
var box = data.shadowElem;
|
591
593
|
$(data._elem)[hasControls ? 'addClass' : 'removeClass']('webshims-controls');
|
592
594
|
|
@@ -601,7 +603,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
601
603
|
}
|
602
604
|
}
|
603
605
|
};
|
604
|
-
|
606
|
+
|
605
607
|
var bufferSrc = (function(){
|
606
608
|
var preloads = {
|
607
609
|
'': 1,
|
@@ -616,17 +618,17 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
616
618
|
return !!(preloads[preload] || (preload == 'metadata' && $(elem).is('.preload-in-doubt, video:not([poster])')));
|
617
619
|
};
|
618
620
|
})();
|
619
|
-
|
621
|
+
|
620
622
|
var regs = {
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
623
|
+
A: /&/g,
|
624
|
+
a: /&/g,
|
625
|
+
e: /\=/g,
|
626
|
+
q: /\?/g
|
627
|
+
},
|
628
|
+
replaceVar = function(val){
|
629
|
+
return (val.replace) ? val.replace(regs.A, '%26').replace(regs.a, '%26').replace(regs.e, '%3D').replace(regs.q, '%3F') : val;
|
630
|
+
};
|
631
|
+
|
630
632
|
if('matchMedia' in window){
|
631
633
|
var allowMediaSorting = false;
|
632
634
|
try {
|
@@ -640,14 +642,15 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
640
642
|
} catch(er){
|
641
643
|
return 0;
|
642
644
|
}
|
643
|
-
return src1 == src2 ?
|
645
|
+
return src1 == src2 ?
|
644
646
|
0 :
|
645
647
|
src1 ? -1
|
646
|
-
|
648
|
+
: 1;
|
647
649
|
};
|
648
650
|
}
|
649
651
|
}
|
650
652
|
|
653
|
+
mediaelement.resetSwfProps = resetSwfProps;
|
651
654
|
mediaelement.createSWF = function( elem, canPlaySrc, data ){
|
652
655
|
if(!hasFlash){
|
653
656
|
setTimeout(function(){
|
@@ -655,7 +658,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
655
658
|
}, 1);
|
656
659
|
return;
|
657
660
|
}
|
658
|
-
|
661
|
+
|
659
662
|
var attrStyle = {};
|
660
663
|
|
661
664
|
if(loadedSwf < 1){
|
@@ -666,55 +669,40 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
666
669
|
if(!data){
|
667
670
|
data = webshims.data(elem, 'mediaelement');
|
668
671
|
}
|
669
|
-
|
672
|
+
|
670
673
|
if((attrStyle.height = $.attr(elem, 'height') || '') || (attrStyle.width = $.attr(elem, 'width') || '')){
|
671
674
|
$(elem).css(attrStyle);
|
672
675
|
webshims.warn("width or height content attributes used. Webshims prefers the usage of CSS (computed styles or inline styles) to detect size of a video/audio. It's really more powerfull.");
|
673
676
|
}
|
674
|
-
|
675
|
-
var
|
676
|
-
var
|
677
|
-
|
678
|
-
|
679
|
-
server: replaceVar(canPlaySrc.server || '')
|
680
|
-
});
|
681
|
-
var elemVars = $(elem).data('vars') || {};
|
682
|
-
|
683
|
-
|
684
|
-
|
677
|
+
var box;
|
678
|
+
var streamRequest = canPlaySrc.streamrequest;
|
679
|
+
var isStream = canPlaySrc.type == 'jarisplayer/stream';
|
680
|
+
|
681
|
+
|
685
682
|
var hasControls = $.prop(elem, 'controls');
|
686
683
|
var elemId = 'jarisplayer-'+ webshims.getID(elem);
|
687
|
-
|
688
|
-
|
689
|
-
{},
|
690
|
-
options.params,
|
691
|
-
$(elem).data('params')
|
692
|
-
);
|
684
|
+
|
685
|
+
|
693
686
|
var elemNodeName = elem.nodeName.toLowerCase();
|
694
|
-
|
695
|
-
{},
|
696
|
-
options.attrs,
|
697
|
-
{
|
698
|
-
name: elemId,
|
699
|
-
id: elemId
|
700
|
-
},
|
701
|
-
$(elem).data('attrs')
|
702
|
-
);
|
687
|
+
|
703
688
|
var setDimension = function(){
|
704
689
|
if(data.isActive == 'third'){
|
705
690
|
setElementDimension(data, $.prop(elem, 'controls'));
|
706
691
|
}
|
707
692
|
};
|
708
|
-
|
709
|
-
|
710
|
-
|
693
|
+
|
694
|
+
if(isStream && !streamRequest){
|
695
|
+
webshim.usermedia.attach(elem, canPlaySrc, data);
|
696
|
+
return;
|
697
|
+
}
|
698
|
+
|
711
699
|
if(data && data.swfCreated){
|
712
700
|
mediaelement.setActive(elem, 'third', data);
|
713
|
-
|
701
|
+
|
714
702
|
data.currentSrc = '';
|
715
|
-
|
703
|
+
|
716
704
|
data.shadowElem.html('<div id="'+ elemId +'">');
|
717
|
-
|
705
|
+
|
718
706
|
data.api = false;
|
719
707
|
data.actionQueue = [];
|
720
708
|
box = data.shadowElem;
|
@@ -743,7 +731,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
743
731
|
value: elem
|
744
732
|
},
|
745
733
|
currentSrc: {
|
746
|
-
value: canPlaySrc.srcProp
|
734
|
+
value: streamRequest ? '' : canPlaySrc.srcProp
|
747
735
|
},
|
748
736
|
swfCreated: {
|
749
737
|
value: true
|
@@ -771,26 +759,27 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
771
759
|
}
|
772
760
|
}
|
773
761
|
}));
|
774
|
-
|
775
|
-
|
776
|
-
|
762
|
+
|
763
|
+
|
764
|
+
|
777
765
|
box.insertBefore(elem);
|
778
|
-
|
766
|
+
|
779
767
|
if(hasNative){
|
780
768
|
$.extend(data, {volume: $.prop(elem, 'volume'), muted: $.prop(elem, 'muted'), paused: $.prop(elem, 'paused')});
|
781
769
|
}
|
782
|
-
|
770
|
+
|
783
771
|
webshims.addShadowDom(elem, box);
|
784
772
|
if(!webshims.data(elem, 'mediaelement')){
|
785
773
|
webshims.data(elem, 'mediaelement', data);
|
786
774
|
}
|
787
775
|
addMediaToStopEvents(elem);
|
788
|
-
|
776
|
+
|
789
777
|
mediaelement.setActive(elem, 'third', data);
|
790
|
-
|
778
|
+
|
791
779
|
setElementDimension(data, hasControls);
|
792
|
-
|
780
|
+
|
793
781
|
$(elem)
|
782
|
+
|
794
783
|
.on({
|
795
784
|
'updatemediaelementdimensions loadedmetadata emptied': setDimension,
|
796
785
|
'remove': function(e){
|
@@ -804,14 +793,13 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
804
793
|
.onWSOff('updateshadowdom', setDimension)
|
805
794
|
;
|
806
795
|
}
|
807
|
-
|
796
|
+
|
808
797
|
if(mediaelement.jarisEvent[data.id] && mediaelement.jarisEvent[data.id].elem != elem){
|
809
798
|
webshims.error('something went wrong');
|
810
799
|
return;
|
811
800
|
} else if(!mediaelement.jarisEvent[data.id]){
|
812
|
-
|
801
|
+
|
813
802
|
mediaelement.jarisEvent[data.id] = function(jaris){
|
814
|
-
|
815
803
|
if(jaris.type == 'ready'){
|
816
804
|
var onReady = function(){
|
817
805
|
if(data.api){
|
@@ -836,11 +824,11 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
836
824
|
if(!data._calledMeta && isNaN(jaris.duration) && data.duration != jaris.duration && isNaN(data.duration)){
|
837
825
|
onEvent.onDataInitialized(jaris, data);
|
838
826
|
}
|
839
|
-
|
827
|
+
|
840
828
|
if(!data._ppFlag && jaris.type != 'onPlayPause'){
|
841
829
|
onEvent.onPlayPause(jaris, data);
|
842
830
|
}
|
843
|
-
|
831
|
+
|
844
832
|
if(onEvent[jaris.type]){
|
845
833
|
onEvent[jaris.type](jaris, data);
|
846
834
|
}
|
@@ -850,29 +838,68 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
850
838
|
};
|
851
839
|
mediaelement.jarisEvent[data.id].elem = elem;
|
852
840
|
}
|
853
|
-
|
854
|
-
|
841
|
+
|
842
|
+
createSwf(elem, canPlaySrc, data, elemId, hasControls, elemNodeName);
|
843
|
+
|
844
|
+
if(!streamRequest){
|
845
|
+
trigger(data._elem, 'loadstart');
|
846
|
+
}
|
847
|
+
};
|
848
|
+
|
849
|
+
var createSwf = function(elem, canPlaySrc, data, elemId, hasControls, elemNodeName){
|
850
|
+
var vars, elemVars, params, attrs;
|
851
|
+
var isRtmp = canPlaySrc.type == 'audio/rtmp' || canPlaySrc.type == 'video/rtmp';
|
852
|
+
var isUserStream = canPlaySrc.type == 'jarisplayer/stream';
|
853
|
+
|
854
|
+
vars = $.extend({}, options.vars, {
|
855
|
+
poster: replaceVar($.attr(elem, 'poster') && $.prop(elem, 'poster') || ''),
|
856
|
+
source: replaceVar(canPlaySrc.streamId || canPlaySrc.srcProp),
|
857
|
+
server: replaceVar(canPlaySrc.server || '')
|
858
|
+
});
|
859
|
+
|
860
|
+
elemVars = $(elem).data('vars') || {};
|
861
|
+
|
862
|
+
$.extend(vars,
|
855
863
|
{
|
856
864
|
id: elemId,
|
857
865
|
evtId: data.id,
|
858
|
-
controls: ''+hasControls,
|
866
|
+
controls: ''+(!isUserStream && hasControls),
|
859
867
|
autostart: 'false',
|
860
868
|
nodename: elemNodeName
|
861
869
|
},
|
862
870
|
elemVars
|
863
871
|
);
|
864
|
-
|
872
|
+
|
865
873
|
if(isRtmp){
|
866
874
|
vars.streamtype = 'rtmp';
|
875
|
+
} else if(isUserStream){
|
876
|
+
vars.streamtype = 'usermedia';
|
867
877
|
} else if(canPlaySrc.type == 'audio/mpeg' || canPlaySrc.type == 'audio/mp3'){
|
868
878
|
vars.type = 'audio';
|
869
879
|
vars.streamtype = 'file';
|
870
880
|
} else if(canPlaySrc.type == 'video/youtube'){
|
871
881
|
vars.streamtype = 'youtube';
|
872
882
|
}
|
883
|
+
|
884
|
+
attrs = $.extend(
|
885
|
+
{},
|
886
|
+
options.attrs,
|
887
|
+
{
|
888
|
+
name: elemId,
|
889
|
+
id: elemId
|
890
|
+
},
|
891
|
+
$(elem).data('attrs')
|
892
|
+
);
|
893
|
+
|
894
|
+
params = $.extend(
|
895
|
+
{},
|
896
|
+
options.params,
|
897
|
+
$(elem).data('params')
|
898
|
+
);
|
899
|
+
|
873
900
|
options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
|
874
901
|
clearTimeout(data.flashBlock);
|
875
|
-
|
902
|
+
|
876
903
|
swfmini.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.115", false, vars, params, attrs, function(swfData){
|
877
904
|
if(swfData.success){
|
878
905
|
var fBlocker = function(){
|
@@ -884,13 +911,13 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
884
911
|
$(swfData.ref).css({'minHeight': '2px', 'minWidth': '2px', display: 'block'});
|
885
912
|
};
|
886
913
|
data.api = swfData.ref;
|
887
|
-
|
914
|
+
|
888
915
|
if(!hasControls){
|
889
916
|
$(swfData.ref).attr('tabindex', '-1').css('outline', 'none');
|
890
917
|
}
|
891
|
-
|
918
|
+
|
892
919
|
data.flashBlock = setTimeout(fBlocker, 99);
|
893
|
-
|
920
|
+
|
894
921
|
if(!localConnectionTimer){
|
895
922
|
clearTimeout(localConnectionTimer);
|
896
923
|
localConnectionTimer = setTimeout(function(){
|
@@ -904,23 +931,24 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
904
931
|
flash = null;
|
905
932
|
}, 8000);
|
906
933
|
}
|
934
|
+
if(isUserStream){
|
935
|
+
webshim.usermedia.request(elem, canPlaySrc, data);
|
936
|
+
}
|
907
937
|
}
|
908
938
|
});
|
909
|
-
|
910
|
-
trigger(data._elem, 'loadstart');
|
911
939
|
};
|
912
|
-
|
913
|
-
|
940
|
+
|
941
|
+
|
914
942
|
var queueSwfMethod = function(elem, fn, args, data){
|
915
943
|
data = data || getSwfDataFromElem(elem);
|
916
|
-
|
944
|
+
|
917
945
|
if(data){
|
918
946
|
if(data.api && data.api[fn]){
|
919
947
|
data.api[fn].apply(data.api, args || []);
|
920
948
|
} else {
|
921
949
|
//todo add to queue
|
922
950
|
data.actionQueue.push({fn: fn, args: args});
|
923
|
-
|
951
|
+
|
924
952
|
if(data.actionQueue.length > 10){
|
925
953
|
setTimeout(function(){
|
926
954
|
if(data.actionQueue.length > 5){
|
@@ -933,13 +961,14 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
933
961
|
}
|
934
962
|
return false;
|
935
963
|
};
|
936
|
-
|
964
|
+
mediaelement.queueSwfMethod = queueSwfMethod;
|
965
|
+
|
937
966
|
['audio', 'video'].forEach(function(nodeName){
|
938
967
|
var descs = {};
|
939
968
|
var mediaSup;
|
940
969
|
var createGetProp = function(key){
|
941
970
|
if(nodeName == 'audio' && (key == 'videoHeight' || key == 'videoWidth')){return;}
|
942
|
-
|
971
|
+
|
943
972
|
descs[key] = {
|
944
973
|
get: function(){
|
945
974
|
var data = getSwfDataFromElem(this);
|
@@ -959,33 +988,33 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
959
988
|
delete descs[key].writeable;
|
960
989
|
descs[key].set = setFn;
|
961
990
|
};
|
962
|
-
|
991
|
+
|
963
992
|
createGetSetProp('seeking');
|
964
|
-
|
993
|
+
|
965
994
|
createGetSetProp('volume', function(v){
|
966
995
|
var data = getSwfDataFromElem(this);
|
967
996
|
if(data){
|
968
997
|
v *= 1;
|
969
998
|
if(!isNaN(v)){
|
970
|
-
|
999
|
+
|
971
1000
|
if(v < 0 || v > 1){
|
972
1001
|
webshims.error('volume greater or less than allowed '+ (v / 100));
|
973
1002
|
}
|
974
|
-
|
1003
|
+
|
975
1004
|
queueSwfMethod(this, 'api_volume', [v], data);
|
976
|
-
|
977
|
-
|
1005
|
+
|
1006
|
+
|
978
1007
|
if(data.volume != v){
|
979
1008
|
data.volume = v;
|
980
1009
|
trigger(data._elem, 'volumechange');
|
981
1010
|
}
|
982
1011
|
data = null;
|
983
|
-
}
|
1012
|
+
}
|
984
1013
|
} else if(mediaSup.volume.prop._supset) {
|
985
1014
|
return mediaSup.volume.prop._supset.apply(this, arguments);
|
986
1015
|
}
|
987
1016
|
});
|
988
|
-
|
1017
|
+
|
989
1018
|
createGetSetProp('muted', function(m){
|
990
1019
|
var data = getSwfDataFromElem(this);
|
991
1020
|
if(data){
|
@@ -1000,8 +1029,8 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1000
1029
|
return mediaSup.muted.prop._supset.apply(this, arguments);
|
1001
1030
|
}
|
1002
1031
|
});
|
1003
|
-
|
1004
|
-
|
1032
|
+
|
1033
|
+
|
1005
1034
|
createGetSetProp('currentTime', function(t){
|
1006
1035
|
var data = getSwfDataFromElem(this);
|
1007
1036
|
if(data){
|
@@ -1009,23 +1038,23 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1009
1038
|
if (!isNaN(t)) {
|
1010
1039
|
queueSwfMethod(this, 'api_seek', [t], data);
|
1011
1040
|
}
|
1012
|
-
|
1041
|
+
|
1013
1042
|
} else if(mediaSup.currentTime.prop._supset) {
|
1014
1043
|
return mediaSup.currentTime.prop._supset.apply(this, arguments);
|
1015
1044
|
}
|
1016
1045
|
});
|
1017
|
-
|
1046
|
+
|
1018
1047
|
['play', 'pause'].forEach(function(fn){
|
1019
1048
|
descs[fn] = {
|
1020
1049
|
value: function(){
|
1021
1050
|
var data = getSwfDataFromElem(this);
|
1022
|
-
|
1051
|
+
|
1023
1052
|
if(data){
|
1024
1053
|
if(data.stopPlayPause){
|
1025
1054
|
clearTimeout(data.stopPlayPause);
|
1026
1055
|
}
|
1027
1056
|
queueSwfMethod(this, fn == 'play' ? 'api_play' : 'api_pause', [], data);
|
1028
|
-
|
1057
|
+
|
1029
1058
|
data._ppFlag = true;
|
1030
1059
|
if(data.paused != (fn != 'play')){
|
1031
1060
|
data.paused = fn != 'play';
|
@@ -1037,14 +1066,14 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1037
1066
|
}
|
1038
1067
|
};
|
1039
1068
|
});
|
1040
|
-
|
1069
|
+
|
1041
1070
|
getPropKeys.forEach(createGetProp);
|
1042
|
-
|
1071
|
+
|
1043
1072
|
webshims.onNodeNamesPropertyModify(nodeName, 'controls', function(val, boolProp){
|
1044
1073
|
var data = getSwfDataFromElem(this);
|
1045
|
-
|
1074
|
+
|
1046
1075
|
$(this)[boolProp ? 'addClass' : 'removeClass']('webshims-controls');
|
1047
|
-
|
1076
|
+
|
1048
1077
|
if(data){
|
1049
1078
|
if(nodeName == 'audio'){
|
1050
1079
|
setElementDimension(data, boolProp);
|
@@ -1052,12 +1081,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1052
1081
|
queueSwfMethod(this, 'api_controls', [boolProp], data);
|
1053
1082
|
}
|
1054
1083
|
});
|
1055
|
-
|
1056
|
-
|
1084
|
+
|
1085
|
+
|
1057
1086
|
webshims.onNodeNamesPropertyModify(nodeName, 'preload', function(val){
|
1058
1087
|
var data, baseData, elem;
|
1059
|
-
|
1060
|
-
|
1088
|
+
|
1089
|
+
|
1061
1090
|
if(bufferSrc(this)){
|
1062
1091
|
data = getSwfDataFromElem(this);
|
1063
1092
|
if(data){
|
@@ -1072,9 +1101,9 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1072
1101
|
}
|
1073
1102
|
}
|
1074
1103
|
});
|
1075
|
-
|
1104
|
+
|
1076
1105
|
mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
|
1077
|
-
|
1106
|
+
|
1078
1107
|
if(!support.mediaDefaultMuted){
|
1079
1108
|
webshims.defineNodeNameProperties(nodeName, {
|
1080
1109
|
defaultMuted: {
|
@@ -1092,8 +1121,68 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1092
1121
|
}, 'prop');
|
1093
1122
|
}
|
1094
1123
|
});
|
1095
|
-
|
1096
|
-
|
1124
|
+
|
1125
|
+
var addCanvasBridge = function(){
|
1126
|
+
if(!window.CanvasRenderingContext2D){
|
1127
|
+
return false;
|
1128
|
+
}
|
1129
|
+
var _drawImage = CanvasRenderingContext2D.prototype.drawImage;
|
1130
|
+
var slice = Array.prototype.slice;
|
1131
|
+
var isVideo = {
|
1132
|
+
video: 1,
|
1133
|
+
VIDEO: 1
|
1134
|
+
};
|
1135
|
+
var tested = {};
|
1136
|
+
|
1137
|
+
if(!_drawImage){
|
1138
|
+
webshim.error('canvas.drawImage feature is needed. In IE8 flashvanvas pro can be used');
|
1139
|
+
}
|
1140
|
+
|
1141
|
+
CanvasRenderingContext2D.prototype.drawImage = function(elem){
|
1142
|
+
var data, img, args, imgData;
|
1143
|
+
var context = this;
|
1144
|
+
|
1145
|
+
if(isVideo[elem.nodeName] && (data = webshims.data(elem, 'mediaelement')) && data.isActive == 'third' && data.api.api_image){
|
1146
|
+
|
1147
|
+
try {
|
1148
|
+
imgData = data.api.api_image();
|
1149
|
+
} catch (er){
|
1150
|
+
webshims.error(er);
|
1151
|
+
}
|
1152
|
+
if(!tested[data.currentSrc]){
|
1153
|
+
tested[data.currentSrc] = true;
|
1154
|
+
if(imgData == null){
|
1155
|
+
webshims.error('video has to be same origin or a crossdomain.xml has to be provided. Video has to be visible for flash API');
|
1156
|
+
}
|
1157
|
+
}
|
1158
|
+
|
1159
|
+
args = slice.call(arguments, 1);
|
1160
|
+
img = new Image();
|
1161
|
+
|
1162
|
+
//todo find a performant sync way
|
1163
|
+
img.onload = function(){
|
1164
|
+
args.unshift(this);
|
1165
|
+
_drawImage.apply(context, args);
|
1166
|
+
img.onload = null;
|
1167
|
+
};
|
1168
|
+
|
1169
|
+
img.src = 'data:image/jpeg;base64,'+imgData;
|
1170
|
+
|
1171
|
+
if(img.complete){
|
1172
|
+
img.onload();
|
1173
|
+
}
|
1174
|
+
return;
|
1175
|
+
}
|
1176
|
+
return _drawImage.apply(this, arguments);
|
1177
|
+
};
|
1178
|
+
return true;
|
1179
|
+
};
|
1180
|
+
|
1181
|
+
if(!addCanvasBridge()){
|
1182
|
+
webshims.ready('canvas', addCanvasBridge);
|
1183
|
+
}
|
1184
|
+
|
1185
|
+
|
1097
1186
|
if(hasFlash && $.cleanData){
|
1098
1187
|
var oldClean = $.cleanData;
|
1099
1188
|
var objElem = document.createElement('object');
|
@@ -1107,12 +1196,12 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1107
1196
|
object: 1,
|
1108
1197
|
OBJECT: 1
|
1109
1198
|
};
|
1110
|
-
|
1199
|
+
|
1111
1200
|
$.cleanData = function(elems){
|
1112
1201
|
var i, len, prop;
|
1113
1202
|
var ret = oldClean.apply(this, arguments);
|
1114
1203
|
if(elems && (len = elems.length) && loadedSwf){
|
1115
|
-
|
1204
|
+
|
1116
1205
|
for(i = 0; i < len; i++){
|
1117
1206
|
if(flashNames[elems[i].nodeName] && 'api_destroy' in elems[i]){
|
1118
1207
|
loadedSwf--;
|
@@ -1128,14 +1217,14 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1128
1217
|
} catch(er){console.log(er);}
|
1129
1218
|
}
|
1130
1219
|
}
|
1131
|
-
|
1220
|
+
|
1132
1221
|
}
|
1133
1222
|
return ret;
|
1134
1223
|
};
|
1135
1224
|
}
|
1136
1225
|
|
1137
1226
|
if(!hasNative){
|
1138
|
-
|
1227
|
+
|
1139
1228
|
['poster', 'src'].forEach(function(prop){
|
1140
1229
|
webshims.defineNodeNamesProperty(prop == 'src' ? ['audio', 'video', 'source'] : ['video'], prop, {
|
1141
1230
|
//attr: {},
|
@@ -1143,21 +1232,21 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1143
1232
|
propType: 'src'
|
1144
1233
|
});
|
1145
1234
|
});
|
1146
|
-
|
1235
|
+
|
1147
1236
|
webshims.defineNodeNamesProperty(['audio', 'video'], 'preload', {
|
1148
1237
|
reflect: true,
|
1149
1238
|
propType: 'enumarated',
|
1150
1239
|
defaultValue: '',
|
1151
1240
|
limitedTo: ['', 'auto', 'metadata', 'none']
|
1152
1241
|
});
|
1153
|
-
|
1242
|
+
|
1154
1243
|
webshims.reflectProperties('source', ['type', 'media']);
|
1155
|
-
|
1156
|
-
|
1244
|
+
|
1245
|
+
|
1157
1246
|
['autoplay', 'controls'].forEach(function(name){
|
1158
1247
|
webshims.defineNodeNamesBooleanProperty(['audio', 'video'], name);
|
1159
1248
|
});
|
1160
|
-
|
1249
|
+
|
1161
1250
|
webshims.defineNodeNamesProperties(['audio', 'video'], {
|
1162
1251
|
HAVE_CURRENT_DATA: {
|
1163
1252
|
value: 2
|
@@ -1186,7 +1275,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1186
1275
|
NETWORK_NO_SOURCE: {
|
1187
1276
|
value: 3
|
1188
1277
|
}
|
1189
|
-
|
1278
|
+
|
1190
1279
|
}, 'prop');
|
1191
1280
|
|
1192
1281
|
|
@@ -1212,7 +1301,7 @@ webshims.register('mediaelement-jaris', function($, webshims, window, document,
|
|
1212
1301
|
var media, error, parent;
|
1213
1302
|
if(
|
1214
1303
|
($(e.target).is('audio, video') || ((parent = e.target.parentNode) && $('source', parent).last()[0] == e.target)) &&
|
1215
|
-
|
1304
|
+
(media = $(e.target).closest('audio, video')) && !media.hasClass('nonnative-api-active')
|
1216
1305
|
){
|
1217
1306
|
error = media.prop('error');
|
1218
1307
|
setTimeout(function(){
|