Download:
parent 327:14066d6ee9ac
328:c6851321a39e default tip
Anton Shestakov <av6@dwimlabs.net>, Sat, 14 Jul 2018 23:50:05 +0800
calls: use srcObject instead of URL.createObjectURL() and revokeObjectURL() Not sure about srcObject = null, needs to be tested.

3 файлов изменено, 19 вставок(+), 64 удалений(-) [+]
coffee/calls.coffee file | annotate | diff | comparison | revisions
js/calls.js file | annotate | diff | comparison | revisions
js/calls.js.map file | annotate | diff | comparison | revisions
--- a/coffee/calls.coffee Sat Jul 14 23:19:59 2018 +0800
+++ b/coffee/calls.coffee Sat Jul 14 23:50:05 2018 +0800
@@ -1,25 +1,6 @@
class Tram.Call extends Backbone.Model
idAttribute: 'jid'
- initialize: ->
- @on('change:local/stream', @updateLocalStreamURL)
- @on('change:remote/stream', @updateRemoteStreamURL)
-
- updateStreamURL: (sattr, uattr) ->
- if @has(uattr)
- URL.revokeObjectURL(@get(uattr))
- stream = @get(sattr)
- if stream
- @set(uattr, URL.createObjectURL(stream))
- else
- @unset(uattr)
-
- updateLocalStreamURL: ->
- @updateStreamURL('local/stream', 'local/stream/url')
-
- updateRemoteStreamURL: ->
- @updateStreamURL('remote/stream', 'remote/stream/url')
-
class Tram.Calls extends Backbone.Collection
model: Tram.Call
@@ -46,8 +27,8 @@
@bind()
bind: ->
- @listenTo(@model, 'change:local/stream/url', @updateLocal)
- @listenTo(@model, 'change:remote/stream/url', @updateRemote)
+ @listenTo(@model, 'change:local/stream', @updateLocal)
+ @listenTo(@model, 'change:remote/stream', @updateRemote)
@listenTo(@model, 'change:local/video/muted', @muteCam)
@listenTo(@model, 'change:local/audio/muted', @muteMic)
@@ -56,26 +37,26 @@
@listenTo(@model, 'remove', @remove)
updateLocal: ->
- if @model.has('local/stream/url')
- @updateVideo(@$local, @model.get('local/stream/url'))
+ if @model.has('local/stream')
+ @updateVideo(@$local, @model.get('local/stream'))
else
@removeVideo(@$local)
updateRemote: ->
- if @model.has('remote/stream/url')
- @updateVideo(@$remote, @model.get('remote/stream/url'))
+ if @model.has('remote/stream')
+ @updateVideo(@$remote, @model.get('remote/stream'))
else
@removeVideo(@$remote)
- updateVideo: ($video, url) ->
+ updateVideo: ($video, stream) ->
$video.each ->
- @src = url
+ @srcObject = stream
@play()
removeVideo: ($video) ->
$video.each ->
@pause()
- @removeAttribute('src')
+ @srcObject = null
toggleTracks: (tracks, state) ->
if tracks?
--- a/js/calls.js Sat Jul 14 23:19:59 2018 +0800
+++ b/js/calls.js Sat Jul 14 23:50:05 2018 +0800
@@ -12,32 +12,6 @@
Call.prototype.idAttribute = 'jid';
- Call.prototype.initialize = function() {
- this.on('change:local/stream', this.updateLocalStreamURL);
- return this.on('change:remote/stream', this.updateRemoteStreamURL);
- };
-
- Call.prototype.updateStreamURL = function(sattr, uattr) {
- var stream;
- if (this.has(uattr)) {
- URL.revokeObjectURL(this.get(uattr));
- }
- stream = this.get(sattr);
- if (stream) {
- return this.set(uattr, URL.createObjectURL(stream));
- } else {
- return this.unset(uattr);
- }
- };
-
- Call.prototype.updateLocalStreamURL = function() {
- return this.updateStreamURL('local/stream', 'local/stream/url');
- };
-
- Call.prototype.updateRemoteStreamURL = function() {
- return this.updateStreamURL('remote/stream', 'remote/stream/url');
- };
-
return Call;
})(Backbone.Model);
@@ -97,8 +71,8 @@
};
CallView.prototype.bind = function() {
- this.listenTo(this.model, 'change:local/stream/url', this.updateLocal);
- this.listenTo(this.model, 'change:remote/stream/url', this.updateRemote);
+ this.listenTo(this.model, 'change:local/stream', this.updateLocal);
+ this.listenTo(this.model, 'change:remote/stream', this.updateRemote);
this.listenTo(this.model, 'change:local/video/muted', this.muteCam);
this.listenTo(this.model, 'change:local/audio/muted', this.muteMic);
this.listenTo(this.model, 'change:remote/audio/muted', this.muteAudio);
@@ -106,24 +80,24 @@
};
CallView.prototype.updateLocal = function() {
- if (this.model.has('local/stream/url')) {
- return this.updateVideo(this.$local, this.model.get('local/stream/url'));
+ if (this.model.has('local/stream')) {
+ return this.updateVideo(this.$local, this.model.get('local/stream'));
} else {
return this.removeVideo(this.$local);
}
};
CallView.prototype.updateRemote = function() {
- if (this.model.has('remote/stream/url')) {
- return this.updateVideo(this.$remote, this.model.get('remote/stream/url'));
+ if (this.model.has('remote/stream')) {
+ return this.updateVideo(this.$remote, this.model.get('remote/stream'));
} else {
return this.removeVideo(this.$remote);
}
};
- CallView.prototype.updateVideo = function($video, url) {
+ CallView.prototype.updateVideo = function($video, stream) {
return $video.each(function() {
- this.src = url;
+ this.srcObject = stream;
return this.play();
});
};
@@ -131,7 +105,7 @@
CallView.prototype.removeVideo = function($video) {
return $video.each(function() {
this.pause();
- return this.removeAttribute('src');
+ return this.srcObject = null;
});
};
--- a/js/calls.js.map Sat Jul 14 23:19:59 2018 +0800
+++ b/js/calls.js.map Sat Jul 14 23:50:05 2018 +0800
@@ -6,5 +6,5 @@
"coffee/calls.coffee"
],
"names": [],
- "mappings": "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"
+ "mappings": "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"
}
\ No newline at end of file