Commit Graph

280 Commits

Author SHA1 Message Date
Leonard Kim f1f46e0af5 feat(pinning): move web pinning logic into redux
- Re-use the native redux pinning implementation for web
- Remove pinning logic from conference.js
- To the native pinning add a check for sharedVideo so
  youtube videos do not send a pin event
- Add shared videos as a participant to enable pinning and
  so they can eventually get added to the filmstrip
- Emit UIEvents.PINNED_ENDPOINT from middleware
2017-08-11 10:43:35 +01:00
Saúl Ibarra Corretgé 2525bb2805 Merge pull request #1802 from jitsi/start_in_audio_only
Start in audio only
2017-07-24 14:32:20 +02:00
paweldomas 00d3d3c09a fix(VideoLayout): muted for no tracks
Will make the UI display audio/video muted icon for remote participants
with no audio/video track.
2017-07-21 15:04:03 +02:00
George Politis 68d40b4fa4 Merge pull request #1738 from virtuacoplenny/lenny/connection-stats-pub-sub
ref(stats): process stats through one pub/sub
2017-07-21 12:22:55 +02:00
Leonard Kim 44bbd26c96 ref(stats): process stats through one pub/sub
Instead of passing stats through UI then VideoLayout then the
SmallVideo, pass stats directly to what uses it--ConnectionIndicator.
This also bypasses adding the stats to the store, as they do not
seem to be something that needs to be shared or stored app-wide
just yet.
2017-07-19 15:11:35 -07:00
Leonard Kim 364ab5431c fix(connection-indicator): rename calls to hiding the indicator 2017-07-18 13:27:48 -07:00
paweldomas de2eee2e61 ref(VideoLayout): reduce 'forceUpdate' usage 2017-07-12 10:29:18 -07:00
paweldomas badbedf0f5 ref(LargeVideoManager): getCurrentContainer
Remove duplication and direct access to kind of private 'state' field by
introducing 'getCurrentContainer' method.
2017-07-12 10:29:18 -07:00
paweldomas 751f27644f fix(VideoLayout): store userID in container
The container needs to store user's ID in order for the 'isOnLargeVideo'
logic to work correctly when user has no stream (previously it was
obtained from stream which can be null/undefined).
2017-07-12 10:29:18 -07:00
Leonard Kim 4ce5888b4c feat(connection-indicator): convert to react
- Create a new ConnectionIndicator component for displaying an
  icon for connection quality and for triggering a popover. The
  popover handling has been left in ConnectionIndicator for now,
  which follows the existing implementation.
- Remove the unused method "connectionIndicatorShowMore"
- Change the implementation of existing methods that update the
  connection indicator to call the same method which will rerender
  the indicator completely.
2017-06-27 15:58:00 -05:00
paweldomas 12d7e61362 feat(VideoLayout): add ninja icon
Add ninja icon which wil be displayed when user's connection status is
inactive.

Apply grey filter only for interrupted state.

Do not use isLastN directly, but check ParticipantConnectionStatus.
2017-06-06 11:13:02 -05:00
virtuacoplenny d1ea29beeb fix(large-video): ensure switch to local video when all others leave (#1607)
* fix(large-video): ensure switch to local video when all others leave

This handles the case where User A and B are in a call and B has
no audio or video. Then B leaves. User A would see User B left
on large video. Instead, User A should see self view on large.

* squash: always update large video if it is empty

* squash: add largeVideo check for filmstrip only mode
2017-06-05 18:47:26 -05:00
Leonard Kim 538da92eae fix(large-video): attempt to update large video on all connection updates
It is possible for a connection update to come during a large video update,
between its promises, which would result in the update NOT triggering another
large video update because an update is in progress. This can cause a state
where a connection status overlay is displayed over a video in a state that
does not match the actual video state, like the restoring overlay displaying
on active video.
2017-05-26 15:31:34 -05:00
virtuacoplenny 1da95d2e37 fix(large-video): trigger update after timeout for 1-on-1 calls (#1599)
* fix(large-video): trigger update after timeout for 1-on-1 calls

Currently no video switch happens if a user joins audio and video
muted. For example, User A is in a call and User B joins with no
mic and camera. User A will keep seeing local video on large video.
The fix is to set a timeout, of a somewhat arbitrary 3 seconds, to
show User B on large video.

* SQUASH: wrap videoElement access in if

* SQUASH: split out remoteVideoActive logic
2017-05-25 11:50:52 -05:00
virtuacoplenny d5b40280ab fix(vertical-filmstrip): different label animations for filmstrip states (#1596)
* fix(vertical-filmstrip): different label animations for filmstrip states

Instead of one timing for sliding the video status label left and right,
have different timings depending on the filmstrip state. To facilitate
triggering the different animations, add more classes to the labels
that need to move that specify the filmstrip state.

- Faster transition if focusing on self-view with videos present so
  the label does not overlap videos transitioning from 0 opacity.
- Transition delay when de-focusing on self-view with videos present
  so videos have time to go away before the label moves over them.
- Maintain no movement if there are no videos, regardless of
  filmstrip toggle state.
- Different delays for when the filmstrip is being toggled visible
  and hidden if there are remote videos visible.

* SQUASH: remove remote videos count

* SQUASH: add docs to scss
2017-05-24 20:57:55 -05:00
Leonard Kim 56b12bd969 fix(vertical-filmstrip): move video status labels back to top right
The video status labels, which include recording and hd status,
have been moved back to the top left while in vertical filmstrip
mode. The following had to be done:
- Remove styling to move the labels to the bottom left
- For VideoStatusLabel, move filmstrip remote video count, toggle
  state, and 1:1 state into redux.
- Use middleware to emit out to the Recording label when the
  filmstrip changes.
- Create an empty Filmstrip file for web and identify the existing
  Filmstrip component as native.
2017-05-23 13:28:27 -07:00
Leonard Kim 2333249b05 feat(1-on-1): Initial implementation
- Expose an api on Filmstrip to hide the remote videos container, which does so
  by adding a class
- Modify listeners for user join, leave, share video to call the api
- Hide the container when there is 1 or fewer remote participants
- Always show the container if self view is in focus
- Show the container if the number of remote thumbnails does not match the count
  of remote participants, such as the case of sharing a video
2017-05-23 13:28:27 -07:00
Leonard Kim a88409bbfa fix(video-label): Display based on video dimensions in LargeVideoManager
In its current implementation, the VideoStatusLabel shows HD based on peer
connection stats. These stats will be available on temasys browsers soon but
will remain unavailable on Firefox, which does not collect height/width stats.
To support VideoStatusLabel showing cross-browser, move the high-definition
detection out of stat sniffing and instead check the video element itself using
an interval in LargeVideoManager. (An interval was used because the temasys
video object does not support the onresize event.) Also, add a cleanup path from
conference.web to LargeVideoManager to remove the interval.
2017-05-17 11:54:22 -05:00
Leonard Kim ef9f145cb5 fix(video-layout): always honor local video changes
During the implementation of starting as video muted, a check
was put in place to update the local thumbnail view container's
known local track only if the track was not muted. This can
cause the container to become desynced with the current local
track.(Ideally in the future all state would be in redux so this
manual syncing would not be needed.) Removing the if-muted
check seems to cause no side-effects and makes implementation of
device-switch-while-audio-only a lot simpler because new tracks
can be muted and used immediately.
2017-05-05 09:27:59 -07:00
Leonard Kim d24d5d95dd fix(audio-only): combine video status labels
Move the HD label into the newly renamed VideoStatusLabel
component. That way it cannot be possible for the audio only
label and the HD label to display simultaneously.
2017-05-05 09:27:59 -07:00
Saúl Ibarra Corretgé 9ba3a1c4ff feat(conference): add audio only mode
Audio only mode can be used to save bandwidth. In this mode local video is muted
and last N is set to 0, thus disabling all remote video.

When this mode is enabled avatars are shown.
2017-05-05 09:27:59 -07:00
Lyubo Marinov a9bdde193d Approach consistent filmstrip naming
We seemed to be using the names "film strip" and "filmstrip" (and,
consequently, their source code-conscious forms such as film-strip,
FilmStrip, etc.) In order to comply with our coding style which requires
a consistent one name for a given abstraction, choose one name and
rename the uses of the other name.

Wikipedia has a definition of a "filmstrip", I couldn't find a "film
strip". I guess our abstraction can be seen as what's described there.
When I google "film strip", I get results about "filmstrip" at the top.
That's why I chose "filmstrip".

Certain uses of "film strip" such as interfaceConfig.filmStripOnly and
in the external API I left untouched in an attempt to preserve
compatibility.

I wasn't sure whether CSS was tangled in compatibility so I made a
choice and renamed there was well.
2017-04-10 12:59:44 -05:00
Дамян Минков 2248560699 Uses new peer connection statuses to check and show different user msgs. (#1441)
* Uses new peer connection statuses to check and show different user msgs.

Checks for interrupted state of peer connection and shows appropriate messages. In case of inactive or restoring state a message is show to user that video was stopped on purpose. Removes some unused parameters from the event handlers about peer connection status change.

* Removes isParticipantConnectionActive.
2017-04-03 11:53:04 -05:00
damencho e29120a9c1 Changes lastN event params to leaving and entering endpoint IDs.
Uses leavingIDs to more efficiently iterate over remote videos.
2017-03-23 09:32:27 -05:00
bbaldino 9a46896600 Merge pull request #1402 from jitsi/p2p_ver2
P2P ver2
2017-03-22 16:10:13 -07:00
paweldomas 542bb7caed doc: add FIXME 2017-03-22 11:23:29 -05:00
yanas 704e14f008 Handle last n in the client (#1389)
* Handle last n in the client

* fix(LargeVideoManager.js): Fixes check for low bandwidth. Needs more work

* fix(LargeVideoManager.js): Fixes the Shared Video test.

* fix(LargeVideoManager): Fix shared video view and remove last n checks.

* fix(LargeVideoManager): Fixes jsdoc comment

* fix(RemoteVideo): Fix connection status check

* fix(LargeVideoManager,RemoteVideo): Syntax errors
2017-03-21 12:14:13 -05:00
damencho 54d891afa7 Updates framerate using local statistics. 2017-03-17 16:10:45 -05:00
damencho d01a65f73d Fixes stats, using wrong object members in latest update. 2017-03-15 15:48:13 -05:00
damencho 65239f9ffe Adds frame rate to statistics bubble. 2017-03-15 13:31:42 -05:00
Ilya Daynatovich 631e853b40 Update register/unregister listeners logic of some components in the old app 2017-02-28 00:18:50 -06:00
hristoterezov 0453346cf4 ref(remotecontrol): Pass the largeVideoWrapper as parameter to remote control module 2017-01-23 15:29:25 -06:00
hristoterezov a4d5c41b3a feat(remotecontrol): UI for requesting permissions 2017-01-23 15:29:25 -06:00
hristoterezov 0f9bc766db fix(filmstrip_only): JS errors 2017-01-11 17:16:43 -06:00
hristoterezov 8745efb81f Merge pull request #1158 from jitsi/log_collector
Log collector
2016-11-30 13:07:18 -06:00
yanas e56f1a9ded Merge pull request #1167 from jitsi/fix_anonymous_domain
Fix the UI when anonymous domain auth is in use
2016-11-30 10:51:24 -06:00
yanas 0f2ba1cefe refactor(UIUtils): merges show and hide functions and cleans visibility setting 2016-11-29 15:07:18 -06:00
hristoterezov f32438b219 Merge pull request #1161 from jitsi/pinning-local-not-signal-unpin
Sending unpin after clicking local video and unpinning remote.
2016-11-28 12:06:56 -06:00
paweldomas 51da40e90c ref(UIUtil): add showOrHideElement 2016-11-28 11:05:18 -06:00
damencho 6211566c0c Sending unpin after clicking local video and unpinning remote.
If we:
 - pin a remote and click it, unpin is signalled.
 - pin a remote and the click another remote, the new one is pinned and signalled.
 - pin a remote and then click local. UI pins local, but unpinning remote is not signaled, fix addressed with this commit.
 - pin/unpin local, nothing is signalled.
2016-11-23 17:02:24 -06:00
damencho 8e6fd0ca95 Fixes unpinning local user which is dominant speaker.
It was not switching and staying on local video on unpinning, after change the last shown video will be used to switch to it.
2016-11-23 15:35:03 -06:00
paweldomas b58f1cdd16 use logger instead of console 2016-11-23 11:32:55 -06:00
Ilya Daynatovich 5aff96e3b7 Updated in videolayout 2016-11-10 13:32:12 +02:00
Maxim Voloshin 68ab87cc0d Hide DOM elements using css class 2016-11-10 13:32:12 +02:00
Boris Grozev c0c198098b style: Renames variables, adds a FIXME. 2016-11-07 20:47:43 -06:00
Boris Grozev ac0ee771ed docs: Adds a FIXME. 2016-11-07 20:45:52 -06:00
Boris Grozev 0ca9389e4b cleanup: Simplify code. 2016-11-07 20:39:28 -06:00
yanas a17a98991c Ongoing work on video thumbnail layout 2016-10-26 15:51:09 -05:00
Lyubomir Marinov a2b076985a ESLint
Enable ESLint on jitsi-meet with the same configuration and the same
goals as in lib-jitsi-meet.
2016-10-03 11:12:27 -05:00
damencho 6320ef1caa Updates raised hand to overwrite dominant speaker. 2016-09-30 11:47:43 -05:00
yanas 3bb877cc3a Audio levels redesign. 2016-09-28 16:41:13 -05:00
hristoterezov 2a8700bca3 Merge pull request #938 from jitsi/participant_conn_status
Adds participant connection status notifications
2016-09-27 17:54:22 -05:00
Emil Ivov cbd15f45a4 Merge pull request #944 from jitsi/pin-hover-improvements
Pin hover improvements
2016-09-26 22:42:37 -05:00
yanas 1c8535a2d5 Improves the pin and hover borders 2016-09-26 15:40:56 -05:00
paweldomas 7585413e7d fix(VideoLayout): from avatar to video transition
When user reconnected and the avatar is displayed we need to perform
full large video update in order to transition correctly.
2016-09-26 14:40:00 -05:00
paweldomas 661ea2cf45 feat(VideoLayout): add remote connection problems UI
Grey filter will be applied to the remote video/avatar displayed on
"large" and a message indicating remote connectivity issues will be
shown on top of that.
2016-09-26 14:39:58 -05:00
paweldomas 352e784cad fix(VideoLayout): show video when the connection is back 2016-09-26 13:01:35 -05:00
paweldomas 9d1364b6fb feat(RemoteVideo): show disconnected GSM bars for remotes 2016-09-26 13:01:34 -05:00
paweldomas 8a43699a89 feat(ConnectionIndicator): show disconnected GSM bars on local thumbnail 2016-09-26 13:01:34 -05:00
paweldomas 3ef5dd20ef ref(RemoteVideo): store JitsiParticipant instead of id 2016-09-26 13:01:34 -05:00
Дамян Минков b3d6e5876e Merge pull request #922 from jitsi/fix_filter_not_applied
Fix notification about network issues not displayed when expected
2016-09-26 10:04:14 -05:00
yanas af91fb50b2 Fixes moderator related elements when everyone is moderator 2016-09-23 17:42:29 -05:00
paweldomas 419950ca49 fix(VideoLayout): "connection interrupted" shown only on video
The message about having connectivity issues should be displayed only
on top of the video like the "video problems filter" is.
2016-09-22 12:43:23 -05:00
paweldomas e39648ce21 ref(LargeVideo): rename to LargeVideoManager
It is confusing when the name of the main class exported from the file
is not the same as the filename.
2016-09-22 08:57:14 -05:00
paweldomas e0a05c5908 ref(LargeVideo): move VideoContainer to separate file
VideoContainer is a separate being which implements the LargeContainer
and it's confusing to have it in the same file. This was encouraging to
access private parts of the VideoContainer directly(not through
the interface).
2016-09-22 08:57:14 -05:00
hristoterezov 9b25467080 Merge pull request #878 from jitsi/video-thumbnail-redesign
Video thumbnails redesign
2016-09-15 13:48:07 -05:00
yanas 0013745783 Video thumbnails redesign 2016-09-14 21:20:54 -05:00
hristoterezov dab5252746 feat(ringoverlay): Change the background when the avatar is displayed 2016-09-14 16:26:17 -05:00
damencho a5bc9625ef Fixes parameters for VideoLayout.resizeThumbnails. 2016-09-14 10:48:38 -05:00
yanas 8562d3d55d Remove bottom toolbar and change side panel position and behavior 2016-09-08 13:16:23 -05:00
damencho bb705e32d9 Moves local video thumb initializations where they belong.
Moves local video thumb initializations where they belong in the local video constructor. Fixes a problem when there is no video device, then audio levels and gsm bars are missing. We were doing this initializations every time a video device is changed.
2016-08-31 14:18:09 -05:00
damencho 246ab88a3e Fixes muting particular remote participant.
There was a bug that the handlers for menuItem for mute and kick are added for all remote participants. When clicked multiple handlers are executed and the action will be executed for all remote participants.
2016-08-23 18:37:41 -05:00
hristoterezov 2f202deedf Merge branch 'master' into reloads 2016-07-08 16:03:10 -05:00
Boris Grozev de41977c77 Logs resolution changes to callstats. 2016-07-08 15:16:27 -05:00
hristoterezov 7bf9a82f0b Implements conference reload support 2016-07-07 20:44:04 -05:00
Boris Grozev 2d2e27b8d0 Implements "raised hand". 2016-06-20 16:58:54 -05:00
Boris Grozev 4b6ac38058 Fixes a failure to show the dominant speaker indicator for the local participant. 2016-06-20 15:58:08 -05:00
hristoterezov c3338d3bf2 Implements custom context menu to flip the local video 2016-05-06 20:50:37 -05:00
yanas ab67b42eb9 Hide recorder local thumbnail 2016-05-01 13:47:43 -05:00
yanas edf2f8114b Make sure remote video exist before we use it 2016-04-28 21:18:48 -05:00
bgrozev 202c506a8d Merge pull request #630 from jitsi/fix-missing-remote-video
Fix missing remote video exception
2016-04-27 16:51:10 -05:00
yanas aeabad4891 Fix missing remote video exception 2016-04-27 16:28:00 -05:00
bgrozev 5cb2b15b54 Merge pull request #629 from jitsi/lipsync
Lipsync
2016-04-27 15:16:15 -05:00
yanas c881e7b640 Add hidden participant support 2016-04-27 10:16:30 -05:00
paweldomas f2c9b8b7a5 Fix issue updating large video 'src' while on stage 2016-04-26 15:42:18 -05:00
yanas e43c5ab54c Add custom-role to presence and special view for Recorders 2016-04-07 12:08:00 -05:00
yanas 9b09e61877 Merge pull request #553 from damencho/fix-replacing-pinned
Fixes and issue where: if we receive dominant speaker event just befo…
2016-03-24 17:43:18 -05:00
damencho d48ef06ddb Fixes and issue where: if we receive dominant speaker event just before the video start playing, this can override already pinned video. 2016-03-24 17:10:29 -05:00
damencho 9abc78ef24 Do not send SELECTED_ENDPOINT events for custom containers. 2016-03-24 16:20:27 -05:00
damencho 27607e8754 Update variable name to pinnedId. 2016-03-24 13:16:42 -05:00
damencho 94d98ec0ab Fixes returning to dominant speaker after closing shared video. Renames a method and fix its behaviour was handling both case when removing just video element in small videos (local or remote) and when we are removingParticipantContainer, now just handles the second one and uses focusedID if any or dominantSpeakerID if any, otherwise elects new video. 2016-03-24 13:11:03 -05:00
damencho e330dbf5d1 Fixes switching to pinned video when hiding a container. 2016-03-24 13:06:52 -05:00
damencho f788a45bac Merge pull request #548 from jitsi/follow-me
Follow me
2016-03-24 13:02:42 -05:00
yanas 72454ff279 HD label added when the large video is in HD. 2016-03-24 10:03:48 -05:00
yanas cc761700fe Extends the follow-me feature by adding the possibility to follow the pinned participant, the shared video and the shared document. Adds the possibility to enable disable follow-me from the settings panel. Some other small fixes throughout the UI. 2016-03-23 20:43:29 -05:00
damencho fe7d05a951 Reverse the check to use only VIDEO_CONTAINER_TYPE. 2016-03-22 14:56:50 -05:00
damencho 2c1a9d20fd Fixes setting local video, default videoType. Fixes showing local video when there is no video device shown. 2016-03-22 13:27:11 -05:00
damencho 38275ce045 Shared video, synchronized playing/seek/muting/volume initial commit. 2016-03-18 15:00:55 -05:00
damencho 2b26580a7c Disables switching to dominant speaker when Etherpad is shown on large video. 2016-03-17 22:19:09 -05:00
damencho 9e0b1beed5 Always uses current video type to search for container that will handle it. Renames video container type to camera, to match the type ot the tracks. Add the same container to be used and for tracks with type of desktop. 2016-03-16 13:28:35 -05:00