For outgoing calls send AES crypto in offer using corrected names
for keys of length 192 and 256, i.e. names containing _192_CM_
and _256_CM_ instead of _CM_192_ and CM_256_. For incoming calls
accept both naming conventions, decaying to same entry in SUITES.
+ fix after SRTP failed for 256 keys:
Tests showed loop removing '=' from keys in switch_core_media_build_crypto
1190 if (!switch_channel_var_true(channel, "rtp_pad_srtp_keys")) {
1191 p = strrchr((char *) b64_key, '=');
1192
1193 while (p && *p && *p == '=') {
1194 *p-- = '\0';
1195 }
1196 }
shouldn't be executed for AES_CM_256_HMAC_SHA1_32 and AES_CM_256_HMAC_SHA1_80
keys and it is meaningless for AES_CM_128_HMAC_SHA1_32 AES_CM_128_HMAC_SHA1_80
keys. Tested calling from Bria.
Introduced switch_channel_var_false and changed this to:
if (switch_channel_var_false(channel, "rtp_pad_srtp_keys"))
to enter the loop if var is set to false (and not if it is _not_ set).
update mod_mp4v2 fix record video and lipsync
refactor to use a dedicated video write thread
read frame_size from encoder to support mp3 and aac codec
fix audio only mode
control bandwidth and fps
* commit '720128b61ed0fba0c45ba7caa0d3d7a4bde2ffb4':
FS-11310 #resolve add more params for conference record stop event
FS-11310 #resolve add optional switch_core_file_pre_close() to stop writing to file and possible to get file size related params
* commit '144bbec7fded8318750cfa9595631505dcdcb097':
FS-11303: [Build-System] Migrate Visual C++ components redistribution using merge modules from v140 to v141 (VS2017), minor cleanup.
* commit 'e08406d1c40782325c96eccb3c3afb7b360c935f':
FS-11288: [Build-System] Refactor WIX project to not miss modules in msi on slow machines. Move Windows build logic from legacy util.vbs to modern props. Fix sound packages improper extraction. Fix multiprocessor build under msbuild.
The Verto libs currently have total control over the streams associated with
placing any kind of call, handling both their creation and teardown
automatically.
This patch provides the option for a developer to instead pass pre-created
MediaStream objects when instantiating the Verto object, or when calling
Verto.newCall(), and the library will bypass the work of creating those
streams, and of destroying those streams when the call is torn down.
This is particularly useful if the application wants to manage its own streams,
such as re-using them in other non-Verto aspects of the application.
The patch also creates some internal convenience functions for managing the
video element related to a local video stream.
This patch adds an onRemoteStream callback, which can be specified on the Verto
instance, or per dialog. The callback is fired when the remote stream from a
call is received, and receives two arguments, the first is the remote stream,
the second is the Verto dialog object.
As described at https://bugs.chromium.org/p/chromium/issues/detail?id=862325,
some Android devices using Chrome fail a getUserMedia() request when
frameRate.min is specified.
This is due to a bug in both the device (reporting a 0 min frameRate), and
Chrome, which fails to catch this and set a reasonable fallback value.
While a fix has gone into Chrome, it might be awhile before this fix makes it
into their stable release, so filing this with my quick hack to prevent the
error on Android devices.
Note this fix could certainly be more robust (maybe detect Chrome version, or
some test to see if min frameRate from the device returns 0), and it gets the
job done as a start.
getMediaParams() was using a legacy version of the video constraint param to
specify a deviceId.
checkRes() was incorrectly setting video constraints such that it was not
properly testing specific video devices.
$.verto.unloadJobs queue leverages the 'beforeunload' event to perform work
prior to browser page unload.
However, iOS does not support that event. Its equivalent event is 'pagehide'.
This patch uses the pagehide event on iOS, and beforeunload for all others.
iOS requires a 'playsinline' attribute to be added to video tags, however a
'controls' attribute was erroneously added, and is unneeded.
See https://github.com/webrtc/samples/issues/929#issuecomment-330816567 and
following comments for confirmation.
Removing this attribute reduces UI noise and 'click contention' on video
elements.
Verto.newCall() permits passing custom callback functions per call that
override the default dialog callbacks inherited from the Verto object.
However, they are currently set after calling the invite() function, and it's
possible that some of these callbacks could be called during the invite()
function's execution.
To avoid a race condition, move setting these custom callbacks on the dialog
to happen before calling invite().
Currently the 'permissionCallback' object is only available at the Verto
instance level. This is problematic in multi-call scenarios, where an
individual call dialog needs access to the onGranted/onDenied callback
functions.
The patch adds a check for existence of onGranted/onDenied callback functions
at the dialog level, with a fallback to the original behavior of calling
onGranted/onDenied from the Verto instance if it's not available on the dialog.
This preserves backwards compatibility while allowing per-dialog overrides
going forward.
In mod_conference 1.6.x, all conference users could get the audio floor
regardless of the kind of video layer they were placed in.
In 1.8.x, the concept of a 'dedicated video layer' was introduced, such that
video layout slots with a reservation ID or a role ID are marked with the
'MFLAG_DED_VID_LAYER' member flag when a member is in the slot, and such
marked layers are prevented from becoming the conference audio/video floor
holder.
This makes sense for the video floor in all circumstances, and the audio floor
in most circumstances.
However, there are some circumstances where allowing users in these dedicated
video layers to become the conference audio floor holder is preferred, such as
when all slots in the layout have reservation IDs, and the audio floor events
are used to manage users in those slots manually.
This adds a conference profile flag, 'ded-vid-layer-audio-floor, which, when
enabled, allows conference members in dedicated video layers to become the
conference audio floor holder.
The 'conference vid-res-id' sub command previously used the CONF_API_SUB_MEMBER_TARGET
command parsing strategy. The standard options exposed by that strategy didn't make
sense for this sub command, so it's now been switched to use the CONF_API_SUB_ARGS_SPLIT
command parsing strategy.
A third, optional 'force' argument has also been added. The default behavior of the
command is to toggle the user in and out of a reservation slot, use the force argument
to ensure the user is placed into the reservation slot provided.
The new signature of the sub command is:
vid-res-id <member_id> <val>|clear [force]