Просмотр исходного кода

fix(stats) Emit stats using source name as key (#1996)

This allows us to display resolution and framerate stats on separate tiles when multi-stream mode is enabled.
dev1
pangrr 3 лет назад
Родитель
Сommit
742232c9fd
Аккаунт пользователя с таким Email не найден
1 измененных файлов: 54 добавлений и 25 удалений
  1. 54
    25
      modules/statistics/RTPStatsCollector.js

+ 54
- 25
modules/statistics/RTPStatsCollector.js Просмотреть файл

@@ -3,6 +3,7 @@ import { getLogger } from '@jitsi/logger';
3 3
 import { MediaType } from '../../service/RTC/MediaType';
4 4
 import * as StatisticsEvents from '../../service/statistics/Events';
5 5
 import browser from '../browser';
6
+import FeatureFlags from '../flags/FeatureFlags';
6 7
 
7 8
 const GlobalOnErrorHandler = require('../util/GlobalOnErrorHandler');
8 9
 
@@ -309,39 +310,67 @@ StatsCollector.prototype._processAndEmitReport = function() {
309 310
                 videoCodec = ssrcStats.codec;
310 311
             }
311 312
 
312
-            const participantId = track.getParticipantId();
313
+            if (FeatureFlags.isSourceNameSignalingEnabled()) {
314
+                const sourceName = track.getSourceName();
313 315
 
314
-            if (participantId) {
315
-                const resolution = ssrcStats.resolution;
316
+                if (sourceName) {
317
+                    const resolution = ssrcStats.resolution;
316 318
 
317
-                if (resolution.width
318
-                        && resolution.height
319
-                        && resolution.width !== -1
320
-                        && resolution.height !== -1) {
321
-                    const userResolutions = resolutions[participantId] || {};
319
+                    if (resolution.width // eslint-disable-line max-depth
320
+                            && resolution.height
321
+                            && resolution.width !== -1
322
+                            && resolution.height !== -1) {
323
+                        resolutions[sourceName] = resolution;
324
+                    }
325
+                    if (ssrcStats.framerate !== 0) { // eslint-disable-line max-depth
326
+                        framerates[sourceName] = ssrcStats.framerate;
327
+                    }
328
+                    if (audioCodec && videoCodec) { // eslint-disable-line max-depth
329
+                        const codecDesc = {
330
+                            'audio': audioCodec,
331
+                            'video': videoCodec
332
+                        };
322 333
 
323
-                    userResolutions[ssrc] = resolution;
324
-                    resolutions[participantId] = userResolutions;
334
+                        codecs[sourceName] = codecDesc;
335
+                    }
336
+                } else {
337
+                    logger.error(`No source name returned by ${track}`);
325 338
                 }
326
-                if (ssrcStats.framerate !== 0) {
327
-                    const userFramerates = framerates[participantId] || {};
339
+            } else {
340
+                const participantId = track.getParticipantId();
328 341
 
329
-                    userFramerates[ssrc] = ssrcStats.framerate;
330
-                    framerates[participantId] = userFramerates;
331
-                }
332
-                if (audioCodec && videoCodec) {
333
-                    const codecDesc = {
334
-                        'audio': audioCodec,
335
-                        'video': videoCodec
336
-                    };
342
+                if (participantId) {
343
+                    const resolution = ssrcStats.resolution;
337 344
 
338
-                    const userCodecs = codecs[participantId] || {};
345
+                    if (resolution.width // eslint-disable-line max-depth
346
+                            && resolution.height
347
+                            && resolution.width !== -1
348
+                            && resolution.height !== -1) {
349
+                        const userResolutions = resolutions[participantId] || {};
339 350
 
340
-                    userCodecs[ssrc] = codecDesc;
341
-                    codecs[participantId] = userCodecs;
351
+                        userResolutions[ssrc] = resolution;
352
+                        resolutions[participantId] = userResolutions;
353
+                    }
354
+                    if (ssrcStats.framerate !== 0) { // eslint-disable-line max-depth
355
+                        const userFramerates = framerates[participantId] || {};
356
+
357
+                        userFramerates[ssrc] = ssrcStats.framerate;
358
+                        framerates[participantId] = userFramerates;
359
+                    }
360
+                    if (audioCodec && videoCodec) { // eslint-disable-line max-depth
361
+                        const codecDesc = {
362
+                            'audio': audioCodec,
363
+                            'video': videoCodec
364
+                        };
365
+
366
+                        const userCodecs = codecs[participantId] || {};
367
+
368
+                        userCodecs[ssrc] = codecDesc;
369
+                        codecs[participantId] = userCodecs;
370
+                    }
371
+                } else {
372
+                    logger.error(`No participant ID returned by ${track}`);
342 373
                 }
343
-            } else {
344
-                logger.error(`No participant ID returned by ${track}`);
345 374
             }
346 375
         }
347 376
 

Загрузка…
Отмена
Сохранить