@flashphoner/websdk 2.0.210 → 2.0.215
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docTemplate/README.md +1 -1
- package/examples/demo/streaming/conference/conference.html +10 -0
- package/examples/demo/streaming/conference/conference.js +236 -35
- package/examples/demo/streaming/video-chat/video-chat.html +5 -0
- package/flashphoner-no-flash.js +331 -231
- package/flashphoner-no-flash.min.js +2 -2
- package/flashphoner-no-webrtc.js +322 -224
- package/flashphoner-no-webrtc.min.js +2 -2
- package/flashphoner-no-wsplayer.js +331 -231
- package/flashphoner-no-wsplayer.min.js +2 -2
- package/flashphoner-room-api.js +340 -223
- package/flashphoner-room-api.min.js +2 -2
- package/flashphoner-temasys-flash-websocket-without-adapterjs.js +329 -226
- package/flashphoner-temasys-flash-websocket.js +328 -225
- package/flashphoner-temasys-flash-websocket.min.js +1 -1
- package/flashphoner-webrtc-only.js +325 -230
- package/flashphoner-webrtc-only.min.js +1 -1
- package/flashphoner.js +337 -232
- package/flashphoner.min.js +2 -2
- package/package.json +1 -1
- package/src/flash-media-provider.js +5 -0
- package/src/flashphoner-core.d.ts +7 -4
- package/src/flashphoner-core.js +98 -29
- package/src/room-module.js +9 -2
- package/src/temasys-media-provider.js +5 -0
- package/src/util.js +204 -185
- package/src/webrtc-media-provider.js +14 -7
- package/src/websocket-media-provider.js +5 -0
|
@@ -18344,7 +18344,12 @@ var createConnection = function createConnection(options) {
|
|
|
18344
18344
|
var id = options.id;
|
|
18345
18345
|
var authToken = options.authToken;
|
|
18346
18346
|
var display = options.display || options.localDisplay;
|
|
18347
|
-
var flashBufferTime = options.flashBufferTime || 0;
|
|
18347
|
+
var flashBufferTime = options.flashBufferTime || 0; // Set connection logger #WCS-2434
|
|
18348
|
+
|
|
18349
|
+
if (options.logger) {
|
|
18350
|
+
logger = options.logger;
|
|
18351
|
+
}
|
|
18352
|
+
|
|
18348
18353
|
var url = getConnectionUrl(options.mainUrl, options.flashProto, options.flashPort); //todo state from flash instance
|
|
18349
18354
|
|
|
18350
18355
|
var state = function state() {
|
|
@@ -18965,8 +18970,9 @@ var constants = require("./constants");
|
|
|
18965
18970
|
|
|
18966
18971
|
var util = require('./util');
|
|
18967
18972
|
|
|
18968
|
-
var
|
|
18973
|
+
var LoggerObject = require('./util').logger;
|
|
18969
18974
|
|
|
18975
|
+
var coreLogger;
|
|
18970
18976
|
var loggerConf = {
|
|
18971
18977
|
push: false,
|
|
18972
18978
|
severity: "INFO"
|
|
@@ -19014,7 +19020,7 @@ var disableConnectionQualityCalculation;
|
|
|
19014
19020
|
* @param {String=} options.decoderLocation Location of video-worker2.js file
|
|
19015
19021
|
* @param {String=} options.screenSharingExtensionId Chrome screen sharing extension id
|
|
19016
19022
|
* @param {Object=} options.constraints Default local media constraints
|
|
19017
|
-
* @param {Object=} options.logger
|
|
19023
|
+
* @param {Object=} options.logger Core logger options
|
|
19018
19024
|
* @throws {Error} Error if none of MediaProviders available
|
|
19019
19025
|
* @memberof Flashphoner
|
|
19020
19026
|
*/
|
|
@@ -19023,16 +19029,10 @@ var init = function init(options) {
|
|
|
19023
19029
|
if (!initialized) {
|
|
19024
19030
|
if (!options) {
|
|
19025
19031
|
options = {};
|
|
19026
|
-
}
|
|
19032
|
+
} // init global logger
|
|
19027
19033
|
|
|
19028
|
-
loggerConf = options.logger || loggerConf;
|
|
19029
19034
|
|
|
19030
|
-
|
|
19031
|
-
loggerConf.enableLogs = true;
|
|
19032
|
-
} // init logger
|
|
19033
|
-
|
|
19034
|
-
|
|
19035
|
-
logger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
|
|
19035
|
+
coreLogger = createLogger(options.logger);
|
|
19036
19036
|
var waitingTemasys = false;
|
|
19037
19037
|
|
|
19038
19038
|
try {
|
|
@@ -19053,7 +19053,7 @@ var init = function init(options) {
|
|
|
19053
19053
|
constraints: options.constraints || getDefaultMediaConstraints(),
|
|
19054
19054
|
extensionId: options.screenSharingExtensionId,
|
|
19055
19055
|
audioContext: audioContext,
|
|
19056
|
-
logger:
|
|
19056
|
+
logger: coreLogger,
|
|
19057
19057
|
createMicGainNode: enableGainNode
|
|
19058
19058
|
};
|
|
19059
19059
|
webRtcProvider.configure(webRtcConf);
|
|
@@ -19070,7 +19070,7 @@ var init = function init(options) {
|
|
|
19070
19070
|
var webRtcConf = {
|
|
19071
19071
|
constraints: options.constraints || getDefaultMediaConstraints(),
|
|
19072
19072
|
extensionId: options.screenSharingExtensionId,
|
|
19073
|
-
logger:
|
|
19073
|
+
logger: coreLogger
|
|
19074
19074
|
};
|
|
19075
19075
|
webRtcProvider.configure(webRtcConf); // Just reorder media provider list
|
|
19076
19076
|
|
|
@@ -19098,7 +19098,7 @@ var init = function init(options) {
|
|
|
19098
19098
|
var flashConf = {
|
|
19099
19099
|
constraints: options.constraints || getDefaultMediaConstraints(),
|
|
19100
19100
|
flashMediaProviderSwfLocation: options.flashMediaProviderSwfLocation,
|
|
19101
|
-
logger:
|
|
19101
|
+
logger: coreLogger
|
|
19102
19102
|
};
|
|
19103
19103
|
flashProvider.configure(flashConf);
|
|
19104
19104
|
}
|
|
@@ -19122,7 +19122,7 @@ var init = function init(options) {
|
|
|
19122
19122
|
receiverLocation: options.receiverLocation,
|
|
19123
19123
|
decoderLocation: options.decoderLocation,
|
|
19124
19124
|
audioContext: audioContext,
|
|
19125
|
-
logger:
|
|
19125
|
+
logger: coreLogger
|
|
19126
19126
|
};
|
|
19127
19127
|
websocketProvider.configure(wsConf);
|
|
19128
19128
|
} //check at least 1 provider available
|
|
@@ -19144,7 +19144,7 @@ var init = function init(options) {
|
|
|
19144
19144
|
MediaProvider = _MediaProvider;
|
|
19145
19145
|
}
|
|
19146
19146
|
} else {
|
|
19147
|
-
|
|
19147
|
+
corelogger.warn(LOG_PREFIX, "Preferred media provider is not available.");
|
|
19148
19148
|
}
|
|
19149
19149
|
}
|
|
19150
19150
|
|
|
@@ -19172,7 +19172,7 @@ var init = function init(options) {
|
|
|
19172
19172
|
options.mediaProvidersReadyCallback(Object.keys(MediaProvider));
|
|
19173
19173
|
}
|
|
19174
19174
|
|
|
19175
|
-
|
|
19175
|
+
coreLogger.info(LOG_PREFIX, "Initialized");
|
|
19176
19176
|
initialized = true;
|
|
19177
19177
|
}
|
|
19178
19178
|
};
|
|
@@ -19211,7 +19211,7 @@ var playFirstVideo = function playFirstVideo(display, isLocal, src) {
|
|
|
19211
19211
|
}
|
|
19212
19212
|
};
|
|
19213
19213
|
/**
|
|
19214
|
-
* Get logger
|
|
19214
|
+
* Get core logger
|
|
19215
19215
|
*
|
|
19216
19216
|
* @returns {Object} Logger
|
|
19217
19217
|
* @memberof Flashphoner
|
|
@@ -19222,7 +19222,7 @@ var getLogger = function getLogger() {
|
|
|
19222
19222
|
if (!initialized) {
|
|
19223
19223
|
console.warn("Initialize API first.");
|
|
19224
19224
|
} else {
|
|
19225
|
-
return
|
|
19225
|
+
return coreLogger;
|
|
19226
19226
|
}
|
|
19227
19227
|
};
|
|
19228
19228
|
/**
|
|
@@ -19395,6 +19395,31 @@ var getSessions = function getSessions() {
|
|
|
19395
19395
|
|
|
19396
19396
|
var getSession = function getSession(id) {
|
|
19397
19397
|
return sessions[id];
|
|
19398
|
+
}; // Get logger configuration from options
|
|
19399
|
+
|
|
19400
|
+
|
|
19401
|
+
var getLoggerConf = function getLoggerConf(loggerOptions) {
|
|
19402
|
+
var conf = loggerOptions || loggerConf;
|
|
19403
|
+
|
|
19404
|
+
if (loggerOptions !== null) {
|
|
19405
|
+
conf.enableLogs = true;
|
|
19406
|
+
}
|
|
19407
|
+
|
|
19408
|
+
return conf;
|
|
19409
|
+
}; // Create a new logger object
|
|
19410
|
+
|
|
19411
|
+
|
|
19412
|
+
var createLogger = function createLogger(loggerOptions) {
|
|
19413
|
+
var parentLogger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : coreLogger;
|
|
19414
|
+
var newLogger = parentLogger;
|
|
19415
|
+
|
|
19416
|
+
if (newLogger === undefined || loggerOptions != undefined) {
|
|
19417
|
+
var loggerConf = getLoggerConf(loggerOptions);
|
|
19418
|
+
newLogger = new LoggerObject();
|
|
19419
|
+
newLogger.init(loggerConf.severity || "INFO", loggerConf.push || false, loggerConf.customLogger, loggerConf.enableLogs);
|
|
19420
|
+
}
|
|
19421
|
+
|
|
19422
|
+
return newLogger;
|
|
19398
19423
|
};
|
|
19399
19424
|
/**
|
|
19400
19425
|
* Create new session and connect to server.
|
|
@@ -19414,6 +19439,7 @@ var getSession = function getSession(id) {
|
|
|
19414
19439
|
* @param {Integer=} options.pingInterval Server ping interval in milliseconds [0]
|
|
19415
19440
|
* @param {Integer=} options.receiveProbes A maximum subsequental pings received missing count [0]
|
|
19416
19441
|
* @param {Integer=} options.probesInterval Interval to check subsequental pings received [0]
|
|
19442
|
+
* @param {Object=} options.logger Session logger options
|
|
19417
19443
|
* @returns {Session} Created session
|
|
19418
19444
|
* @throws {Error} Error if API is not initialized
|
|
19419
19445
|
* @throws {TypeError} Error if options.urlServer is not specified
|
|
@@ -19428,8 +19454,12 @@ var createSession = function createSession(options) {
|
|
|
19428
19454
|
|
|
19429
19455
|
if (!options || !options.urlServer) {
|
|
19430
19456
|
throw new TypeError("options.urlServer must be provided");
|
|
19431
|
-
}
|
|
19457
|
+
} // Set session logger #WCS-2434
|
|
19432
19458
|
|
|
19459
|
+
|
|
19460
|
+
var sessionLogger = createLogger(options.logger); // Override logger for all low level operations
|
|
19461
|
+
|
|
19462
|
+
var logger = sessionLogger;
|
|
19433
19463
|
var id_ = uuid_v1();
|
|
19434
19464
|
var sessionStatus = SESSION_STATUS.PENDING;
|
|
19435
19465
|
var urlServer = options.urlServer;
|
|
@@ -19535,7 +19565,7 @@ var createSession = function createSession(options) {
|
|
|
19535
19565
|
if (timeout != undefined && timeout > 0) {
|
|
19536
19566
|
connectionTimeout = setTimeout(function () {
|
|
19537
19567
|
if (wsConnection.readyState == 0) {
|
|
19538
|
-
|
|
19568
|
+
logger.warn(LOG_PREFIX, "WS connection timeout");
|
|
19539
19569
|
wsConnection.close();
|
|
19540
19570
|
}
|
|
19541
19571
|
}, timeout);
|
|
@@ -19559,7 +19589,7 @@ var createSession = function createSession(options) {
|
|
|
19559
19589
|
mediaProviders: Object.keys(MediaProvider),
|
|
19560
19590
|
keepAlive: keepAlive,
|
|
19561
19591
|
authToken: authToken,
|
|
19562
|
-
clientVersion: "2.0.
|
|
19592
|
+
clientVersion: "2.0.215",
|
|
19563
19593
|
clientOSVersion: window.navigator.appVersion,
|
|
19564
19594
|
clientBrowserVersion: window.navigator.userAgent,
|
|
19565
19595
|
msePacketizationVersion: 2,
|
|
@@ -19865,6 +19895,7 @@ var createSession = function createSession(options) {
|
|
|
19865
19895
|
* @param {Array<string>=} options.sipSDP Array of custom SDP params (ex. bandwidth (b=))
|
|
19866
19896
|
* @param {Array<string>=} options.sipHeaders Array of custom SIP headers
|
|
19867
19897
|
* @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
|
|
19898
|
+
* @param {Object=} options.logger Call logger options
|
|
19868
19899
|
* @param {sdpHook} sdpHook The callback that handles sdp from the server
|
|
19869
19900
|
* @returns {Call} Call
|
|
19870
19901
|
* @throws {TypeError} Error if no options provided
|
|
@@ -19877,15 +19908,18 @@ var createSession = function createSession(options) {
|
|
|
19877
19908
|
var createCall = function createCall(options) {
|
|
19878
19909
|
//check session state
|
|
19879
19910
|
if (sessionStatus !== SESSION_STATUS.REGISTERED && sessionStatus !== SESSION_STATUS.ESTABLISHED) {
|
|
19880
|
-
|
|
19881
|
-
throw new Error('Invalid session state');
|
|
19911
|
+
throw new Error('Invalid session state ' + sessionStatus);
|
|
19882
19912
|
} //check options
|
|
19883
19913
|
|
|
19884
19914
|
|
|
19885
19915
|
if (!options) {
|
|
19886
19916
|
throw new TypeError("options must be provided");
|
|
19887
|
-
}
|
|
19917
|
+
} // Set call logger #WCS-2434
|
|
19888
19918
|
|
|
19919
|
+
|
|
19920
|
+
var callLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
|
|
19921
|
+
|
|
19922
|
+
var logger = callLogger;
|
|
19889
19923
|
var login = appKey == 'clickToCallApp' ? '' : cConfig.sipLogin;
|
|
19890
19924
|
var caller_ = options.incoming ? options.caller : login;
|
|
19891
19925
|
var callee_ = options.callee;
|
|
@@ -20031,7 +20065,8 @@ var createSession = function createSession(options) {
|
|
|
20031
20065
|
constraints: constraints,
|
|
20032
20066
|
connectionConfig: mediaOptions,
|
|
20033
20067
|
audioOutputId: audioOutputId,
|
|
20034
|
-
videoContentHint: videoContentHint
|
|
20068
|
+
videoContentHint: videoContentHint,
|
|
20069
|
+
logger: logger
|
|
20035
20070
|
}).then(function (newConnection) {
|
|
20036
20071
|
mediaConnection = newConnection;
|
|
20037
20072
|
return mediaConnection.createOffer({
|
|
@@ -20617,7 +20652,7 @@ var createSession = function createSession(options) {
|
|
|
20617
20652
|
/**
|
|
20618
20653
|
* Get call info
|
|
20619
20654
|
* @returns {string} Info
|
|
20620
|
-
* @memberof
|
|
20655
|
+
* @memberof Call
|
|
20621
20656
|
* @inner
|
|
20622
20657
|
*/
|
|
20623
20658
|
|
|
@@ -20628,7 +20663,7 @@ var createSession = function createSession(options) {
|
|
|
20628
20663
|
/**
|
|
20629
20664
|
* Get stream error info
|
|
20630
20665
|
* @returns {string} Error info
|
|
20631
|
-
* @memberof
|
|
20666
|
+
* @memberof Call
|
|
20632
20667
|
* @inner
|
|
20633
20668
|
*/
|
|
20634
20669
|
|
|
@@ -20636,6 +20671,17 @@ var createSession = function createSession(options) {
|
|
|
20636
20671
|
var getErrorInfo = function getErrorInfo() {
|
|
20637
20672
|
return errorInfo_;
|
|
20638
20673
|
};
|
|
20674
|
+
/**
|
|
20675
|
+
* Get call logger
|
|
20676
|
+
*
|
|
20677
|
+
* @returns {Object} Logger
|
|
20678
|
+
* @memberof Call
|
|
20679
|
+
*/
|
|
20680
|
+
|
|
20681
|
+
|
|
20682
|
+
var getLogger = function getLogger() {
|
|
20683
|
+
return callLogger;
|
|
20684
|
+
};
|
|
20639
20685
|
|
|
20640
20686
|
call.call = call_;
|
|
20641
20687
|
call.answer = answer;
|
|
@@ -20667,6 +20713,7 @@ var createSession = function createSession(options) {
|
|
|
20667
20713
|
call.switchMic = switchMic;
|
|
20668
20714
|
call.switchToScreen = switchToScreen;
|
|
20669
20715
|
call.switchToCam = switchToCam;
|
|
20716
|
+
call.getLogger = getLogger;
|
|
20670
20717
|
calls[id_] = call;
|
|
20671
20718
|
return call;
|
|
20672
20719
|
};
|
|
@@ -20713,6 +20760,7 @@ var createSession = function createSession(options) {
|
|
|
20713
20760
|
* @param {string=} options.useCanvasMediaStream EXPERIMENTAL: when publish bind browser's media stream to the canvas. It can be useful for image filtering
|
|
20714
20761
|
* @param {string=} options.videoContentHint Video content hint for browser ('detail' by default to maintain resolution), {@link Flashphoner.constants.CONTENT_HINT_TYPE}
|
|
20715
20762
|
* @param {Boolean=} options.unmutePlayOnStart Unmute playback on start. May be used after user gesture only, so set 'unmutePlayOnStart: false' for autoplay
|
|
20763
|
+
* @param {Object=} options.logger Stream logger options
|
|
20716
20764
|
* @param {sdpHook} sdpHook The callback that handles sdp from the server
|
|
20717
20765
|
* @returns {Stream} Stream
|
|
20718
20766
|
* @throws {TypeError} Error if no options provided
|
|
@@ -20728,7 +20776,7 @@ var createSession = function createSession(options) {
|
|
|
20728
20776
|
var availableCallbacks = []; //check session state
|
|
20729
20777
|
|
|
20730
20778
|
if (sessionStatus !== SESSION_STATUS.ESTABLISHED) {
|
|
20731
|
-
throw new Error('Invalid session state');
|
|
20779
|
+
throw new Error('Invalid session state ' + sessionStatus);
|
|
20732
20780
|
} //check options
|
|
20733
20781
|
|
|
20734
20782
|
|
|
@@ -20738,8 +20786,12 @@ var createSession = function createSession(options) {
|
|
|
20738
20786
|
|
|
20739
20787
|
if (!options.name) {
|
|
20740
20788
|
throw new TypeError("options.name must be provided");
|
|
20741
|
-
}
|
|
20789
|
+
} // Set stream logger #WCS-2434
|
|
20790
|
+
|
|
20791
|
+
|
|
20792
|
+
var streamLogger = createLogger(options.logger, sessionLogger); // Override logger for all low level operations
|
|
20742
20793
|
|
|
20794
|
+
var logger = streamLogger;
|
|
20743
20795
|
var clientKf = new KalmanFilter();
|
|
20744
20796
|
var serverKf = new KalmanFilter();
|
|
20745
20797
|
var id_ = uuid_v1();
|
|
@@ -20983,7 +21035,7 @@ var createSession = function createSession(options) {
|
|
|
20983
21035
|
logger.debug(LOG_PREFIX, "Play stream " + name_);
|
|
20984
21036
|
|
|
20985
21037
|
if (status_ !== STREAM_STATUS.NEW) {
|
|
20986
|
-
throw new Error("Invalid stream state");
|
|
21038
|
+
throw new Error("Invalid stream state " + status_);
|
|
20987
21039
|
}
|
|
20988
21040
|
|
|
20989
21041
|
status_ = STREAM_STATUS.PENDING; //create mediaProvider connection
|
|
@@ -21002,7 +21054,8 @@ var createSession = function createSession(options) {
|
|
|
21002
21054
|
audioOutputId: audioOutputId,
|
|
21003
21055
|
remoteVideo: remoteVideo,
|
|
21004
21056
|
playoutDelay: playoutDelay,
|
|
21005
|
-
unmutePlayOnStart: unmutePlayOnStart
|
|
21057
|
+
unmutePlayOnStart: unmutePlayOnStart,
|
|
21058
|
+
logger: logger
|
|
21006
21059
|
}, streamRefreshHandlers[id_]).then(function (newConnection) {
|
|
21007
21060
|
mediaConnection = newConnection;
|
|
21008
21061
|
|
|
@@ -21066,7 +21119,7 @@ var createSession = function createSession(options) {
|
|
|
21066
21119
|
logger.debug(LOG_PREFIX, "Publish stream " + name_);
|
|
21067
21120
|
|
|
21068
21121
|
if (status_ !== STREAM_STATUS.NEW) {
|
|
21069
|
-
throw new Error("Invalid stream state");
|
|
21122
|
+
throw new Error("Invalid stream state " + status_);
|
|
21070
21123
|
}
|
|
21071
21124
|
|
|
21072
21125
|
status_ = STREAM_STATUS.PENDING;
|
|
@@ -21100,7 +21153,8 @@ var createSession = function createSession(options) {
|
|
|
21100
21153
|
connectionConfig: mediaOptions,
|
|
21101
21154
|
connectionConstraints: mediaConnectionConstraints,
|
|
21102
21155
|
customStream: constraints && constraints.customStream ? constraints.customStream : false,
|
|
21103
|
-
videoContentHint: videoContentHint
|
|
21156
|
+
videoContentHint: videoContentHint,
|
|
21157
|
+
logger: logger
|
|
21104
21158
|
}).then(function (newConnection) {
|
|
21105
21159
|
mediaConnection = newConnection;
|
|
21106
21160
|
return mediaConnection.createOffer({
|
|
@@ -21730,6 +21784,17 @@ var createSession = function createSession(options) {
|
|
|
21730
21784
|
availableCallbacks.push(promise);
|
|
21731
21785
|
});
|
|
21732
21786
|
};
|
|
21787
|
+
/**
|
|
21788
|
+
* Get stream logger
|
|
21789
|
+
*
|
|
21790
|
+
* @returns {Object} Logger
|
|
21791
|
+
* @memberof Stream
|
|
21792
|
+
*/
|
|
21793
|
+
|
|
21794
|
+
|
|
21795
|
+
var getLogger = function getLogger() {
|
|
21796
|
+
return streamLogger;
|
|
21797
|
+
};
|
|
21733
21798
|
|
|
21734
21799
|
stream.play = play;
|
|
21735
21800
|
stream.publish = publish;
|
|
@@ -21769,6 +21834,7 @@ var createSession = function createSession(options) {
|
|
|
21769
21834
|
stream.switchToScreen = switchToScreen;
|
|
21770
21835
|
stream.switchToCam = switchToCam;
|
|
21771
21836
|
stream.sendData = sendData;
|
|
21837
|
+
stream.getLogger = getLogger;
|
|
21772
21838
|
streams[id_] = stream;
|
|
21773
21839
|
return stream;
|
|
21774
21840
|
};
|
|
@@ -21977,6 +22043,17 @@ var createSession = function createSession(options) {
|
|
|
21977
22043
|
}
|
|
21978
22044
|
|
|
21979
22045
|
return sdp;
|
|
22046
|
+
};
|
|
22047
|
+
/**
|
|
22048
|
+
* Get session logger
|
|
22049
|
+
*
|
|
22050
|
+
* @returns {Object} Logger
|
|
22051
|
+
* @memberof Session
|
|
22052
|
+
*/
|
|
22053
|
+
|
|
22054
|
+
|
|
22055
|
+
var getLogger = function getLogger() {
|
|
22056
|
+
return sessionLogger;
|
|
21980
22057
|
}; //export Session
|
|
21981
22058
|
|
|
21982
22059
|
|
|
@@ -21992,7 +22069,8 @@ var createSession = function createSession(options) {
|
|
|
21992
22069
|
session.submitBugReport = submitBugReport;
|
|
21993
22070
|
session.startDebug = startDebug;
|
|
21994
22071
|
session.stopDebug = stopDebug;
|
|
21995
|
-
session.on = on;
|
|
22072
|
+
session.on = on;
|
|
22073
|
+
session.getLogger = getLogger; //save interface to global map
|
|
21996
22074
|
|
|
21997
22075
|
sessions[id_] = session;
|
|
21998
22076
|
return session;
|
|
@@ -22058,6 +22136,11 @@ var Promise = require('es6-promise').Promise;
|
|
|
22058
22136
|
|
|
22059
22137
|
var createConnection = function createConnection(options) {
|
|
22060
22138
|
return new Promise(function (resolve, reject) {
|
|
22139
|
+
// Set connection logger #WCS-2434
|
|
22140
|
+
if (options.logger) {
|
|
22141
|
+
logger = options.logger;
|
|
22142
|
+
}
|
|
22143
|
+
|
|
22061
22144
|
var id = options.id;
|
|
22062
22145
|
var connectionConfig = options.connectionConfig || {
|
|
22063
22146
|
"iceServers": []
|
|
@@ -22693,165 +22776,168 @@ module.exports = {
|
|
|
22693
22776
|
},{"./util":46,"es6-promise":2,"uuid":10,"webrtc-adapter":25}],46:[function(require,module,exports){
|
|
22694
22777
|
'use strict';
|
|
22695
22778
|
|
|
22696
|
-
|
|
22697
|
-
|
|
22698
|
-
|
|
22699
|
-
|
|
22700
|
-
}
|
|
22779
|
+
var isEmptyObject = function isEmptyObject(obj) {
|
|
22780
|
+
for (var name in obj) {
|
|
22781
|
+
return false;
|
|
22782
|
+
}
|
|
22701
22783
|
|
|
22702
|
-
|
|
22703
|
-
|
|
22784
|
+
return true;
|
|
22785
|
+
};
|
|
22786
|
+
/**
|
|
22787
|
+
* Copy values of object own properties to array.
|
|
22788
|
+
*
|
|
22789
|
+
* @param obj
|
|
22790
|
+
* @returns {Array}
|
|
22791
|
+
*/
|
|
22704
22792
|
|
|
22705
|
-
/**
|
|
22706
|
-
* Copy values of object own properties to array.
|
|
22707
|
-
*
|
|
22708
|
-
* @param obj
|
|
22709
|
-
* @returns {Array}
|
|
22710
|
-
*/
|
|
22711
|
-
copyObjectToArray: function copyObjectToArray(obj) {
|
|
22712
|
-
var ret = [];
|
|
22713
22793
|
|
|
22714
|
-
|
|
22715
|
-
|
|
22716
|
-
|
|
22717
|
-
|
|
22794
|
+
var copyObjectToArray = function copyObjectToArray(obj) {
|
|
22795
|
+
var ret = [];
|
|
22796
|
+
|
|
22797
|
+
for (var prop in obj) {
|
|
22798
|
+
if (obj.hasOwnProperty(prop)) {
|
|
22799
|
+
ret.push(obj[prop]);
|
|
22718
22800
|
}
|
|
22801
|
+
}
|
|
22719
22802
|
|
|
22720
|
-
|
|
22721
|
-
|
|
22803
|
+
return ret;
|
|
22804
|
+
};
|
|
22805
|
+
/**
|
|
22806
|
+
* Copy src properties to dst object.
|
|
22807
|
+
* Will overwrite dst prop with src prop in case of dst prop exist.
|
|
22808
|
+
*/
|
|
22722
22809
|
|
|
22723
|
-
|
|
22724
|
-
|
|
22725
|
-
|
|
22726
|
-
|
|
22727
|
-
|
|
22728
|
-
for (var prop in src) {
|
|
22729
|
-
if (src.hasOwnProperty(prop)) {
|
|
22730
|
-
dst[prop] = src[prop];
|
|
22731
|
-
}
|
|
22810
|
+
|
|
22811
|
+
var copyObjectPropsToAnotherObject = function copyObjectPropsToAnotherObject(src, dst) {
|
|
22812
|
+
for (var prop in src) {
|
|
22813
|
+
if (src.hasOwnProperty(prop)) {
|
|
22814
|
+
dst[prop] = src[prop];
|
|
22732
22815
|
}
|
|
22733
|
-
}
|
|
22734
|
-
|
|
22735
|
-
var result = {};
|
|
22816
|
+
}
|
|
22817
|
+
};
|
|
22736
22818
|
|
|
22737
|
-
|
|
22738
|
-
|
|
22739
|
-
* Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
|
|
22740
|
-
*/
|
|
22741
|
-
var gotResult = false;
|
|
22819
|
+
var processRtcStatsReport = function processRtcStatsReport(browser, report) {
|
|
22820
|
+
var result = {};
|
|
22742
22821
|
|
|
22743
|
-
|
|
22744
|
-
|
|
22745
|
-
|
|
22746
|
-
|
|
22747
|
-
|
|
22748
|
-
}
|
|
22822
|
+
if (browser == "chrome") {
|
|
22823
|
+
/**
|
|
22824
|
+
* Report types: googComponent, googCandidatePair, googCertificate, googLibjingleSession, googTrack, ssrc
|
|
22825
|
+
*/
|
|
22826
|
+
var gotResult = false;
|
|
22749
22827
|
|
|
22750
|
-
|
|
22828
|
+
if (report.type && report.type == "googCandidatePair") {
|
|
22829
|
+
//check if this is active pair
|
|
22830
|
+
if (report.googActiveConnection == "true") {
|
|
22751
22831
|
gotResult = true;
|
|
22752
22832
|
}
|
|
22833
|
+
}
|
|
22753
22834
|
|
|
22754
|
-
|
|
22755
|
-
|
|
22756
|
-
|
|
22757
|
-
|
|
22758
|
-
|
|
22835
|
+
if (report.type && report.type == "ssrc") {
|
|
22836
|
+
gotResult = true;
|
|
22837
|
+
}
|
|
22838
|
+
|
|
22839
|
+
if (gotResult) {
|
|
22840
|
+
for (var k in report) {
|
|
22841
|
+
if (report.hasOwnProperty(k)) {
|
|
22842
|
+
result[k] = report[k];
|
|
22759
22843
|
}
|
|
22760
22844
|
}
|
|
22845
|
+
}
|
|
22761
22846
|
|
|
22762
|
-
|
|
22763
|
-
|
|
22764
|
-
|
|
22765
|
-
|
|
22766
|
-
|
|
22767
|
-
|
|
22768
|
-
|
|
22769
|
-
|
|
22770
|
-
|
|
22771
|
-
|
|
22772
|
-
|
|
22773
|
-
}
|
|
22847
|
+
return result;
|
|
22848
|
+
} else if (browser == "firefox") {
|
|
22849
|
+
/**
|
|
22850
|
+
* RTCStatsReport http://mxr.mozilla.org/mozilla-central/source/dom/webidl/RTCStatsReport.webidl
|
|
22851
|
+
*/
|
|
22852
|
+
if (report.type && (report.type == "outboundrtp" || report.type == "inboundrtp") && report.id.indexOf("rtcp") == -1) {
|
|
22853
|
+
result = {};
|
|
22854
|
+
|
|
22855
|
+
for (var k in report) {
|
|
22856
|
+
if (report.hasOwnProperty(k)) {
|
|
22857
|
+
result[k] = report[k];
|
|
22774
22858
|
}
|
|
22775
22859
|
}
|
|
22776
|
-
|
|
22777
|
-
return result;
|
|
22778
|
-
} else {
|
|
22779
|
-
return result;
|
|
22780
22860
|
}
|
|
22781
22861
|
|
|
22782
|
-
;
|
|
22862
|
+
return result;
|
|
22863
|
+
} else {
|
|
22864
|
+
return result;
|
|
22865
|
+
}
|
|
22866
|
+
};
|
|
22867
|
+
|
|
22868
|
+
var Browser = {
|
|
22869
|
+
isIE: function isIE() {
|
|
22870
|
+
return (
|
|
22871
|
+
/*@cc_on!@*/
|
|
22872
|
+
false || !!document.documentMode
|
|
22873
|
+
);
|
|
22783
22874
|
},
|
|
22784
|
-
|
|
22785
|
-
|
|
22786
|
-
return (
|
|
22787
|
-
/*@cc_on!@*/
|
|
22788
|
-
false || !!document.documentMode
|
|
22789
|
-
);
|
|
22790
|
-
},
|
|
22791
|
-
isFirefox: function isFirefox() {
|
|
22792
|
-
return typeof InstallTrigger !== 'undefined';
|
|
22793
|
-
},
|
|
22794
|
-
isChrome: function isChrome() {
|
|
22795
|
-
return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
|
|
22796
|
-
},
|
|
22797
|
-
isEdge: function isEdge() {
|
|
22798
|
-
return !isIE && !!window.StyleMedia;
|
|
22799
|
-
},
|
|
22800
|
-
isOpera: function isOpera() {
|
|
22801
|
-
return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
|
|
22802
|
-
},
|
|
22803
|
-
isiOS: function isiOS() {
|
|
22804
|
-
return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
|
22805
|
-
},
|
|
22806
|
-
isSafari: function isSafari() {
|
|
22807
|
-
var userAgent = navigator.userAgent.toLowerCase();
|
|
22808
|
-
return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
|
|
22809
|
-
},
|
|
22810
|
-
isAndroid: function isAndroid() {
|
|
22811
|
-
return navigator.userAgent.toLowerCase().indexOf("android") > -1;
|
|
22812
|
-
},
|
|
22813
|
-
isSafariWebRTC: function isSafariWebRTC() {
|
|
22814
|
-
return navigator.mediaDevices && this.isSafari();
|
|
22815
|
-
},
|
|
22816
|
-
isSamsungBrowser: function isSamsungBrowser() {
|
|
22817
|
-
return /SamsungBrowser/i.test(navigator.userAgent);
|
|
22818
|
-
},
|
|
22819
|
-
isAndroidFirefox: function isAndroidFirefox() {
|
|
22820
|
-
return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
|
|
22821
|
-
}
|
|
22875
|
+
isFirefox: function isFirefox() {
|
|
22876
|
+
return typeof InstallTrigger !== 'undefined';
|
|
22822
22877
|
},
|
|
22823
|
-
|
|
22824
|
-
|
|
22825
|
-
|
|
22826
|
-
|
|
22827
|
-
|
|
22828
|
-
|
|
22829
|
-
|
|
22830
|
-
|
|
22831
|
-
|
|
22832
|
-
|
|
22833
|
-
|
|
22834
|
-
|
|
22878
|
+
isChrome: function isChrome() {
|
|
22879
|
+
return !!window.chrome && /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor) && !/OPR/.test(navigator.userAgent);
|
|
22880
|
+
},
|
|
22881
|
+
isEdge: function isEdge() {
|
|
22882
|
+
return !isIE && !!window.StyleMedia;
|
|
22883
|
+
},
|
|
22884
|
+
isOpera: function isOpera() {
|
|
22885
|
+
return !!window.opr && !!opr.addons || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
|
|
22886
|
+
},
|
|
22887
|
+
isiOS: function isiOS() {
|
|
22888
|
+
return /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
|
|
22889
|
+
},
|
|
22890
|
+
isSafari: function isSafari() {
|
|
22891
|
+
var userAgent = navigator.userAgent.toLowerCase();
|
|
22892
|
+
return /(safari|applewebkit)/i.test(userAgent) && !userAgent.includes("chrome") && !userAgent.includes("android");
|
|
22893
|
+
},
|
|
22894
|
+
isAndroid: function isAndroid() {
|
|
22895
|
+
return navigator.userAgent.toLowerCase().indexOf("android") > -1;
|
|
22896
|
+
},
|
|
22897
|
+
isSafariWebRTC: function isSafariWebRTC() {
|
|
22898
|
+
return navigator.mediaDevices && this.isSafari();
|
|
22899
|
+
},
|
|
22900
|
+
isSamsungBrowser: function isSamsungBrowser() {
|
|
22901
|
+
return /SamsungBrowser/i.test(navigator.userAgent);
|
|
22902
|
+
},
|
|
22903
|
+
isAndroidFirefox: function isAndroidFirefox() {
|
|
22904
|
+
return this.isAndroid() && /Firefox/i.test(navigator.userAgent);
|
|
22905
|
+
}
|
|
22906
|
+
};
|
|
22907
|
+
var SDP = {
|
|
22908
|
+
matchPrefix: function matchPrefix(sdp, prefix) {
|
|
22909
|
+
var parts = sdp.trim().split('\n').map(function (line) {
|
|
22910
|
+
return line.trim();
|
|
22911
|
+
});
|
|
22912
|
+
return parts.filter(function (line) {
|
|
22913
|
+
return line.indexOf(prefix) === 0;
|
|
22914
|
+
});
|
|
22915
|
+
},
|
|
22916
|
+
writeFmtp: function writeFmtp(sdp, param, codec) {
|
|
22917
|
+
var sdpArray = sdp.split("\n");
|
|
22918
|
+
var i;
|
|
22835
22919
|
|
|
22836
|
-
|
|
22837
|
-
|
|
22838
|
-
|
|
22839
|
-
|
|
22840
|
-
|
|
22920
|
+
for (i = 0; i < sdpArray.length; i++) {
|
|
22921
|
+
if (sdpArray[i].search(codec) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
|
|
22922
|
+
sdpArray[i] += "\na=fmtp:" + sdpArray[i].match(/[0-9]+/)[0] + " " + param + "\r";
|
|
22923
|
+
}
|
|
22924
|
+
} //normalize sdp after modifications
|
|
22841
22925
|
|
|
22842
22926
|
|
|
22843
|
-
|
|
22927
|
+
var result = "";
|
|
22844
22928
|
|
|
22845
|
-
|
|
22846
|
-
|
|
22847
|
-
|
|
22848
|
-
}
|
|
22929
|
+
for (i = 0; i < sdpArray.length; i++) {
|
|
22930
|
+
if (sdpArray[i] != "") {
|
|
22931
|
+
result += sdpArray[i] + "\n";
|
|
22849
22932
|
}
|
|
22850
|
-
|
|
22851
|
-
return result;
|
|
22852
22933
|
}
|
|
22853
|
-
|
|
22854
|
-
|
|
22934
|
+
|
|
22935
|
+
return result;
|
|
22936
|
+
}
|
|
22937
|
+
};
|
|
22938
|
+
|
|
22939
|
+
var logger = function logger() {
|
|
22940
|
+
return {
|
|
22855
22941
|
init: function init(verbosity, enablePushLogs, customLogger, enableLogs) {
|
|
22856
22942
|
switch (verbosity.toUpperCase()) {
|
|
22857
22943
|
case "DEBUG":
|
|
@@ -23032,92 +23118,104 @@ module.exports = {
|
|
|
23032
23118
|
default:
|
|
23033
23119
|
this.verbosity = 2;
|
|
23034
23120
|
}
|
|
23035
|
-
|
|
23036
|
-
;
|
|
23037
23121
|
}
|
|
23038
|
-
}
|
|
23039
|
-
|
|
23040
|
-
if (!codecs.length) return sdp;
|
|
23041
|
-
var sdpArray = sdp.split("\n");
|
|
23042
|
-
var codecsArray = codecs.split(","); //search and delete codecs line
|
|
23122
|
+
};
|
|
23123
|
+
};
|
|
23043
23124
|
|
|
23044
|
-
|
|
23045
|
-
|
|
23125
|
+
var stripCodecs = function stripCodecs(sdp, codecs) {
|
|
23126
|
+
if (!codecs.length) return sdp;
|
|
23127
|
+
var sdpArray = sdp.split("\n");
|
|
23128
|
+
var codecsArray = codecs.split(","); //search and delete codecs line
|
|
23046
23129
|
|
|
23047
|
-
|
|
23048
|
-
|
|
23130
|
+
var pt = [];
|
|
23131
|
+
var i;
|
|
23049
23132
|
|
|
23050
|
-
|
|
23051
|
-
|
|
23052
|
-
|
|
23053
|
-
|
|
23054
|
-
|
|
23055
|
-
|
|
23133
|
+
for (var p = 0; p < codecsArray.length; p++) {
|
|
23134
|
+
console.log("Searching for codec " + codecsArray[p]);
|
|
23135
|
+
|
|
23136
|
+
for (i = 0; i < sdpArray.length; i++) {
|
|
23137
|
+
if (sdpArray[i].search(new RegExp(codecsArray[p], 'i')) != -1 && sdpArray[i].indexOf("a=rtpmap") == 0) {
|
|
23138
|
+
console.log(codecsArray[p] + " detected");
|
|
23139
|
+
pt.push(sdpArray[i].match(/[0-9]+/)[0]);
|
|
23140
|
+
sdpArray[i] = "";
|
|
23056
23141
|
}
|
|
23057
23142
|
}
|
|
23143
|
+
}
|
|
23058
23144
|
|
|
23059
|
-
|
|
23060
|
-
|
|
23061
|
-
|
|
23062
|
-
|
|
23063
|
-
|
|
23064
|
-
|
|
23065
|
-
}
|
|
23145
|
+
if (pt.length) {
|
|
23146
|
+
//searching for fmtp
|
|
23147
|
+
for (p = 0; p < pt.length; p++) {
|
|
23148
|
+
for (i = 0; i < sdpArray.length; i++) {
|
|
23149
|
+
if (sdpArray[i].search("a=fmtp:" + pt[p]) != -1 || sdpArray[i].search("a=rtcp-fb:" + pt[p]) != -1) {
|
|
23150
|
+
sdpArray[i] = "";
|
|
23066
23151
|
}
|
|
23067
|
-
}
|
|
23152
|
+
}
|
|
23153
|
+
} //delete entries from m= line
|
|
23068
23154
|
|
|
23069
23155
|
|
|
23070
|
-
|
|
23071
|
-
|
|
23072
|
-
|
|
23073
|
-
|
|
23156
|
+
for (i = 0; i < sdpArray.length; i++) {
|
|
23157
|
+
if (sdpArray[i].search("m=audio") != -1 || sdpArray[i].search("m=video") != -1) {
|
|
23158
|
+
var mLineSplitted = sdpArray[i].split(" ");
|
|
23159
|
+
var newMLine = "";
|
|
23074
23160
|
|
|
23075
|
-
|
|
23076
|
-
|
|
23077
|
-
|
|
23161
|
+
for (var m = 0; m < mLineSplitted.length; m++) {
|
|
23162
|
+
if (pt.indexOf(mLineSplitted[m].trim()) == -1 || m <= 2) {
|
|
23163
|
+
newMLine += mLineSplitted[m];
|
|
23078
23164
|
|
|
23079
|
-
|
|
23080
|
-
|
|
23081
|
-
}
|
|
23165
|
+
if (m < mLineSplitted.length - 1) {
|
|
23166
|
+
newMLine = newMLine + " ";
|
|
23082
23167
|
}
|
|
23083
23168
|
}
|
|
23084
|
-
|
|
23085
|
-
sdpArray[i] = newMLine;
|
|
23086
23169
|
}
|
|
23170
|
+
|
|
23171
|
+
sdpArray[i] = newMLine;
|
|
23087
23172
|
}
|
|
23088
|
-
}
|
|
23173
|
+
}
|
|
23174
|
+
} //normalize sdp after modifications
|
|
23089
23175
|
|
|
23090
23176
|
|
|
23091
|
-
|
|
23177
|
+
var result = "";
|
|
23092
23178
|
|
|
23093
|
-
|
|
23094
|
-
|
|
23095
|
-
|
|
23096
|
-
}
|
|
23179
|
+
for (i = 0; i < sdpArray.length; i++) {
|
|
23180
|
+
if (sdpArray[i] != "") {
|
|
23181
|
+
result += sdpArray[i] + "\n";
|
|
23097
23182
|
}
|
|
23183
|
+
}
|
|
23098
23184
|
|
|
23099
|
-
|
|
23100
|
-
|
|
23101
|
-
getCurrentCodecAndSampleRate: function getCurrentCodecAndSampleRate(sdp, mediaType) {
|
|
23102
|
-
var rows = sdp.split("\n");
|
|
23103
|
-
var codecPt;
|
|
23185
|
+
return result;
|
|
23186
|
+
};
|
|
23104
23187
|
|
|
23105
|
-
|
|
23106
|
-
|
|
23107
|
-
|
|
23108
|
-
ret.name = rows[i].split(" ")[1].split("/")[0];
|
|
23109
|
-
ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
|
|
23110
|
-
return ret;
|
|
23111
|
-
} //WCS-2136. WebRTC statistics doesn't work for VP8
|
|
23188
|
+
var getCurrentCodecAndSampleRate = function getCurrentCodecAndSampleRate(sdp, mediaType) {
|
|
23189
|
+
var rows = sdp.split("\n");
|
|
23190
|
+
var codecPt;
|
|
23112
23191
|
|
|
23192
|
+
for (var i = 0; i < rows.length; i++) {
|
|
23193
|
+
if (codecPt && rows[i].indexOf("a=rtpmap:" + codecPt) != -1) {
|
|
23194
|
+
var ret = {};
|
|
23195
|
+
ret.name = rows[i].split(" ")[1].split("/")[0];
|
|
23196
|
+
ret.sampleRate = rows[i].split(" ")[1].split("/")[1];
|
|
23197
|
+
return ret;
|
|
23198
|
+
} //WCS-2136. WebRTC statistics doesn't work for VP8
|
|
23113
23199
|
|
|
23114
|
-
|
|
23115
|
-
|
|
23116
|
-
|
|
23200
|
+
|
|
23201
|
+
if (rows[i].indexOf("m=" + mediaType) != -1) {
|
|
23202
|
+
codecPt = rows[i].split(" ")[3].trim();
|
|
23117
23203
|
}
|
|
23118
23204
|
}
|
|
23119
23205
|
};
|
|
23120
23206
|
|
|
23207
|
+
module.exports = {
|
|
23208
|
+
isEmptyObject: isEmptyObject,
|
|
23209
|
+
copyObjectToArray: copyObjectToArray,
|
|
23210
|
+
copyObjectPropsToAnotherObject: copyObjectPropsToAnotherObject,
|
|
23211
|
+
processRtcStatsReport: processRtcStatsReport,
|
|
23212
|
+
Browser: Browser,
|
|
23213
|
+
SDP: SDP,
|
|
23214
|
+
logger: logger,
|
|
23215
|
+
stripCodecs: stripCodecs,
|
|
23216
|
+
getCurrentCodecAndSampleRate: getCurrentCodecAndSampleRate
|
|
23217
|
+
};
|
|
23218
|
+
|
|
23121
23219
|
},{}],47:[function(require,module,exports){
|
|
23122
23220
|
'use strict';
|
|
23123
23221
|
|
|
@@ -23137,7 +23235,12 @@ var audioContext;
|
|
|
23137
23235
|
var createConnection = function createConnection(options, handlers) {
|
|
23138
23236
|
return new Promise(function (resolve, reject) {
|
|
23139
23237
|
var id = options.id;
|
|
23140
|
-
var display = options.display;
|
|
23238
|
+
var display = options.display; // Set connection logger #WCS-2434
|
|
23239
|
+
|
|
23240
|
+
if (options.logger) {
|
|
23241
|
+
logger = options.logger;
|
|
23242
|
+
}
|
|
23243
|
+
|
|
23141
23244
|
var canvas = document.createElement("canvas");
|
|
23142
23245
|
display.appendChild(canvas);
|
|
23143
23246
|
canvas.id = id;
|