decord/source/modules/go_live/VideoStreamStats.tsx
2026-07-20 17:37:48 +00:00

129 lines
4.3 KiB
TypeScript

// Module ID: 4217
// Function ID: 36788
// Name: round
// Dependencies: []
// Module 4217 (round)
function round(arg0) {
let num = arg1;
if (arg1 === undefined) {
num = 0;
}
if (null != arg0) {
const _Math = Math;
num = Math.round(arg0);
}
return num;
}
let closure_2 = importDefault(dependencyMap[0]);
let closure_3 = importDefault(dependencyMap[1]);
let closure_4 = importDefault(dependencyMap[2]);
const StreamLayouts = arg1(dependencyMap[3]).StreamLayouts;
const tmp2 = () => {
class VideoStreamStats {
constructor(arg0, arg1) {
VideoStreamStats = this;
tmp = closure_2(this, VideoStreamStats);
this._targetResolution = 0;
this._targetFPS = 0;
this._streamSettingsChanged = false;
this._lastLayoutChanged = 0;
this._layoutChanges = 0;
this._automaticQualityChanges = 0;
this._incrementLayout = (arg0, arg1) => {
if (null == self._layoutBuckets[arg0]) {
self._layoutBuckets[arg0] = 0;
}
const _layoutBuckets = self._layoutBuckets;
_layoutBuckets[arg0] = _layoutBuckets[arg0] + arg1;
};
this._sampleStats = () => {
const state = state.getState();
let tmp4 = state.resolution !== self._targetResolution;
if (!tmp4) {
tmp4 = tmp2 !== self._targetFPS;
}
self._streamSettingsChanged = tmp4;
};
this._isSender = arg1;
interval = new VideoStreamStats(closure_1[4]).Interval();
this._statInterval = interval;
this._lastLayout = arg0;
this._layoutBuckets = {};
return;
}
}
const arg1 = VideoStreamStats;
let obj = {
key: "start",
value() {
const state = state.getState();
({ resolution: this._targetResolution, fps: this._targetFPS } = state);
const _statInterval = this._statInterval;
_statInterval.start(1000, this._sampleStats);
this._lastLayoutChanged = VideoStreamStats(closure_1[5]).now();
}
};
const items = [obj, , , , , ];
obj = {
key: "stop",
value() {
const _statInterval = this._statInterval;
_statInterval.stop();
this._streamEnd = VideoStreamStats(closure_1[5]).now();
this._incrementLayout(this._lastLayout, (this._streamEnd - this._lastLayoutChanged) / 1000);
}
};
items[1] = obj;
obj = {
key: "autoQualityChange",
value() {
this._automaticQualityChanges = this._automaticQualityChanges + 1;
}
};
items[2] = obj;
items[3] = {
key: "layoutChange",
value(_lastLayout) {
const self = this;
if (_lastLayout !== this._lastLayout) {
if (null == self._streamEnd) {
const nowResult = VideoStreamStats(closure_1[5]).now();
self._incrementLayout(self._lastLayout, (nowResult - self._lastLayoutChanged) / 1000);
self._layoutChanges = self._layoutChanges + 1;
self._lastLayout = _lastLayout;
self._lastLayoutChanged = nowResult;
const obj = VideoStreamStats(closure_1[5]);
}
}
}
};
items[4] = {
key: "getLayout",
value() {
return this._lastLayout;
}
};
items[5] = {
key: "getStats",
value() {
const self = this;
let obj = { num_layout_changes: this._layoutChanges, duration_layout_fullscreen: callback2(this._layoutBuckets[closure_5.FULL_SCREEN]), duration_layout_theatre: callback2(this._layoutBuckets[closure_5.THEATRE]), duration_layout_pip: callback2(this._layoutBuckets[closure_5.PIP]), duration_layout_popout: callback2(this._layoutBuckets[closure_5.POPOUT]), duration_layout_portrait: callback2(this._layoutBuckets[closure_5.PORTRAIT]), duration_layout_landscape: callback2(this._layoutBuckets[closure_5.LANDSCAPE]), duration_layout_minimized: callback2(this._layoutBuckets[closure_5.MINIMIZED]) };
let tmp = obj;
if (this._isSender) {
obj = {};
const merged = Object.assign(obj);
obj["target_fps"] = self._targetFPS;
obj["target_resolution_height"] = self._targetResolution;
obj["stream_settings_changed"] = self._streamSettingsChanged;
obj["num_auto_quality_changes"] = self._automaticQualityChanges;
tmp = obj;
}
return tmp;
}
};
return callback(VideoStreamStats, items);
}();
const result = arg1(dependencyMap[6]).fileFinishedImporting("modules/go_live/VideoStreamStats.tsx");
export default tmp2;