Browse Source

Merge branch 'release-0.24'

pull/258/merge v0.24.11
Simon Eisenmann 9 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 @@ -6,6 +6,6 @@ github.com/longsleep/pkac 0.0.1
github.com/satori/go.uuid afe1e2ddf0f05b7c29d388a3f8e76cb15c2231ca
github.com/strukturag/goacceptlanguageparser goacceptlanguageparser_v100
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
code.google.com/p/goconf/... a4db5c465ed1
github.com/dlintw/goconf dcc070983490608a14480e3bf943bad464785df5

15
debian/changelog vendored

@ -1,3 +1,18 @@ @@ -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
* Avoid to break when there is no mediaDevices.

2
spreed-webrtc-server

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

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

@ -367,13 +367,13 @@ func runner(runtime phoenix.Runtime) error { @@ -367,13 +367,13 @@ func runner(runtime phoenix.Runtime) error {
// Try to increase number of file open files. This only works as root.
maxfd, err := runtime.GetInt("http", "maxfd")
if err == nil {
rLimit.Max = uint64(maxfd)
rLimit.Cur = uint64(maxfd)
rLimit.Max = rlimitType(maxfd)
rLimit.Cur = rlimitType(maxfd)
err = syscall.Setrlimit(syscall.RLIMIT_NOFILE, &rLimit)
if err != nil {
log.Println("Error setting max open files", err)
} 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 @@ @@ -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 @@ @@ -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 "" @@ -8,15 +8,15 @@ msgid ""
msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\n"
"Report-Msgid-Bugs-To: simon@struktur.de\n"
"POT-Creation-Date: 2015-07-29 11:32+0200\n"
"PO-Revision-Date: 2015-07-29 11:40+0100\n"
"POT-Creation-Date: 2016-02-17 14:15+0100\n"
"PO-Revision-Date: 2016-02-17 14:16+0100\n"
"Last-Translator: Simon Eisenmann <simon@struktur.de>\n"
"Language-Team: struktur AG <opensource@struktur.de>\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
"Generated-By: Babel 1.3\n"
msgid "Standard view"
msgstr "Standardansicht"
@ -435,6 +435,9 @@ msgstr "Für hohe Auflösung optimieren" @@ -435,6 +435,9 @@ msgstr "Für hohe Auflösung optimieren"
msgid "Reduce video noise"
msgstr "Rauschen reduzieren"
msgid "Prefer VP9 video codec"
msgstr "VP9 Videocodec bevorzugen"
msgid "Enable experiments"
msgstr "Experimente aktivieren"

7
src/i18n/messages-ja.po

@ -8,7 +8,7 @@ msgid "" @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\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"
"Last-Translator: Curt Frisemo <curt.frisemo@spreed.com>\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr "" @@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
"Generated-By: Babel 1.3\n"
msgid "Standard view"
msgstr ""
@ -428,6 +428,9 @@ msgstr "" @@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise"
msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments"
msgstr ""

7
src/i18n/messages-ko.po

@ -8,7 +8,7 @@ msgid "" @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\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"
"Last-Translator: Curt Frisemo <curt.frisemo@spreed.com>\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr "" @@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
"Generated-By: Babel 1.3\n"
msgid "Standard view"
msgstr ""
@ -428,6 +428,9 @@ msgstr "" @@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise"
msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments"
msgstr ""

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

@ -8,7 +8,7 @@ msgid "" @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\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"
"Last-Translator: Michael P.\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr "" @@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
"Generated-By: Babel 1.3\n"
msgid "Standard view"
msgstr ""
@ -428,6 +428,9 @@ msgstr "" @@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise"
msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments"
msgstr ""

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

@ -8,7 +8,7 @@ msgid "" @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\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"
"Last-Translator: Michael P.\n"
"Language-Team: Curt Frisemo <curt.frisemo@spreed.com>\n"
@ -16,7 +16,7 @@ msgstr "" @@ -16,7 +16,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
"Generated-By: Babel 1.3\n"
msgid "Standard view"
msgstr ""
@ -428,6 +428,9 @@ msgstr "" @@ -428,6 +428,9 @@ msgstr ""
msgid "Reduce video noise"
msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments"
msgstr ""

11
src/i18n/messages.pot

@ -1,22 +1,22 @@ @@ -1,22 +1,22 @@
# 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
# project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Spreed WebRTC 1.0\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
"Generated-By: Babel 1.3\n"
msgid "Standard view"
msgstr ""
@ -418,6 +418,9 @@ msgstr "" @@ -418,6 +418,9 @@ msgstr ""
msgid "Reduce video noise"
msgstr ""
msgid "Prefer VP9 video codec"
msgstr ""
msgid "Enable experiments"
msgstr ""

3
static/js/controllers/appcontroller.js

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

9
static/js/controllers/uicontroller.js

@ -200,6 +200,15 @@ define(['jquery', 'underscore', 'bigscreen', 'moment', 'sjcl', 'modernizr', 'web @@ -200,6 +200,15 @@ define(['jquery', 'underscore', 'bigscreen', 'moment', 'sjcl', 'modernizr', 'web
};
$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.
constraints.refresh($scope.master.settings).then(function() {
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 @@ -25,86 +25,7 @@ define(['jquery', 'underscore', 'audiocontext', 'mediastream/dummystream', 'webr
// Create AudioContext singleton, if supported.
var context = AudioContext ? new AudioContext() : null;
// Converter helpers to convert media constraints to new API.
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 getUserMedia = window.getUserMedia;
var stopUserMediaStream = (function() {
return function(stream) {
@ -114,8 +35,8 @@ define(['jquery', 'underscore', 'audiocontext', 'mediastream/dummystream', 'webr @@ -114,8 +35,8 @@ define(['jquery', 'underscore', 'audiocontext', 'mediastream/dummystream', 'webr
_.each(tracks, function(t) {
t.stop();
});
if (window.webrtcDetectedBrowser === "firefox") {
// Always call stop for Firefox as long as it is available.
if (window.webrtcDetectedBrowser === "firefox" && window.webrtcDetectedVersion < 44) {
// Always call stop for older Firefox < 44 to make sure gUM is correctly cleaned up.
// https://bugzilla.mozilla.org/show_bug.cgi?id=1192170
if (stream.stop) {
stream.stop();

1
static/js/services/constraints.js

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

7
static/js/services/videowaiter.js

@ -43,6 +43,13 @@ define(["underscore"], function(_) { @@ -43,6 +43,13 @@ define(["underscore"], function(_) {
} else if (video.currentTime > 0 && video.videoHeight > 0) {
cb(true, video, stream);
} 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++;
if (this.count < this.retries) {
$window.setTimeout(_.bind(this.start, this, video, stream, cb, err_cb), 100);

11
static/partials/settings.html

@ -270,6 +270,17 @@ @@ -270,6 +270,17 @@
</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 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