Dynamically controlled participation allocation for communication sessions

By creating dynamic participation queues for communication sessions and automated user interface management, the problem of cumbersome role conversion and security threats in online meetings is solved, and more efficient and secure role conversion and resource utilization is achieved.

CN120266442APending Publication Date: 2025-07-04MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380080848.7
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-11-25
Filing Date
2023-09-27
Publication Date
2025-07-04

AI Technical Summary

Technical Problem

Existing communication systems are difficult to effectively manage participants' role transformation in online meetings, resulting in missed information, increased security threats and waste of resources. Especially in question-and-answer sessions, manual operations are cumbersome and prone to human errors.

Method used

By creating dynamically controlled participation queues for communication sessions, automatically manage user interfaces and licenses, dynamically allocate speech time based on remaining time, history and number of users, reducing manual input, and achieving automated role conversion and license management.

Benefits of technology

It improves the security and efficiency of the communication system, reduces information missed and resource waste, provides a more desired user experience, reduces manual input and human errors, and optimizes the use of computing resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120266442A_ABST
    Figure CN120266442A_ABST
Patent Text Reader

Abstract

A system provides dynamically controlled participation assignment for a communication session. The system can create a queue for participants of a communication session, such as an online conference. Queues can be generated for communication sessions having an expected format that allows participants to individually and continuously speak, such as questions and answers (Qamp; a) session. The system manages a user interface (UI) of the communication session that displays a timer that dynamically varies for each participant, indicating the total time of his or her question or comment, based on the amount of time remaining for the conference to the end. The system displays, enhances, and associates a timer for each participant, a total time indicating his or her question or comment based on an amount of time remaining from the conference to the end, a number of users providing "hand-up" inputs, and a history of participation for each participant.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND OF THE INVENTION

[0001] There are many different types of collaboration systems that allow users to communicate. For example, some systems allow people to collaborate by sharing content such as using video and audio streams, sharing files, chat messages, and the like. Some systems provide a user interface format that allows a user to share content with attendees. Such systems can provide a specific set of permissions that allow a user to assume a particular role, such as a presenter, an audience member, and the like.

[0002] Although some systems can provide a specific set of permissions for a user to assume a particular role, such systems have many drawbacks. For example, when an audience member wishes to become a presenter, each user must perform multiple coordination actions to make such a transition. First, the first presenter may have to relinquish presentation access permissions before allowing the second user to provide many manual operations to assume the presenter role. Such an interaction model can be cumbersome and inefficient. These coordination operations can detract from the features of the communication system and distract users during a meeting. Such distractions can cause participants in the meeting to miss important information. Additionally, the process of having some users provide many manual steps to change user permissions during a meeting can lead to unexpected permission settings. Someone may make a mistake and grant unexpected video content sharing permissions, or leave the permission state lingering longer than expected. Such an arrangement can create multiple attack vectors and expose the stored content to multiple security threats.

[0003] When there are multiple presenters, existing systems present more complex problems. This can occur when an online meeting involves a question and answer (Q&A) session. In some existing systems, when an online meeting involves a Q&A session, the system grants audience members permission to share audio and video streams with other users. This can create a situation where multiple people are speaking simultaneously. In some cases, participants can end up spending a lot of time trying to determine the order in which people are speaking. Some existing systems also create a situation in a Q&A session where the dominant speaker tends to use more time than their allotted time. This can lead to a situation where many participants do not get a chance to speak. In any of these scenarios, important information intended to be conveyed in the meeting can be missed. This causes users to need to use other systems and other resources to communicate to share information. This can also result in a need for an extended meeting or a need for additional meetings. This can lead to an inefficient user interaction model and lead to an inefficient use of computing systems, especially if users need to use additional resources to convey the missed information. Thus, in addition to having many security issues, some current systems can cause redundant use of computing resources as well as many inefficiencies regarding the use of network resources, storage resources, and processing resources. SUMMARY OF THE INVENTION

[0004] The technology disclosed herein provides dynamically controlled participation allocation for communication sessions. A system is capable of creating a queue for participants in a communication session, such as an online meeting, conference call, etc. A queue can be generated for a communication session having an expected format that allows participants to speak sequentially individually, such as a question and answer (Q&A) session. The queue can be created manually by a meeting organizer, or the queue can be created automatically by the system. Automatic creation of the queue can be invoked when one or more predetermined events occur. For example, when multiple meeting participants provide virtual "raise hand" inputs during a communication session, the system can automatically create a queue. The system manages the user interface (UI) of the communication session, and the user interface displays a timer that dynamically changes for each participant, indicating the total time for his or her question or comment, based on the amount of time remaining until the end of the meeting. The system displays, enhances, and associates a timer indicating the total time for his or her question or comment for each participant based on the amount of time remaining until the end of the meeting, the number of users who provided "raise hand" inputs, and the participation history of each participant. In an illustrative example, if 10 people each provide a raise hand input indicating interest in speaking at a meeting and there are 30 minutes remaining in the meeting, the system can allocate 3 minutes to each person who provided the input. If a particular person has a history of speaking, the system can allocate less time to that person, e.g., 2 minutes. If another person has a history of not speaking enough, the system can allocate more time to that other person, e.g., 4 minutes.

[0005] The system is capable of dynamically updating the displayed allocation for each person. The remaining time for each person can be displayed as their allotted time progresses. If a person finishes early and there is extra time remaining for others, that extra time is reallocated to other speakers in the queue. If a person leaves the queue, their allotted time is reallocated to other speakers in the queue. The reallocation can be based on the historical activity of the person as described herein.

[0006] During a meeting, the system is capable of providing a user interface that includes a main presenter area configured to display a rendering of a presenter and the presenter's shared content. The user interface can also provide an audience area that can include multiple individual video streams of audience members arranged in a virtual environment or a grid layout. When the system determines that an individual audience member raises their hand, the system generates a data structure defining a queue. The system also automatically adds the individual audience member to the queue. While the first presenter is making their presentation, question, or comment, the system can automatically update the timer to show how much time the first presenter has remaining.

[0007] The system can control the permissions for each participant based on their respective allocated time slots. For example, during the allocated time of the first speaker, the system can automatically change their permissions to allow them to present content on the remote computers of other users and broadcast audio and video signals to the remote computers of other users. When the time of the "first person" arrives, without the need for manual input to change the permissions, the system can restrict those permissions so that the first presenter can no longer share content, audio, or video with the remote computers of other users.

[0008] The techniques disclosed herein can provide many technical effects, including enhancing the security of communication systems. By automating the assignment of specific permissions based on role transitions, the system can enhance security by reducing the need for users to perform manual steps to change permissions during an event. The automatically assigned permissions based on the allocated time can reduce the need for manual input to change permissions and thereby reduce the introduction of human errors. Such an arrangement can reduce the number of attack vectors and exposure to multiple security threats.

[0009] In addition to improving the security of the system, the techniques disclosed herein can also provide many efficiencies. By providing an updated timer for each presenter, users can adjust the level of detail of their presentation and focus on important points based on the display of a more accurate timer. When information is more accurately organized and has less manual input, users are less likely to miss important information during an event. Such benefits can improve the efficiency of computing systems by reducing the number of times users need to interact with computing devices to obtain information (e.g., extending a meeting, retrieving meeting minutes, requesting a duplicate copy of previously shared content, etc.). As a result, various computing resources such as network resources, memory resources, and processing resources can be reduced.

[0010] The techniques disclosed herein also provide a system that has fine-grained control when aligning permissions with specific roles of an event. Such a feature can also lead to a more desirable user experience. Specifically, by automatically controlling user interface transitions and managing permissions, the system can reduce the number of times users need to interact with computing devices to control the format of a presentation and update security permissions. This can lead to a reduction in the amount of manual data entry required by users. By reducing the need for manual input, inadvertent input and human errors can be reduced. This will ultimately result in a reduction of undesirable permissions and more efficient use of computing resources such as memory usage, network usage, processing resources, etc.

[0011] Features and technical benefits other than those explicitly described above will become apparent from reading the following detailed description and reviewing the associated drawings. The present invention content is provided to introduce a selected concept in a simplified form, which will be further described in the following detailed implementation. The present invention content is not intended to identify the key or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. For example, the term "technology" may refer to systems, methods, computer-readable instructions, modules, algorithms, hardware logic, and / or operations permitted by the above context and the entire document. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The detailed implementation is described with reference to the accompanying drawings. In the drawings, the leftmost (one or more) digits of the reference numerals identify the drawings in which the reference numerals first appear. The same reference numerals in different drawings indicate similar or identical items. References to individual items among multiple items may use reference numerals with a sequence of letters to refer to each individual item. General references to items may use specific reference numerals without a sequence of letters.

[0013] Figure 1A is a block diagram of a system and an example user interface for providing an automated user interface for a presenter of a communication session.

[0014] Figure 1B is an example of a user interface including a queue of presenters of a communication session, where the queue is presented in response to a user providing a raise hand input.

[0015] Figure 1C is an example of a user interface showing the queue of presenters and the allotted time for each presenter.

[0016] Figure 1D is an example of a user interface showing a timer for the first presenter in the queue of presenters.

[0017] Figure 1E is an example of a user interface showing how the first presenter in the queue of presenters can be removed from the presentation stage when the presenter is running on the allotted time.

[0018] Figure 1F is an example of a user interface showing how the second presenter in the queue of presenters can be automatically displayed once the system removes the first user from the stage.

[0019] Figure 1G is an example of a user interface showing how the second presenter can exit before the end of her allotted time, leaving the remaining time for the second presenter.

[0020] Figure 1H An example of a user interface that shows how the remaining time for the second presenter is allocated to the remaining presenters.

[0021] Figure 1I An example of a user interface that shows a scenario where another user exits the queue before the start of their presentation.

[0022] Figure 1J An example of a user interface that shows how the remaining time for another user who exits the queue before the start of their presentation is allocated to the remaining presenters.

[0023] Figure 1K Illustrates a user interface in the state of a communication session for a specific user, where the allocated time slot for the user has an updated remaining time.

[0024] Figure 2 An example of a data structure that defines the order of speakers in a queue, the allocated time for each speaker, and other policy data that enables the system to dynamically update the timer based on user activity.

[0025] Figure 3 A flowchart that illustrates aspects of a routine for providing an automatic transition between two different presenters in a communication session, which provides an automatic transition between two different presenters in a communication session.

[0026] Figure 4 A computer architecture diagram that illustrates an illustrative computer hardware and software architecture of a computing system capable of implementing aspects of the technologies and techniques presented herein.

[0027] Figure 5 A computer architecture diagram that illustrates the architecture of a computing device capable of implementing aspects of the technologies and techniques presented herein. Detailed Description

[0028] The technologies disclosed herein can provide many technical effects, including enhancing the security of communication systems. By providing an automatic transition between presenters in a communication session and by displaying an updated timer for each presenter, a computing device can effectively display information to assist users in communicating information based on the remaining time. By providing an updated timer for each presenter, users can adjust the level of detail of their presentation or focus on important points based on the display of a more accurate timer. When information is organized more accurately and with less manual input, users are less likely to miss important information during an event.

[0029] Similarly, by automatically allocating specific permissions based on transitions between different presenters each assigned a specific time slot, the system can enhance security by alleviating the need for users to perform manual steps to change permissions during an event. The automatically allocated permissions based on transitions between different presenters each assigned a specific time slot can reduce the need for manual input to change permissions and thereby reduce the introduction of human error compared to systems where manual input is used to change permissions. Such an arrangement can reduce the number of attack vectors and exposure to multiple security threats.

[0030] The techniques disclosed herein also enable the system to provide an accurate display of the remaining time for each presenter in a queue. Such a feature can also lead to a more desirable user experience. Specifically, by providing an accurate display of the remaining time for each presenter, the system can reduce the number of times the user needs to interact with the computing device because each presenter can focus on more important points and communicate more efficiently since they are not interrupted without proper notification of the remaining time and any time extensions. This increased accuracy of communication can lead to a reduction in the manual data entry required by the user. By reducing the need for manual input, inadvertent input and human error can be reduced. This can ultimately lead to a reduction in undesirable permissions and more efficient use of computing resources such as memory usage, network usage, processing resources, etc.

[0031] These benefits can also reduce the likelihood of inadvertent user input and other errors that can occur when a user has to review a recording or communicate with others when important information is missed due to lack of user engagement. When participants in a video conference miss important information due to lack of user engagement, the system may need to retrieve, transmit, and process multiple copies of the information.

[0032] Now referring Figure 1A , aspects of the user interface 101 have a main presentation area 131A, an attendee image area 131B, and an attendee status area 131C. The main presentation area 131A can include a display of presentation content 103 and a rendering of the presenter, which in this example shows a rendering of presenter 102M of user 10M. The attendee image area 131B, also referred to herein as the common mode area 131B, can include individual renderings 102A - 102L of video streams of multiple participants 10A - 10L communicating individually from remote devices 11A - 11L. The attendee status area 131C can indicate the status of each participant 10A - 10L, e.g., whether they are "in the meeting", "invited", etc.

[0033] As shown, each of the individual renderings 102A - 102L of the attendee image region 131B has a position relative to the seating configuration in the virtual environment 110. This example is provided for illustrative purposes since the virtual environment 110 can be in any form, such as an office, a conference room, an auditorium, a stadium, etc. In Figure 1A the user interface shown can be generated for display at any one of the devices, and can display any number of participants.

[0034] In some configurations, the common mode region 131B provides the same view for everyone in the meeting, and the seating arrangement for the participants does not change over time. More specifically, the arrangement of the user renderings (e.g., the order and spacing between the renderings) is the same across each device. This is different from some conventional grid views that show the video of the participants in different positions on each person's screen and move boxes around during a call based on who is speaking or who joins or leaves the meeting. Since regions of the brain are dedicated to spatial storage, the consistency of the common mode provides many benefits to reduce the cognitive load and fatigue for each user of the video conference.

[0035] The common mode involves a user interface arrangement that gives the participants in a communication session the feeling that they are in the same room. Generally, when an application enables the common mode, the application generates a user interface that arranges the participants in a communication session in a shared space. In some configurations, the image of each participant can be arranged according to the seating arrangement of the virtual environment. This user interface arrangement enables each participant to feel more connected to the other participants. This user interface arrangement can be used for meetings, cafes, company all - hands meetings, sports events, or any other type of gathering.

[0036] In some configurations, the individual rendering 102 of each participant 10 is generated using a consistency cropping filter that removes any components of the image including the background from the participant's surroundings. Each video stream generated by the camera at the participant's device 11 is received and processed to produce the rendering 102, which is shaped according to the image of the user and any accessories (such as hats, jewelry, etc.) that the user may be wearing. Thus, when the shaped image of the participant is overlaid on the image of the virtual environment, the system can give the appearance of the participant being in the virtual environment with the other participants in the communication session. These shaped renderings 102 allow the viewer to focus on the person being depicted without being distracted by the image of their physical environment.

[0037] The size of each rendering 102 of a participant can also be normalized to give the appearance that the participants are in the same room. In some examples, the renderings 102 can be resized or scaled within a threshold size difference from each other, or the renderings 102 can be resized or scaled according to a predetermined scale suitable for a particular virtual environment. For example, for a group meeting, each rendering of each participant can be scaled to fit the depicted seats, tables, etc. These adjustments enable the system to give the appearance that everyone is sitting together within a given facility (e.g., an office, a conference room, a stadium, etc.). These features are an advancement over conventional user interface arrangements that only have a grid of boxes. The common mode features help create an environment that has a profound impact on the feel of a video conference.

[0038] In some embodiments, the system 100 can further promote technical benefits and improve the security efficiency of the system by controlling the permission for video streams, audio streams, and shared content during transitions between presenters listed in an ordered queue. The system can also generate a queue based on the detection of a predetermined event and populate the queue with users who intend to provide a presentation. In some configurations, the predetermined event can include an event where a threshold number of people provide a "raise hand" input. This can include an input where a user selects a raise hand input based on a selection of a menu control on their corresponding computer, or a user can physically perform the action of raising their hand, and their corresponding computer can use a camera and / or other sensors to detect the gesture. The threshold number of participants can be one participant or any other number of participants.

[0039] Figure 1B A group of users is shown, e.g., users 10G, 10H, 10L, 10J, 10F, who provide a "raise hand" input, which causes the system to place these users in the queue. As described in more detail below, each raise hand input can define a request for a state change for each user, e.g., a state change that grants permission to become a presenter.

[0040] The system can receive one or more inputs associated with individual participants 10G, 10H, 10L, 10J, 10F of the communication session. The one or more inputs cause the system to sort the identifiers of each of the participants 10G, 10H, 10L, 10J, 10F in the queue. The order can be based on the order in which they are received first, e.g., user 10G provides their input first, user 10H provides their input second, etc. The order can also be based on historical data. For example, if user G did not have many speaking opportunities in past meetings, e.g., user G had a previous speaking time of 1 minute, which is less than the speaking time of user H, then user G will be placed before user H in the queue.

[0041] As described in more detail below, each individual input in one or more inputs corresponds to each participant in the individual participants who requests to initiate a change in the operation state from a first type of operation to a second type of operation. For example, the raise hand input provided by user 10G is a request for the system to grant user G permission to speak to other users via a live video and audio stream and by sharing content. The first type of operation can restrict user G from sharing the audio and video stream, and the second type of operation can allow user G to share the audio and video stream. The time allocation for each user can trigger the change of the operation state from the first type of operation to the second type of operation at the start of the allotted time (e.g., when allowing a person to demonstrate to the main stage and / or broadcast an audio signal). When the person finishes the demonstration or when their allocation expires, the time allocation for each user can trigger the change of the operation state from the second type of operation to the first type of operation. The system can detect when a person finishes the demonstration, when they stop speaking for a predetermined time, when they stop speaking for a predetermined time and they exceed their allocation time, when they stop sharing the video stream, when they stop sharing the broadcast audio stream, etc. When a person has a volume input below a threshold for a period of time, or when the system detects that they have stopped speaking (e.g., image analysis determines that they are not making facial gestures indicating that they are speaking), the system can determine that they have finished the demonstration

[0042] Upon receiving a "raise hand" input, the system continuously calculates an individual time allocation for each of the participants 10G, 10H, 10L, 10J, 10F in the queue, where the individual time allocations are each based on the number of participants in the queue and the remaining time of the communication session. For example, when users 10G and 10H provide an input when there are 15 minutes remaining in the meeting, each person will be allotted 7.5 minutes to speak. However, in Figure 1C the example shown in, 5 users provide an input when there are 15 minutes remaining in the meeting. Therefore, each user is allotted 3 minutes to speak. The remaining time can be based on the "end time" of the meeting on the calendar event of the meeting

[0043] Similarly, in this example, the system detects some exceptions to the allotted time. Specifically, as shown in the example dataset in Figure 2 the system determines that user L has a history of speaking for more than a threshold amount of time in previous meetings. Therefore, as in Figure 1CAs shown, user L is assigned an average of less than 3 minutes. In this example, user L is assigned a division time of less than three minutes because user L spoke more than other users in a previous meeting. It is also possible to assign user L less time based on the level of user L in the organization, etc., for example, two minutes or more, such as 4 minutes. Higher-level people such as the CEO can get an upward time deviation from the average relative to a standard employee. Figure 1C An example is shown in which user F has more time because they are at a level above the threshold level.

[0044] Once the input has been received and the time allocation has been determined, the system updates the session data 714, as shown in Figure 2 As shown. The system is able to react to the input and, in response to one or more inputs associated with individual participants 10G, 10H, 10L, 10J, 10F, the system is able to configure the session data 714 to define the order of the identifiers of each of the participants 10G, 10H, 10L, 10J, 10F in the queue 221, for example, the speaking order. The session data can also further define an individual time allocation for each of the participants 10G, 10H, 10L, 10J, 10F in the queue. These allocations can be based on the policies defined in the session data, and the context data defines the state of the user and the user activities.

[0045] Also in conjunction with Figure 2 In Figure 1C As shown, the system is able to cause a user interface 101 to be displayed that includes an individual time allocation 203 for each of the participants 10G, 10H, 10L, 10J, 10F in the queue 221, where the individual time allocation is displayed in association with the corresponding identifier or representative image of each of the participants in the queue. The user interface 101 can also include a progress bar 204 for each of the participants in the queue. Figure 1C Shows the state of a communication session with 15 minutes remaining in the meeting, and the first presenter has just started their 3-minute allocation. In some configurations, at the start of their allotted time, the system can allow the presenter to share their live video stream, audio stream, and / or the display of their shared content. This can be done automatically based on the remaining time in the meeting and the allocations defined in the session data.

[0046] The system is able to control the progress bar to graphically display the amount of time used by each participant. For example, as shown in Figure 1DAs shown, when the first presenter (User 10G) has used 2:55 minutes of his allotted time, the progress bar is shaded to indicate the user's progress. Similarly, as in Figure 1D As shown, when the user is at a predetermined time relative to the end of their allotted 3-minute time slot, the system is also able to generate an alert or other notification. In this example, when the system detects that the user has five seconds remaining in their allotted time slot, the system causes an audible alert 205 to be generated at the client computing device 11G associated with User 10G.

[0047] In some configurations, the system is able to restrict presenters from sharing their live video stream, audio stream, and / or the display of their shared content at the end of their allotted time. Thus, in this example, when the timer for the first presenter (User 10G) reaches zero minutes remaining, the system is able to mute the user, remove their video from the main stage, and / or remove the display of any content they are sharing on the devices of other participants (e.g., Users 10A - 10F and 10H - 10M).

[0048] In some configurations, the system is able to allow presenters to have a grace period. This can occur as a default setting or when an administrator with appropriate permissions allows a grace period. For example, if User B is designated as the administrator for the communication session, the system can issue a notification, such as a visual indicator and / or sound, on the computer 11B of User 10B at a predetermined time before the end of the first presentation of User 10G. Based on the input provided by User 10B, the system can allow User 10G to extend their time or deny the extension. If the extension is not issued, one or more of the sharing permissions in User 10G's sharing permission will be restricted at the end of User 10G's allotted time. If the extension is issued, one or more of the sharing permissions in User 10G's sharing permission will be restricted after the predetermined grace period has elapsed. For example, as in Figure 1E As shown, the user interface can remove the first presenter from the main stage after a predetermined grace period of 5 seconds has elapsed. At this time, the system can place the live stream of the presenter (User 10G) in the attendee image area 131B.

[0049] Figure 1FThe user interface 101 in the state of a communication session is shown. In the state of the communication session, the rendering 102H of the next presenter (user 10H) is displayed on the main stage during her 3-minute allotted time. The UI shows that the communication session is at a point where 11:54 minutes are remaining in the meeting, and user 10H has 2:54 minutes remaining in her allotted time slot. When the system automatically removes the permission for user 10G to share content, the system automatically allows user 10H to display the content of the live video stream of user 10H and the rendering 102H at the start of the allotted time for user 10H. An extension permitted by an administrator or a host causes an extension of the meeting. Thus, user 10H can start when 12:00 minutes are remaining in the meeting and her allotted 3 minutes.

[0050] Figure 1G is an example of a user interface that shows the communication session at a point where 11:00 minutes are remaining in the meeting, and user 10H has 2:00 minutes in her allotted time slot. However, for illustrative purposes, user 10H has ended early and she has stopped sharing her audio and video streams to the main stage of other computers. In response to determining that a user such as user 10H has stopped sharing their video stream or audio stream before the end of their allotted time slot, the system can calculate how much time remains in the time slot for that person. In this case, user 10H has stopped sharing their video stream two minutes before the end of their time slot. Then, the system can divide that time among the remaining presenters.

[0051] Figure 1H is an example of a user interface that shows how the remaining time for the second presenter (user 10H) is divided and allocated to the remaining presenters. As shown, two minutes are divided and allocated to the other presenters. Each of the remaining presenters gets an additional 0.6 minutes. The division can be equal, or the division can be based on a weighting factor, such as historical data described herein. If a user (such as user L) has a history of speaking more in the meeting than others, or has spoken for more than a threshold period of time, the allocation of time taken from another presenter may be less for user L compared to the allocation for other presenters such as user 10J or user 10F. If a particular user has not spoken more than others or has not exceeded the threshold period of time in past meetings, the allocation of the divided time may also be increased for that user. For example, user 10L may get 0.5 minutes in this reallocated time for user 10H, while user 10F may get 0.6 minutes.

[0052] Figure 1HIt is also shown that the status of the communication session is at the point where there are 10:58 minutes remaining in the meeting, and user 10L has 2:38 minutes remaining in their allotted time slot. Figure 1I It is shown that the status of the communication session is at the point where there are 9:38 minutes remaining in the meeting, and user 10L has 1:08 minutes remaining in their allotted time slot. For illustrative purposes, at this point, user J has lowered their hand, for example, canceling their request to present on the main stage. In response to detecting such an event, the system can then divide user J's time among the remaining presenters. The allocation of user J's time can be divided equally among the remaining presenters, or the allocation of user J's time can be weighted as described above. Figure 1J It shows an example of how the time allocation for user J is divided and added to the time of user L and user F, and this time can be added while the presenters are in progress, as shown for user 10L. The rendering 102L of user 10L will be displayed during the duration of the newly allotted time shown in Figure 1J the same. Figure 1K It is shown that the status of the communication session is at the point where there are 6:24 minutes remaining in the meeting, and user 10F has 6:24 minutes remaining in their allotted time slot.

[0053] Figure 2 It shows an example of session data 714 that can be used to control aspects of each meeting (e.g., each communication session). The session data can define a queue 221 that shows the order in which each participant will be presented on the main stage. The session data can also define the allotted time for each participant who has provided a hand-raising input. The session data can also track the remaining time of the meeting and define a policy for allocating time to each person. The session data can also define the criteria that the system can use to create the queue. For example, when a threshold number of people (e.g., one person) provide a hand-raising input, a queue can be generated. Other policies can define how the remaining time or the recaptured time (when a user lowers their hand early or finishes their presentation early) can be reallocated to other presenters. These policies can be based on historical data or context data showing the ranking or title of the people, which can allow the system to allocate more time to people with a threshold ranking / title or less time to people without a threshold ranking / title.

[0054] It is possible to update the session data to show the remaining time for each person. When the system transitions between each state, for example, when the current time of a meeting transitions from the allotted time of one user to the allotted time of another user, the system can transfer the permission to allow audio and video streams to be broadcast to the main stage from one user to another user. This automation allows the system to change the permission without human input. This can improve the security of the system. If the permission is vulnerable to human error, the system may expose content or streams.

[0055] In some configurations, the raise hand input can be a request to share content. The content can include live video data, recordings, file data, or any other content and other media forms. The input can include input from a keyboard, a camera, or any other sensor of a computing device. For example, the input can be a keyboard input, a touchpad input, or a video input that defines a specific gesture can indicate that the user desires to share information with others and cause the system to transition to operating in a presentation mode. In some configurations, the input can be generated by receiving video data that defines a predetermined gesture performed by the user. This can include requesting the camera on the user's computing device, such as the computer 11B of user 10B. In some configurations, when the video data of the device defines a predetermined gesture performed by the user, the system can generate an input. The predetermined gesture can include the movement of the user's hand in an upward direction. The predetermined gesture can also include the movement of the user's hand in an upward direction, where the predetermined gesture includes the movement of the user's hand rising a predetermined height. A person can remove the request by lowering their hand or by providing a voice input, such as "Remove me from the queue", or the input can be a second keyboard input or touchpad input.

[0056] Figure 3 FIG. is a diagram illustrating aspects of routine 800 for providing automatic transitions between presenters in a communication session. Those of ordinary skill in the art will understand that the operations of the methods disclosed herein are not necessarily presented in any particular order, and some or all of the operations can be and are envisioned to be performed in alternative orders. For ease of description and illustration, the operations are presented in a demonstration order. Operations can be added, omitted, performed together, and / or performed simultaneously without departing from the scope of the appended claims.

[0057] It should also be understood that the illustrated method can end at any time and need not be executed in its entirety. Some or all of the operations of the method and / or substantially equivalent operations can be performed by executing computer-readable instructions included on a computer storage medium, as defined herein. As used in the specification and claims, the term "computer-readable instructions" and its variants are used herein broadly to include routines, applications, application modules, program modules, programs, components, data structures, algorithms, etc. Computer-readable instructions can be implemented on a variety of system configurations, including single-processor or multi-processor systems, minicomputers, mainframe computers, personal computers, handheld computing devices, microprocessor-based programmable consumer electronics, combinations thereof, and the like. Although the example routines described below operate on a system (e.g., one or more computing devices), it should be appreciated that the routines can be executed on any computing system, which can include any number of computers working together to perform the operations disclosed herein.

[0058] Accordingly, it should be appreciated that the logical operations described herein are implemented as a sequence of computer-implemented acts or program modules running on a computing system such as that described herein and / or interconnected machine logic circuits or circuit modules within the computing system. The implementation is a matter of choice depending on the performance and other requirements of the computing system. Accordingly, the logical operations can be implemented in software, firmware, dedicated digital logic, and any combination thereof.

[0059] In addition, the operations illustrated in Figure 3 and other figures can be implemented in association with the example user interface UI described above. For example, the various devices and / or modules described herein can generate, send, receive, and / or display data associated with the content of a communication session (e.g., live content, broadcast events, recorded content, etc.) and / or a presentation UI that includes a rendering of one or more participants of a remote computing device, avatar, channel, chat session, video stream, image, virtual object, and / or an application associated with the communication session.

[0060] Routine 800 includes operation 802, in which the system receives a raise hand input from a user requesting permission to transmit content (e.g., provide a presentation). In some configurations, operation 802 involves receiving one or more inputs associated with individual participants (such as users 10G, 10H, 10L, 10J, 10F) as each part of communication session 604. The one or more inputs cause the system to sort the identifiers of each of the participants (such as users 10G, 10H, 10L, 10J, 10F) in queue 221.

[0061] Each individual input among the one or more inputs corresponds to each participant in the individual participants who requests to initiate a change in the operation state from a first type of operation to a second type of operation. For example, when user 10G submits an input requesting to initiate a change in the operation state from a first type of operation to a second type of operation, this input can cause the display of a raised hand 202. This input also places user 10G in the queue, and when user 10G uses the main stage to communicate his or her presentation to other computers, the queue causes the system to change the operation state from a first type of operation (e.g., an operation that restricts user 10G from presenting on the main stage) to a second type of operation (e.g., an operation that enables user 10G to present content on the main stage). Examples of these operations are shown in Figure 1B and Figure 2 wherein the system can receive a "raised hand" input, causing the user to be placed in the queue. Each raised hand is defined as a request for a state change for each user, for example, a state change that grants permission to become a presenter.

[0062] At operation 804, the system determines an individual time allocation for each participant in queue 221. Referring to the example described above, the users in the queue include users 10G, 10H, 10L, 10J, and 10F. The individual time allocations are each based on the number of participants in the queue and the remaining time of the communication session. Each timer for each person is based on: (1) the amount of remaining meeting time, and (2) the number of detected users with raised hands. For example, if two participants provide raised hand inputs, e.g., 2 out of 15 participants in a meeting with 10 minutes remaining, the system can allocate 7.5 minutes of allocated presentation time to each person. If a third participant provides a raised hand input before the first person in the queue starts their allocated time, the system will allocate 3.33 minutes to each person. Deviations for each person can be granted based on one or more factors (including but not limited to: historical data, company or team ranking or title) and / or preferences provided by each user. Deviations can also be based on the amount of content a person is sharing. For example, if a first user has a large spreadsheet to share and the other five presenters in the queue do not have an associated file to share, that person can receive a predetermined percentage increase over the others in the queue, e.g., 5% more time.

[0063] At operation 806, the system updates session data 714 in response to one or more inputs associated with individual participants such as users 10G, 10H, 10L, 10J, 10F. The session data 714 defines the order of the identifiers of each of the participants. The order of the queue can be based on one or more factors. The first user in the queue can be a person with a higher rank in the organization, a person who provides their input before other users, or the first user can be selected based on their historical data. For example, if the history shows that the first user has less total presentation time (e.g., presenting to other users on the main stage) compared to the second user, the first user can be selected as the first presenter in the queue. Such a feature helps to balance the presentation time among team members. The session data can also define an individual time allocation for each of the participants. For example, for users 10G, 10H, 10L, 10J, and 10F in the queue, each person can be allocated 3 minutes of presentation time. These allocations can be stored in the session data.

[0064] At operation 808, the system can cause the user interface 101 to be displayed, and the user interface 101 includes individual time allocations 203 for each of the participants such as users 10G, 10H, 10L, 10J, and 10F in the queue. The individual time allocations are displayed in association with the corresponding identifiers or representative images of each of the participants 10G, 10H, 10L, 10J, 10F in the queue 221. For example, the arrangement of the first identifier for user 10G can be horizontally aligned with the time allocated to user 10G. Figure 1C An example of a display showing the allocated time with the associated name and an image of the person in the queue is shown.

[0065] At operation 810, the system is capable of updating the allocation based on user activity. This can involve activities such as a new user providing a raise hand input, an existing user in the queue exiting the queue, a user completing a presentation before their allotted time has passed, etc. For example, the system can receive supplementary input indicating the updated number of participants in the queue, where the updated number of participants in the queue is based on the number of new inputs from new participants in the queue who request to initiate a change in operation state from a first type of operation to a second type of operation, or the number of participants removed from the queue in response to a cancellation input for revoking a previous request to initiate the change in operation state. The system can then determine one or more updated time allocations for the individual remaining participants in the queue, where the one or more updated time allocations are each based on the number of remaining participants in the queue and the new remaining time based on the supplementary input time and the planned end time of the communication session. The system can then update the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, where the one or more updated time allocations are displayed in association with the respective identifiers or representative images of each of the remaining participants. This allows the displayed timer to be dynamically adjusted based on the new number of raise hand users (e.g., by new users providing a raise hand input or some lowering their hands, e.g., to deactivate or cancel the raise hand input).

[0066] In another example of operation 810, the system can reallocate time in a biased manner based on historical activity, e.g., those who have spoken more in the past receive a smaller portion of the new time allocated according to users leaving the queue. Based on historical data indicating the time for which a participant has presented content, the one or more updated time allocations for each of the remaining participants in the queue are weighted. For example, a first participant among the remaining participants in the queue receives an increased allocation, and a second participant among the participants receives a decreased allocation, where the historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

[0067] In another example of operation 810, the amount of time on the timer is dynamically adjusted based on an update of the unused meeting time after the hand-raising user “completes”. For example, the system can receive an update to the state of a communication session, the update indicating that a participant has completed a presentation or has terminated the broadcast of a video stream or an audio stream during the time allocated for the participant. The system can then determine one or more updated time allocations for the remaining individual participants in the queue, where the one or more updated time allocations include, in addition to the remaining time of the time allocated for the participant, an individual time allocation for each of the remaining participants in the queue, and the remaining time of the time allocated for the participant is divided among the remaining individual participants in the queue. The system can then update the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, where the one or more updated time allocations are displayed in association with the respective identifiers or representative images of each of the remaining participants. The reallocated time can be weighted based on historical activity, with those who have spoken more in the past receiving a smaller portion of the new time. For example, based on historical data indicating the time during which a participant has presented content, the one or more updated time allocations for each of the remaining participants in the queue are weighted. The first participant among the remaining participants in the queue receives an increased allocation of the remaining time of the time allocated for the participant, and the second participant among the participants receives a decreased allocation of the remaining time of the time allocated for the participant. The historical data can indicate that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

[0068] Similar to reallocating time based on changes to the queue, the original allocation can also be weighted based on prior activity, increasing or decreasing the allocation based on prior speaking contributions. For example, based on historical data indicating the time during which a participant has presented content, the individual time allocations for each of the participants in the queue are weighted, where the first participant among the participants receives an increased allocation, and the second participant among the participants receives a decreased allocation. The historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

[0069] It is also possible to weight the original time allocation based on the level or title in the organization. For example, weight the individual time allocation of each participant in the cohort based on organizational data indicating the ranking or title of the participant. The first participant among the participants receives an increased allocation, and the second participant among the participants receives a decreased allocation, where the organizational data indicates that the ranking or title of the first participant exceeds the ranking or title of the second participant.

[0070] The technical effects of the routines and other aspects disclosed herein include reducing the amount of bandwidth and computing cycles used by the computing system for providing communication sessions to users. This is achieved by using the management of permissions, the automation of the UI, and the common pattern features that provide more cohesion to user groups, which results in improved interaction between each person and their respective computer. In addition, by providing controlled user interface transitions and permission transitions, the system can improve user engagement and reduce user fatigue. This can improve the effectiveness of meetings by allowing users and avoiding the need for additional meetings to discuss missed information, emails requesting missed information, and the need to replay recordings of meetings. As a result, the disclosed systems and methods can significantly reduce the use of memory, computing cycles, and bandwidth utilization.

[0071] Figure 4 FIG. is a diagram illustrating an example environment 600 in which system 602 can implement the techniques disclosed herein. It should be appreciated that the subject matter described above can be implemented as a computer-controlled apparatus, a computer process, a computing system, or an article of manufacture such as a computer-readable storage medium. The operations of the example methods are illustrated in individual boxes and are outlined with reference to these boxes. The methods are illustrated as a logical flow of boxes, each of which can represent one or more operations that can be implemented in hardware, software, or a combination thereof. In the context of software, the operations represent computer-executable instructions stored on one or more computer-readable media, which when executed by one or more processors cause the one or more processors to be able to perform the described operations.

[0072] In general, computer-executable instructions include routines, programs, objects, modules, components, data structures, etc. that perform specific functions or implement specific abstract data types. The order of description of the operations is not intended to be construed as a limitation, and any number of the described operations can be executed in any order, combined in any order, subdivided into multiple sub-operations, and / or executed in parallel to implement the described process. The described process can be executed by resources associated with one or more devices such as one or more internal or external CPUs or GPUs, and / or one or more hardware logics such as field programmable gate arrays (“FPGAs”), digital signal processors (“DSPs”), or other types of accelerators.

[0073] All of the methods and processes described above can be embodied in software code modules executed by one or more general-purpose computers or processors and fully automated via the software code modules. The code modules can be stored in any type of computer-readable storage medium or other computer storage device, such as those described below. Some or all of the methods can alternatively be embodied in dedicated computer hardware, such as the computer hardware described below.

[0074] Any routine descriptions, elements, or boxes in the flowcharts described herein and / or depicted in the figures should be understood as potentially representing code modules, segments, or portions that include one or more executable instructions for implementing specific logical functions or elements in the routine. Alternative implementations are included within the scope of the examples described herein, where elements or functions may be deleted or executed from the order shown or discussed, including substantially synchronously or in reverse order, depending on the functionality as would be understood by one of ordinary skill in the art.

[0075] In some embodiments, system 602 can be used to collect, analyze, and share data presented to the users of communication session 603. As illustrated, communication session 603 can be implemented among a plurality of client computing devices 606(1) through 606(N) (where N is a number having a value of two or greater), the plurality of client computing devices 606(1) through 606(N) being associated with or part of system 602. The client computing devices 606(1) through 606(N) enable users, also referred to as individuals, to participate in communication session 603.

[0076] In this example, communication session 603 is hosted by system 602 on one or more networks 608. That is, system 602 is capable of providing services that enable users of client computing devices 606(1) through 606(N) to participate in communication session 603 (e.g., via live viewing and / or recorded viewing). Thus, the "participants" in communication session 603 can include users and / or client computing devices (e.g., multiple users can participate in communication session 603 in a room via the use of a single client computing device), each of which can communicate with other participants. As an alternative, communication session 603 can be hosted by one of the client computing devices 606(1) through 606(N) using peer-to-peer technology. System 602 can also host chat conversations and other team collaboration functions (e.g., as part of an application suite).

[0077] In some embodiments, such chat conversations and other team collaboration functions are considered external communication sessions distinct from the communication session 603. The computing system 602 that collects participant data in the communication session 603 may be able to link to such external communication sessions. Accordingly, the system may receive information enabling connection to such external communication sessions, such as dates, times, session details, and the like. In one example, a chat conversation can be conducted based on the communication session 603. Additionally, the system 602 may host the communication session 603, which includes at least multiple participants located at a meeting location (such as a conference room or auditorium) or at different locations. The communication session 603 can include a start time and an end time, which can determine when a video stream and real-time audio can be shared. Text and content can be shared outside of the start time and end time.

[0078] In the examples described herein, the client computing devices 606(1) to 606(N) participating in the communication session 603 are configured to receive and render communication data for display on a user interface of a display screen. The communication data can include a collection of various instances or streams of live content and / or recorded content. The collection of various instances or streams of live content and / or recorded content can be provided by one or more cameras (such as video cameras). For example, an individual stream of live or recorded content can include media data associated with a video feed provided by a video camera (e.g., audio and visual data capturing the appearance and speech of users participating in the communication session). In some embodiments, the video feed can include such audio and visual data, one or more still images, and / or one or more avatars. The one or more still images can also include one or more avatars.

[0079] Another example of an individual stream of live and / or recorded content can include media data that includes an avatar of a user participating in the communication session and audio data capturing the user's speech. Yet another example of an individual stream of live or recorded content can include media data that includes a file displayed on a display screen and audio data capturing the user's speech. Accordingly, the various streams of live and / or recorded content within the communication data enable remote conferencing among a group of people and sharing of content within the group of people. In some embodiments, the various streams of live and / or recorded content within the communication data can originate from multiple co-located video cameras positioned in a space (such as a room) to record or stream a presentation including one or more individuals giving the presentation and one or more individuals consuming the presented content.

[0080] Participants or attendees can view the content of communication session 603 as it occurs, or alternatively, view a recording at a later time after the event has occurred. In the examples described herein, client computing devices 606(1) through 606(N) participating in communication session 603 are configured to receive and render communication data for display on a user interface of a display screen. The communication data can include a collection of various instances or streams of live and / or recorded content. For example, an individual stream of content can include media data associated with a video feed (e.g., audio and video data that captures the appearance and voice of a user participating in the communication session). Another example of an individual stream of content can include media data that includes an avatar of a user participating in a meeting session and audio data that captures the user's voice. Yet another example of an individual stream of content can include media data that includes content items displayed on a display screen and / or audio data that captures the user's voice. Thus, the various streams of content within the communication data enable a meeting or broadcast presentation to be facilitated among a group of people dispersed at remote locations.

[0081] Participants or attendees of the communication session are people within the range of a camera or other image and / or audio capture device such that the actions and / or sounds of a person that occur while the person is viewing and / or listening to content shared via the communication session can be captured (e.g., recorded). For example, a participant can sit in a crowd that is live-viewing shared content at a broadcast location where a stage presentation is occurring. Alternatively, a participant can sit in an office conference room and view shared content of a communication session with other colleagues via a display screen. Further still, a participant can sit or stand in front of a personal device (e.g., a tablet, a smart phone, a computer, etc.) and view shared content of the communication session individually in their office or at home.

[0082] Figure 4 System 602 includes device(s) 610. Device(s) 610 and / or other components of system 602 can include distributed computing resources that communicate with each other and / or with client computing devices 606(1) through 606(N) via one or more networks 608. In some examples, system 602 can be an independent system responsible for managing aspects of one or more communication sessions such as communication session 603. As an example, system 602 can be managed by entities such as SLACK, WEBEX, GOTOMEETING, GOOGLE HANGOUTS, etc.

[0083] One or more networks 608 may include, for example, a public network such as the Internet, a private network such as an institutional and / or personal intranet, or some combination of private and public networks. One or more networks 608 may also include any type of wired and / or wireless network, including but not limited to: local area networks (“LANs”), wide area networks (“WANs”), satellite networks, cable networks, Wi-Fi networks, WiMax networks, mobile communication networks (e.g., 3G, 4G, etc.) or any combination thereof. One or more networks 608 may utilize communication protocols, including packet-based and / or datagram-based protocols, such as Internet Protocol (“IP”), Transmission Control Protocol (“TCP”), User Datagram Protocol (“UDP”) or other types of protocols. Additionally, one or more networks 608 may also include a plurality of devices that facilitate network communication and / or form the hardware foundation of the network, such as switches, routers, gateways, access points, firewalls, base stations, repeaters, backbone devices, etc.

[0084] In some examples, one or more networks 608 may further include a device that enables connection to a wireless network, such as a wireless access point (“WAP”). Examples support connections via a WAP, which sends and receives data over various electromagnetic frequencies (e.g., radio frequency), including WAPs that support Institute of Electrical and Electronics Engineers (“IEEE”) 802.11 standards (e.g., 802.11g, 802.11n, 802.11ac, etc.) and other standards.

[0085] In various examples, one or more devices 610 may include one or more computing devices that operate in a cluster or other grouped configuration to share resources, balance loads, increase performance, provide failover support or redundancy, or for other purposes. For example, one or more devices 610 may belong to various types of devices, such as conventional server-type devices, desktop computer-type devices, and / or mobile-type devices. Thus, although illustrated as a single type of device or a server-type device, one or more devices 610 may include a wide variety of device types and are not limited to a particular type of device. One or more devices 610 may represent but are not limited to: server computers, desktop computers, web server computers, personal computers, mobile computers, laptop computers, tablet computers, or any other type of computing device.

[0086] A client computing device (e.g., one of client computing devices 606(1) through 606(N)) can belong to various types of devices, which can be the same as or different from (one or more of) devices 610, such as conventional client type devices, desktop computer type devices, mobile type devices, specialized type devices, embedded devices, and / or wearable type devices. Thus, a client computing device can include, but is not limited to: desktop computers, game consoles and / or gaming devices, tablet computers, personal data assistants (“PDAs”), mobile phone / tablet hybrid devices, laptop computers, telecommunications devices, computer navigation type client computing devices such as satellite-based navigation systems (including Global Positioning System (“GPS”) devices), wearable devices, virtual reality (“VR”) devices, augmented reality (“AR”) devices, implantable computing devices, automotive computers, network-enabled televisions, thin clients, terminals, Internet of Things (“IoT”) devices, workstations, media players, personal video recorders (“PVRs”), set-top boxes, cameras, integrated components for inclusion in a computing device (e.g., peripherals), appliances, or any other type of computing device. Additionally, a client computing device can include a combination of the previously listed examples of client computing devices, such as, for example, a desktop computer type device or a mobile type device combined with a wearable device, etc.

[0087] Client computing devices 606(1) through 606(N) of various categories and device types can represent any type of computing device having one or more data processing units 692, such as one or more data processing units 692 operably connected via a bus 616 to a computer-readable medium 694, where the bus 616 can in some cases include a system bus, a data bus, an address bus, a PCI bus, a Mini-PCI bus, and any one or more of various local, peripheral, and / or independent buses.

[0088] Executable instructions stored on the computer-readable medium 694 can include, for example, an operating system 619, a client module 620, a profile module 622, and other modules, programs, or applications that can be loaded and executed by (one or more of) data processing units 692.

[0089] Client computing devices 606(1) through 606(N) may also include one or more interfaces 624 to enable communication between client computing devices 606(1) through 606(N) and other networked devices (such as devices 610(one or more)) via (one or more) networks 608. Such (one or more) network interfaces 624 may include one or more network interface controllers (NICs) or other types of transceiver devices to send and receive communications and / or data over the network. Additionally, (one or more) client computing devices 606(1) through 606(N) can include input / output (“I / O”) interface(s) 626 that enable communication with user input devices such as including peripheral input devices (e.g., game controllers, keyboards, mice, pens, voice input devices such as microphones, video cameras for obtaining and providing video feeds and / or still images, touch input devices, gesture input devices, etc.) and / or output devices including peripheral output devices (e.g., displays, printers, audio speakers, haptic output devices, etc.). FIG. 31 illustrates client computing device 606(1) connected in some manner to a display device (e.g., display screen 629(N)) that can display a UI in accordance with the techniques described herein.

[0090] In Figure 4 example environment 600, client computing devices 606(1) through 606(N) can use their respective client modules 620 to connect with each other and / or with (one or more) other external devices to participate in a communication session 604 or to contribute activities to a collaborative environment. For example, a first user can communicate with a second user of another client computing device 1106(2) using client computing device 606(1). When the client module 620 is executed, users can share data, which can cause client computing device 1106(1) to connect to system 602 and / or other client computing devices 606(2) through 606(N) via (one or more) networks 608.

[0091] Client computing devices 606(1) through 606(N) can use their respective profile modules 622 to generate participant profiles (not shown in Figure 4 ), and provide the participant profiles to other client computing devices and / or devices 610(one or more) of system 602. The participant profile can include one or more of the following: the identity of a user or group of users (e.g., name, unique identifier (“ID”), etc.), user data such as personal data, user data such as location (e.g., IP address, room in a building, etc.) and technical capabilities. The participant profile can be used to register participants for a communication session.

[0092] As inFigure 4 As shown in Figure 4 , the device(s) 610 of system 602 include a server module 630 and an output module 632. In this example, the server module 630 is configured to receive media streams 634(1) to 634(H) from individual client computing devices such as client computing devices 606(1) to 606(N). As described above, media streams can include video feeds (e.g., audio and visual data associated with a user), audio data to be output together with the rendering of a user's avatar (e.g., an audio-only experience without sending the user's video data), text data (e.g., text messages), file data, and / or screen sharing data (e.g., documents, slide decks, images, videos displayed on a display screen, etc.). Thus, the server module 630 is configured to receive a collection of various media streams 634(1) to 634(N) (the collection is referred to herein as "media data 634") during a live viewing of a communication session 603. In some scenarios, not all client computing devices participating in the communication session 603 provide media streams. For example, a client computing device can be a consumption or "listening" device only, such that it only receives content associated with the communication session 603 but does not provide any content to the communication session 603.

[0093] In various examples, the server module 630 is capable of selecting aspects of the media streams 634 to share with individual client computing devices among the participating client computing devices 606(1) to 606(N). Thus, the server module 630 can be configured to generate session data 636 based on the streams 634 and / or pass the session data 636 to the output module 632. Then, the output module 632 can transmit communication data 639 to client computing devices (e.g., client computing devices 606(1) to 606(3) participating in the live viewing of the communication session). The communication data 639 can include video, audio, and / or other content data provided by the output module 632 based on the content 650 associated with the output module 632 and based on the received session data 636. The content 650 can include the streams 634 or other shared data, such as image files, spreadsheet files, slide decks, documents, etc. The streams 634 can include video components depicting images captured by the I / O devices 626 on each client computer.

[0094] As shown, output module 632 transmits communication data 639(1) to client computing device 606(1), and transmits communication data 639(2) to client computing device 606(2), and transmits communication data 639(3) to client computing device 606(3), and so on. The communication data 639 transmitted to the client computing devices can be the same or can be different (e.g., the positioning of the content stream within the user interface can vary from one device to the next).

[0095] In various embodiments, device(s) 610 and / or client module 620 can include a GUI presentation module 640. The GUI presentation module 640 can be configured to analyze communication data 639 for delivery to one or more of the client computing devices 606. Specifically, the UI presentation module 640 at device(s) 610 and / or client computing device 606 can analyze the communication data 639 to determine an appropriate manner for displaying video, images, and / or content on the display screen 629 of the associated client computing device 606. In some embodiments, the GUI presentation module 640 can provide video, images, and / or content to a presentation GUI 646 rendered on the display screen 629 of the associated client computing device 606. The presentation GUI 646 can be caused to be rendered on the display screen 629 by the GUI presentation module 640. The presentation GUI 646 can include video, images, and / or content analyzed by the GUI presentation module 640.

[0096] In some embodiments, the presentation GUI 646 can include multiple sections or grids that can render or include video, images, and / or content for display on the display screen 629. For example, a first section of the presentation GUI 646 can include a video feed of a presenter or individual, and a second section of the presentation GUI 646 can include a video feed of personal consumption meeting information provided by the presenter or individual. The GUI presentation module 640 can populate the first and second sections of the presentation GUI 646 in a manner that appropriately mimics the environmental experience that the presenter and individual can share.

[0097] In some embodiments, the GUI presentation module 640 can zoom in or provide a zoomed view of an individual represented by a video feed to highlight the individual's reaction to the presenter, such as facial features. In some embodiments, the presentation GUI 646 can include video feeds of multiple participants associated with a meeting, such as a general communication session. In other embodiments, the presentation GUI 646 can be associated with a channel such as a chat channel, an enterprise team channel, etc. Thus, the presentation GUI 646 can be associated with an external communication session different from a general communication session.

[0098] Figure 5 FIG. illustrates a diagram showing example components of an example device 700 (also referred to herein as a "computing device"), the example device 700 being configured to generate and process data for some of the user interfaces in the user interfaces disclosed herein. The device 700 may generate data that may include one or more portions of video, images, and / or content that may be rendered or included for display on a display screen 729. The device 700 may represent one of the device(s) described herein. Additionally or alternatively, the device 700 may represent one of the client computing devices 706.

[0099] As illustrated, the device 700 includes one or more data processing units 702, a computer-readable medium 704 (also referred to herein as computer storage medium 704), and one or more communication interfaces 706, and the components of the device 700 are operatively connected, for example, via a bus 709, which may include a system bus, a data bus, an address bus, a PCI bus, a Mini-PCI bus, and one or more of any of a variety of local, peripheral, and / or independent buses.

[0100] As used herein, one or more data processing units (such as one or more data processing units 702 and / or one or more data processing units 692) may represent, for example, a CPU-type data processing unit, a GPU-type data processing unit, a field programmable gate array ("FPGA"), another type of digital signal processor ("DSP"), or other hardware logic components that may be driven by a CPU in some cases. For example, but not limited to: illustrative types of hardware logic components that may be used include application specific integrated circuits ("ASIC"), application specific standard products ("ASSP"), system on a chip ("SOC"), complex programmable logic devices ("CPLD"), etc.

[0101] As used herein, a computer-readable medium (such as computer-readable medium 704 and computer-readable medium 694) may store instructions executable by one or more data processing units. The computer-readable medium may also store instructions executable by an external data processing unit (such as an external CPU, an external GPU) and / or executable by an external accelerator (such as an FPGA-type accelerator, a DSP-type accelerator, or any other internal or external accelerator). In various examples, at least one CPU, GPU, and / or accelerator is incorporated in the computing device, while in some examples, one or more of the CPU, GPU, and / or accelerator are external to the computing device.

[0102] A computer-readable medium (which may also be referred to herein as a computer-readable medium) can include computer storage media and / or communication media. "Computer storage media", "non-transitory computer storage media", or "non-transitory computer-readable media" can include volatile memory, non-volatile memory, and / or other persistent and / or auxiliary computer storage media, removable and non-removable computer storage media, implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules, or other data. Thus, the computer storage media or variants of the term described above include the tangible and / or physical form of the media included in a device and / or hardware component, which is part of the device or a hardware component external to the device, including but not limited to: random access memory ("RAM"), static random access memory ("SRAM"), dynamic random access memory ("DRAM"), phase change memory ("PCM"), read-only memory ("ROM"), erasable programmable read-only memory ("EPROM"), electrically erasable programmable read-only memory ("EEPROM"), flash memory, compact disc read-only memory ("CD-ROM"), digital versatile disc ("DVD"), optical card, or other optical storage media, tape cassette, tape, magnetic disk storage, magnetic card, or other magnetic storage device or media, solid-state memory device, storage array, network-attached storage device, storage area network, hosted computer storage device, or any other storage memory, storage device, and / or any storage media that can be used for local storage and maintenance of information for access at a computing device. Computer storage media may also be referred to herein as computer-readable storage media, non-transitory computer-readable storage media, non-transitory computer-readable media, or computer storage media.

[0103] In contrast to computer storage media, communication media can embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transmission mechanism. As defined herein, computer storage media does not include communication media. That is, computer storage media itself does not include communication media consisting solely of modulated data, signals, carrier waves, or propagated signals.

[0104] (One or more) communication interfaces 706 can represent, for example, a network interface controller ("NIC") or other types of transceiver devices for sending and receiving communications over a network. In addition, (one or more) communication interfaces 706 can include one or more cameras and / or audio cues 722 to enable the generation of video feeds and / or still images, etc.

[0105] In the illustrated example, computer-readable medium 704 includes data repository 708. In some examples, data repository 708 includes a data storage device, such as a database, a data warehouse, or other types of structured or unstructured data storage devices. In some examples, data repository 708 includes a corpus and / or a relational database having one or more tables, indexes, stored procedures, etc. to enable data access, including, for example, one or more of Hypertext Markup Language (“HTML”) tables, Resource Description Framework (“RDF”) tables, Web Ontology Language (“OWL”) tables, and / or Extensible Markup Language (“XML”) tables.

[0106] Data repository 708 may store data for operations of processes, applications, components, and / or modules to be stored in computer-readable medium 704 and / or executed by (one or more) data processing units 702 and / or (one or more) accelerators. For example, in some examples, data repository 708 may store session data (e.g., session data 636 as shown in Figure 4 .), profile data (e.g., associated with a participant profile), and / or other data. The session data may include the total number of participants (e.g., users and / or client computing devices) in a communication session, the activities that occur in the communication session, a list of invitees to the communication session, and / or other data related to when and how the communication session is conducted or hosted.

[0107] Data repository 708 may also include session data 714 for storing policies and other information about queues. Session data 714 may define any type of activity or status related to individual users 10A - 10F each associated with an individual video stream among multiple video streams 634. For example, context data may define the level of a person in an organization and how each person's level relates to the levels of other people, the performance level of a person, or any other activity or status information that can be used to determine the rendering location of a person within a virtual environment. The system may use the level of a person to determine whether the person can receive updated permissions or whether the person can approve the permission of another person who has requested to spend more time as a presenter outside of their allocation.

[0108] Alternatively, some or all of the data described above can be stored on a separate memory 716 on one or more data processing units 702, such as on-board memory, CPU-type processors, GPU-type processors, FPGA-type accelerators, DSP-type accelerators, and / or another accelerator. In this example, the computer-readable medium 704 also includes an operating system 718 and an application programming interface 710 (API) configured to expose the functions and data of the device 700 to other devices. Additionally, the computer-readable medium 704 includes one or more modules, such as a server module 730, an output module 732, and a GUI presentation module 740, although the number of illustrated modules is merely an example and this number can vary higher or lower. That is, the functionality described herein in connection with the illustrated modules can be performed by a smaller number of modules or a larger number of modules on one device or spread across multiple devices.

[0109] In summary, although various configurations have been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed subject matter.

Claims

1. A method for controlling the participation of individual attendees in a communication session, the method being for execution on a system, the method comprising: Receiving one or more inputs associated with individual participants (10G, 10H, 10L, 10J, 10F) of the communication session, the one or more inputs causing the system to generate a queue that arranges identifiers of each of the individual participants (10G, 10H, 10L, 10J, 10F), wherein an individual input among the one or more inputs corresponds to an individual participant among the individual participants who requests a change in an operation state from a first type of operation to a second type of operation; Determining an individual time allocation for each of the participants (10G, 10H, 10L, 10J, 10F) in the queue, wherein the individual time allocation is respectively based on the number of the participants in the queue and the remaining time of the communication session, and Updating session data in response to the one or more inputs associated with an individual participant (10G, 10H, 10L, 10J, 10F), the session data defining an order of the identifiers of each of the participants (10G, 10H, 10L, 10J, 10F) in the queue, the session data further defining the individual time allocation for each of the participants (10G, 10H, 10L, 10J, 10F) in the queue; and Causing a display of a user interface including the individual time allocation for each of the participants (10G, 10H, 10L, 10J, 10F) in the queue, wherein the individual time allocation is displayed in association with a respective identifier or representative image of each of the participants (10G, 10H, 10L, 10J, 10F) in the queue.

2. The method according to claim 1, wherein The method further comprises: Receiving supplementary input indicating an updated number of participants in the queue, wherein the updated number of participants in the queue is based on: the number of new inputs from new participants in the queue who request to initiate the change in the operation state from the first type of operation to the second type of operation, or the number of participants removed from the queue in response to a cancellation input for canceling a previous request to initiate the change in the operation state; Determining one or more updated time allocations for the remaining individual participants in the queue, wherein the one or more updated time allocations are respectively based on the number of the remaining participants in the queue and a new remaining time based on the time of the supplementary input and the scheduled end time of the communication session; and Updating the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, wherein the one or more updated time allocations are displayed in association with the respective identifier or the representative image of each of the remaining participants.

3. The method according to claim 2, wherein The one or more updated time allocations for each of the remaining participants in the queue are weighted based on historical data indicating the time during which the participants have presented content, wherein a first participant among the remaining participants in the queue receives an increased allocation, and a second participant among the participants receives a decreased allocation, wherein the historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

4. The method according to claim 1, wherein, The method further comprises: receiving an update to the state of the communication session, the update indicating that a participant has completed a presentation or has terminated the broadcast of a video stream or an audio stream during the time allocated for the participant; determining one or more updated time allocations for individual participants remaining in the queue, wherein the one or more updated time allocations comprise: the individual time allocations for each of the remaining participants in the queue in addition to the remaining time of the time allocated for the participant, wherein the remaining time of the time allocated for the participant is divided among the individual participants remaining in the queue; and updating the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, wherein the one or more updated time allocations are displayed in association with the respective identifiers or the representative images of each of the remaining participants.

5. The method according to claim 4, wherein The one or more updated time allocations for each of the remaining participants in the queue are weighted based on historical data indicating the time during which the participants have presented content, wherein a first participant among the remaining participants in the queue receives an increased allocation of the remaining time of the time allocated for the participant, and a second participant among the participants receives a decreased allocation of the remaining time of the time allocated for the participant, wherein the historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

6. The method according to claim 1, wherein, The individual time allocations for each of the participants in the queue are weighted based on historical data indicating the time during which the participants have presented content, wherein a first participant among the participants receives an increased allocation, and a second participant among the participants receives a decreased allocation, wherein the historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

7. The method according to claim 1, wherein The individual time allocation for each participant in the queue is weighted based on organizational data indicating the rank or title of the participant, where a first participant in the participants receives an increased allocation and a second participant in the participants receives a decreased allocation, and where the organizational data indicates that the rank or title of the first participant exceeds the rank or title of the second participant.

8. The method according to claim 1, wherein The system automatically grants each participant in the participants the exclusive right to broadcast a video stream and an audio stream during the individual time allocation for each participant in the queue, where the queue defines the order in which each participant exclusively broadcasts their video stream and audio stream to the other participants in the communication session.

9. A computing device for controlling the participation of individual attendees in a communication session, the computing device comprising: one or more processing units; and a computer-readable storage medium encoded with computer-executable instructions for causing the one or more processing units to: receive one or more inputs associated with individual participants (10G, 10H, 10L, 10J, 10F) of the communication session, the one or more inputs causing the system to sort the identifiers of each participant in the participants (10G, 10H, 10L, 10J, 10F) in a queue, where an individual input among the one or more inputs corresponds to an individual participant among the individual participants who requests a change in operation state from a first type of operation to a second type of operation; determine an individual time allocation for each participant in the participants (10G, 10H, 10L, 10J, 10F) in the queue, where the individual time allocation is respectively based on the number of participants in the queue and the remaining time of the communication session, and update session data in response to the one or more inputs associated with individual participants (10G, 10H, 10L, 10J, 10F), the session data defining the order of the identifiers of each participant in the participants (10G, 10H, 10L, 10J, 10F) in the queue, the session data also defining the individual time allocation for each participant in the participants (10G, 10H, 10L, 10J, 10F) in the queue; and cause the display of a user interface including the individual time allocation for each participant in the participants (10G, 10H, 10L, 10J, 10F) in the queue, where the individual time allocation is displayed in association with the corresponding identifier or representative image of each participant in the participants (10G, 10H, 10L, 10J, 10F) in the queue.

10. The computing device according to claim 9, wherein, The instructions also cause the one or more processing units to: Receive supplementary input indicating an updated number of participants in the queue, wherein the updated number of participants in the queue is based on: the number of new inputs from new participants in the queue that request to initiate the change in the operation state from the first type of operation to the second type of operation, or the number of participants removed from the queue in response to a cancellation input for canceling a previous request to initiate the change in the operation state; Determine one or more updated time allocations for the remaining individual participants in the queue, wherein the one or more updated time allocations are each based on the number of remaining participants in the queue and the new remaining time based on the time of the supplementary input and the scheduled end time of the communication session; and Update the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, wherein the one or more updated time allocations are displayed in association with the respective identifier or the representative image of each of the remaining participants.

11. The computing device according to claim 10, wherein, The one or more updated time allocations for each of the remaining participants in the queue are weighted based on historical data indicating the time during which the participants have presented content, wherein a first participant among the remaining participants in the queue receives an increased allocation and a second participant among the participants receives a decreased allocation, wherein the historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

12. The computing device according to claim 9, wherein, The instructions further cause the one or more processing units to: Receive an update to the state of the communication session, the update indicating that a participant has completed a presentation or has terminated the broadcast of a video stream or an audio stream during the time allocated for the participant; Determine one or more updated time allocations for the remaining individual participants in the queue, wherein the one or more updated time allocations include: in addition to the remaining time of the time allocated for the participant, the individual time allocations for each of the remaining participants in the queue, wherein the remaining time of the time allocated for the participant is divided among the remaining individual participants in the queue; and Update the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, wherein the one or more updated time allocations are displayed in association with the respective identifier or the representative image of each of the remaining participants.

13. The computing device according to claim 12, wherein, The one or more updated time allocations for each of the remaining participants in the queue are weighted based on historical data indicating the times at which the participants have presented content, wherein a first participant among the remaining participants in the queue receives an increased allocation of the remaining time of the time allocated for the participant, and a second participant among the participants receives a decreased allocation of the remaining time of the time allocated for the participant, wherein the historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

14. The computing device according to claim 9, wherein, The individual time allocations for each of the participants in the queue are weighted based on historical data indicating the times at which the participants have presented content, wherein a first participant among the participants receives an increased allocation, and a second participant among the participants receives a decreased allocation, wherein the historical data indicates that the first participant has a history of less presentation time shown on the main stage compared to the second participant.

15. A computer-readable storage medium encoded with computer-executable instructions for causing one or more processing units of a system to control the participation of individual attendees of a communication session, the instructions causing the one or more processing units of the system to: Receiving one or more inputs associated with individual participants (10G, 10H, 10L, 10J, 10F) of the communication session, the one or more inputs causing the system to sort the identifiers of each of the participants (10G, 10H, 10L, 10J, 10F) in a queue, wherein, Each individual input among the one or more inputs corresponds to an individual participant among the individual participants who requests a change in an operation state from a first type of operation to a second type of operation; Determine individual time allocations for each of the participants (10G, 10H, 10L, 10J, 10F) in the queue, wherein the individual time allocations are each based on the number of participants in the queue and the remaining time of the communication session, and Update session data in response to the one or more inputs associated with an individual participant (10G, 10H, 10L, 10J, 10F), the session data defining the order of the identifiers of each of the participants (10G, 10H, 10L, 10J, 10F) in the queue, the session data further defining the individual time allocations for each of the participants (10G, 10H, 10L, 10J, 10F) in the queue; and Cause a user interface including the individual time allocations for each of the participants (10G, 10H, 10L, 10J, 10F) in the queue to be displayed, wherein the individual time allocations are displayed in association with corresponding identifiers or representative images of each of the participants (10G, 10H, 10L, 10J, 10F) in the queue.

16. The computer-readable storage medium according to claim 15, wherein, The instructions further cause the one or more processing units to: Receive supplementary input indicating an updated number of participants in the queue, where the updated number of participants in the queue is based on: the number of new inputs from new participants in the queue requesting to initiate the change in the operation state from the first type of operation to the second type of operation, or the number of participants removed from the queue in response to a cancellation input for canceling a previous request to initiate the change in the operation state; Determine one or more updated time allocations for the remaining individual participants in the queue, where the one or more updated time allocations are each based on the number of remaining participants in the queue and the new remaining time based on the time of the supplementary input and the scheduled end time of the communication session; and Update the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, where the one or more updated time allocations are displayed in association with the respective identifier or the representative image of each of the remaining participants.

17. The computer-readable storage medium according to claim 16, wherein, The one or more updated time allocations for each of the remaining participants in the queue are weighted based on historical data indicating the time during which the participants have demonstrated content, where a first participant among the remaining participants in the queue receives an increased allocation and a second participant among the participants receives a decreased allocation, where the historical data indicates that the first participant has a history of less demonstration time displayed on the main stage compared to the second participant.

18. The computer-readable storage medium according to claim 15, wherein, The instructions further cause the one or more processing units to: Receive an update to the state of the communication session, the update indicating that a participant has completed a demonstration or has terminated the broadcast of a video stream or an audio stream during the time allocated for the participant; Determine one or more updated time allocations for the remaining individual participants in the queue, where the one or more updated time allocations include: in addition to the remaining time of the time allocated for the participant, the individual time allocations for each of the remaining participants in the queue, where the remaining time of the time allocated for the participant is divided among the remaining individual participants in the queue; and Update the display of the user interface to include the one or more updated time allocations for each of the remaining participants in the queue, where the one or more updated time allocations are displayed in association with the respective identifier or the representative image of each of the remaining participants.

19. The computer-readable storage medium according to claim 18, wherein, The one or more updated time allocations for each of the remaining participants in the queue are weighted based on historical data indicating the time during which the participants have demonstrated content, wherein a first participant among the remaining participants in the queue receives an increased allocation of the remaining time of the time allocated for the participant, and a second participant among the participants receives a decreased allocation of the remaining time of the time allocated for the participant, wherein the historical data indicates that the first participant has a history of less demonstration time shown on the main stage compared to the second participant.

20. The computer-readable storage medium according to claim 15, wherein, The individual time allocations for each of the participants in the queue are weighted based on historical data indicating the time during which the participants have demonstrated content, wherein a first participant among the participants receives an increased allocation, and a second participant among the participants receives a decreased allocation, wherein the historical data indicates that the first participant has a history of less demonstration time shown on the main stage compared to the second participant.