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.
$.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.
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]
Previously, the font_scale parameter available for the video_mute_banner/video_banner_text
conference channel variable would only accept integer values. It now can accept float
values for more fine grained control, eg:
<action
application="set"
data="video_banner_text={font_scale=.75}Banner Text"
/>
Add params to set min_font_size and max_font_size for video banners.
The hard-coded defaults of 5/24 for min/max font size don't always look good
depending on the layout use case. This adds min_font_size and max_font_size
params for more fine-grained control, eg:
<action
application="set"
data="video_banner_text={min_font_size=8,max_font_size=14}Banner Text"
/>
Assigning the speedTest callback funtion to a local variable and unsetting
the this.speedCB instance variable prior to calling the callback function
allows the rpcClient.speedTest functionality to be used more creatively
(such as calling it recursively for multiple runs) without affecting existing
functionality.
Erroneous DLSR in received RTCP report could
cause RTT to be negative (RTT = A - DLSR - LSR).
Add check for this and prevent corruption
of statistics and estimations (estimator code used
bad RTT values).