29 lines
1.5 KiB
JavaScript
29 lines
1.5 KiB
JavaScript
const assert = require('node:assert/strict');
|
|
let Auto;
|
|
try { Auto = require('../android/app/assets/qualidade-auto.js'); }
|
|
catch (e) { assert.fail('Qualidade automática ainda não implementada'); }
|
|
let q = new Auto();
|
|
assert.equal(q.level, 0);
|
|
q.update({fps: 15, bitrate: 400000, rtt: .5});
|
|
assert.equal(q.level, 1);
|
|
q.update({fps: 15, bitrate: 350000, rtt: .5});
|
|
assert.equal(q.level, 2);
|
|
q.update({fps: 30, bitrate: 3000000, rtt: .02});
|
|
assert.equal(q.level, 2, 'Uma leitura boa não pode causar oscilação');
|
|
q.update({fps: 30, bitrate: 3000000, rtt: .02});
|
|
q.update({fps: 30, bitrate: 3000000, rtt: .02});
|
|
q.update({fps: 30, bitrate: 3000000, rtt: .02});
|
|
assert.equal(q.level, 1);
|
|
assert.equal(q.parameters().maxFramerate, 30);
|
|
console.log('Qualidade automática: reduz com congestionamento e sobe após estabilidade: OK');
|
|
assert.equal(typeof Auto.constraints, 'function', 'Seleção de câmera/qualidade ausente');
|
|
const v = Auto.constraints({cameraLado:'environment',videoResolucao:'2160',videoFPS:60}, {});
|
|
assert.equal(v.facingMode.exact, 'environment');
|
|
assert.equal(v.width.exact, 3840);
|
|
assert.equal(v.frameRate.exact, 60);
|
|
const maximum = Auto.constraints({videoResolucao:'max',videoFPS:-1}, {width:{max:7680},height:{max:4320},frameRate:{max:120}});
|
|
assert.equal(maximum.width.ideal, 7680);
|
|
assert.equal(maximum.frameRate.ideal, 120);
|
|
assert.equal(maximum.frameRate.max, undefined, 'Sem teto artificial');
|
|
assert.equal(new Auto(60, 20000000).parameters().maxFramerate, 60);
|