Make FEC and PLP non-default (#1372)

I considered it might be useful to have something exposed that allows the end-user to set these if they want, but our current code doesn't allow for that. It'll remain an internal feature for the time being.
This commit is contained in:
aemino
2017-04-11 21:30:48 -07:00
committed by Crawl
parent 5dea21ba80
commit 39f7dc018a
2 changed files with 16 additions and 11 deletions

View File

@@ -1,20 +1,25 @@
class BaseOpus { class BaseOpus {
constructor(player) { /**
this.player = player; * @param {Object} [options] The options to apply to the Opus engine
* @param {boolean} [options.fec] Whether to enable forward error correction (defaults to false)
* @param {number} [options.plp] The expected packet loss percentage (0-1 inclusive, defaults to 0)
*/
constructor(options = {}) {
this.ctl = { this.ctl = {
FEC: 4012, FEC: 4012,
PLP: 4014, PLP: 4014,
}; };
this.options = options;
} }
init() { init() {
try { try {
// Enable FEC (forward error correction) // Set FEC (forward error correction)
this.setFEC(true); if (this.options.fec) this.setFEC(this.options.fec);
// Set PLP (expected packet loss percentage) to 15% // Set PLP (expected packet loss percentage)
this.setPLP(0.15); if (this.options.plp) this.setPLP(this.options.plp);
} catch (err) { } catch (err) {
// Opus engine likely has no support for libopus CTL // Opus engine likely has no support for libopus CTL
} }

View File

@@ -5,9 +5,9 @@ const list = [
let opusEngineFound; let opusEngineFound;
function fetch(Encoder) { function fetch(Encoder, engineOptions) {
try { try {
return new Encoder(); return new Encoder(engineOptions);
} catch (err) { } catch (err) {
return null; return null;
} }
@@ -17,9 +17,9 @@ exports.add = encoder => {
list.push(encoder); list.push(encoder);
}; };
exports.fetch = () => { exports.fetch = engineOptions => {
for (const encoder of list) { for (const encoder of list) {
const fetched = fetch(encoder); const fetched = fetch(encoder, engineOptions);
if (fetched) return fetched; if (fetched) return fetched;
} }
return null; return null;