Methods, apparatus, systems, and articles of manufacture are disclosed to dynamically determine interaction display regions for screen sharing. Example apparatus disclosed herein are to generate a screen share frame corresponding to content rendered on the display and intended for the screen share event; identify application-related contextual data corresponding to the screen share event; determine an interactive context based on at least one of (a) the application-related contextual data and (b) sensor data from at least one sensor, the interactive context including identification of an interaction region of the screen share frame; generate interaction metadata that includes the interactive context; and transmit a transport stream that includes the interaction metadata and the screen share frame.
Legal claims defining the scope of protection, as filed with the USPTO.
a first display; a second display; at least one sensor; at least one memory; machine readable instructions; and generate a screen share frame corresponding to content rendered on the first display and intended for a screen share event; identify application-related contextual data corresponding to the screen share event; determine whether the first display includes the content that is rendered and intended for the screen share event; determine whether the second display includes the content that is rendered and intended for the screen share event; and identify, based on the determinations, parameters for at least one of the first display or the second display, the parameters to include an identifier of the at least one of the first display or the second display; determine an interactive context based on the parameters and at least one of (a) the application-related contextual data, or (b) sensor data from the at least one sensor, the interactive context including an identification of an interaction region of the screen share frame; generate interaction metadata that includes the interactive context; and transmit a transport stream that includes the interaction metadata and the screen share frame. processor circuitry to at least one of instantiate or execute the machine readable instructions to: . An electronic device, comprising:
claim 1 . The electronic device of, wherein the processor circuitry is to generate the screen share frame in response to detecting initialization of the screen share event.
claim 1 . The electronic device of, wherein the screen share frame includes a rendered application, and wherein the application-related contextual data includes information corresponding to the rendered application.
claim 1 . The electronic device of, wherein the identification of the interactive context is based on display-related contextual data, the processor circuitry to identify the display-related contextual data that includes parameters of the first display.
claim 1 . The electronic device of, wherein the processor circuitry is to identify the interactive context based on input data relative to the screen share event.
claim 5 . The electronic device of, wherein the input data includes human interface device (HID)-related data received from a HID, the HID corresponding to at least one of a mouse, a keyboard, or a touchpad.
claim 5 . The electronic device of, wherein the input data includes operating system events corresponding to human interface device (HID)-related data.
claim 5 receiving audio data from the microphone; and applying a natural language processing based model to the audio data. . The electronic device of, wherein the at least one sensor includes a microphone, and wherein the input data includes language data, the processor circuitry to generate the language data by:
claim 5 receiving image data from the camera; and applying an image recognition model to the image data. . The electronic device of, wherein the at least one sensor includes a camera, and wherein the input data includes eye tracking data, the processor circuitry to generate the eye tracking data by:
claim 5 collecting a sequence of the input data and a corresponding sequence of the application-related contextual data over a period of time; processing the sequence of the input data and the corresponding sequence of the application-related contextual data to predict user interaction intent relative to the screen share frame for the period of time; and identifying the interactive context for the period of time based on the predicted user interaction intent relative to the screen share frame for the period of time. . The electronic device of, wherein the processor circuitry is to determine the interactive context by:
claim 10 . The electronic device of, wherein the sequence of the input data and the corresponding sequence of the application contextual data is processed using at least one of a machine learning model or a rule.
claim 1 . The electronic device of, wherein the interaction region is represented by coordinates relative to the screen share frame.
generate a screen share image corresponding to content rendered on at least one of a first display or a second display used for a screen share event; identify application-related contextual information corresponding to the screen share event; determine whether the first display includes the content that is rendered and intended for the screen share event; determine whether the second display includes the content that is rendered and intended for the screen share event; and identify, based on the determinations, parameters for the at least one of the first display or the second display, the parameters to include an identifier of the at least one of the first display or the second display; predict an interactive context based on the parameters and at least one of (a) the application-related contextual information, or (b) sensor data based on signals output by a sensor, the interactive context including an interaction region of the screen share image; generate interaction metadata corresponding to the interactive context and the interaction region; and send a transport stream containing the interaction metadata and the screen share image. . At least one non-transitory machine readable storage medium comprising instructions that, when executed, cause processor circuitry to at least:
claim 13 . The at least one non-transitory machine readable storage medium of, wherein the screen share image includes an application rendered on the first display, and wherein the application-related contextual information includes data corresponding to the rendered application.
claim 13 . The at least one non-transitory machine readable storage medium of, wherein the prediction of the interactive context is based on display-related contextual data, and wherein the processor circuitry to identify the display-related contextual data that includes parameters of the first display.
claim 13 . The at least one non-transitory machine readable storage medium of, wherein the instructions, when executed, cause the processor circuitry to predict the interactive context based on input data relative to the screen share event.
claim 16 . The at least one non-transitory machine readable storage medium of, wherein the input data includes user input data received from a human interface device (HID), the HID corresponding to at least one of a mouse, a keyboard, or a touchpad.
claim 16 . The at least one non-transitory machine readable storage medium of, wherein the input data includes operating system events corresponding to human interface device (HID)-related user input data.
claim 16 receiving audio data from the microphone; and applying a natural language processing based model to the audio data. . The at least one non-transitory machine readable storage medium of, wherein the sensor is a microphone, and wherein the input data includes language data, the processor circuitry to generate the language data by:
claim 16 receiving image data from the camera; and applying an image recognition model to the image data. . The at least one non-transitory machine readable storage medium of, wherein the sensor is a camera, and wherein the input data includes eye tracking data, the processor circuitry to generate the eye tracking data by:
generating, by executing machine readable instructions with at least one processor, a display share frame corresponding to content rendered on at least one of a first display or a second display, the display share frame selected for a display share event; determining whether the first display includes the content that is rendered and intended for the display share event; determining whether the second display includes the content that is rendered and intended for the display share event; and identifying, based on the determinations, parameters for the at least one of the first display or the second display, the parameters to include an identifier of the at least one of the first display or the second display; determining, by executing the machine readable instructions with the at least one processor, an interactive intent based on the parameters and at least one of application contextual data and sensor data from at least one sensor, the interactive intent including an interaction region of the display share frame; generating, by executing the machine readable instructions with the at least one processor, interaction metadata that includes the interactive intent and the interaction region; and transmitting, by executing the machine readable instructions with the at least one processor, the interaction metadata and the display share frame. . A method comprising:
Complete technical specification and implementation details from the patent document.
This disclosure relates generally to video conferencing and, more particularly, to methods, systems, articles of manufacture, and apparatus to dynamically determine interaction display regions.
In recent years, video conference application usage has grown exponentially, becoming an indispensable tool for collaboration in many industrial, commercial, academic, and governmental environments. Generally, any type of electronic device capable of transmitting and/or receiving video and/or audio data via a network can be used to participate in a video conference. Video conferencing applications can allow a participant to share visual data to all participants, regardless of an electronic device on which an intended audience views the visual data.
In general, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts. The figures are not to scale. Instead, the thickness of the layers or regions may be enlarged in the drawings. Although the figures show layers and regions with clean lines and boundaries, some or all of these lines and/or boundaries may be idealized. In reality, the boundaries and/or lines may be unobservable, blended, and/or irregular.
As used herein, unless otherwise stated, the term “above” describes the relationship of two parts relative to Earth. A first part is above a second part, if the second part has at least one part between Earth and the first part. Likewise, as used herein, a first part is “below” a second part when the first part is closer to the Earth than the second part. As noted above, a first part can be above or below a second part with one or more of: other parts therebetween, without other parts therebetween, with the first and second parts touching, or without the first and second parts being in direct contact with one another.
As used in this patent, stating that any part (e.g., a layer, film, area, region, or plate) is in any way on (e.g., positioned on, located on, disposed on, or formed on, etc.) another part, indicates that the referenced part is either in contact with the other part, or that the referenced part is above the other part with one or more intermediate part(s) located therebetween.
As used herein, connection references (e.g., attached, coupled, connected, and joined) may include intermediate members between the elements referenced by the connection reference and/or relative movement between those elements unless otherwise indicated. As such, connection references do not necessarily infer that two elements are directly connected and/or in fixed relation to each other. As used herein, stating that any part is in “contact” with another part is defined to mean that there is no intermediate part between the two parts.
Unless specifically stated otherwise, descriptors such as “first,” “second,” “third,” etc., are used herein without imputing or otherwise indicating any meaning of priority, physical order, arrangement in a list, and/or ordering in any way, but are merely used as labels and/or arbitrary names to distinguish elements for ease of understanding the disclosed examples. In some examples, the descriptor “first” may be used to refer to an element in the detailed description, while the same element may be referred to in a claim with a different descriptor such as “second” or “third.” In such instances, it should be understood that such descriptors are used merely for identifying those elements distinctly that might, for example, otherwise share a same name.
As used herein, “approximately” and “about” modify their subjects/values to recognize the potential presence of variations that occur in real world applications. For example, “approximately” and “about” may modify dimensions that may not be exact due to manufacturing tolerances and/or other real world imperfections as will be understood by persons of ordinary skill in the art. For example, “approximately” and “about” may indicate such dimensions may be within a tolerance range of +/−10% unless otherwise specified in the below description. As used herein “substantially real time” refers to occurrence in a near instantaneous manner recognizing there may be real world delays for computing time, transmission, etc. Thus, unless otherwise specified, “substantially real time” refers to real time+/−1 second.
As used herein, the phrase “in communication,” including variations thereof, encompasses direct communication and/or indirect communication through one or more intermediary components, and does not require direct physical (e.g., wired) communication and/or constant communication, but rather additionally includes selective communication at periodic intervals, scheduled intervals, aperiodic intervals, and/or one-time events.
As used herein, “processor circuitry” is defined to include (i) one or more special purpose electrical circuits structured to perform specific operation(s) and including one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors), and/or (ii) one or more general purpose semiconductor-based electrical circuits programmable with instructions to perform specific operations and including one or more semiconductor-based logic devices (e.g., electrical hardware implemented by one or more transistors). Examples of processor circuitry include programmable microprocessors, Field Programmable Gate Arrays (FPGAs) that may instantiate instructions, Central Processor Units (CPUs), Graphics Processor Units (GPUs), Digital Signal Processors (DSPs), XPUs, or microcontrollers and integrated circuits such as Application Specific Integrated Circuits (ASICs). For example, an XPU may be implemented by a heterogeneous computing system including multiple types of processor circuitry (e.g., one or more FPGAs, one or more CPUs, one or more GPUs, one or more DSPs, etc., and/or a combination thereof) and application programming interface(s) (API(s)) that may assign computing task(s) to whichever one(s) of the multiple types of processor circuitry is/are best suited to execute the computing task(s).
Video conference applications enable two or more participants located anywhere in the world to communicate using video and audio data via one or more separate electronic devices. Video conference participants can use any number of different electronic devices during a video conference. For example, a first participant can utilize a personal computer communicatively coupled to a monitor having a relatively large display screen (e.g., 24 inches), while a second participant may use a tablet having a smaller display screen (e.g., 10 inches). Further, video conference participants can utilize electronic devices having different display screen characteristics such as, but not limited to, different resolutions, aspect ratios, and absolute screen sizes (e.g., diagonal measurement, length, width, etc.). Such flexibility allows a wide variety of users with different types of technology to simultaneously participate in a video conference.
Many video conference applications enable screen share (e.g., desktop share, display share), which is a technology that allows a participant to share screen content of one or more display screens in real-time with one or more separate devices of an intended audience. For example, a screen sharer participant (herein referred to as a presenter) can use an electronic device (e.g., transmitter device) to transmit audio data and/or image data corresponding to content rendered on a display screen(s) of an electronic device to other participants of the video conference (e.g., audience participants).
As disclosed herein, a transmitter device refers to an electronic device used by a presenter during a video conference to transmit content (e.g., audio data, image data, video data, etc.) to audience participants. A transmitter screen refers to a display screen(s) of a transmitter device that includes screen share content (e.g., content rendered on a display screen that is transmitted to other participants during a video conference). Screen share content can include all elements on the transmitter screen, one or more windows rendered on the transmitter screen, a specific application(s), etc. A receiver device as disclosed herein refers to an electronic device used by an audience participant during a screen share event to receive transmitted content. Similarly, a receiver screen refers to a display screen of a receiver device that is used to render screen share content received from a transmitter device for view by an audience participant. During a screen share event, a receiver device renders received screen share content in accordance with parameters (e.g., characteristics, setting, etc.) of a corresponding receiver screen.
Typically, a presenter is oblivious to types of electronic devices and/or display screens used by audience participants and how transmitted screen share content is consumed at a receiver device. As such, the presenter often transmits screen share content using settings convenient to the presenter alone. Such a scenario may not be an issue when a transmitter screen is of a smaller size or lower resolution than a receiver screen of higher resolution and larger size. However, problems can arise when screen share content transmitted at a particular resolution and intended for a certain aspect ratio and screen size is rendered on a receiver screen with a smaller aspect ratio and/or screen size. For example, screen share content from a transmitter screen that is large and/or of high resolution compared to a receiver screen can result in appearance issues when the screen share content renders on the receiver screen, such as magnification issues, distortion, etc. In some examples, screen share content from a larger transmitter screen that renders on a smaller receiver screen may cause the screen share content to appear distant (e.g., small) to an audience participant, resulting in difficult to view or otherwise unintelligible content. In some examples, the screen share content that includes image and/or video content may appear distorted on the receiver screen. Such issues can result in difficult to read content for the audience participant and/or a bad or otherwise undesirable user experience. During a video conference and/or screen share event, user experience can vary across receiver devices, depending on parameters or respective receiver screens.
The foregoing issues are mainly concerned with an environment in which a transmitter device having a transmitter screen(s) that is relatively large and/or has a relatively high resolution(s) transmits video data to a receiver device having a receiver screen(s) that is relatively small and/or has a relatively low resolution(s). As disclosed herein, a small receiver screen refers to a receiver screen that is relatively small in size and/or aspect ratio and/or has a low resolution as compared to a transmitter screen from which rendered screen share content originates. While it may be possible for an audience participant to manually adjust an appearance of rendered screen share content by, for example, adjusting local resolutions, zooming into screen share content, scrolling through screen share content, etc., such manual adjustments can be inconvenient for an audience participant. For example, the audience participant may need to make assumptions about which region of the screen share content the presenter is focusing on and, if zoomed in, may need to scroll through the screen share content to identify a region that is actively being discussed. In some such examples, an audience participant may need to continually make adjustments during the video conference, further reducing user experience. In some examples, manual adjustment may not be possible, depending on a type of video conference application being used. Thus, a technological solution is needed that (e.g., automatically) adjusts received screen share content for render on a receiver device based on dynamically identified active interaction regions of a transmitter screen and an advantageous render size on a receiver screen.
Example methods, systems, articles of manufacture, and apparatus disclosed herein determine an interactive context (e.g., interaction intent) of a screen share event based on presenter interactions with the screen share content during a video conference. Interactivity refers to a dialog that occurs between a user and a computer (e.g., user input, device processes, output). Context refers to information that can be used to characterize a situation (e.g., a video conference, a screen share event, etc.) of an entity, such as a user or a computer. For example, user input data (e.g., information) relative to a display screen (e.g., an entity) during a screen share event (e.g., the situation) would be context. As disclosed herein, an interactive context refers to a user's intent to present (e.g., show and/or discuss) specific content. Examples disclosed herein obtain and analyze user input data and/or user-related data relative to the screen share content to predict a presenter's intent to present specific content during the screen share event. User related data refers to data collected by the electronic device during the screen share event that is based on the presenter's action, such as eye tracking data, audio data and/or language data, etc. Thus, the presenter's intent to present specific content is based on the presenter interactions with the screen share content, which is represented in the user input data and/or the user-related data. For example, the presenter could be interacting with screen share content by entering additional content (e.g., typing in an application, drawing, etc.), removing content, reading content (e.g., from a slide), discussing (e.g., talking about) content, etc.
Certain examples determine the interactive context by analyzing inputs from various input devices in view of a type of screen share content to be transmitted, such as a type of application (e.g., a word processing application, a slide show presentation application, a web browser, database software, spreadsheet application, etc.). As disclosed herein, application contextual data includes information regarding which application(s) is active and/or being interacted with, information about the application(s) (e.g., a nature of the application), rules for determining an interactive context based on a specific application, etc. As disclosed herein, the nature of the application refers to a layout of a specific application in view of a type of the application. For example, an application may include multiple display regions that can be considered as related but separate from one another. During a presentation corresponding to the screen share event, the application can thus include different regions, some of which can be more important than other regions. For example, a coding application can include a main code window, a file(s) window, an editing window, etc. In some such examples, the main code window may be more important than the file window. By identifying a nature of the application, disclosed examples can identify potential regions of interaction and identify interaction within those regions. In certain examples, identifying the application and the nature of the application is important for dynamic determination of interactive context. In some examples, rules can be generated that determine which modality(ies) to use to identify the interactive context.
Examples disclosed herein determine the interactive context using different modalities. The different modalities may include a user's eye gaze and/or eye tracking (e.g., based on data from a camera), speech analysis applied to microphone input, human interface device (HID) input (e.g., via a mouse, a keyboard, touch screen, etc.) and corresponding operating system (OS) events, etc. For example, optical character recognition (OCR) could be applied to screen share content, such as a word document with text, to identify the presented text. Further, natural language processing (NLP) techniques may be applied to microphone input (e.g., corresponding to a presenter's voice) to generate language data (e.g., speech data), which can be compared to the OCR output to determine a portion of screen share content the presenter discussed. In some examples, HID input data and corresponding operating system (OS) events can be used to identify the interactive context. Examples disclosed herein can use a sequence of user input (e.g., time series data), location of the user input on the transmitter screen, and time between each user input to predict intended usage in combination with application contextual data to identify the interactive context.
Example transmitter devices disclosed herein utilize rules and/or artificial intelligence models to determine the interactive context based on collected data and/or other data (e.g., parameters of the transmitter screen, the nature of the application, etc.). Disclosed transmitter devices identify an active region(s) of interest (e.g., active interaction region) on a transmitter screen (e.g., in real time) as part of the interactive context. In some examples, an active interaction region is a portion of a transmitter screen(s) and content thereon that a presenter is looking at, discussing and/or otherwise interacting therewith at a given moment in time. For example, coordinates of the active interaction region can be identified using coordinates of a transmitter screen(s) (e.g., based on a monitor configuration and/or which monitor is used for screen sharing, etc.). Some examples generate interaction metadata that includes a determined interactive context and an identified active interaction region(s), which includes coordinates of the region(s) of interest relative to a corresponding screen share content on the transmitter screen(s).
Example methods, systems, articles of manufacture, and apparatus disclosed herein transmit a video conference transport stream (e.g., data packet) that includes complete (e.g., full, entire, whole, etc.) screen share content (e.g., frame(s), image data, etc.) as rendered on a transmitter screen, along with interaction metadata and/or audio data to one or more receiving devices. In other words, example transmitter devices disclosed herein send a data packet(s) that includes full frames of screen share content (e.g., screen share frames) and interaction metadata that describes an active interaction region of the screen share frames at a given moment in time to a remote receiver device(s). Certain example transmitter devices send a multiplexed transport stream that includes encoded frames (e.g., screen share frames), interaction metadata to a receiver device(s), audio data, and/or image data (e.g., from a camera that captures an environment surrounding the transmitter device). In some examples, the data packet(s) sent by a transmitter device includes interaction metadata regardless of parameters of a receiver device(s).
Example receiver devices disclosed herein facilitate an improved user experience by rendering received screen share content on a receiver screen in accordance with a receiver screen's parameters. Example receiver devices can use the interaction metadata, receiving device metainformation, and/or other information to determine how to render screen share content such that an audience participant can consume relevant content (e.g., active interaction region(s)) at the viewing settings. For example, a receiver device may consider parameters of a receiving screen(s) (e.g., size, aspect ratio, resolution, etc.), user (e.g., audience participant) preferences, user distance from the receiving screen(s), user profile(s) and corresponding settings, etc. to determine how to render received data. In some examples, the receiver device(s) may utilize rules and/or artificial intelligence models to determine how to render the screen share content. Accordingly, a transmitter device can transmit a same data packet that includes screen share content and interaction metadata to a plurality of receiver devices, each of which can render the screen share content based on different in a manner that is advantageous to a respective audience participant.
Examples disclosed herein can be applied to transmitter devices that include multiple transmitter screens. For example, a presenter may utilize two or more monitors during a screen share event to present one or more windows and/or applications. The presenter may present different content across the monitors during a screen share event. Disclosed transmitter devices dynamically identify an interactive context that can include an active interaction region(s) (e.g., coordinates of an active area of interaction) across the transmitter screens, and send such information as metadata to a receiver device(s). A corresponding receiver device(s) can render relevant screen share content across transmitter screens based on the metadata, rendering active interaction regions dynamically during a video conference. Further, in a multi-receiver device environment, each receiver device can render relevant screen share content based on the metadata in accordance with each device's respective configuration. In some examples, a presenter can disable interaction display region detection and transmission for situations in which the presenter desires an audience to view a whole transmitter screen.
Some examples improve a user experience during streaming experience of video content during video conferencing calls. Some examples can improve the user experience with limited latency. For example, disclosed receiver devices and/or transmitter devices can include a hardware accelerator that can process data faster than a typical CPU, enabling increased processing with limited (e.g., reduced) latency. Disclosed examples can be applied to a recording of a video conference. For example, a video conference application server may be utilized to record a video conference and/or a screen share event. During the recorded screen share event, a transmitter device can generate interaction metadata that can be stored with the recording and dynamically rendered by a receiving device at another point in time.
While examples disclosed herein are discussed in terms of video conferences application, disclosed examples can be applied to other technological applications in additional and/or alternative examples. For example disclosed examples can be used by live stream applications, such as YouTube Live®, Twitch TV®, Instagram Livestream®, etc. Disclosed examples can be applied by surveillance systems, remote rendering systems, interactive remote laboratories, and/or any other real world application in which image data from a first source is rendered at a second source. Further, disclosed examples can be applied to any number of different events, such as video conference event, webinars, screen share events, streaming events (e.g., in which a transmitter device transmits a data stream to a server accessible by other electronic devices, enabling users of the other electronic devices to view the data stream), etc.
Artificial intelligence (AI), including machine learning (ML), deep learning (DL), and/or other artificial machine-driven logic, enables machines (e.g., computers, logic circuits, etc.) to use a model to process input data to generate an output based on patterns and/or associations previously learned by the model via a training process. For instance, the model may be trained with data to recognize patterns and/or associations and follow such patterns and/or associations when processing input data such that other input(s) result in output(s) consistent with the recognized patterns and/or associations.
Many different types of machine learning models and/or machine learning architectures exist. In examples disclosed herein, neural network models are used. In general, machine learning models/architectures that are suitable to use in the example approaches disclosed herein will include recurrent neural networks (RNNs), convolution neural networks (CNNs), time series models, etc. However, other types of machine learning models could additionally or alternatively be used such as natural language processing (NLP) models, etc.
In general, implementing a ML/AI system involves two phases, a learning/training phase and an inference phase. In the learning/training phase, a training algorithm is used to train a model to operate in accordance with patterns and/or associations based on, for example, training data. In general, the model includes internal parameters that guide how input data is transformed into output data, such as through a series of nodes and connections within the model to transform input data into output data. Additionally, hyperparameters are used as part of the training process to control how the learning is performed (e.g., a learning rate, a number of layers to be used in the machine learning model, etc.). Hyperparameters are defined to be training parameters that are determined prior to initiating the training process.
Different types of training may be performed based on the type of ML/AI model and/or the expected output. For example, supervised training uses inputs and corresponding expected (e.g., labeled) outputs to select parameters (e.g., by iterating over combinations of select parameters) for the ML/AI model that reduce model error. As used herein, labelling refers to an expected output of the machine learning model (e.g., a classification, an expected output value, etc.). Alternatively, unsupervised training (e.g., used in deep learning, a subset of machine learning, etc.) involves inferring patterns from inputs to select parameters for the ML/AI model (e.g., without the benefit of expected (e.g., labeled) outputs).
In examples disclosed herein, ML/AI models are trained using any amount and/or types of data, such as audio data, image data, etc. However, any other training algorithm may additionally or alternatively be used. Training is performed using hyperparameters that control how the learning is performed (e.g., a learning rate, a number of layers to be used in the machine learning model, etc.). In some examples re-training may be performed. Training is performed using training data. Because supervised training is used, the training data is labeled.
Once training is complete, the model is deployed for use as an executable construct that processes an input and provides an output based on the network of nodes and connections defined in the model. The model is stored at example video conference circuitry. The model may then be executed by the video conference circuitry.
Once trained, the deployed model may be operated in an inference phase to process data. In the inference phase, data to be analyzed (e.g., live data) is input to the model, and the model executes to create an output. This inference phase can be thought of as the AI “thinking” to generate the output based on what it learned from the training (e.g., by executing the model to apply the learned patterns and/or associations to the live data). In some examples, input data undergoes pre-processing before being used as an input to the machine learning model. Moreover, in some examples, the output data may undergo post-processing after it is generated by the AI model to transform the output into a useful result (e.g., a display of data, an instruction to be executed by a machine, etc.).
In some examples, output of the deployed model may be captured and provided as feedback. By analyzing the feedback, an accuracy of the deployed model can be determined. If the feedback indicates that the accuracy of the deployed model is less than a threshold or other criterion, training of an updated model can be triggered using the feedback and an updated training data set, hyperparameters, etc., to generate an updated, deployed model.
1 FIG. 100 100 100 102 104 106 102 104 is block diagram of an example video conference environmentfor which disclosed examples may be implemented. The video conference environmentmay be used when two or more clients want to share data streams amongst each other. The video conference environmentincludes an example first (e.g., transmitter) electronic device, which is communicatively coupled to an example second (e.g., receiver) electronic device(s)via an example network. The transmitter electronic deviceand/or the receiver electronic devicecan be, for example, a personal computing (PC) device such as a laptop, a desktop, an electronic tablet, a hybrid or convertible PC, a mobile telephone, etc.
106 106 106 The example networkmay be implemented using any network over which data can be transferred, such as the Internet. The example networkmay be implemented using any suitable wired and/or wireless network(s) including, for example, one or more data buses, one or more Local Area Networks (LANs), one or more wireless LANs, one or more cellular networks, one or more private networks, one or more public networks, among others. In additional or alternative examples, the networkis an enterprise network (e.g., within businesses, corporations, etc.), a home network, among others.
1 FIG. 102 104 108 106 102 104 108 108 102 104 102 104 In the illustrated example of, the transmitter electronic deviceand the receiver electronic deviceare video conference clients that are communicatively coupled to an example video conference servervia the network. Each electronic device,(e.g., client) may connect to a video conference using the video conference server. During a video conference, the video conference servermay maintain a list of which electronic devices,are connected and each electronic device's,capabilities.
102 110 110 102 110 102 110 102 110 102 110 102 1 FIG. The transmitter electronic deviceis communicatively coupled to or otherwise includes an example display screen(s). The display screenofis a relatively large monitor (e.g., 24 inch diagonal) that is communicatively coupled to the transmitter electronic device. However, the display screen(s)can be any suitable display device in additional or alternative examples, such as a touchscreen display, a liquid crystal display (LCD), a projector, etc. In some examples, the transmitter electronic deviceincludes more than one display screen. For example, the transmitter electronic devicemay be a laptop having a first display screen(e.g., physically attached to the transmitter electronic device) and a second display screen(e.g., the 24 inch monitor) communicatively coupled to the transmitter electronic device(e.g., via a hardware interface (e.g., USB Port, etc.) and/or a wireless interface (e.g., Bluetooth, etc.)).
102 102 112 112 112 102 102 112 102 In some examples, the transmitter electronic deviceincludes external devices communicatively coupled to the transmitter electronic device, such as an example input device(s). The input device(s)may be a human interface device (HID) such as a keyboard, a mouse, a touchpad, a touch screen, headphones and/or ear buds with a microphone, etc. The example input device(s)can be carried by the transmitter electronic deviceand/or a separate device that is communicatively coupled to the transmitter electronic device. The input device(s)allow the user to input selections, data, and other information to the electronic deviceand/or components thereof.
102 114 102 114 110 114 102 102 114 114 102 110 114 114 110 1 FIG. The electronic deviceincludes an example camera(s)or other image sensor(s) capable of capturing image data of an environment surrounding the transmitter electronic device. In some examples, the camera(s)generates image data that is analyzed to detect, for example, a presence of the user proximate to the device, a region(s) of a display screenat which the user is looking (e.g., eye-tracking), etc. The camera(s)of the transmitter electronic devicecan include one or more image sensors to capture image data of the surrounding environment in which the deviceis located. In some examples, the camera(s)includes a depth-sensing camera(s). In the example of, the camera(s)is carried by the electronic devicesuch that when a user faces the display screen, the user is within a field of view of the camera(s). For example, the camera(s)can be carried by a bezel of the display screen.
102 116 102 116 102 102 The transmitter electronic devicealso includes an example microphone(s)or other audio sensor(s) to detect sounds in an environment in which the transmitter electronic deviceis located. The microphone(s)can be carried by the transmitter electronic deviceand/or a separate device that is communicatively coupled to the transmitter electronic device.
102 118 102 118 118 118 118 102 118 102 110 1 FIG. In some examples, the transmitter electronic deviceincludes one or more user proximity sensor(s)that provide a means for detecting a presence of a user relative to the transmitter electronic device. For example, the user proximity sensor(s)may emit electromagnetic radiation (e.g., light pulses) and detect changes in the signal due to the presence of a person or object (e.g., based on reflection of the electromagnetic radiation (e.g., light pulses). In some examples, the user proximity sensor(s)includes time-of-flight (TOF) sensors that measure a length of time for light to return to the sensor after being reflected off a person or object, which can be used to determine depth. The example user proximity sensor(s)can include other types of depth sensors, such as sensors that detect changes based on radar or sonar data. In some instances, the user proximity sensor(s)collects distance measurements for one or more (e.g., four) spatial regions (e.g., non-overlapping quadrants) relative to the transmitter electronic device. The user proximity sensor(s)associated with each region provide distance range data for region(s) of the user's face and/or body corresponding to the regions. The electronic deviceofcan include other types of sensor(s) to detect user interactions relative to content of the display screen(s).
102 120 102 120 120 102 102 120 112 The transmitter electronic deviceincludes example operating system (OS) circuitry, which is implements an operating system of the electronic device. The OS circuitrycan implement or otherwise correspond to any suitable OS, such as Microsoft® Windows®, Linux®, etc. The OS circuitryis structured to facilitate communication between an application that executes on the transmitter electronic deviceand hardware components of the transmitter electronic device. For example, the OS circuitrycan act as an intermediary between a computer programs, such as a video conference application, and computer hardware, such as an input device.
102 122 122 110 122 102 122 The transmitter electronic deviceincludes example processor circuitrywhich is a semiconductor-based hardware logic device(s) structured to execute machine readable instructions (e.g., software) including, for example, user applications, an operating system, etc. The processor circuitryexecutes software to interpret and output response(s) based on user input event(s) (e.g., touch event(s), keyboard input(s), mouse input(s) etc.) via the display screenand/or via external device (e.g., a keyboard, a mouse, etc.). The processor circuitrymay implement a central processing unit (CPU) of the electronic device, may include any number of cores, and may be implemented, for example, by commercially available processing circuitry. In some examples, the processor circuitryis communicatively coupled to additional processing circuitry.
102 124 124 122 124 124 122 122 122 In some examples, the transmitter electronic deviceincludes example accelerator circuitry, which can implement a hardware accelerator such as an ASIC, FPGA, GPU, etc. In some examples, the accelerator circuitryis configured to accelerate a process that would typically be executed by a general purpose processor (e.g., processor circuitry). In some examples, the accelerator circuitryis implemented by logic circuitry to perform certain tasks more quickly and/or efficiently than can be done by a general purpose processor. In some examples, the accelerator circuitrymay be on-board the processor circuitry, in the same chip package as the processor circuitryand/or in one or more separate packages from the processor circuitry.
102 126 126 122 126 126 The transmitter electronic deviceincludes example storage circuitry, which is structured to store data, such as programs, peripheral component data, an operating system, etc. In some examples, the storage circuitrycan store various data to be used by the processor circuitryto perform functions, such as those disclosed herein. In some examples, the storage circuitrycan be one or more memory systems that include various types of computer memory. In some examples, the storage circuitrymay be implemented by a volatile memory (e.g., a Synchronous Dynamic Random Access Memory (SDRAM), a Dynamic Random Access Memory (DRAM), a RAMBUS Dynamic Random Access Memory (RDRAM), a double data rate (DDR) memory, such as DDR, DDR2, DDR3, DDR4, mobile DDR (mDDR), etc.)) and/or a non-volatile memory (e.g., flash memory, a hard disk drive (HDD), etc.).
102 128 106 102 108 104 128 The transmitter electronic deviceincludes example communication circuitry, which may be embodied as any communication circuit, device, or collection thereof, capable of enabling communications over the networkbetween the transmitter electronic deviceand another electronic device (e.g., the video conference server, receiver electronic device, and/or another compute device). The communication circuitrymay be configured to use any one or more communication technology (e.g., wired or wireless communications) and associated protocols.
102 130 102 130 110 134 102 102 102 130 130 102 110 1 FIG. The example electronic deviceofincludes example user interface circuitry, which is structured to enable a user to interact with the electronic device. For example, the user interface circuitryincludes a graphical user interface (GUI), an application display, etc., presented to a user on the display screen(s),in circuit with and/or otherwise in communication with the electronic device. In some examples, the user controls the electronic device, configures one(s) of the hardware, firmware, and/or software resources of the electronic device, etc., by the user interface circuitry. In some examples, the user interface circuitryenables the electronic deviceto obtain information from the user via an input device and provide information to the user via an output device, such as the display screen.
102 132 132 130 132 122 122 The transmitter electronic deviceincludes example video conference circuitry, which implements an example video conference application, video conference platform, or other component that enables a user to participate in a video conferencing meeting with other electronic device(s). A user may launch the video conference circuitryvia the user interface circuitryto participate in a video conference event. The user may select to begin transmitting screen share content via the user interface circuitry during a video conference event. In some examples, the video conference circuitrycan be implemented by the processor circuitry, one or more applications executed by the processor circuitry, or any combination thereof.
132 130 132 102 104 132 104 102 Upon launching, the video conference circuitrydetermines whether a video conference event has been initiated (e.g., by a user) via the user interface circuitry. In additional or alternative examples, a machine initiates the video conference event (e.g., based on a timer, calendar application, etc.). Upon a selection to join the video event, the video conference circuitrycaptures data (e.g., audio data, image data, metadata, etc.) from the transmitter electronic devicefor transport to one or more other electronic devices, such as a receiver electronic device(s). The video conference circuitryadditionally or alternatively receives data from the one or more other electronic devicesfor rendering by the transmitter electronic device.
102 132 130 132 110 104 132 110 132 During the video conference event, a user of the transmitter electronic devicemay initiate and/or terminate a screen share event via the video conference circuitry(e.g., via the user interface circuitry). As used herein, a screen share event refers to a time period between initiation of screen share by a user and termination of screen share by the user. Upon a selection to initiate the screen share event, the video conference circuitrygenerates or otherwise obtains image data corresponding to the receiver display screenfor transport to the receiver electronic device(s). That is, the video conference circuitryperiodically and/or aperiodically captures an image (e.g., frame) of screen capture content (e.g., herein referred to as a screen share frame(s)) rendered on the display screen. For example, the video conference circuitrycan capture screen share frames continually, at specific periods (e.g., frames per second, etc.), based on a trigger(s) (e.g., just as a change), etc.
132 110 132 102 114 116 110 112 132 132 1 FIG. During the screen share event, the video conference circuitryofdetermines (e.g., estimates, predicts, etc.) an interactive context (e.g., interactive intent, interactive classification, etc.), which represents an intention of a presenter relative to screen share content on a display screen. Such interactive context can be used to determine a portion of screen share content that the user is interacting with during the screen share event. The example video conference circuitrydetermines an interactive context of the user with the screen share content during a screen share event based on a specific application(s) that is shared (e.g., a nature of the application(s)), input data received from components of the electronic device(e.g., the camera, the microphone, the display screenand/or the input device(s)), time series data (e.g., based on HID inputs and corresponding operating system events), etc. The example video conference circuitryprocesses input data to determine the interactive context using any suitable technique, such as applying an AI/ML algorithm (e.g., model), rules, heuristics, processes, etc. The video conference circuitryis discussed in further detail below.
132 110 110 The example video conference circuitryidentifies key regions (e.g., active interaction regions) of a display screenfrom which screen share content originates (e.g., a transmitter screen) as part of the interactive context. The active interaction regions are relevant regions (e.g., coordinates) of a display screenand content thereon of which a presenter interacting. Identification of an active interaction region of a transmitter screen is important for dynamic rendering by a receiver device because a receiver device uses such information to render screen share content in accordance with the receiving device's own metainformation to improve (e.g., optimize) video sharing/streaming during a video conferencing meeting.
132 114 132 106 104 The example video conference circuitrygenerates and encodes video frames (e.g., image frames from the camera, screen capture frames, etc.) for a screen share event during the video conferencing event. The video conference circuitrytransmits a transport stream including encoded video data, audio data, and/or interaction metadata to other user devices(s) via the network. As noted above, the interaction metadata can includes an interactive context and corresponding active interaction regions. Thus, the transport stream include full screen share frames as well as interaction metadata, allowing the receiving device(s)to use the interaction metadata and local display screen information and/or user preference settings to render the content on the receiving screen in an optimal way for the user to consume, as discussed in further detail below.
104 104 104 102 112 114 116 118 120 122 124 126 128 132 104 134 104 134 112 134 104 104 134 134 110 102 1 FIG. 1 FIG. The example receiver electronic deviceofis an electronic tablet with video conference capabilities. It is understood, however, that the receiver electronic devicecan be another type of electronic device in additional or alternative examples. The receiver electronic device, which is similar to the transmitter electronic device, includes the input device(s), the camera(s), the microphone(s), the user proximity sensor(s), the OS circuitry, the processor circuitry, the accelerator circuitry, the storage circuitry, the communication circuitry, and the video conference circuitry. However, the receiver electronic deviceincludes an example display screen(s)that is carried by a housing of the receiver electronic device. In some examples, the display screencan additionally or alternatively implement an input device(s), such as a touchpad and/or keyboard presented via the display screenof the receiver electronic device. The receiver electronic devicecan include other (e.g., communicatively coupled) display screensin additional or alternative examples. The display screen(s)ofis relatively small (e.g., 16 inch diagonal size) as compared to the display screen(s)of the transmitter electronic device.
132 104 102 108 132 132 102 The example video conference circuitryas implemented by the receiving electronic deviceis structured to receive a transport stream (e.g., from the transmitter electronic deviceand/or the video conference server). In response, the video conference circuitryde-multiplexes the transport steam to produce audio data, video (e.g., image) data, and/or interaction metadata. The video conference circuitrycan decode the video data and to generate video frames. In some examples, the video frames include screen share frames as transmitted by the transmitter electronic device.
132 134 132 134 104 110 102 132 134 104 110 102 132 134 The video conference circuitryutilizes the interaction metadata to determine an interactive context(s) and an action interaction region(s) (e.g., action interaction region coordinates). Based on metainformation of the display screen, the video conference circuitrydetermines a render decision (e.g., whether to render the full screen share frames, whether to dynamically render the screen share content based on the active interaction regions, how to render the active interaction regions, etc.). For example, if the display screenof the receiving electronic deviceis larger and/or has a higher resolution than the display screenof the transmitting electronic device, the video conference circuitrymay determine to render the full screen share frames. In some examples, if the display screenof the receiving electronic deviceis smaller and/or has a lower resolution than the display screenof the transmitting electronic device, the video conference circuitrymay determine to render the screen share content in accordance with parameters of the display screenusing the active interaction region coordinates.
132 132 134 132 104 114 116 110 112 132 When the video conference circuitrydetermines to dynamically render the screen share content, the video conference circuitrycan use the interaction metadata to decide to advantageously render the screen share content to include the active interaction region(s) so the receiver audience participant can consume relevant content at the viewing settings that are advantageous based on the display screenparameters (e.g., size and resolution) and/or the user's settings. In some examples, the video conference circuitryobtains input data (e.g., user input data, user-related data, etc.) received from components of the electronic device(e.g., the camera, the microphone, the display screenand/or the input device(s)), time series data (e.g., based on HID inputs and corresponding operating system events), etc. The video conference circuitrycan process input data to determine a render decision using any suitable techniques, such as applying an AI/ML algorithm (e.g., model), rules, heuristics, processes, etc.
102 104 102 102 104 102 104 104 102 102 104 102 104 1 FIG. 1 FIG. 1 FIG. 1 FIG. While the first electronic deviceofis a transmitter device that transmits screen share content to the second electronic deviceofduring a video conference, the first electronic devicecan be a receiver device in additional or alternative examples. For example, the first electronic devicemay stop transmitting screen share content during a video conference. While the second electronic deviceofis a receiver device that receives screen share content from the first electronic deviceofduring a video conference, the second electronic devicecan be a transmitter device in additional or alternative examples. For example, the receiver devicemay start transmitting screen share content to the first electronic deviceand/or another electric device(s) during the video conference. The first electronic deviceand the second electronicmay transmit between receiver and/or transmitter during a video conference event. In some examples, both the first electronic deviceand the second electronicmay be receiver devices that receive screen share content from another electronic device.
2 FIG. 1 FIG. 2 FIG. 2 FIG. 2 FIG. 2 FIG. 132 132 is a block diagram of the video conference circuitry ofto facilitate a video conference event among electronic devices as implemented by a transmitter device. The video conference circuitryofmay be instantiated (e.g., creating an instance of, bring into being for any length of time, materialize, implement, etc.) by processor circuitry such as a central processing unit executing instructions. Additionally or alternatively, the video conference circuitryofmay be instantiated (e.g., creating an instance of, bring into being for any length of time, materialize, implement, etc.) by an ASIC or an FPGA structured to perform operations corresponding to the instructions. It should be understood that some or all of the circuitry ofmay, thus, be instantiated at the same or different times. Some or all of the circuitry may be instantiated, for example, in one or more threads executing concurrently on hardware and/or in series on hardware. Moreover, in some examples, some or all of the circuitry ofmay be implemented by microprocessor circuitry executing instructions to implement one or more virtual machines and/or containers.
132 200 132 102 200 200 132 132 200 130 12 FIG. 1 FIG. The video conference circuitryincludes example interface circuitry, which is structured to provide an interface between the video conference circuitryand other components of the electronic device. In some examples, the interface circuitryis instantiated by processor circuitry executing interface instructions and/or configured to perform operations such as those represented by the flowchart of. The interface circuitryenables the video conference circuitryand/or components therefore to receive and/or retrieve data for use in determining an interactive context. For example, a user can make selections regarding the video conference circuitryvia the interface circuitry(e.g., via the user interface circuitryof), such as selecting to join a video conference event, initiating a screen share event, terminating such events, etc.
132 200 200 1612 200 1700 1212 1214 200 1800 200 200 16 FIG. 17 FIG. 12 13 FIGS.- 18 FIG. In some examples, the video conference circuitryincludes means for detecting initialization of a screen share event. For example, the means for detecting initialization of the screen share event may be implemented by the interface circuitry. In some examples, the interface circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the interface circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocks-of. In some examples, the interface circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the interface circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the interface circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 202 202 202 202 114 202 12 FIG. The video conference circuitryincludes example video frame generator circuitry, which is structured to generate video frames corresponding to screen share content. In some examples, the video frame generator circuitryis instantiated by processor circuitry executing video frame generator instructions and/or configured to perform operations such as those represented by the flowchart of. The video frame generator circuitrygenerates the video frames to include in the transport stream of video and audio data for the video conferencing meeting. For example, the video frame generator circuitrymay generate video frames based on image data from the camera. In some examples, the video frame generator circuitrygenerates frames based on screen share content (e.g., screen share frames, screen share images, etc.).
132 202 202 1612 202 1700 1208 202 1800 202 202 16 FIG. 17 FIG. 12 FIG. 18 FIG. In some examples, the video conference circuitryincludes means for generating a screen share frame. For example, the means for generating the screen share frame may be implemented by the exampled video frame generator circuitry. In some examples, the video frame generator circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the video frame generator circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocksof. In some examples, the video frame generator circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the video frame generator circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the video frame generator circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 204 204 206 200 204 204 2 FIG. 2 FIG. The video conference circuitryincludes an example database, which is structured to store information. For example, the databaseofcan store user data, such as user profiles, user settings, and/or user preferences received via the interface circuitry. The example databaseofis implemented by any memor(ies), storage device(s) and/or storage disc(s) for storing data such as, flash memory, magnetic media, optical media, etc. Furthermore, the data stored in the example databasemay be in any data format such as, for example, binary data, comma delimited data, tab delimited data, structured query language (SQL) structures, image data, etc.
132 208 110 208 200 208 208 208 102 114 116 110 208 208 204 210 212 2 FIG. 12 FIG. The video conference circuitryofincludes example interactive context determiner circuitry, which is structured to dynamically determine an interactive context (e.g., a user's interactive intent relative to screen share content on a display screens(s)). For example, the interactive context determiner circuitrymay identify an interactive context in response to determining that a screen sharing event is initiated (e.g., via the interface circuitry). In some examples, the interactive context determiner circuitryis instantiated by processor circuitry executing interactive context determiner instructions and/or configured to perform operations such as those represented by the flowchart of. The interactive context determiner circuitrydetermines interactive context from user interactions with screen share content and the contextual information using one or more modalities. The interactive context determiner circuitrymay obtain input data from devices that are communicatively coupled to the electronic device, such as the camera, microphone, input device(s), etc. In some examples, the interactive context determiner circuitryapplies rules and/or ML algorithms (e.g., models) to determine the interactive context. For example, the interactive context determiner circuitrycan process input data and application contextual data using an ML model, heuristics, rules, policies, etc. Accordingly the databaseincludes example rules, which can include heuristics, policies, processes, etc.) and example models.
208 214 214 214 12 FIG. To facilitate determination of interactive context, the interactive context determiner circuitryincludes example configuration determiner circuitry, which is structured to determine display contextual data (e.g., display context) and application contextual data (application context). In some examples, the configuration determiner circuitryis instantiated by processor circuitry executing configuration determiner instructions and/or configured to perform operations such as those represented by the flowchart of. In some examples, the configuration determiner circuitryobtains the display contextual data and/or the application context data in response to a start (e.g., initialization, activation, initiation, etc.) of a screen sharing event.
102 110 110 214 110 102 214 110 110 110 214 102 114 The display (e.g., display-related) contextual data (e.g., information) can include a configuration of the electronic device, such a number of active display screens(e.g., a display screen(s)used to render screen share content) and corresponding parameters, user preferences concerning screen sharing events, current application usage, an application(s) that is being shared, etc. For example, the configuration determiner circuitrymay determine a number of display screens(e.g., monitors) that are communicatively coupled to the electronic device. The configuration determiner circuitrycan determine which display screen(s)is a transmitter screen (e.g., by determining which display screen(s)is to be shared and/or which display screen(s)includes an application(s) to be shared). In some examples, the configuration determiner circuitrydetermines parameters for the electronic deviceto be used for interactive context determination, such as a relevant camera(s)sfor eye tracking, a resolution, aspect ratio, and/or screen size(s) of a transmitter screen(s), etc.
214 214 In some examples, the configuration determiner circuitryobtains the application (e.g., application-related) contextual data (e.g., information) in response to the start of a screen sharing event. The application contextual data can include information about a specific application that is presented in screen share content. In some examples, data used to determine an interactive context can depend on a nature of the application(s) that is being shared. Depending on the application being shared, certain portions of the screen share content can become more relevant than others. For example, a computer-aided design (CAD) application may include a design section, a tools section, and a file section. Typically, the design section is more important than the tools section and the file section. The configuration determiner circuitrycollects/obtains a sequence of application contextual data over a period of time (e.g., during the screen sharing event of the video conferencing meeting, until termination of the screen sharing event, etc.). Using application information also allows keyword matching using analysis from speech from the microphone.
214 102 214 210 204 The configuration determiner circuitryobtains the application contextual data by identifying an application being interacted with during a screen sharing event and identifying any additional applications open on the electronic device. In some examples, the configuration determiner circuitrydetermines application contextual data by identifying an application being presented during the screen share event and identifying rule(s)for interactive context determination based on the application. For example, the databasecan include rules for different applications for determining the interactive context based on the application.
208 216 216 216 200 112 216 12 FIG. 1 FIG. The interactive context determiner circuitryincludes example input determiner circuitry, which is structured to obtain human interface device (HID) inputs and/or identify corresponding OS events. In some examples, the input determiner circuitryis instantiated by processor circuitry executing input determiner instructions and/or configured to perform operations such as those represented by the flowchart of. The input determiner circuitryobtains user inputs (e.g., user input data) from a presenter (e.g., via the interface circuitry) during a video conferencing meeting. In some examples, the input data includes HID inputs that are collected from HID devices (e.g., a mouse, a keyboard, a touchpad, etc.), such as the input device(s)of. In some examples, the input data can include screen scrolling, user clicks and/or selections on a screen, etc. The example input determiner circuitrycollects or otherwise obtains a sequence (e.g., series) of user input data from the user over a period of time (e.g., during the screen sharing event, until termination of the screen sharing event, etc.).
216 112 216 102 216 216 1 FIG. In some examples, the input determiner circuitryobtains operating system (OS) events corresponding to HID-related data (e.g., the HID inputs). For example, the OS events may include interrupts generated by hardware devices (e.g., interrupts triggered by a keystroke on a keyboard, mouse position, etc.), software interrupt instructions (e.g., an application program requesting reading or writing data to/from memory), or state changes in polling of input devices (e.g., the input device(s)of) and/or application programs. The input determiner circuitryidentifies OS events on the electronic devicethat correspond to the HID inputs identified by the input determiner circuitryby obtaining the OS events executed in response to the obtained HID inputs. In some examples, the OS events are included in the user input data obtained by the example input determiner circuitry.
208 208 218 212 210 218 12 FIG. The interactive context determiner circuitryprocesses the user input data, the display contextual information, the application contextual data (e.g., what application(s) are open and/or being interacted with), and/or other collected data (e.g., eye tracking data, etc.) using rules and/or a machine learning model to predict regions of screen sharing content to transmit (e.g., send) in a transport stream with video frames. Thus, the interactive context determiner circuitryincludes example execution circuitry, which is structured to execute a model(s)and/or apply a rule(s)to collected data. In some examples, at least some of the collected data is associated with a time stamp. For example, eye tracking data, user input data, OS event data, etc. can be associated with a time stamp. In some examples, the execution circuitryis instantiated by processor circuitry executing execution instructions and/or configured to perform operations such as those represented by the flowchart of.
218 214 212 210 212 110 110 The execution circuitryreceives the display contextual data and the application contextual data from the configuration determiner circuitry. In some examples, the application context data is used to determine which model(s)and/or rule(s)to apply to determine the interactive context. In some examples, the application contextual information and/or the display configuration information are static variables that bias a model. For example, the display configuration information can include coordinates of screen share content that can be used to determine whether a presenter is sharing content from one display screenover the another display screen. Such information can be used to limit a search area and/or pixels being searched to identify an interaction region.
218 216 218 218 110 218 In some examples, the execution circuitryobtains time series data, including a sequence of user input, location on the screen, and time between each user input, from the input determiner circuitry. For example, the execution circuitrycan apply a time series model to the time series data in combination with the application (or applications) being interacted with to predict intended usage during the screen sharing event. The HID input (and the corresponding OS events) can be treated as a time series data set where sequences and patterns of different types of input as well as their location on the screen are analyzed by the execution circuitry. This allows for identification of location and patterns of input as well as time between consecutive input (or a series of input) to be analyzed. For example, the time series data could be used to determine whether a pointer of a mouse not within the screen share content (e.g., whether the mouse is off the transmitter display screen(s). Depending on nature of user inputs (in terms of touch, mouse, etc.), if there is no change to mouse movement or click (or keyboard, touch, etc.), the execution circuitrycould disregard that modality. Different time series analysis techniques (e.g., methods) can be used, such as season trend decomposition, autoregressive, integrated, and/or moving average models and/or combinations thereof, such as an autoregressive integrated moving average (ARIMA), etc.
218 212 212 212 212 212 212 212 218 212 116 218 116 212 218 218 212 212 218 When content is presented and discussed by a presenter, it is possible to extract contextual information from speech input via a microphone. In some examples, the execution circuitrycan apply a computer vision based model, such as an OCR modeland/or an image recognition model(e.g., depending on a type of application), to screen share content to identify (e.g., recognize) the screen share content. For example, the execution circuitry may apply an OCR modelto a word processing document, an image recognition modelto a photography application, and both an OCR modeland an image recognition modelto a slide share application. Further, the execution circuitrycan apply an NLP based modelto audio data from the microphone. For example, the execution circuitrycan receive the audio data from the microphoneand apply the NLP based modelto the audio data, enabling the execution circuitryto perform speech recognition. The execution circuitrymay compare outputs of the NLP based model(s)and/or other modelsto determine interactive context while a presenter is talking about screen share content. Thus, the execution circuitrycan identify key words based on the screen share content and application being used, which can be mapped to regions of the screen share content to identify relevant regions and the interactive context.
218 212 210 114 218 114 218 In some examples, the execution circuitrycan apply an eye tracking modeland/or rule(s)to video data from the camerato determine interactive context based eye gaze and/or eye tracking of a presenter during the screen share event. For example, the execution circuitrycan receive image data from the camerato track a user's eye gaze this a screen share event to identify locations of the screen being looked at during a presentation. This can be used to identify relevant regions of the screen being looked at by the presenter. In some examples, the execution circuitryreceives eye tracking and/or eye gaze data from another component of the electronic device, such as an image processing component. In some examples, eye tracking is a primary modality. For example, eye tracking and/or eye gaze data could be used to determine a region of the screen share content being looked at by the presenter to limit a search of screen share content using other modalities.
218 210 212 218 218 218 2 FIG. The example execution circuitryofuses obtained and/or generated information to identify the interactive context. For example, by applying a rule(s)and/or interactive context determining model(s)to obtained and/or generated data, the execution circuitrydetermines a user's intent relative to the screen share content. As noted above, the type of data used to determine the interactive context can depend on the application being presented (e.g., a screen share application). For example, if the screen share application is a word document with text, speech becomes an important modality because the execution circuitrycan identify content within the text and identify which region of the screen share application is being spoken about using key words that are in the text in the document. If the screen share application includes a picture being discussed (e.g., a slide with a diagram), object detection would likely be more important than speech recognition. For example, if the presenter is discussing a picture of person with a dog, but is currently discussing the dog, the execution circuitrycould be used to identify a region of the image that includes the dog and use that information to build the interactive context.
114 116 208 208 In some examples, a user can select preferences for modalities used to determine an interactive context. For example, the user may choose to not use data from the cameraand/or microphonefor interactive context analysis. In some examples, the user may choose a main modality, such as input data and/or OS events. In some examples, the user may not input preferences and instead, allow the interactive context determiner circuitryto determine modalities. In such examples, the interactive context determiner circuitryis sufficiently intelligent to choose relevant modalities, drop modalities that are not relevant, and use information such as nature of application to identify the interactive context.
208 220 110 110 220 220 12 FIG. The interactive context determiner circuitryincludes example active interaction region determiner circuitry, which is structured to identify an active interaction region(s) of a display screen(e.g., a region of the display screen being interacted with) based on the interactive context. In some examples, the active interaction region(s) is defined by coordinates within a screen share frame and/or within the display screen. In some examples, the active interaction region determiner circuitryis instantiated by processor circuitry executing active interaction region determiner instructions and/or configured to perform operations such as those represented by the flowchart of. The active interaction region determiner circuitryreceives information corresponding to the interactive context and identifies coordinates within a full screen share frame that includes the active interaction region.
220 220 220 In some examples, a size of the active interaction region can vary. In some examples, the size of the active interaction region can depend on a nature of the content being shared. Some applications include separate sections that depict specific content. For example, a coding application can include a writing section (e.g., to input code), an execution section to show results, and/or other sections. Thus, if the interactive context indicates the presenter is interacting with the results section, the active interaction region determiner circuitrycan select the results section as the active interaction region. In such examples, the active interaction region coordinates correspond to coordinates of the results region. In some examples, the active interaction region determiner circuitryidentifies active interaction regions every few frames of the transmitted screen. In some examples, the active interaction region size can vary within an application. For example, a word processing application can include numerous paragraphs of different sizes. Thus, if the interactive context indicates the presenter is discussing a content of a specific paragraph, the active interaction region determiner circuitrycan select the corresponding paragraph as the active interaction region. In such examples, the active interaction region coordinates correspond to coordinates of the paragraph within the word processing application window.
220 The active interaction region determiner circuitryis structured to generate interaction metadata that includes an interactive context(s) and corresponding active interaction region(s). In some examples, the metadata includes an indication of a video frame (e.g., camera frame, screen share frame, etc.) for which the metadata corresponds. For example, the interaction metadata an indication of a time associated with the interactive context and/or the active interaction region(s). The interaction metadata can be included in a transport stream along with full screen share frames. In some examples, the interaction metadata can be included in a transport stream along with each of every few frames of the transmitted screen.
132 208 208 1612 208 1700 1214 208 1800 208 208 16 FIG. 17 FIG. 12 13 FIGS.- 18 FIG. In some examples, the video conference circuitryincludes means for determining an active interaction region relative to screen share content of a transmitter screen. For example, the means for determining the active interaction region may be implemented by the example interactive context determiner circuitry. In some examples, the interactive context determiner circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the interactive context determiner circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocksof. In some examples, the interactive context determiner circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the interactive context determiner circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the interactive context determiner circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 208 208 1612 208 1700 1214 208 1800 208 208 16 FIG. 17 FIG. 12 13 FIGS.- 18 FIG. In some examples, the video conference circuitryincludes means for determining an interactive context relative to screen share content of a transmitter screen. For example, the means for determining the interactive context may be implemented by the example interactive context determiner circuitry. In some examples, the interactive context determiner circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the interactive context determiner circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocksof. In some examples, the interactive context determiner circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the interactive context determiner circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the interactive context determiner circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 224 202 224 224 106 12 FIG. 1 FIG. The video conference circuitryincludes example encoder circuitry, which is structured to encode the video frame(s) from the video frame generator circuitry. In some examples, the encoder circuitryis instantiated by processor circuitry executing encoder instructions and/or configured to perform operations such as those represented by the flowchart of. The encoder circuitryperforms encoding (e.g., image compression) on the video frames to convert the video frames to a digital format that reduces the size of the video frame before transmitting over the network (e.g., networkof).
132 224 224 1612 224 1700 1214 224 1800 224 224 16 FIG. 17 FIG. 12 13 FIGS.- 18 FIG. In some examples, the video conference circuitryincludes means for encoding video frames. For example, the means for encoding may be implemented by encoder circuitry. In some examples, the encoder circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the encoder circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocksof. In some examples, the encoder circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the encoder circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the encoder circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 226 226 226 208 12 FIG. The video conference circuitryincludes example multiplexer circuitry, which is structured to generate a transport stream that includes full frames, audio data, and interactive context metadata. In some examples, the multiplexer circuitryis instantiated by processor circuitry executing multiplexer instructions and/or configured to perform operations such as those represented by the flowchart of. In some examples, the multiplexer circuitryreceives data from a plurality of pipelines, such as a video pipeline, an audio pipeline, and/or an interaction metadata pipeline (e.g., the interactive content determine circuitry), which can be multiplexed into a transport stream.
226 224 116 226 226 226 228 The multiplexer circuitrygenerates a transport stream (e.g., a standard digital container format for transmission and storage of audio data, video data, etc.) using the encoded video frames from the encoder circuitry, metadata corresponding to an interactive context and active interaction region coordinates, and/or audio data (e.g., from the microphoneand/or an audio pipeline). The multiplexer circuitrycombines audio data (e.g., an audio data packet), video data (e.g., a video packet that include the encoded video frames), and/or interaction metadata (e.g., an interaction metadata packet) to generate the transport stream. For example, the multiplexer circuitrymultiplexes the audio data and video data to generate the transport stream for the video conferencing meeting. The multiplexer circuitryprovides the generated transport stream to the example communication circuitry.
132 226 226 1612 226 1700 1216 226 1800 226 226 16 FIG. 17 FIG. 12 FIG. 18 FIG. In some examples, the video conference circuitryincludes means for generating a transport stream. For example, the means for generating the transport stream may be implemented by the multiplexer circuitry. In some examples, the multiplexer circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the multiplexer circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocksof. In some examples, the multiplexer circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the multiplexer circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the multiplexer circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 228 228 228 228 106 12 FIG. 1 FIG. The video conference circuitryincludes example communication circuitry, which is structured to implement a communication stack. In some examples, the communication circuitryis instantiated by processor circuitry executing communication instructions and/or configured to perform operations such as those represented by the flowchart of. The example communication circuitrygenerates a communication stack for the transport stream of the video conferencing meeting. The example communication circuitrytransmits the communication stack to other user devices participating in the video conferencing meeting via the network (e.g., the networkof).
132 228 224 1612 224 1700 1214 224 1800 224 224 16 FIG. 17 FIG. 12 13 FIGS.- 18 FIG. In some examples, the video conference circuitryincludes means for transmitting a transport stream. For example, the means for transmitting the transport stream may be implemented by the communication circuitry. In some examples, the encoder circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the encoder circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocksof. In some examples, the encoder circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the encoder circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the encoder circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
3 FIG. 1 2 FIGS.and 3 FIG. 3 FIG. 300 102 132 300 302 110 302 110 is a schematic illustration of an example screen share eventas implemented by the transmitter electronic deviceand the video conference circuitryof. The screen share eventofincludes an example screen share frameas rendered on the transmitter display screen. The screen share frameofillustrates a coding application window that is rendered on the display screenduring a video conference event.
3 FIG. 3 FIG. 3 FIG. 132 304 102 112 114 116 118 306 208 304 208 308 220 310 312 302 312 302 302 In the illustrated example of, the example video conference circuitryobtains input datacorresponding to data received from components of an electronic device, such as the input device(s), the camera, the microphone, the user proximity sensor, etc. At block, the interactive context determiner circuitryanalyzes the input dataand/or other modalities (e.g., display contextual data, application contextual data, OS event data, user data, etc.). Based on the analysis, the interactive context determine circuitrydetermines an interactive context (e.g., block). The active interaction region determiner circuitryidentifies an active interaction region for transmission and generates interaction metadata (e.g., block). The interaction metadata can include the interactive context and the active interaction region(s).illustrates an example active interaction regionof the screen share frame. As illustrated in, the action interaction regioncan be identified using coordinates of the screen share frame. In some examples, the screen share frameand the interaction metadata are associated with time stamps.
314 226 302 316 228 104 108 104 228 At block, the example multiplexer circuitrymultiplexes the (e.g., encoded) screen share frame, the interaction metadata, and/or audio data to generate a transport stream. At block, the example communication circuitrytransmits the transport stream to the receiver electronic deviceand/or to the video conference server(e.g., which can transmit the transport stream to the receiver electronic device). In some examples, the communication circuitrycan transmit the transport stream to additional or alternative devices.
4 FIG. 2 FIG. 2 FIG. 208 208 210 212 208 402 110 208 404 208 208 is a block diagram of an example implementation the interactive context determiner circuitryof. As illustrated in, the interactive context determiner circuitryincludes the rule(s)and the model(s). The interactive context determiner circuitryobtains (e.g., receives, retrieves, generates, etc.) example display contextual data, which can include screen share coordinates (e.g., coordinates of screen share content relative to a transmitter display screen). Further, the interactive context determiner circuitryobtains example application contextual data, which includes an indication of which application(s) is presented in the screen share content, an application being interacted with, and/or other open applications. In some examples, the interactive context determiner circuitryuses such information to determine which other data type(s) to collect. However, the interactive context determiner circuitrymay collect more or less data type(s) in additional or alternative examples.
208 406 408 210 206 208 206 402 404 406 408 410 218 212 412 218 220 414 4 FIG. In some examples, the interactive context determiner circuitryobtains example eye tracking (e.g., eye gaze) data, example HID input data, example OS event data, and/or information regarding usage and/or screen sharing scenarios (e.g., based on a rule(s), user data, etc.). The interactive context determiner circuitryapplies the rules/machine learning model for interactive context on the collected data,,,,,. The execution circuitryprocesses the input data and the application contextual data with the interactive context modelto determine an interactive contextfor the screen sharing event of the video conference event. In the example implementation of, the output of execution circuitryis input into the active interaction region determiner circuitry, which performs active interaction region determiner selection to identify active interaction region(s).
5 FIG. 1 2 FIGS.and 2 FIG. 132 202 202 220 414 220 414 502 412 414 220 502 226 is a block diagram of an example implementation of the video conference circuitryof. As illustrated in, the video frame generator circuitrygenerates video frames from a screen sharing event (e.g., screen share frames). The video frame generator circuitrytransmits the generated screen share frames to the active interaction region determiner circuitryto be used to identify the action interaction region(s)for the screen share frames. The active interaction region determiner circuitrydetermines the active interaction region(s)and generates example interaction metadatathat includes the interactive contextand the active interaction region(s). The active interaction region determiner circuitrytransmits the interaction metadatato the multiplexer circuitry.
202 224 224 226 226 226 226 228 108 104 The video frame generator circuitryalso transmits the generated screen share frames to the encoder circuitryfor encoding. After encoding the screen share frames, the encoder circuitrytransmits the encoded screen share frames to the multiplexer circuitry. In some examples, audio data from an audio pipeline is transmitted to the multiplexer circuitry. The multiplexer circuitrytransmits the received data to generate a transport stream. The multiplexer circuitrytransmits the transport stream to the communication circuitryto be send to the video conference serverand to receiving electronic devices.
6 FIG. 1 2 FIGS.and 6 FIG. 6 FIG. 6 FIG. 6 FIG. 132 104 132 132 is another block diagram of the video conference circuitryofas implemented by a receiver device (e.g., receiver electronic device. The video conference circuitryofmay be instantiated (e.g., creating an instance of, bring into being for any length of time, materialize, implement, etc.) by processor circuitry such as a central processing unit executing instructions. Additionally or alternatively, the video conference circuitryofmay be instantiated (e.g., creating an instance of, bring into being for any length of time, materialize, implement, etc.) by an ASIC or an FPGA structured to perform operations corresponding to the instructions. It should be understood that some or all of the circuitry ofmay, thus, be instantiated at the same or different times. Some or all of the circuitry may be instantiated, for example, in one or more threads executing concurrently on hardware and/or in series on hardware. Moreover, in some examples, some or all of the circuitry ofmay be implemented by microprocessor circuitry executing instructions to implement one or more virtual machines and/or containers.
132 200 132 104 200 132 132 200 130 6 FIG. 2 FIG. 1 FIG. The video conference circuitryofincludes the example interface circuitryof, which is structured to provide an interface between the video conference circuitryand other components of the electronic device. The interface circuitryenables the video conference circuitryand/or components therefore to receive and/or retrieve data for use in determining an interactive context. For example, a user can make selections regarding the video conference circuitryvia the interface circuitry(e.g., via the user interface circuitryof), such as selecting to join a video conference event, initiating a screen share event, terminating such events, etc.
132 228 228 228 102 108 14 FIG. 6 FIG. The video conference circuitryincludes the example communication circuitry, which is structured to implement a communication stack. In some examples, the communication circuitryis instantiated by processor circuitry executing communication instructions and/or configured to perform communication operations such as those represented by the flowchart of. The communication circuitryofis structured to receive a transport stream (e.g., from the transmitter electronic deviceand/or the video conference server).
132 602 602 602 602 602 604 602 606 12 FIG. The video conference circuitryincludes example de-multiplexer circuitry, which is structured to separate components of a transport stream, such as full frames, audio data, and interactive context metadata. In some examples, the de-multiplexer circuitryis instantiated by processor circuitry executing de-multiplexer instructions and/or configured to perform operations such as those represented by the flowchart of. For example, the de-multiplexer circuitryreceives the transport stream and separates data (e.g., audio data, image data, interaction metadata, etc.) in the transport stream into corresponding pipelines. For example, the de-multiplexer circuitrysend audio data to an audio pipeline. In some examples, the de-multiplexer circuitrysends image data to example decoder circuitry. In some examples, the de-multiplexer circuitrysends interaction metadata to example render determiner circuitry.
132 602 602 1612 602 1700 1404 602 1800 602 602 16 FIG. 17 FIG. 14 FIG. 18 FIG. In some examples, the video conference circuitryincludes means for separating a transport stream. For example, the means for separating the transport stream may be implemented by demultiplexer circuitry. In some examples, the demultiplexer circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the demultiplexer circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blockof. In some examples, the demultiplexer circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the demultiplexer circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the demultiplexer circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 604 604 604 114 604 604 12 FIG. The video conference circuitryincludes the example decoder circuitry, which is structured to decode a series of frames. In some examples, the decoder circuitryis instantiated by processor circuitry executing decoder instructions and/or configured to perform operations such as those represented by the flowchart of. In some examples, the decoder circuitrydecodes video frames from a camera. In additional or alternative examples, the decoder circuitrydecodes screen share frames corresponding to a screen share event. In some examples, the decoder circuitrydecodes the frames by applying a decoding algorithm to the encoded frames.
132 604 604 1612 604 1700 1406 604 1800 604 604 16 FIG. 17 FIG. 14 FIG. 18 FIG. In some examples, the video conference circuitryincludes means for decoding an image. For example, the means for decoding the image may be implemented by the example decoder circuitry. In some examples, the decoder circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the decoder circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blockof. In some examples, the decoder circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the decoder circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the decoder circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 606 104 606 12 FIG. The video conference circuitryincludes example render determiner circuitry, which is structured to dynamically determine how to render received screen share content based on interactive context metadata and a configuration of the electronic device. In some examples, the example render determiner circuitryis instantiated by processor circuitry executing render determiner instructions and/or configured to perform operations such as those represented by the flowchart of.
204 204 608 610 612 612 134 612 132 2 FIG. 6 FIG. The video conference circuitry includes the example databaseof, which is structured to store information. The databaseoffurther includes example rule(s), example model(s), and example user data. For example, the user datamay include user preferences for rendering screen share content in accordance with parameters of the display screen(s). In some examples, the user dataincludes a user profile(s) and/or user setting(s) pertaining to the video conference circuitry.
606 214 104 134 214 110 104 134 134 214 104 118 The render determiner circuitryincludes the example configuration determiner circuitry, which is structured to determine display contextual data. For example, the display contextual data can include a configuration of the electronic device, such a number of active display screen(s)and corresponding parameters, corresponding parameters, user preferences concerning screen sharing events, etc. For example, the configuration determiner circuitrymay determine a number of display screens(e.g., monitors) that are communicatively coupled to the electronic device, which display screen(s)is a receiver screen (e.g., by determining which display screen(s)is to render a screen share frame), etc. In some examples, the configuration determiner circuitrydetermines parameters for the electronic deviceto be used render decision determination, such as a relevant sensor(s), a resolution, aspect ratio, and/or screen size(s) of a receiver screen(s), etc.
606 614 134 614 614 118 134 614 118 614 134 104 614 218 15 FIG. 1 FIG. The render determiner circuitryincludes the example proximity determiner circuitry, which is structured to determine a distance of an audience participant to a relevant receiver screen. In some examples, the proximity determiner circuitryis instantiated by processor circuitry executing input determiner instructions and/or configured to perform operations such as those represented by the flowchart of. The proximity determiner circuitrymonitors the user proximity sensor(s)ofto identify a proximity (e.g., distance) of the audience participant to the receiver screen. For example, the proximity determiner circuitrycan obtain sensor data (e.g., signals output by) from the user proximity sensor(s). The proximity determiner circuitrycan use the sensor data to identify a distance of the user from the receiver screenand/or receiver electronic device. In some examples, the proximity determiner circuitrytransmits the distance to example execution circuitry.
132 218 608 610 218 218 104 132 218 134 118 614 206 218 608 610 134 134 15 16 FIGS.- The video conference circuitryincludes example execution circuitry, which is structured to apply a rule(s)and/or execute a model(s). In some examples, the execution circuitryis instantiated by processor circuitry executing model execution instructions and/or configured to perform operations such as those represented by the flowcharts of. In some examples, the execution circuitryobtains (e.g., receives and/or retrieves) data from components of the electronic deviceand/or video conference circuitry. For example, the execution circuitryreceives the interactive context and active interaction region(s) (e.g., from the interactive metadata), display parameters corresponding to the display screen(s), user proximity data from the user proximity sensor(s)and/or the proximity determiner circuitry, user data, etc. The example execution circuitryapplies a rule(s)and/or executes a model(s)based on the data to generate a render decision. For example, the render decision can include instructions to render the entire screen share frame (e.g., if the display screenis of similar size and resolution to the screen share frame). In some examples, the render decision can include instructions to render a portion of the screen share frame corresponding to the active interaction region. In some such examples, the portion may be the active interaction region. In some examples, the portion may include the active interaction region and a region adjacent the active interaction region (e.g., based on a size of the active interaction region and an aspect ratio of the display screen). The render decision can include other instructions in additional or alternative examples.
132 606 606 1612 606 1700 1410 1502 1512 606 1800 226 606 16 FIG. 17 FIG. 14 15 FIGS.- 18 FIG. In some examples, the video conference circuitryincludes means for generating (e.g., determining) a render decision. For example, the means for generating the render decision may be implemented by the example render determiner circuitry. In some examples, the render determiner circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the render determiner circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blocksand-of. In some examples, the render determiner circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the multiplexer circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the render determiner circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 616 134 616 616 134 616 616 616 14 FIG. The video conference circuitryincludes example frame processor circuitry, which is structured to process decoded screen share frames based on a render decision for render on the display screen(s). In some examples, the frame processor circuitryis instantiated by processor circuitry executing video frame generator instructions and/or configured to perform operations such as those represented by the flowchart of. For example, the frame processor circuitryprocess the screen share frame by identifying a portion of the screen share frame that includes the active interaction region and providing the portion of the screen share frame for render on the display screen. In some examples, the frame processor circuitrycrops a screen share frame based on an active interaction region. For example, the frame processor circuitrymay crop the screen share frame to the coordinates of the active interaction region. In some examples, the frame processor circuitrymay crop the screen share frame to include the coordinates of the active interaction region and an area adjacent the active interaction region.
132 616 616 1612 226 1700 1412 616 1800 616 616 16 FIG. 17 FIG. 14 FIG. 18 FIG. In some examples, the video conference circuitryincludes means for processing a screen share frame. For example, the means for processing the screen share frame may be implemented by the example frame processor circuitry. In some examples, the frame processor circuitrymay be instantiated by processor circuitry such as the example processor circuitryof. For instance, the multiplexer circuitrymay be instantiated by the example microprocessorofexecuting machine executable instructions such as those implemented by at least blockof. In some examples, the frame processor circuitrymay be instantiated by hardware logic circuitry, which may be implemented by an ASIC, XPU, or the FPGA circuitryofstructured to perform operations corresponding to the machine readable instructions. Additionally or alternatively, the frame processor circuitrymay be instantiated by any other combination of hardware, software, and/or firmware. For example, the frame processor circuitrymay be implemented by at least one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, an XPU, a comparator, an op-amp, a logic circuit, etc.) structured to execute some or all of the machine readable instructions and/or to perform some or all of the operations corresponding to the machine readable instructions without executing software or firmware, but other structures are likewise appropriate.
132 200 208 214 216 218 220 202 224 226 228 602 604 606 616 132 200 208 214 216 218 220 202 224 226 228 602 604 606 616 132 132 1 FIG. 2 6 FIGS.and/or 2 6 FIGS.and/or 1 FIG. 1 FIG. 2 6 FIGS.and/or While an example manner of implementing the video conference circuitryofis illustrated in, one or more of the elements, processes, and/or devices illustrated inmay be combined, divided, re-arranged, omitted, eliminated, and/or implemented in any other way. Further, the example interface circuitry, example interactive context determiner circuitry, example configuration determiner circuitry, example input determiner circuitry, example execution circuitry, example active interaction region determiner circuitry, example video frame generator circuitry, example encoder circuitry, example multiplexer circuitry, example communication circuitry, example de-multiplexer circuitry, example decoder circuitry, example render determiner circuitry, example frame processor circuitry, and/or, more generally, the example video conference circuitryof, may be implemented by hardware alone or by hardware in combination with software and/or firmware. Thus, for example, any of the example interface circuitry, example interactive context determiner circuitry, example configuration determiner circuitry, example input determiner circuitry, example execution circuitry, example active interaction region determiner circuitry, example video frame generator circuitry, example encoder circuitry, example multiplexer circuitry, example communication circuitry, example de-multiplexer circuitry, example decoder circuitry, example render determiner circuitry, example frame processor circuitry, and/or, more generally, the example video conference circuitry, could be implemented by processor circuitry, analog circuit(s), digital circuit(s), logic circuit(s), programmable processor(s), programmable microcontroller(s), graphics processing unit(s) (GPU(s)), digital signal processor(s) (DSP(s)), application specific integrated circuit(s) (ASIC(s)), programmable logic device(s) (PLD(s)), and/or field programmable logic device(s) (FPLD(s)) such as Field Programmable Gate Arrays (FPGAs). Further still, the example video conference circuitryofmay include one or more elements, processes, and/or devices in addition to, or instead of, those illustrated in, and/or may include more than one of any or all of the illustrated elements, processes and devices.
7 FIG. 1 2 FIGS.and 132 228 102 228 602 602 604 604 616 602 602 502 606 is a block diagram of an example implementation of the video conference circuitryof. As illustrated in FIG. the communication circuitryreceiving the transport stream from the transmitter electronic device. The communication circuitrytransmits the transport stream to the de-multiplexer circuitryto be de-multiplexed. The de-multiplexer circuitrytransmits encoded screen share frames from the decoder circuitryfor decoding. By decoding the screen share frames, the decoder circuitrygenerates the screen share frames, which are transmitted to the frame processor circuitry. In some examples, the de-multiplexer circuitrytransmits audio data to an audio pipeline. The de-multiplexer circuitrytransmits the interaction metadatato the render determiner circuitry.
8 FIG. 6 FIG. 606 606 502 602 606 802 114 118 104 606 804 134 606 706 Referring now to, which illustrates an example implementation of the render determiner circuitryofin accordance with the teachings of this disclosure. The render determiner circuitryobtains the interaction metadatafrom the de-multiplexer circuitry. The render determiner circuitryalso receives example sensor(s) data, which can include data from the camera, the user proximity sensor, and/or another sensor(s) coupled to the receiver electronic device. The render determiner circuitryalso receives screen data, which includes information pertaining to the receiver display screen(s), such as resolution, size, etc. The render determiner circuitryprocesses the input data and to generate an example render decision.
7 FIG. 606 706 616 616 706 616 414 134 Referring again to, the render determiner circuitrytransmits the render decisionto the frame processor circuitry. The frame processor circuitrygenerates render frames based on the screen share frames and the render decision. For example, the frame processor circuitrymay crop the screen share frames based on the active interaction region(s)and/or a size of the receiver display screento generate the render frames. In some examples, the render frames are the screen share frames.
9 9 FIGS.A andB 9 FIG.A 9 FIG.B 102 110 102 104 134 104 depict example screen share content as transmitted by a transmitter device and as rendered by a receiving device, respectively, in accordance with the teachings of this disclosure.depicts an example transmitter electronic deviceincludes a display screenused by a presenter during a screen share event. The transmitter electronic deviceis in communication with a receiver electronic deviceand/or other electronic devices during the screen share event. The display screen is relatively large (e.g., 32 inch diameter) and of higher resolution (e.g., 4 k resolution) as compared to a receiver screen(e.g., 14 inch diameter, 1080p resolution) of the receiver electronic deviceof.
9 FIG.A 9 FIG.B 902 904 904 104 904 134 104 904 134 illustrates an example screen share frameand an example active interaction regionwithin the screen share frame.illustrates the active interaction regionas rendered by the receiver device. As illustrated, the active interaction regionis much smaller and with a different aspect ratio than the receiver screen. Thus, the receiver devicedetermines to render the active interaction regionand additional area of the screen share frame to fit the content to the receiver screenparameters.
10 FIG.A 9 FIG.A 10 FIG.B 1002 1002 1002 134 104 1002 134 depicts the example screen share content ofincluding another example active interaction regionidentified in accordance with the teachings of this disclosure.depicts the active interaction regionas rendered by another receiving device in accordance with the teachings of this disclosure. As illustrated, the active interaction regionis substantially the same size and aspect ratio as the receiver screen. Thus, the receiver devicedetermines to render the active interaction regionto fit the content to the receiver screenparameters.
11 FIG.A 102 102 110 110 1100 102 104 110 110 134 104 a b a b depicts an example multi (e.g., dual) screen configuration of a transmitter electronic device. The transmitter electronic deviceincludes a first display screenand a second display screen, which are both used by a presenter to present screen share content (e.g., an example screen share frame) during a screen share event. The transmitter electronic deviceis in communication with a receiver electronic deviceand/or other electronic devices during the screen share event. The display screens,are relatively large (e.g., 32 inch diameter) and of higher resolution (e.g., 4 k resolution) as compared to a receiver screen(e.g., 14 inch diameter, 1080p resolution) of the receiver electronic device.
11 FIG.A 110 110 904 0 1002 1 1102 2 904 1002 110 1102 110 102 904 1002 1102 104 1100 a b a b As illustrated in, the transmitter display screens,includes a first active interaction regionat a first time (t), a second active interaction regionat a second time (t), and a third active interaction regionat a third time (t). The first active interaction regionand the second active interaction regioncorrespond to the first display screen. The third active interaction regioncorresponds to the second display screen. The transmitter electronic devicetransmits an indication of the active interaction regions,,to the receiver electronic devicealong with the screen share frame.
904 1002 1102 0 1 3 104 904 1100 104 0 1002 1100 104 1 1102 1100 104 2 132 6 110 110 134 904 1002 1102 110 110 11 FIG.B 11 FIG.C 11 FIG.D 11 11 FIGS.A-D 1 2 FIGS., a b a b. On receiving the active interaction regions,,at times t, t, and t, respectively, in the multiplexed metadata, the receiver electronic devicecan make decisions to render the content such that the active interaction region is shown. This gives opportunity for the receiver to zoom the content accordingly so that it would become readable to the user.illustrates the first active interaction regionof the screen share frameas rendered by the receiver electronic deviceat the first time (t).illustrates the second active interaction regionof the screen share frameas rendered by the receiver electronic deviceat the second time (t).illustrates the third active interaction regionof the screen share frameas rendered by the receiver electronic deviceat the third time (t). As illustrated in, the video conference circuitryof, and/orcan be used to dynamically render screen share content across transmitter display screen(s),. The receiver display screentransition to different active interaction regions,,during the presentation while the user is interacting with, looking at or talking about a certain section of the transmitter display screen(s),
132 6 1612 1600 132 1 2 FIGS., 12 15 FIGS.- 16 FIG. 17 18 FIGS.and/or 12 15 FIGS.- Flowcharts representative of example machine readable instructions, which may be executed to configure processor circuitry to implement the video conference circuitryof, and/or, is shown in. The machine readable instructions may be one or more executable programs or portion(s) of an executable program for execution by processor circuitry, such as the processor circuitryshown in the example processor platformdiscussed below in connection withand/or the example processor circuitry discussed below in connection with. The program may be embodied in software stored on one or more non-transitory computer readable storage media such as a compact disk (CD), a floppy disk, a hard disk drive (HDD), a solid-state drive (SSD), a digital versatile disk (DVD), a Blu-ray disk, a volatile memory (e.g., Random Access Memory (RAM) of any type, etc.), or a non-volatile memory (e.g., electrically erasable programmable read-only memory (EEPROM), FLASH memory, an HDD, an SSD, etc.) associated with processor circuitry located in one or more hardware devices, but the entire program and/or parts thereof could alternatively be executed by one or more hardware devices other than the processor circuitry and/or embodied in firmware or dedicated hardware. The machine readable instructions may be distributed across multiple hardware devices and/or executed by two or more hardware devices (e.g., a server and a client hardware device). For example, the client hardware device may be implemented by an endpoint client hardware device (e.g., a hardware device associated with a user) or an intermediate client hardware device (e.g., a radio access network (RAN)) gateway that may facilitate communication between a server and an endpoint client hardware device). Similarly, the non-transitory computer readable storage media may include one or more mediums located in one or more hardware devices. Further, although the example program is described with reference to the flowchart illustrated in, many other methods of implementing the example video conference circuitrymay alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined. Additionally or alternatively, any or all of the blocks may be implemented by one or more hardware circuits (e.g., processor circuitry, discrete and/or integrated analog and/or digital circuitry, an FPGA, an ASIC, a comparator, an operational-amplifier (op-amp), a logic circuit, etc.) structured to perform the corresponding operation without executing software or firmware. The processor circuitry may be distributed in different network locations and/or local to one or more hardware devices (e.g., a single-core processor (e.g., a single core central processor unit (CPU)), a multi-core processor (e.g., a multi-core CPU, an XPU, etc.) in a single machine, multiple processors distributed across multiple servers of a server rack, multiple processors distributed across one or more server racks, a CPU and/or a FPGA located in the same package (e.g., the same integrated circuit (IC) package or in two or more separate housings, etc.).
The machine readable instructions described herein may be stored in one or more of a compressed format, an encrypted format, a fragmented format, a compiled format, an executable format, a packaged format, etc. Machine readable instructions as described herein may be stored as data or a data structure (e.g., as portions of instructions, code, representations of code, etc.) that may be utilized to create, manufacture, and/or produce machine executable instructions. For example, the machine readable instructions may be fragmented and stored on one or more storage devices and/or computing devices (e.g., servers) located at the same or different locations of a network or collection of networks (e.g., in the cloud, in edge devices, etc.). The machine readable instructions may require one or more of installation, modification, adaptation, updating, combining, supplementing, configuring, decryption, decompression, unpacking, distribution, reassignment, compilation, etc., in order to make them directly readable, interpretable, and/or executable by a computing device and/or other machine. For example, the machine readable instructions may be stored in multiple parts, which are individually compressed, encrypted, and/or stored on separate computing devices, wherein the parts when decrypted, decompressed, and/or combined form a set of machine executable instructions that implement one or more operations that may together form a program such as that described herein.
In another example, the machine readable instructions may be stored in a state in which they may be read by processor circuitry, but require addition of a library (e.g., a dynamic link library (DLL)), a software development kit (SDK), an application programming interface (API), etc., in order to execute the machine readable instructions on a particular computing device or other device. In another example, the machine readable instructions may need to be configured (e.g., settings stored, data input, network addresses recorded, etc.) before the machine readable instructions and/or the corresponding program(s) can be executed in whole or in part. Thus, machine readable media, as used herein, may include machine readable instructions and/or program(s) regardless of the particular format or state of the machine readable instructions and/or program(s) when stored or otherwise at rest or in transit.
The machine readable instructions described herein can be represented by any past, present, or future instruction language, scripting language, programming language, etc. For example, the machine readable instructions may be represented using any of the following languages: C, C++, Java, C #, Perl, Python, JavaScript, HyperText Markup Language (HTML), Structured Query Language (SQL), Swift, etc.
12 15 FIGS.- As mentioned above, the example operations ofmay be implemented using executable instructions (e.g., computer and/or machine readable instructions) stored on one or more non-transitory computer and/or machine readable media such as optical storage devices, magnetic storage devices, an HDD, a flash memory, a read-only memory (ROM), a CD, a DVD, a cache, a RAM of any type, a register, and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the terms non-transitory computer readable medium, non-transitory computer readable storage medium, non-transitory machine readable medium, and non-transitory machine readable storage medium are expressly defined to include any type of computer readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media. As used herein, the terms “computer readable storage device” and “machine readable storage device” are defined to include any physical (mechanical and/or electrical) structure to store information, but to exclude propagating signals and to exclude transmission media. Examples of computer readable storage devices and machine readable storage devices include random access memory of any type, read only memory of any type, solid state memory, flash memory, optical discs, magnetic disks, disk drives, and/or redundant array of independent disks (RAID) systems. As used herein, the term “device” refers to physical structure such as mechanical and/or electrical equipment, hardware, and/or circuitry that may or may not be configured by computer readable instructions, machine readable instructions, etc., and/or manufactured to execute computer readable instructions, machine readable instructions, etc.
“Including” and “comprising” (and all forms and tenses thereof) are used herein to be open ended terms. Thus, whenever a claim employs any form of “include” or “comprise” (e.g., comprises, includes, comprising, including, having, etc.) as a preamble or within a claim recitation of any kind, it is to be understood that additional elements, terms, etc., may be present without falling outside the scope of the corresponding claim or recitation. As used herein, when the phrase “at least” is used as the transition term in, for example, a preamble of a claim, it is open-ended in the same manner as the term “comprising” and “including” are open ended. The term “and/or” when used, for example, in a form such as A, B, and/or C refers to any combination or subset of A, B, C such as (1) A alone, (2) B alone, (3) C alone, (4) A with B, (5) A with C, (6) B with C, or (7) A with B and with C. As used herein in the context of describing structures, components, items, objects and/or things, the phrase “at least one of A and B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. Similarly, as used herein in the context of describing structures, components, items, objects and/or things, the phrase “at least one of A or B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. As used herein in the context of describing the performance or execution of processes, instructions, actions, activities and/or steps, the phrase “at least one of A and B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B. Similarly, as used herein in the context of describing the performance or execution of processes, instructions, actions, activities and/or steps, the phrase “at least one of A or B” is intended to refer to implementations including any of (1) at least one A, (2) at least one B, or (3) at least one A and at least one B.
As used herein, singular references (e.g., “a”, “an”, “first”, “second”, etc.) do not exclude a plurality. The term “a” or “an” object, as used herein, refers to one or more of that object. The terms “a” (or “an”), “one or more”, and “at least one” are used interchangeably herein. Furthermore, although individually listed, a plurality of means, elements or method actions may be implemented by, e.g., the same entity or object. Additionally, although individual features may be included in different examples or claims, these may possibly be combined, and the inclusion in different examples or claims does not imply that a combination of features is not feasible and/or advantageous.
12 FIG. 12 FIG. 1 FIG. 1 FIG. 1200 1200 1202 200 200 130 200 102 130 102 110 112 130 200 is a flowchart representative of example machine readable instructions and/or example operationsthat may be executed and/or instantiated by processor circuitry to generate a multiplexed transport stream that includes screen share content and an interactive context. The machine readable instructions and/or the operationsofbegin at block, at which the interface circuitryobtains a selection to join a video conference. For example, the interface circuitrymay obtain data related to a video conferencing event from a user via the user interface circuitryof. The interface circuitryobtains and analyzes data from components of the electronic device, such as the user interface circuitry, which is a graphical interface that allows the user of the electronic deviceofto input information (e.g., related to the video conference event, etc.) via the display screenand/or via one or more input devices. In some examples, the user utilizes the user interface circuitrygenerate a selection to join or leave the video conferencing meeting, which is consequently received by the interface circuitry.
1204 132 132 110 130 102 At block, the video conference circuitryrenders the video conference. For example, the video conference circuitrymay render the video conference event on the display screen(s), which can be viewed and/or interacted with by a user via the user interface circuitryof the electronic device. The rendered video conference can allow a user to make additional selections, such as initiation of a screen share event, termination of an event, etc.
1206 132 114 102 1208 202 202 114 1210 224 At block, the video conference circuitryreceives image data from an example camera. For example, the image data may corresponding to an environment surrounding a user of the electronic device. At block, example video frame generator circuitrygenerates video frames. For example, the video frame generator circuitrygenerates video frames based on the image data from the camera. At block, example encoder circuitryreceives and encodes the video frames to generate a video stream.
1212 200 200 1204 1216 1212 1214 208 At block, the interface circuitrydetermines whether screen share is active. For example, the interface circuitrymay identify and/or obtain a user selection to start screen sharing (e.g., initializing a screen share event). If the answer to blockis NO, control returns to block, discussed below. If the answer to blockis YES, control advances to block, at which interactive context determiner circuitrydetermines an interactive context to generate interaction metadata.
1216 226 226 At blockexample multiplexer circuitrygenerates a transport stream. For example, the multiplexer circuitrycan receives audio data (e.g., from an audio pipeline), video data (e.g., from a video pipeline), screen share frames, and/or interaction metadata and apply a multiplexing technique to generate the transport stream.
1218 128 104 128 108 128 104 1 FIG. At block, example communication circuitrytransmits the transport stream to one or more receiving devices, such as a receiving electronic device. For example, the communication circuitrycan transport the transport stream to the video conference serverof, which can send the transport stream to each audient participant in the video conference event. In some examples, the communication circuitrytransmits the transport stream directly to the receiving electronic device.
1220 200 200 102 130 102 106 102 1220 1206 114 1 FIG. At block, the interface circuitrydetermines whether the video conference event has been terminated. For example, the interface circuitrycan determine whether a user of the electronic deviceselected to terminate the video conference event (e.g., via the user interface circuitryof). In additional or alternative example, the video conference event can be terminated in other manners. For example, if the electronic deviceloses a connection to the network, if the electronic devicemalfunctions, etc. If the answer to blockis NO, control returns to block, at which the cameracontinues to capture image data.
13 FIG. 13 FIG. 1210 1210 1302 214 is a flowchart representative of example machine readable instructions and/or example operationsthat may be executed and/or instantiated by processor circuitry to determine an interactive context and active interaction region(s). The machine readable instructions and/or the operationsofbegin at block, at which example configuration determiner circuitrydetermines application contextual data.
For example, the application contextual data can include an application that corresponds to the screen share content. In some examples, the application contextual data includes a nature of a rendered application to aid in determining an interactive context.
1304 214 110 110 110 At block, the configuration determiner circuitrydetermine display contextual data. The display contextual data can include, for example, a size of the screen share content (e.g., based on a size of the display screen). In some examples, display contextual data includes an aspect ratio and/or resolution of the display screen. In some examples, the includes an indication of different display screensthat are being used for a screen share event.
1306 216 110 218 112 1 FIG. At block, the input determiner circuitryobtains data from example input devices. For example, the execution circuitrymay obtain input data from HID inputs that are collected from HID devices (e.g., a mouse, a keyboard, a touchpad, etc.), such as the input device(s)of. In some examples, the input data can include screen scrolling, user clicks and/or selections on a screen, etc.
1308 216 112 112 216 102 216 1 FIG. At block, the input determiner circuitryobtains operating system (OS) events corresponding to the input device(s). For example, the OS events may include interrupts generated by hardware devices (e.g., interrupts triggered by a keystroke on a keyboard, mouse position, etc.), software interrupt instructions (e.g., an application program requesting reading or writing data to/from memory), or state changes in polling of input devices (e.g., the input device(s)of) and/or application programs. The input determiner circuitryidentifies OS events on the electronic devicethat correspond to the HID inputs identified by the input determiner circuitryby obtaining the OS events executed in response to the obtained HID inputs.
1310 218 218 114 116 1312 218 218 212 114 218 212 212 218 At block, the execution circuitryobtains sensor data from one or more sensor(s). For example, the execution circuitrymay receive image data from a camera, audio data from a microphone, and/or other types of sensor data. At block, the execution circuitryapplies an ML model to the sensor data. For example, the execution circuitrymay apply an eye tracking modelto the cameraimage data to perform eye tracking. The execution circuitrymay apply an NLP based modelto audio data to perform speech recognition. In some examples, the model(s)applied by the execution circuitryare based on an application corresponding to the screen share content.
1314 208 212 210 210 212 218 At block, the interactive context determiner circuitrydetermines an interactive context using an ML model(s)and/or a rule(s)based on the collected data. uses obtained and/or generated information to identify the interactive context. For example, by applying a rule(s)and/or interactive context determining model(s)to obtained and/or generated data, the execution circuitrydetermines a user's intent relative to the screen share content
1316 220 220 At block, example active interaction region determiner circuitrydetermines an active interaction region(s) that defines coordinates of an interaction area of a screen share frame. Based on the interactive context and the screen share coordinates, the active interaction region determiner circuitryidentifies coordinates of an area of a full screen share frame that includes the active interaction region. In some examples, a size of the active interaction region can vary (e.g., depending on the application).
1318 220 110 220 226 At block, the active interaction region determiner circuitrygenerates interaction metadata for inclusion in the transport stream. For example, the interaction metadata can include the interactive context(s), the active interaction region(s), display screen(s)information, etc. In some examples, the active interaction region determiner circuitrytransmits the interaction metadata to the multiplexer circuitryfor inclusion in the transport stream.
14 FIG. 14 FIG. 1400 1400 1402 228 is a flowchart representative of example machine readable instructions and/or example operationsthat may be executed and/or instantiated by processor circuitry to dynamically render a screen share event. The machine readable instructions and/or the operationsofbegin at block, at which example communication circuitryreceives a transport stream(s).
1404 602 At block, example de-multiplexer circuitryapplies a de-multiplexing algorithm to de-multiplex the transport stream to generate an encoded video stream and metadata corresponding to an interactive context and active interaction regions.
1406 604 1408 606 1410 616 1412 616 134 616 130 134 At block, example decoder circuitrydecodes the video stream to generate video frames. At block, example render determiner circuitryanalyzes data to generate a render decision. At block, example frame processor circuitryprocesses screen share frame(s) based on the render decision. At block, the frame processor circuitrytransmits the processed screen share frames for render on the display screen. For example, the frame processor circuitrymay transmits the processed screen share frames to the user interface circuitryfor render on the display screen.
1414 132 228 1414 1404 1414 At block, the video conference circuitrydetermines whether the communication circuitryreceived another transport stream. If the answer to blockis YES, control returns to block. If the answer to blockis NO, control ends.
15 FIG. 15 FIG. 1410 1410 1502 606 602 is a flowchart representative of example machine readable instructions and/or example operationsthat may be executed and/or instantiated by processor circuitry to generate a render decision. The machine readable instructions and/or the operationsofbegin at block, at which the render determiner circuitryreceives the interaction metadata (e.g., from the de-multiplexer circuitry).
1504 214 134 214 134 At block, the configuration determiner circuitryobtains display information of the display screen. For examples, the configuration determiner circuitrymay identify a size of the display screen, resolution of the display screen, etc.
1506 614 118 614 104 1508 218 612 204 612 1510 218 610 608 1512 606 At block, example proximity determiner circuitryreceives sensor data from an example user proximity sensor. The proximity determiner circuitrydetermines a distance of a respective audience participant (e.g., user) from the electronic device. At block, the execution circuitryobtains example user datafrom the databaseand/or the display information and user proximity information. For example, the user datacan include user preferences, user profiles, and/or other information to be used to determine a render decision. At block, the execution circuitryapplies an ML model(s)and/or an example rule(s)using the obtained data. At block, the render determiner circuitrygenerates a render decision.
16 FIG. 12 15 FIGS.- 1 2 FIGS., 1600 132 6 1600 is a block diagram of an example processor platformstructured to execute and/or instantiate the machine readable instructions and/or the operations ofto implement the video conference circuitryof, and/or. The processor platformcan be, for example, a server, a personal computer, a workstation, a self-learning machine (e.g., a neural network), a mobile device (e.g., a cell phone, a smart phone, a tablet such as an iPad™), a personal digital assistant (PDA), an Internet appliance, a digital video recorder, a gaming console, a personal video recorder, a set top box, a headset (e.g., an augmented reality (AR) headset, a virtual reality (VR) headset, etc.) or other wearable device, or any other type of computing device.
1600 1612 1612 1612 1612 1612 200 208 214 216 218 220 202 224 226 228 602 604 606 616 The processor platformof the illustrated example includes processor circuitry. The processor circuitryof the illustrated example is hardware. For example, the processor circuitrycan be implemented by one or more integrated circuits, logic circuits, FPGAs, microprocessors, CPUs, GPUs, DSPs, and/or microcontrollers from any desired family or manufacturer. The processor circuitrymay be implemented by one or more semiconductor based (e.g., silicon based) devices. In this example, the processor circuitryimplements example interface circuitry, example interactive context determiner circuitry, example configuration determiner circuitry, example input determiner circuitry, example execution circuitry, example active interaction region determiner circuitry, example video frame generator circuitry, example encoder circuitry, example multiplexer circuitry, example communication circuitry, example de-multiplexer circuitry, example decoder circuitry, example render determiner circuitry, and/or example frame processor circuitry.
1612 1613 1612 1614 1616 1618 1614 1616 1614 1616 1617 The processor circuitryof the illustrated example includes a local memory(e.g., a cache, registers, etc.). The processor circuitryof the illustrated example is in communication with a main memory including a volatile memoryand a non-volatile memoryby a bus. The volatile memorymay be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS® Dynamic Random Access Memory (RDRAM®), and/or any other type of RAM device. The non-volatile memorymay be implemented by flash memory and/or any other desired type of memory device. Access to the main memory,of the illustrated example is controlled by a memory controller.
1600 1620 1620 The processor platformof the illustrated example also includes interface circuitry. The interface circuitrymay be implemented by hardware in accordance with any type of interface standard, such as an Ethernet interface, a universal serial bus (USB) interface, a Bluetooth® interface, a near field communication (NFC) interface, a Peripheral Component Interconnect (PCI) interface, and/or a Peripheral Component Interconnect Express (PCIe) interface.
1622 1620 1622 1612 1622 In the illustrated example, one or more input devicesare connected to the interface circuitry. The input device(s)permit(s) a user to enter data and/or commands into the processor circuitry. The input device(s)can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, an isopoint device, and/or a voice recognition system.
1624 1620 1624 1620 One or more output devicesare also connected to the interface circuitryof the illustrated example. The output device(s)can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display (LCD), a cathode ray tube (CRT) display, an in-place switching (IPS) display, a touchscreen, etc.), a tactile output device, a printer, and/or speaker. The interface circuitryof the illustrated example, thus, typically includes a graphics driver card, a graphics driver chip, and/or graphics processor circuitry such as a GPU.
1620 1626 The interface circuitryof the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem, a residential gateway, a wireless access point, and/or a network interface to facilitate exchange of data with external machines (e.g., computing devices of any kind) by a network. The communication can be by, for example, an Ethernet connection, a digital subscriber line (DSL) connection, a telephone line connection, a coaxial cable system, a satellite system, a line-of-site wireless system, a cellular telephone system, an optical connection, etc.
1600 1628 1628 The processor platformof the illustrated example also includes one or more mass storage devicesto store software and/or data. Examples of such mass storage devicesinclude magnetic storage devices, optical storage devices, floppy disk drives, HDDs, CDs, Blu-ray disk drives, redundant array of independent disks (RAID) systems, solid state storage devices such as flash memory devices and/or SSDs, and DVD drives.
1632 1628 1614 1616 12 15 FIGS.- The machine readable instructions, which may be implemented by the machine readable instructions of, may be stored in the mass storage device, in the volatile memory, in the non-volatile memory, and/or on a removable non-transitory computer readable storage medium such as a CD or DVD.
17 FIG. 16 FIG. 16 FIG. 12 15 FIGS.- 1 2 FIGS., 2 FIG. 12 15 FIGS.- 1612 1612 1700 1700 1700 6 1700 1700 1702 1 1700 1702 1700 1702 1702 1702 is a block diagram of an example implementation of the processor circuitryof. In this example, the processor circuitryofis implemented by a microprocessor. For example, the microprocessormay be a general purpose microprocessor (e.g., general purpose microprocessor circuitry). The microprocessorexecutes some or all of the machine readable instructions of the flowcharts ofto effectively instantiate the circuitry of, and/oras logic circuits to perform the operations corresponding to those machine readable instructions. in some such examples, the circuitry ofis instantiated by the hardware circuits of the microprocessorin combination with the instructions. For example, the microprocessormay be implemented by multi-core hardware circuitry such as a CPU, a DSP, a GPU, an XPU, etc. Although it may include any number of example cores(e.g.,core), the microprocessorof this example is a multi-core semiconductor device including N cores. The coresof the microprocessormay operate independently or may cooperate to execute machine readable instructions. For example, machine code corresponding to a firmware program, an embedded software program, or a software program may be executed by one of the coresor may be executed by multiple ones of the coresat the same or different times. In some examples, the machine code corresponding to the firmware program, the embedded software program, or the software program is split into threads and executed in parallel by two or more of the cores. The software program may correspond to a portion or all of the machine readable instructions and/or operations represented by the flowcharts of.
1702 1704 1704 1702 1704 1704 1702 1706 1702 1706 1702 1720 1700 1710 1710 1720 1702 1710 1614 1616 16 FIG. The coresmay communicate by a first example bus. In some examples, the first busmay be implemented by a communication bus to effectuate communication associated with one(s) of the cores. For example, the first busmay be implemented by at least one of an Inter-Integrated Circuit (I2C) bus, a Serial Peripheral Interface (SPI) bus, a PCI bus, or a PCIe bus. Additionally or alternatively, the first busmay be implemented by any other type of computing or electrical bus. The coresmay obtain data, instructions, and/or signals from one or more external devices by example interface circuitry. The coresmay output data, instructions, and/or signals to the one or more external devices by the interface circuitry. Although the coresof this example include example local memory(e.g., Level 1 (L1) cache that may be split into an L1 data cache and an L1 instruction cache), the microprocessoralso includes example shared memorythat may be shared by the cores (e.g., Level 2 (L2 cache)) for high-speed access to data and/or instructions. Data and/or instructions may be transferred (e.g., shared) by writing to and/or reading from the shared memory. The local memoryof each of the coresand the shared memorymay be part of a hierarchy of storage devices including multiple levels of cache memory and the main memory (e.g., the main memory,of). Typically, higher levels of memory in the hierarchy exhibit lower access time and have smaller storage capacity than lower levels of memory. Changes in the various levels of the cache hierarchy are managed (e.g., coordinated) by a cache coherency policy.
1702 1702 1714 1716 1718 1720 1722 1702 1714 1702 1716 1702 1716 1716 1716 1716 1718 1716 1702 1718 1718 1718 1702 1722 17 FIG. Each coremay be referred to as a CPU, DSP, GPU, etc., or any other type of hardware circuitry. Each coreincludes control unit circuitry, arithmetic and logic (AL) circuitry (sometimes referred to as an ALU), a plurality of registers, the local memory, and a second example bus. Other structures may be present. For example, each coremay include vector unit circuitry, single instruction multiple data (SIMD) unit circuitry, load/store unit (LSU) circuitry, branch/jump unit circuitry, floating-point unit (FPU) circuitry, etc. The control unit circuitryincludes semiconductor-based circuits structured to control (e.g., coordinate) data movement within the corresponding core. The AL circuitryincludes semiconductor-based circuits structured to perform one or more mathematic and/or logic operations on the data within the corresponding core. The AL circuitryof some examples performs integer based operations. In other examples, the AL circuitryalso performs floating point operations. In yet other examples, the AL circuitrymay include first AL circuitry that performs integer based operations and second AL circuitry that performs floating point operations. In some examples, the AL circuitrymay be referred to as an Arithmetic Logic Unit (ALU). The registersare semiconductor-based structures to store data and/or instructions such as results of one or more of the operations performed by the AL circuitryof the corresponding core. For example, the registersmay include vector register(s), SIMD register(s), general purpose register(s), flag register(s), segment register(s), machine specific register(s), instruction pointer register(s), control register(s), debug register(s), memory management register(s), machine check register(s), etc. The registersmay be arranged in a bank as shown in. Alternatively, the registersmay be organized in any other arrangement, format, or structure including distributed throughout the coreto shorten access time. The second busmay be implemented by at least one of an I2C bus, a SPI bus, a PCI bus, or a PCIe bus
1702 1700 1700 Each coreand/or, more generally, the microprocessormay include additional and/or alternate structures to those shown and described above. For example, one or more clock circuits, one or more power supplies, one or more power gates, one or more cache home agents (CHAs), one or more converged/common mesh stops (CMSs), one or more shifters (e.g., barrel shifter(s)) and/or other circuitry may be present. The microprocessoris a semiconductor device fabricated to include many transistors interconnected to implement the structures described above in one or more integrated circuits (ICs) contained in one or more packages. The processor circuitry may include and/or cooperate with one or more accelerators. In some examples, accelerators are implemented by logic circuitry to perform certain tasks more quickly and/or efficiently than can be done by a general purpose processor. Examples of accelerators include ASICs and FPGAs such as those discussed herein. A GPU or other programmable device can also be an accelerator. Accelerators may be on-board the processor circuitry, in the same chip package as the processor circuitry and/or in one or more separate packages from the processor circuitry.
18 FIG. 16 FIG. 17 FIG. 1612 1612 1800 1800 1800 1700 1800 is a block diagram of another example implementation of the processor circuitryof. In this example, the processor circuitryis implemented by FPGA circuitry. For example, the FPGA circuitrymay be implemented by an FPGA. The FPGA circuitrycan be used, for example, to perform operations that could otherwise be performed by the example microprocessorofexecuting corresponding machine readable instructions. However, once configured, the FPGA circuitryinstantiates the machine readable instructions in hardware and, thus, can often execute the operations faster than they could be performed by a general purpose microprocessor executing the corresponding software.
1700 1800 1800 1800 1800 1800 17 FIG. 12 15 FIGS.- 18 FIG. 12 15 FIGS.- 12 15 FIGS.- 12 15 FIGS.- 12 15 FIGS.- More specifically, in contrast to the microprocessorofdescribed above (which is a general purpose device that may be programmed to execute some or all of the machine readable instructions represented by the flowcharts ofbut whose interconnections and logic circuitry are fixed once fabricated), the FPGA circuitryof the example ofincludes interconnections and logic circuitry that may be configured and/or interconnected in different ways after fabrication to instantiate, for example, some or all of the machine readable instructions represented by the flowcharts of. In particular, the FPGA circuitrymay be thought of as an array of logic gates, interconnections, and switches. The switches can be programmed to change how the logic gates are interconnected by the interconnections, effectively forming one or more dedicated logic circuits (unless and until the FPGA circuitryis reprogrammed). The configured logic circuits enable the logic gates to cooperate in different ways to perform different operations on data received by input circuitry. Those operations may correspond to some or all of the software represented by the flowcharts of. As such, the FPGA circuitrymay be structured to effectively instantiate some or all of the machine readable instructions of the flowcharts ofas dedicated logic circuits to perform the operations corresponding to those software instructions in a dedicated manner analogous to an ASIC. Therefore, the FPGA circuitrymay perform the operations corresponding to the some or all of the machine readable instructions offaster than the general purpose microprocessor can execute the same.
18 FIG. 18 FIG. 17 FIG. 12 15 FIGS.- 18 FIG. 1800 1800 1802 1804 1806 1804 1800 1804 1806 1806 1700 1800 1808 1810 1812 1808 1810 1808 1808 1808 In the example of, the FPGA circuitryis structured to be programmed (and/or reprogrammed one or more times) by an end user by a hardware description language (HDL) such as Verilog. The FPGA circuitryof, includes example input/output (I/O) circuitryto obtain and/or output data to/from example configuration circuitryand/or external hardware. For example, the configuration circuitrymay be implemented by interface circuitry that may obtain machine readable instructions to configure the FPGA circuitry, or portion(s) thereof. In some such examples, the configuration circuitrymay obtain the machine readable instructions from a user, a machine (e.g., hardware circuitry (e.g., programmed or dedicated circuitry) that may implement an Artificial Intelligence/Machine Learning (AI/ML) model to generate the instructions), etc. In some examples, the external hardwaremay be implemented by external hardware circuitry. For example, the external hardwaremay be implemented by the microprocessorof. The FPGA circuitryalso includes an array of example logic gate circuitry, a plurality of example configurable interconnections, and example storage circuitry. The logic gate circuitryand the configurable interconnectionsare configurable to instantiate one or more operations that may correspond to at least some of the machine readable instructions ofand/or other desired operations. The logic gate circuitryshown inis fabricated in groups or blocks. Each block includes semiconductor-based electrical structures that may be configured into logic circuits. In some examples, the electrical structures include logic gates (e.g., And gates, Or gates, Nor gates, etc.) that provide basic building blocks for logic circuits. Electrically controllable switches (e.g., transistors) are present within each of the logic gate circuitryto enable configuration of the electrical structures and/or the logic gates to form circuits to perform desired operations. The logic gate circuitrymay include other electrical structures such as look-up tables (LUTs), registers (e.g., flip-flops or latches), multiplexers, etc.
1810 1808 The configurable interconnectionsof the illustrated example are conductive pathways, traces, vias, or the like that may include electrically controllable switches (e.g., transistors) whose state can be changed by programming (e.g., using an HDL instruction language) to activate or deactivate one or more connections between one or more of the logic gate circuitryto program desired logic circuits.
1812 1812 1812 1808 The storage circuitryof the illustrated example is structured to store result(s) of the one or more of the operations performed by corresponding logic gates. The storage circuitrymay be implemented by registers or the like. In the illustrated example, the storage circuitryis distributed amongst the logic gate circuitryto facilitate access and increase execution speed.
1800 1814 1814 1816 1816 1800 1818 1820 1822 1818 18 FIG. The example FPGA circuitryofalso includes example Dedicated Operations Circuitry. In this example, the Dedicated Operations Circuitryincludes special purpose circuitrythat may be invoked to implement commonly used functions to avoid the need to program those functions in the field. Examples of such special purpose circuitryinclude memory (e.g., DRAM) controller circuitry, PCIe controller circuitry, clock circuitry, transceiver circuitry, memory, and multiplier-accumulator circuitry. Other types of special purpose circuitry may be present. In some examples, the FPGA circuitrymay also include example general purpose programmable circuitrysuch as an example CPUand/or an example DSP. Other general purpose programmable circuitrymay additionally or alternatively be present such as a GPU, an XPU, etc., that can be programmed to perform other operations.
17 18 FIGS.and 16 FIG. 18 FIG. 16 FIG. 17 FIG. 18 FIG. 12 15 FIGS.- 17 FIG. 12 15 FIGS.- 18 FIG. 12 15 FIGS.- 1 FIG. 1 FIG. 1612 1820 1612 1700 1800 1702 1800 Althoughillustrate two example implementations of the processor circuitryof, many other approaches are contemplated. For example, as mentioned above, modern FPGA circuitry may include an on-board CPU, such as one or more of the example CPUof. Therefore, the processor circuitryofmay additionally be implemented by combining the example microprocessorofand the example FPGA circuitryof. In some such hybrid examples, a first portion of the machine readable instructions represented by the flowcharts ofmay be executed by one or more of the coresof, a second portion of the machine readable instructions represented by the flowcharts ofmay be executed by the FPGA circuitryof, and/or a third portion of the machine readable instructions represented by the flowcharts ofmay be executed by an ASIC. It should be understood that some or all of the circuitry ofmay, thus, be instantiated at the same or different times. Some or all of the circuitry may be instantiated, for example, in one or more threads executing concurrently and/or in series. Moreover, in some examples, some or all of the circuitry ofmay be implemented within one or more virtual machines and/or containers executing on the microprocessor.
1612 1700 1800 1612 16 FIG. 17 FIG. 18 FIG. 16 FIG. In some examples, the processor circuitryofmay be in one or more packages. For example, the microprocessorofand/or the FPGA circuitryofmay be in one or more packages. In some examples, an XPU may be implemented by the processor circuitryof, which may be in one or more packages. For example, the XPU may include a CPU in one package, a DSP in another package, a GPU in yet another package, and an FPGA in still yet another package.
1905 1632 1905 1905 1905 1632 1905 1632 1200 1400 1905 1910 106 1626 1632 1905 1200 1400 1600 1632 132 1905 1632 16 FIG. 19 FIG. 16 FIG. 12 15 FIGS.- 12 15 FIGS.- 16 FIG. A block diagram illustrating an example software distribution platformto distribute software such as the example machine readable instructionsofto hardware devices owned and/or operated by third parties is illustrated in. The example software distribution platformmay be implemented by any computer server, data facility, cloud service, etc., capable of storing and transmitting software to other computing devices. The third parties may be customers of the entity owning and/or operating the software distribution platform. For example, the entity that owns and/or operates the software distribution platformmay be a developer, a seller, and/or a licensor of software such as the example machine readable instructionsof. The third parties may be consumers, users, retailers, OEMs, etc., who purchase and/or license the software for use and/or re-sale and/or sub-licensing. In the illustrated example, the software distribution platformincludes one or more servers and one or more storage devices. The storage devices store the machine readable instructions, which may correspond to the example machine readable instructions,of, as described above. The one or more servers of the example software distribution platformare in communication with an example network, which may correspond to any one or more of the Internet and/or any of the example networks,described above. In some examples, the one or more servers are responsive to requests to transmit the software to a requesting party as part of a commercial transaction. Payment for the delivery, sale, and/or license of the software may be handled by the one or more servers of the software distribution platform and/or by a third party payment entity. The servers enable purchasers and/or licensors to download the machine readable instructionsfrom the software distribution platform. For example, the software, which may correspond to the example machine readable instructions,of, may be downloaded to the example processor platform, which is to execute the machine readable instructionsto implement the video conference circuitry. In some examples, one or more servers of the software distribution platformperiodically offer, transmit, and/or force updates to the software (e.g., the example machine readable instructionsof) to ensure improvements, patches, updates, etc., are distributed and applied to the software at the end user devices.
From the foregoing, it will be appreciated that example systems, methods, apparatus, and articles of manufacture have been disclosed that dynamically determine interaction display regions for screen sharing. Disclosed systems, methods, apparatus, and articles of manufacture improve the efficiency of using a computing device by dynamically determining an interactive context of a user relative to screen share content of a transmitter display screen during a video conference, which is used to determine an active interaction region(s) corresponding to the interactive context. Disclosed systems, methods, apparatus, and articles of manufacture transmit the interactive context and the active interaction region(s) to a receiving device of an audience participant as metadata along with full screen share frames, enabling the receiving device(s) to render screen share content in accordance with the respective receiving devices parameters and/or the audient participant's preferences. Thus, disclosed systems, methods, apparatus, and articles of manufacture facilities increase user experience by enabling rendering of screen share content at a receiving device such that the screen share content can be consumed by the audience participant regardless of a type of transmitter screen and/or a size and/or resolution of the transmitter screen. Disclosed systems, methods, apparatus, and articles of manufacture are accordingly directed to one or more improvement(s) in the operation of a machine such as a computer or other electronic and/or mechanical device.
Example methods, apparatus, systems, and articles of manufacture to dynamically determine interaction display regions for screen sharing are disclosed herein. Further examples and combinations thereof include the following:
Example 1 includes an electronic device comprising a display; at least one sensor; at least one memory; machine readable instructions; and processor circuitry to at least one of instantiate or execute the machine readable instructions to generate a screen share frame corresponding to content rendered on the display and intended for a screen share event; identify application-related contextual data corresponding to the screen share event; determine an interactive context based on at least one of (a) the application-related contextual data, or (b) sensor data from the at least one sensor, the interactive context including identification of an interaction region of the screen share frame; generate interaction metadata that includes the interactive context; and transmit a transport stream that includes the interaction metadata and the screen share frame.
Example 2 includes the electronic device of example 1, wherein the processor circuitry is to generate the screen share frame in response to detecting initialization of the screen share event.
Example 3 includes the electronic device of example 1, wherein the screen share frame includes a rendered application, and wherein the application-related contextual data includes information corresponding to the rendered application.
Example 4 includes the electronic device of example 1, wherein the identification of the interactive context is based on display-related contextual data, the processor circuitry to identify the display-related contextual data that includes parameters of the display.
Example 5 includes the electronic device of example 4, wherein the display is a first display, the electronic device further including a second display, and wherein the processor circuitry is to identify the display-related contextual data by determining whether the first display includes the content that is rendered and intended for the screen share frame; determining whether the second display includes the content that is rendered and intended for the screen share event; and identifying, based on the determinations, the parameters for at least one of the first display or the second display, the parameters to include an identifier of the at least one of the first display or the second display.
Example 6 includes the electronic device of example 1, wherein the processor circuitry is to identify the interactive context based on input data relative to the screen share event.
Example 7 includes the electronic device of example 6, wherein the input data includes human interface device (HID)-related data received from a HID, the HID corresponding to at least one of a mouse, a keyboard, or a touchpad.
Example 8 includes the electronic device of example 6, wherein the input data includes operating system events corresponding to human interface device (HID)-related data.
Example 9 includes the electronic device of example 6, wherein the at least one sensor includes a microphone, and wherein the input data includes language data, the processor circuitry to generate the language data by receiving audio data from the microphone; and applying a natural language processing based model to the audio data.
Example 10 includes the electronic device of example 6, wherein the at least one sensor includes a camera, and wherein the input data includes eye tracking data, the processor circuitry to generate the eye tracking data by receiving image data from the camera; and applying an image recognition model to the image data.
Example 11 includes the electronic device of example 6, wherein the processor circuitry is to determine the interactive context by collecting a sequence of the input data and a corresponding sequence of application-related contextual data over a period of time; processing the sequence of the input data and the corresponding sequence of the application-related contextual data to predict user interaction intent relative to the screen share frame for the period of time; and identifying the interactive context for the period of time based on the predicted user interaction intent relative to the screen share frame for the period of time.
Example 12 includes the electronic device of example 11, wherein the sequence of the input data and the corresponding sequence of the application contextual data is processed using at least one of a machine learning model or a rule.
Example 13 includes the electronic device of example 1, wherein the interaction region is represented by coordinates relative to the screen share frame.
Example 14 includes the electronic device of example 1, wherein, prior to transmitting the transport stream, the processor circuitry is to generate the transport stream by multiplexing the interaction metadata and the screen share frame.
Example 15 includes a non-transitory machine readable storage medium comprising instructions that, when executed, cause processor circuitry to at least generate a screen share image corresponding to content rendered on a display used for a screen share event; identify application-related contextual information corresponding to the screen share event; predict an interactive context based on at least one of (a) the application-related contextual information, or (b) sensor data based on signals output by a sensor, the interactive context including an interaction region of the screen share image; generate interaction metadata corresponding to the interactive context and the interaction region; and send a transport stream containing the interaction metadata and the screen share image.
Example 16 includes the non-transitory machine readable storage medium of example 15, wherein the instructions, when executed, cause the processor circuitry to generate the screen share image in response to detecting a selection to start the screen share event.
Example 17 includes the non-transitory machine readable storage medium of example 15, wherein the screen share image includes an application rendered on the display, and wherein the application-related contextual information includes data corresponding to the rendered application.
Example 18 includes the non-transitory machine readable storage medium of example 15, wherein the prediction of the interactive context is based on display-related contextual information, and wherein the processor circuitry to identify the display-related contextual data that includes parameters of the display.
Example 19 includes the non-transitory machine readable storage medium of example 18, wherein the display is a first display, and wherein the instructions, when executed, cause the processor circuitry to identify the display-related contextual data by determining whether a second display is used for the screen share event; and in response to determining that the second display is used for the screen share event, identifying the parameters the first display and the second display, the parameters to include an identifier of the first display and the second display.
Example 20 includes the non-transitory machine readable storage medium of example 15, wherein the instructions, when executed, cause the processor circuitry to predict the interactive context based on input data relative to the screen share event.
Example 21 includes the non-transitory machine readable storage medium of example 20, wherein the input data includes user input data received from a human interface device (HID), the HID corresponding to at least one of a mouse, a keyboard, or a touchpad.
Example 22 includes the non-transitory machine readable storage medium of example 20, wherein the input data includes operating system events corresponding to human interface device (HID)-related user input data.
Example 23 includes the non-transitory machine readable storage medium of example 20, wherein the sensor is a microphone, and wherein the input data includes language data, the processor circuitry to generate the language data by receiving audio data from the microphone; and applying a natural language processing based model to the audio data.
Example 24 includes the non-transitory machine readable storage medium of example 20, wherein the sensor is a camera, and wherein the input data includes eye tracking data, the processor circuitry to generate the eye tracking data by receiving image data from the camera; and applying an image recognition model to the image data.
Example 25 includes the non-transitory machine readable storage medium of example 20, wherein the instructions, when executed, cause the processor circuitry to predict the interactive context by collecting a series of the input data and a corresponding series of application-related contextual information during a time period; analyzing the series of the input data and the corresponding series of application-related contextual information to predict user interaction intent relative to the screen share image for the time period; and predicting the interactive context for the time period based on the predicted user interaction intent relative to the screen share image.
Example 26 includes the non-transitory machine readable storage medium of example 25, wherein the series of the input data and the corresponding series of the application-related contextual information is analyzed using at least one of a machine learning model or a rule.
Example 27 includes the non-transitory machine readable storage medium of example 15, wherein the interaction region of the screen share image is coordinates within the screen share image corresponding to the interactive context.
Example 28 includes the non-transitory machine readable storage medium of example 15, wherein, prior to the sending the transport stream, the processor circuitry is to generate the transport stream by multiplexing the interaction metadata and the screen share image.
Example 29 includes a method comprising generating, by executing machine readable instructions with at least one processor, a display share frame corresponding to content rendered on a display and selected for a display share event; determining, by executing the machine readable instructions with the at least one processor, an interactive intent based on at least one of application contextual data and sensor data from at least one sensor, the interactive intent including an interaction region of the display share frame; generating, by executing the machine readable instructions with the at least one processor, interaction metadata that includes the interactive intent and the interaction region; and transmitting, by executing the machine readable instructions with the at least one processor, the interaction metadata and the display share frame.
Example 30 includes the method of example 29, further including, prior to the generating the screen share frame, detecting activation of the display share event.
Example 31 includes the method of example 29, wherein the display share frame includes an application, and wherein the application contextual data includes information corresponding to the application.
Example 32 includes the method of example 29, wherein the identifying the interactive intent includes identifying the interaction region, and wherein the identifying the interaction region is further based on display related contextual data, the display related contextual data including parameters of the at least one display.
Example 33 includes the method of example 29, wherein the identifying the interactive intent is further based on user-related data relative to the display share event.
Example 34 includes the method of example 33, wherein the user-related data includes human interface device (HID)-related data received from a HID, the HID corresponding to at least one of a mouse, a keyboard, a microphone, or a touchpad.
Example 35 includes the method of example 33, wherein the user-related data includes operating system events corresponding to human interface device (HID) inputs.
Example 36 includes the method of example 33, wherein the sensor includes an audio sensor, wherein the user-related data includes speech data, the method further including generating the speech data by receiving audio data from the audio sensor; and applying a natural language processing based model to the audio data.
Example 37 includes the method of example 33, wherein the sensor includes an image sensor, wherein the user-related data includes eye tracking data, the method further including generating the eye tracking data by receiving image data from the image sensor; and applying an image recognition model to the image data.
Example 38 includes the method of example 33, wherein the determining the interactive intent includes collecting the user-related data, the user-related data including timestamps; processing the user-related data in view of the timestamps and the application contextual data to estimate user intent relative to the display share frame; and identifying the interactive intent based on the estimated user intent relative to the display share frame.
Example 39 includes the method of example 38, wherein the processing the user-related data includes applying at least one of a machine learning model or a rule to the user-related data in view of the timestamps and the application contextual data.
Example 40 includes the method of example 29, wherein the interaction region of the display share frame is represented by coordinates relative to the display share frame.
Example 41 includes the method of example 29, further including generating a transport stream by multiplexing the interaction metadata and the display share frame, the transmitting including transmitting the transport stream.
Example 42 includes an electronic device comprising video frame generator circuitry to generate a screen share frame corresponding to content rendered on a display and intended for a screen share event; configuration determiner circuitry to identify application-related contextual data corresponding to the screen share event; interactive context determiner circuitry to obtain sensor data from at least one sensor; identify an interactive context that includes an interaction region of the screen share frame based on at least one of the application-related contextual data or the sensor data; and generate interaction metadata that includes the interactive context and the interaction region; and communication circuitry to transmit a transport stream that includes the interaction metadata and the screen share frame.
Example 43 includes the electronic device of example 42, further including interface circuitry to detect a selection to start the screen share event, wherein the video frame generator circuitry is to generate the screen share frame in response to the detection.
Example 44 includes the electronic device of example 34, wherein the screen share frame includes a rendered application, and wherein the application-related contextual data includes information corresponding to the rendered application.
Example 45 includes the electronic device of example 42, wherein the interactive context determiner circuitry is to identify display-related contextual data, the display related context data including parameters of the display, and wherein the identifying the interactive context is based on the display-related contextual data.
Example 46 includes the electronic device of example 45, wherein the display is a first display, the electronic device further including a second display, and wherein the screen share frame includes content rendered on the first display, the display-related contextual data to include parameters of the first display and parameters of the second display.
Example 47 includes the electronic device of example 34, wherein the interactive context determiner circuitry is to identify the interactive context based on input data relative to the screen share event.
Example 48 includes the electronic device of example 47, wherein the input data includes human interface device (HID)-related data received from a HID, the HID corresponding to at least one of a mouse, a keyboard, or a touchpad.
Example 49 includes the electronic device of example 47, wherein the input data includes operating system events corresponding to human interface device (HID)-related data.
Example 50 includes the electronic device of example 47, wherein the at least one sensor includes a microphone, and wherein the input data includes language data, the interactive context determiner circuitry to generate the language data by receiving audio data from the microphone; and applying a natural language processing based model to the audio data.
Example 51 includes the electronic device of example 47, wherein the at least one sensor includes a camera, and wherein the input data includes eye tracking data, the interactive context determiner circuitry to generate the eye tracking data by receiving image data from the camera; and applying an image recognition model to the image data.
Example 52 includes the method of example 47, wherein the interactive context determiner circuitry is to determine the interactive context by collecting a sequence of the input data and a corresponding sequence of application-related contextual data over a period of time; processing the sequence of the input data and the corresponding sequence of application-related contextual data to predict user interaction intent relative to the screen share frame for the period of time; and identifying the interactive context for the period of time based on the predicted user interaction intent relative to the screen share frame for the period of time.
Example 53 includes the electronic device of example 52, wherein the sequence of the input data and the corresponding sequence of application contextual data is processed using at least one of a machine learning model or a rule, the electronic device further including execution circuitry to execute the at least one of the machine learning model or the rule.
Example 54 includes the electronic device of example 42, wherein the interaction region of the screen share frame is represented by coordinates of the interaction region relative to the screen share frame.
Example 55 includes the electronic device of example 42, further including multiplexer circuitry, and wherein, prior to transmission of the transport stream, the multiplexer circuitry is to generate the transport stream by multiplexing the interaction metadata and the screen share frame.
Example 56 includes an electronic device to transmit screen share content comprising means for generating a frame to generate a screen share frame corresponding to content rendered on at least one display, the content intended for a screen share; means for determining an interactive context to identify an application context corresponding to the screen share; determine an interactive context based on at least one of (a) the application context and (b) sensor data from a sensor, the interactive context including an interaction region of the screen share frame; and generate interaction metadata that includes the interactive context and the interaction region; and means for transmitting to transmit the interaction metadata and the screen share frame in a transport stream.
Example 57 includes the electronic device of example 56, further including means for detecting a selection to begin screen share.
Example 58 includes the electronic device of example 56, wherein the screen share frame includes an image of a rendered application, and wherein the application context includes information corresponding to the rendered application.
Example 59 includes the electronic device of example 56, wherein the determining the interaction region of the interactive context is based on display context data, the display context data including parameters of the at least one display.
Example 60 includes the electronic device of example 56, wherein the means for determining the interactive context is to identify the interactive context based on input data related to the screen share.
Example 62 includes the electronic device of example 60, wherein the input data includes user input-related data received from an input device, the input device corresponding to at least one of a mouse, a keyboard, or a touchpad.
Example 62 includes the electronic device of example 60, wherein the input data includes operating system event data corresponding to user input-related data.
Example 63 includes the electronic device of example 60, wherein the sensor includes a microphone, and wherein the input data includes language data, the means for determining the interactive context to generate the language data by receiving audio data from the microphone; and applying a natural language processing based model to the audio data.
Example 64 includes the electronic device of example 60, wherein the sensor includes a camera, and wherein the input data includes eye tracking data, the means for determining the interactive context to generate the eye tracking data by receiving image data from the camera; and applying an image recognition model to the image data.
Example 65 includes the electronic device of example 60, wherein the means for determining the interactive context is to determine the interactive context by collecting a sequence of the input data during a period of time; processing the sequence of the input data to estimate user interaction intent relative to the screen share frame for the period of time; and identifying the interactive context for the period of time based on the estimated user interaction intent relative to the screen share frame for the period of time.
Example 66 includes the electronic device of example 65, wherein the means for determining the interactive context is to process the sequence of the input data using at least one of a machine learning model or a rule.
Example 67 includes the electronic device of example 56, wherein the interaction region of the screen share frame is represented by coordinates of the interaction region relative to the screen share frame.
Example 68 includes the electronic device of example 56, further including means for generating a transport stream to generate the transport stream.
Example 69 includes an electronic device to render screen share content comprising a display; at least one sensor; at least one memory; machine readable instructions; and processor circuitry to at least one of instantiate or execute the machine readable instructions to separate a received transport stream to generate a screen share frame and interaction metadata; determine an interaction region of the screen share frame based on the interaction metadata; identify parameters of the display; and generate a render decision by determining how to render the screen share frame based on the parameters of the display and the interaction region.
Example 70 includes the electronic device of example 69, wherein the render decision is further based on user preference data.
Example 71 includes the electronic device of example 69, wherein the render decision is further based on sensor data from the at least one sensor.
Example 72 includes the electronic device of example 71, wherein the at least one sensor includes a user proximity sensor, and wherein the render decision is based on a distance of a user from the electronic device.
Example 73 includes the electronic device of example 71, wherein the parameters of the display include at least one of a size of the display or a resolution of the display.
Example 74 includes the electronic device of example 71, wherein the processor circuitry is to compare the parameters of the display to coordinates of the screen share frame to determine whether to render the screen share frame or a portion of the screen share frame.
Example 75 includes the electronic device of example 74, wherein the portion of the screen share frame includes the interaction region of the screen share frame.
Example 76 includes the electronic device of example 74, wherein the portion of the screen share frame includes the interaction region of the screen share frame and a region adjacent the interaction region.
Example 77 includes the electronic device of example 69, wherein the processor circuitry is to generate the render decision using at least one of a machine learning model or a rule.
Example 78 includes the electronic device of example 69, wherein the render decision includes coordinates of the screen share frame to render on the display.
The following claims are hereby incorporated into this Detailed Description by this reference. Although certain example systems, methods, apparatus, and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all systems, methods, apparatus, and articles of manufacture fairly falling within the scope of the claims of this patent.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
July 1, 2022
June 23, 2026
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.