Browse Source

Merge branch 'release-0.24'

pull/258/merge v0.24.11
Simon Eisenmann 10 years ago
parent
commit
b735c5170a
  1. 4
      Godeps
  2. 15
      debian/changelog
  3. 2
      spreed-webrtc-server
  4. 6
      src/app/spreed-webrtc-server/main.go
  5. 11
      src/app/spreed-webrtc-server/types_freebsd.go
  6. 8
      src/app/spreed-webrtc-server/types_unix.go
  7. 9
      src/i18n/messages-de.po
  8. 7
      src/i18n/messages-ja.po
  9. 7
      src/i18n/messages-ko.po
  10. 7
      src/i18n/messages-zh-cn.po
  11. 7
      src/i18n/messages-zh-tw.po
  12. 11
      src/i18n/messages.pot
  13. 3
      static/js/controllers/appcontroller.js
  14. 9
      static/js/controllers/uicontroller.js
  15. 1293
      static/js/libs/webrtc.adapter.js
  16. 85
      static/js/mediastream/usermedia.js
  17. 1
      static/js/services/constraints.js
  18. 7
      static/js/services/videowaiter.js
  19. 11
      static/partials/settings.html
  20. 2
      static/translation/messages-de.json
  21. 2
      static/translation/messages-ja.json
  22. 2
      static/translation/messages-ko.json
  23. 2
      static/translation/messages-zh-cn.json
  24. 2
      static/translation/messages-zh-tw.json

4
Godeps

@ -6,6 +6,6 @@ github.com/longsleep/pkac 0.0.1
github.com/satori/go.uuid afe1e2ddf0f05b7c29d388a3f8e76cb15c2231ca github.com/satori/go.uuid afe1e2ddf0f05b7c29d388a3f8e76cb15c2231ca
github.com/strukturag/goacceptlanguageparser goacceptlanguageparser_v100 github.com/strukturag/goacceptlanguageparser goacceptlanguageparser_v100
github.com/strukturag/httputils httputils_v012 github.com/strukturag/httputils httputils_v012
github.com/strukturag/phoenix phoenix_v0131 github.com/strukturag/phoenix phoenix_v0133
github.com/strukturag/sloth v0.9.2 github.com/strukturag/sloth v0.9.2
code.google.com/p/goconf/... a4db5c465ed1 github.com/dlintw/goconf dcc070983490608a14480e3bf943bad464785df5

15
debian/changelog vendored

@ -1,3 +1,18 @@
spreed-webrtc-server (0.24.11) trusty; urgency=medium
* Stop waiting on video early if first video track is enabled but muted.
* Use sh shebang instead of bash to be less Linux specific (#244).
* Updated deps to no longer user code.google.com.
* Fix wrong type for syscall.Setrlimit on FreeBSD (#244) Values are uint64 on Unix but FreeBSD uses int64 for legacy reasons.
* Updated WebRTC adapter to 0.2.10
* Added support to prefer VP9 video codec (works with Chrome >= 48) as experimental setting.
* Only prefer VP9 when experiments are actually enabled.
* Removed local getUserMedia conversion code and use the one provided by the adapter, fixing screen sharing for Chrome >= 49.
* Firefox 44 has fixed gUM permission indicator, so limiting workaround to 43 and lower.
* Restrict VP9 experiment to Chrome >= 48.
-- Simon Eisenmann <simon@struktur.de> Thu, 18 Feb 2016 11:05:49 +0100
spreed-webrtc-server (0.24.10) trusty; urgency=medium spreed-webrtc-server (0.24.10) trusty; urgency=medium
* Avoid to break when there is no mediaDevices. * Avoid to break when there is no mediaDevices.

2
spreed-webrtc-server

@ -1,2 +1,2 @@
#!/bin/bash #!/bin/sh
exec ./bin/spreed-webrtc-server $* exec ./bin/spreed-webrtc-server $*

6
src/app/spreed-webrtc-server/main.go

@ -367,13 +367,13 @@ func runner(runtime phoenix.Runtime) error {
// Try to increase number of file open files. This only works as root. // Try to increase number of file open files. This only works as root.
maxfd, err := runtime.GetInt("http", "maxfd") maxfd, err := runtime.GetInt("http", "maxfd")
if err == nil { if err == nil {
rLimit.Max = uint64(maxfd) rLimit.Max = rlimitType(maxfd)
rLimit.Cur = uint64(maxfd) rLimit.Cur = rlimitType(maxfd)
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit) err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
if err != nil { if err != nil {
log.Println("Error setting max open files", err) log.Println("Error setting max open files", err)
} else { } else {
log.Printf("Set max open files successfully to %d\n", uint64(maxfd)) log.Printf("Set max open files successfully to %d\n", rlimitType(maxfd))
} }
} }

11
src/app/spreed-webrtc-server/types_freebsd.go

@ -0,0 +1,11 @@
// +build freebsd
package main
// Rlimit values are int64 in FreeBSD.
// https://golang.org/src/syscall/ztypes_freebsd_amd64.go
// Intentionally signed, because of legacy code that uses -1 for
// RLIM_INFINITY.
func rlimitType(value int) int64 {
return int64(value)
}

8
src/app/spreed-webrtc-server/types_unix.go

@ -0,0 +1,8 @@
// +build !freebsd
package main
// On Unix, rLimit values are uint64.
func rlimitType(value int) uint64 {
return uint64(value)
}

9
src/i18n/messages-de.po

@ -8,15 +8,15 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\n" "Project-Id-Version: Spreed WebRTC 1.0\n"
"Report-Msgid-Bugs-To: simon@struktur.de\n" "Report-Msgid-Bugs-To: simon@struktur.de\n"
"POT-Creation-Date: 2015-07-29 11:32+0200\n" "POT-Creation-Date: 2016-02-17 14:15+0100\n"
"PO-Revision-Date: 2015-07-29 11:40+0100\n" "PO-Revision-Date: 2016-02-17 14:16+0100\n"
"Last-Translator: Simon Eisenmann <simon@struktur.de>\n" "Last-Translator: Simon Eisenmann <simon@struktur.de>\n"
"Language-Team: struktur AG <opensource@struktur.de>\n" "Language-Team: struktur AG <opensource@struktur.de>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n" "Generated-By: Babel 1.3\n"
msgid "Standard view" msgid "Standard view"
msgstr "Standardansicht" msgstr "Standardansicht"
@ -435,6 +435,9 @@ msgstr "Für hohe Auflösung optimieren"
msgid "Reduce video noise" msgid "Reduce video noise"
msgstr "Rauschen reduzieren" msgstr "Rauschen reduzieren"
msgid "Prefer VP9 video codec"
msgstr "VP9 Videocodec bevorzugen"
msgid "Enable experiments" msgid "Enable experiments"
msgstr "Experimente aktivieren" msgstr "Experimente aktivieren"

7
src/i18n/messages-ja.po

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\n" "Project-Id-Version: Spreed WebRTC 1.0\n"
"Report-Msgid-Bugs-To: simon@struktur.de\n" "Report-Msgid-Bugs-To: simon@struktur.de\n"
"POT-Creation-Date: 2015-07-29 11:32+0200\n" "POT-Creation-Date: 2016-02-17 14:15+0100\n"
"PO-Revision-Date: 2014-04-23 22:25+0100\n" "PO-Revision-Date: 2014-04-23 22:25+0100\n"
"Last-Translator: Curt Frisemo <curt.frisemo@spreed.com>\n" "Last-Translator: Curt Frisemo <curt.frisemo@spreed.com>\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n" "Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n" "Generated-By: Babel 1.3\n"
msgid "Standard view" msgid "Standard view"
msgstr "" msgstr ""
@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise" msgid "Reduce video noise"
msgstr "" msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments" msgid "Enable experiments"
msgstr "" msgstr ""

7
src/i18n/messages-ko.po

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\n" "Project-Id-Version: Spreed WebRTC 1.0\n"
"Report-Msgid-Bugs-To: simon@struktur.de\n" "Report-Msgid-Bugs-To: simon@struktur.de\n"
"POT-Creation-Date: 2015-07-29 11:32+0200\n" "POT-Creation-Date: 2016-02-17 14:15+0100\n"
"PO-Revision-Date: 2014-04-13 20:30+0900\n" "PO-Revision-Date: 2014-04-13 20:30+0900\n"
"Last-Translator: Curt Frisemo <curt.frisemo@spreed.com>\n" "Last-Translator: Curt Frisemo <curt.frisemo@spreed.com>\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n" "Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n" "Generated-By: Babel 1.3\n"
msgid "Standard view" msgid "Standard view"
msgstr "" msgstr ""
@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise" msgid "Reduce video noise"
msgstr "" msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments" msgid "Enable experiments"
msgstr "" msgstr ""

7
src/i18n/messages-zh-cn.po

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\n" "Project-Id-Version: Spreed WebRTC 1.0\n"
"Report-Msgid-Bugs-To: simon@struktur.de\n" "Report-Msgid-Bugs-To: simon@struktur.de\n"
"POT-Creation-Date: 2015-07-29 11:32+0200\n" "POT-Creation-Date: 2016-02-17 14:15+0100\n"
"PO-Revision-Date: 2014-05-21 09:54+0800\n" "PO-Revision-Date: 2014-05-21 09:54+0800\n"
"Last-Translator: Michael P.\n" "Last-Translator: Michael P.\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n" "Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n" "Generated-By: Babel 1.3\n"
msgid "Standard view" msgid "Standard view"
msgstr "" msgstr ""
@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise" msgid "Reduce video noise"
msgstr "" msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments" msgid "Enable experiments"
msgstr "" msgstr ""

7
src/i18n/messages-zh-tw.po

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\n" "Project-Id-Version: Spreed WebRTC 1.0\n"
"Report-Msgid-Bugs-To: simon@struktur.de\n" "Report-Msgid-Bugs-To: simon@struktur.de\n"
"POT-Creation-Date: 2015-07-29 11:32+0200\n" "POT-Creation-Date: 2016-02-17 14:15+0100\n"
"PO-Revision-Date: 2014-05-21 09:55+0800\n" "PO-Revision-Date: 2014-05-21 09:55+0800\n"
"Last-Translator: Michael P.\n" "Last-Translator: Michael P.\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n" "Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n" "Generated-By: Babel 1.3\n"
msgid "Standard view" msgid "Standard view"
msgstr "" msgstr ""
@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise" msgid "Reduce video noise"
msgstr "" msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments" msgid "Enable experiments"
msgstr "" msgstr ""

11
src/i18n/messages.pot

@ -1,22 +1,22 @@
# Translations template for Spreed WebRTC. # Translations template for Spreed WebRTC.
# Copyright (C) 2015 struktur AG # Copyright (C) 2016 struktur AG
# This file is distributed under the same license as the Spreed WebRTC # This file is distributed under the same license as the Spreed WebRTC
# project. # project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2015. # FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
# #
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\n" "Project-Id-Version: Spreed WebRTC 1.0\n"
"Report-Msgid-Bugs-To: simon@struktur.de\n" "Report-Msgid-Bugs-To: simon@struktur.de\n"
"POT-Creation-Date: 2015-07-29 11:32+0200\n" "POT-Creation-Date: 2016-02-17 14:15+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n" "Generated-By: Babel 1.3\n"
msgid "Standard view" msgid "Standard view"
msgstr "" msgstr ""
@ -418,6 +418,9 @@ msgstr ""
msgid "Reduce video noise" msgid "Reduce video noise"
msgstr "" msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments" msgid "Enable experiments"
msgstr "" msgstr ""

3
static/js/controllers/appcontroller.js

@ -54,7 +54,8 @@ define(["jquery", "angular", "underscore"], function($, angular, _) {
audioNoiseSuppression2: true, audioNoiseSuppression2: true,
audioTypingNoiseDetection: true, audioTypingNoiseDetection: true,
videoLeakyBucket: true, videoLeakyBucket: true,
videoNoiseReduction: false videoNoiseReduction: false,
preferVideoSendCodecVP9: false
}, },
sound: { sound: {
incomingMessages: true, incomingMessages: true,

9
static/js/controllers/uicontroller.js

@ -200,6 +200,15 @@ define(['jquery', 'underscore', 'bigscreen', 'moment', 'sjcl', 'modernizr', 'web
}; };
$scope.refreshWebrtcSettings = function() { $scope.refreshWebrtcSettings = function() {
var settings = $scope.master.settings;
// Refresh SDP params.
if (settings.experimental.enabled && settings.experimental.preferVideoSendCodecVP9) {
// Prefer VP9.
mediaStream.webrtc.settings.sdpParams.videoSendCodec = "VP9/90000";
} else {
// Else prefer VP8.
mediaStream.webrtc.settings.sdpParams.videoSendCodec = "VP8/90000";
}
// Refresh constraints. // Refresh constraints.
constraints.refresh($scope.master.settings).then(function() { constraints.refresh($scope.master.settings).then(function() {
var um = $scope.usermedia; var um = $scope.usermedia;

1293
static/js/libs/webrtc.adapter.js

File diff suppressed because it is too large Load Diff

85
static/js/mediastream/usermedia.js

@ -25,86 +25,7 @@ define(['jquery', 'underscore', 'audiocontext', 'mediastream/dummystream', 'webr
// Create AudioContext singleton, if supported. // Create AudioContext singleton, if supported.
var context = AudioContext ? new AudioContext() : null; var context = AudioContext ? new AudioContext() : null;
// Converter helpers to convert media constraints to new API. var getUserMedia = window.getUserMedia;
var mergeConstraints = function(constraints, k, v, mandatory) {
var prefix = k.substring(0, 3);
switch (prefix) {
case "min":
case "max":
var suffix = k[3].toLowerCase()+k.substring(4);
if (!constraints.hasOwnProperty(suffix)) {
constraints[suffix]={};
}
if (mandatory && prefix === "min" && constraints[suffix].hasOwnProperty(prefix)) {
// Use existing min constraint as ideal.
constraints[suffix].ideal = constraints[suffix].min;
}
constraints[suffix][prefix]=v;
break;
default:
constraints[k] = v;
break;
}
};
var convertConstraints = function(constraints) {
if (!constraints) {
return false;
}
if (!constraints.hasOwnProperty("optional") && !constraints.hasOwnProperty("mandatory")) {
// No old style members.
return constraints;
}
var c = {};
// Process optional constraints.
if (constraints.optional) {
_.each(constraints.optional, function(o) {
_.each(o, function(v, k) {
mergeConstraints(c, k, v);
})
});
}
// Process mandatory constraints.
if (constraints.mandatory) {
_.each(constraints.mandatory, function(v, k) {
mergeConstraints(c, k, v, true);
});
}
// Fastpath.
if (_.isEmpty(c)) {
return true;
}
// Use ideal if there is only one value set.
_.each(c, function(v, k) {
if (_.isObject(v)) {
var values = _.values(v);
if (values.length === 1) {
// Use as ideal value if only one given.
c[k] = {ideal: values[0]};
}
}
});
return c;
};
// Adapter to support navigator.mediaDevices API.
// http://w3c.github.io/mediacapture-main/getusermedia.html#mediadevices
var getUserMedia = (function() {
if (window.navigator.mediaDevices) {
console.info("Enabled mediaDevices adapter ...");
return function(constraints, success, error) {
// Full constraints syntax with plain values and ideal-algorithm supported in FF38+.
// Note on FF32-37: Plain values and ideal are not supported.
// See https://wiki.mozilla.org/Media/getUserMedia for details.
// Examples here: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
var c = {audio: convertConstraints(constraints.audio), video: convertConstraints(constraints.video)};
// mediaDevices API returns a promise.
console.log("Constraints for mediaDevices", c);
window.navigator.mediaDevices.getUserMedia(c).then(success).catch(error);
}
} else {
// Use existing adapter.
return window.getUserMedia;
}
})();
var stopUserMediaStream = (function() { var stopUserMediaStream = (function() {
return function(stream) { return function(stream) {
@ -114,8 +35,8 @@ define(['jquery', 'underscore', 'audiocontext', 'mediastream/dummystream', 'webr
_.each(tracks, function(t) { _.each(tracks, function(t) {
t.stop(); t.stop();
}); });
if (window.webrtcDetectedBrowser === "firefox") { if (window.webrtcDetectedBrowser === "firefox" && window.webrtcDetectedVersion < 44) {
// Always call stop for Firefox as long as it is available. // Always call stop for older Firefox < 44 to make sure gUM is correctly cleaned up.
// https://bugzilla.mozilla.org/show_bug.cgi?id=1192170 // https://bugzilla.mozilla.org/show_bug.cgi?id=1192170
if (stream.stop) { if (stream.stop) {
stream.stop(); stream.stop();

1
static/js/services/constraints.js

@ -202,6 +202,7 @@
hdVideo: isChrome || (isFirefox && version >= 38), hdVideo: isChrome || (isFirefox && version >= 38),
// Chrome supports this on Windows only. // Chrome supports this on Windows only.
renderToAssociatedSink: isChrome && $window.navigator.platform.indexOf("Win") === 0, renderToAssociatedSink: isChrome && $window.navigator.platform.indexOf("Win") === 0,
vp9: isChrome && version >= 48,
chrome: isChrome, chrome: isChrome,
firefox: isFirefox, firefox: isFirefox,
edge: isEdge edge: isEdge

7
static/js/services/videowaiter.js

@ -43,6 +43,13 @@ define(["underscore"], function(_) {
} else if (video.currentTime > 0 && video.videoHeight > 0) { } else if (video.currentTime > 0 && video.videoHeight > 0) {
cb(true, video, stream); cb(true, video, stream);
} else { } else {
if (videoTracks.length > 0 && this.count >= 10) {
var videoTrack = videoTracks[0];
if (videoTrack.enabled === true && videoTrack.muted === true) {
cb(false, video, stream);
return;
}
}
this.count++; this.count++;
if (this.count < this.retries) { if (this.count < this.retries) {
$window.setTimeout(_.bind(this.start, this, video, stream, cb, err_cb), 100); $window.setTimeout(_.bind(this.start, this, video, stream, cb, err_cb), 100);

11
static/partials/settings.html

@ -270,6 +270,17 @@
</div> </div>
</div> </div>
<div class="form-group" ng-show="supported.constraints.vp9">
<label class="col-xs-4 control-label">{{_('Prefer VP9 video codec')}}</label>
<div class="col-xs-8">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="user.settings.experimental.preferVideoSendCodecVP9"/>&nbsp;
</label>
</div>
</div>
</div>
</div> </div>
<div class="form-group" ng-show="supported.constraints.chrome"> <div class="form-group" ng-show="supported.constraints.chrome">

2
static/translation/messages-de.json

File diff suppressed because one or more lines are too long

2
static/translation/messages-ja.json

File diff suppressed because one or more lines are too long

2
static/translation/messages-ko.json

File diff suppressed because one or more lines are too long

2
static/translation/messages-zh-cn.json

File diff suppressed because one or more lines are too long

2
static/translation/messages-zh-tw.json

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save