This document pertains generally, but not by way of limitation, to media sessions, and particularly but not by way of limitation to model-based selection of parameters for media sessions.
Media sessions, such as peer-to-peer communications, web conferences, and the like, are established and participated in by users using a wide range of devices connecting through a wide range of network connections. Applications used to perform online media sessions may include a media stack configured to control execution of the media session. When initializing a media session, the media stack parameters may be set using default parameters, which may be conservatively chosen to ensure connectability across all devices and network connections.
In the drawings, which are not necessarily drawn to scale, like numerals may describe similar components in different views. Like numerals having different letter suffixes may represent different instances of similar components. Some embodiments are illustrated by way of example, and not limitation, in the figures of the accompanying drawings in which:
Systems and methods are disclosed herein that facilitate model-based selection of parameters for online media sessions. Media sessions, such as peer-to-peer communications, online conferences, and the like, may be executed using one or more protocol stacks that include one or more functions to execute the media session for particular computing devices connecting through particular network connections. The functions of the protocol stack may be controlled/executed using one or more parameters set for each media session. Conventionally, these parameters were set using default values, and updated based on feedback as the media session executed.
Attributes may be determined for a computing device executing one or more applications to initiate and participate in a media session. The attributes may be environmental attributes that include a tenant ID, geographic location, internet service provider (ISP), platform, network connection type, user identifier, time, date, and the like. These attributes may be used to define a context of the computing device and respective network connection, for example. The context may be used to reference one or more models configured to generate or otherwise select optimal session parameters based on the context. The session parameters may be used to control and/or execute one or more functions of the protocol stack to initialize and/or execute a media session. For example, these parameters may be selected and applied to initiate a media session before any dynamic quality feedback, such as one or more metrics for the respective network connection, is available for the media session.
Each computing device 102a-102c may be configured to execute one or more applications to initiate and conduct media sessions with other respective computing devices 102a-102c or with any other computing devices located in any geographic locations. Some computing devices, such as is illustrated by computing devices 102a and 102c, may be on private networks behind firewalls and/or routers that use network address translation (NAT). The computing devices 102a-102c may be in different geographic locations including in different countries and may be connected to the networks 106 through vastly different network connections. In some examples, a computing device may be a desktop computer connected in a corporate setting, a mobile device accessing the networks 106 in an airport, a low power device on a low bandwidth cellular network, or any other computing system having any other network connection.
The computing devices 102a-102c may be configured to initiate media sessions, including peer-to-peer communications, audio and/or video web conferences, and the like with one or more other computing devices 102a-102c. For example, the peer-to-peer communication may be an audio-only communication such as through the public switched telephone network (PSTN), or may be a multi-user web conference that includes audio and video. Each computing device 102a-102c may have a different set of specifications including central processing unit (CPU) speed, memory and hard disk capacity, and the like resulting in each computing device 102a-102c having a different optimal configuration for executing media sessions.
Each computing device 102a-102c may also be connected to the networks 106 through different network configurations and conditions including combinations of user datagram protocol (UDP), transmission control protocol (TCP), hypertext transfer protocol secure (HTTPS) connections, wired connections, Wi-Fi®, 2nd Generation (2G), 3rd Generation (3G), 4th Generation (4G), or 5th Generation (5G) cellular networks, consumer home networks, business networks, and the like. This wide variation in conditions for each computing device 102a-102c requires the protocol/media stack used to execute media sessions to handle varying network characteristics including bandwidth, loss, jitter, delay, reliability, and the like.
The API layer 202 may provide media stack interfaces that implement an offer/answer protocol, for example. In an example, the API layer 202 implements Session Description Protocol (SDP) using offer/answer transaction semantics. The API layer 202 may also include an interface for media servers. The engine layer 204 may be implemented to handle running environment differences between respective computing devices and servers. The engine layer 204 may also establish the platform and facilitate threading and interaction of components of the functional components layer 206. The platform abstraction layer 208 may be configured to provide the upper layers (202, 204, and 206) a common set of primitives independent of a platform of a respective computing device and provide abstraction for networking, cryptography, physical audio/video device access, logging, synchronization primitives, persistent storage primitives, experiment and configuration services (ECS), and the like.
The functional components layer 206 may include a collection of reusable components which can each implement various functionalities. These functionalities may be self-contained, for example, and may include physical and virtual audio/video/data device logic and management, network connectivity logic, network address translation (NAT) traversal and wire protocols, client and server audio pipeline and audio digital signal processing (DSP) algorithms, client and server video pipeline and video DSP algorithms; bandwidth estimation/distribution and codec selection; telemetry framework, real-time transport protocol (RTP)/RTP control protocol (RTCP) and respective extensions, encryption, payload specific packetizations, audio/video codec implementations, server audio/video mixing/subscription, dominant speaker logic, audio/video/data routing, container classes, buffer management, and the like.
The components of the functional components layer 206 may include one or more configurable parameters that control how the component executes during initiation, execution, and recovery of a media session. For example, a codec selection component may have a parameter that specifies a codec for use during a respective media session. In conventional systems, many of these configurable parameters have been set to default values for initialization of a media session. These default parameters have often been conservative to ensure that users with poor network connections are still able to successfully initiate and participate in online communications. This may be to the detriment of users with good network connections, as it can take time for the parameters to be dynamically updated to more closely reflect the capabilities of a respective network connection.
The attributes may be used to define a user context that can be used as input to the models 300a and 300b, or to select an individual model. The attributes may be environmental attributes that include one or more of a tenant ID, geographic location (such as country, state, city, geographic coordinates, and the like), internet service provider (ISP), platform, network connection type, user identifier, time, or the like. These attributes may be gathered by the computing device to form a user context for a respective computing device and network connection. The user context may represent user scenarios of varying levels of specificity. In one example, the model 300a may include customized models for many granular user contexts. In other examples, the model 300a may include one or a few models that may be used for each of a few most common user contexts, or anywhere between. Some example user contexts include, but are not limited to, a user in a corporate environment, a user in an airport on a mobile phone, a user on a low power tablet connected through a 3rd Generation (3G) cellular network, and the like.
The output of the models 300a and 300b may be one or more predicted optimal media session parameters, such as may be used by one or more applications that include the media stack illustrated in
In an example, in conventional systems, an initial bandwidth is unknown, and therefore the initial bandwidth chosen for a media session may be chosen conservatively to have a low throughput in order to avoid causing network congestion. In these conventional systems, it may take up to 20 to 30 seconds to ramp up the bandwidth estimation to an accurate value. During this time, a sender is not fully utilizing a network capacity, which can be detrimental for high resolution video/appsharing which may require delivery of large frames of data quickly at the beginning of a communication. By predicting the optimal startup parameters for the media session based on the media context, the initial bandwidth may be chosen to more accurately reflect a computing device's network connection, removing the initial 20 to 30 second ramp up in bandwidth estimation, improving a media session experience for the user.
To generate predicted optimal parameters, the models 300a and 300b may be initially trained using historical data, for example, using one or more machine-learning techniques, such as is described in more detail below with respect to
The models may also be updated during and/or after execution of each media session. For example, data may be gathered during media sessions regarding bandwidth, loss, jitter, delay, reliability, and the like. Knowing the media context, the gathered data can be used to further train/update the model using one or more machine-learning techniques/algorithms. This may occur in real-time, such that the models are updated during execution of a media session, or may occur at a later time, such as after a media session has completed. By updating the model using the actual data, the system may more accurately set the initial media session startup parameters for future media sessions.
The one or more models 300b may be used during execution of a media session and take data gathered during the media session as additional input. This data may include, but is not limited to, a connectivity protocol, network round-trip time (RTT), loss characteristics, jitter characteristics, bandwidth characteristics, device rating, connectivity path type, and the like. The model 300b may also take the device context as input and generate updated session parameters for the respective media session. These updated session parameters may be provided to the media stack 200, for example, during execution of the media session to provide one or more users with a better experience during the media session.
The models 300a and 300b allow more optimal parameters to be established for a media stack during initiation and/or execution of media sessions to improve the user experience. In an example, the models 300a and/or 300b may be able to capture underlying networking characteristics in corporate networks. The input to the model 300a or 300b may indicate a location at which an employee is located. Through machine learning and training, the model 300a or 300b may be able to detect and provide optimal parameters for scenarios that include, but are not limited to, a private network allowing UDP connectivity and having high bandwidth to provide a high quality experience, optimal codec choices for a given user, HTTP Proxy being the only available connectivity for a private network, use of alternate protocols works temporarily but will result in delayed whitelisting failures of a communication, all real time media traffic for a given user must be forced through a relay server, and the like. The models 300a and 300b may also allow the media stack to learn and adapt to congested remote site locations, provide jitter buffer and healer adaptation for proxy only environments, and the like.
In addition to capturing underlying networking characteristics for corporate networks, the models 300a and 300b may be able to capture underlying network characteristics for home networks and public networks. For example, as seen in
Machine learning module 400 utilizes a training module 410 and a prediction module 420. Training module 410 inputs feature data 430 into feature determination module 450. The feature data 430 may include attributes such as environmental attributes indicating a country or other geographic location, tenant ID, user ID, endpoint ID, platform type, ISP, available network interfaces on the computing device, available audio and video devices and drivers on the computing device, a time and day, and the like.
Feature determination module 450 determines one or more features for feature vector 460 from the feature data 430. Features of the feature vector 460 may be one or more user contexts is information determined to be predictive of relevant media stack parameter selections, for example. Features chosen for inclusion in the feature vector 460 may be all the feature data 430 or in some examples, may be a subset of all the feature data 430. In examples in which the features chosen for the feature vector 460 are a subset of the feature data 430, a predetermined list of which feature data 430 is included in the feature vector may be utilized. The feature vector 460 may be utilized (along with any applicable labels) by the machine learning algorithm 470 to produce a model 480.
In the prediction module 420, the current feature data 490 may be input to the feature determination module 495. Feature determination module 495 may determine the same set of features or a different set of features as feature determination module 450. In some examples, feature determination module 450 and 495 are the same modules or different instances of the same module. Feature determination module 495 produces feature vector 497, which are input into the model 480 to rankings or selections of media stack parameters 499.
The training module 410 may operate in an offline manner to train the model 480. The prediction module 420, however, may be designed to operate in an online manner. It should be noted that the model 480 may be periodically updated via additional training and/or user feedback. For example, additional feature data 430 may be collected as users initiate and participate in various online media sessions. The attributes may then be fed back through the training module 410 labelled with optimal parameters in order to refine the model 480.
The machine learning algorithm 470 may be selected from among many different potential supervised or unsupervised machine learning algorithms. Examples of supervised learning algorithms include artificial neural networks, convolutional neural networks, Bayesian networks, instance-based learning, support vector machines, decision trees (e.g., Iterative Dichotomiser 3, C4.5, Classification and Regression Tree (CART), Chi-squared Automatic Interaction Detector (CHAID), and the like), random forests, linear classifiers, quadratic classifiers, k-nearest neighbor, linear regression, logistic regression, and hidden Markov models. Examples of unsupervised learning algorithms include expectation-maximization algorithms, vector quantization, and information bottleneck method. Unsupervised models may not have a training module 410.
In an example, the server or the computing device may compile the attributes to determine a context indicative of one or more user contexts. The user contexts may be as granular as desired. For example, a general user context may exist for mobile devices on second generation (2G) cellular networks in a specified country. The user context and/or the individual attributes may be input or otherwise used to reference the one or more models to generate predicted startup parameters for an upcoming media session. At step 504, media session startup parameters selections are output from the model. This step may be accomplished locally by a respective computing device, or by one or more servers. For example, the model may be stored by the computing device or transmitted to the computing device from the server upon request. The computing device may then provide the attributes and/or a user context to the model to generate the startup parameters. In another example, the computing device may transmit the attributes and/or the user context to the servers and the servers may provide the attributes and/or user context to the model to generate the startup parameters. If the servers generate the startup parameters, the servers may transmit the startup parameters to the computing device to initiate the media session.
At step 506, the media session is initiated by one or more applications executing on the computing device using the startup parameters generated at step 404. The startup parameters may include transport protocol stack parameters, a startup bandwidth seed, codec choices and parameters of an audio stack (such as jitter buffer) computing device specific optimizations, and the like. At step 508, data is gathered regarding the media session. This may include data regarding bandwidth, loss, jitter, delay, reliability, and the like. The model may be updated using the attributes and/or the data gathered such as is described above with reference to
In an example, the server or the computing device may compile the attributes to determine one or more user contexts based on the attributes. The user contexts may be as granular as desired. For example, a general user context may exist for mobile devices on second generation (2G) cellular networks in a specified country. Data may also be obtained regarding the current execution of the media session, such as bandwidth, loss, jitter, delay, reliability, and the like. The user context and/or the individual attributes and/or the data gathered regarding the current execution of the media session may be input to one or more models to generate parameters for a currently executing media session, such as is described above with reference to
At step 606, the media stack is updated using the parameters from the model during execution of the media session. At step 608, further data is gathered regarding the media session. This may include data regarding bandwidth, loss, jitter, delay, reliability, and the like. The model may be updated using the attributes and/or the data gathered such as is described above with respect to
While illustrated in
In alternative embodiments, the machine 700 may operate as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine 700 may operate in the capacity of a server machine, a client machine, or both in server-client network environments. In an example, the machine 700 may act as a peer machine in peer-to-peer (P2P) (or other distributed) network environment. The machine 700 may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile telephone, a web appliance, a network router, switch or bridge, or any machine capable of executing instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein, such as cloud computing, software as a service (SaaS), other computer cluster configurations.
The machine (e.g., computer system) 700 may include a hardware processor 702 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a hardware processor core, or any combination thereof), a main memory 704, a static memory (e.g., memory or storage for firmware, microcode, a basic-input-output (BIOS), unified extensible firmware interface (UEFI), etc.) 706, and mass storage 708 (e.g., hard drive, tape drive, flash storage, or other block devices) some or all of which may communicate with each other via an interlink (e.g., bus) 730. The machine 700 may further include a display unit 710, an alphanumeric input device 712 (e.g., a keyboard), and a user interface (UI) navigation device 714 (e.g., a mouse). In an example, the display unit 710, input device 712 and UI navigation device 714 may be a touch screen display. The machine 700 may additionally include a storage device (e.g., drive unit) 708, a signal generation device 718 (e.g., a speaker), a network interface device 720, and one or more sensors 716, such as a global positioning system (GPS) sensor, compass, accelerometer, or other sensor. The machine 700 may include an output controller 728, such as a serial (e.g., universal serial bus (USB), parallel, or other wired or wireless (e.g., infrared (IR), near field communication (NFC), etc.) connection to communicate or control one or more peripheral devices (e.g., a printer, card reader, etc.).
Registers of the processor 702, the main memory 704, the static memory 706, or the mass storage 708 may be, or include, a machine readable medium 722 on which is stored one or more sets of data structures or instructions 724 (e.g., software) embodying or utilized by any one or more of the techniques or functions described herein. The instructions 724 may also reside, completely or at least partially, within any of registers of the processor 702, the main memory 704, the static memory 706, or the mass storage 708 during execution thereof by the machine 700. In an example, one or any combination of the hardware processor 702, the main memory 704, the static memory 706, or the mass storage 708 may constitute the machine readable media 722. While the machine readable medium 722 is illustrated as a single medium, the term “machine readable medium” may include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) configured to store the one or more instructions 724.
The term “machine readable medium” may include any medium that is capable of storing, encoding, or carrying instructions for execution by the machine 700 and that cause the machine 700 to perform any one or more of the techniques of the present disclosure, or that is capable of storing, encoding or carrying data structures used by or associated with such instructions. Non-limiting machine readable medium examples may include solid-state memories, optical media, magnetic media, and signals (e.g., radio frequency signals, other photon based signals, sound signals, etc.). In an example, a non-transitory machine readable medium comprises a machine readable medium with a plurality of particles having invariant (e.g., rest) mass, and thus are compositions of matter. Accordingly, non-transitory machine-readable media are machine readable media that do not include transitory propagating signals. Specific examples of non-transitory machine readable media may include: non-volatile memory, such as semiconductor memory devices (e.g., Electrically Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM)) and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.
The instructions 724 may be further transmitted or received over a communications network 726 using a transmission medium via the network interface device 720 utilizing any one of a number of transfer protocols (e.g., frame relay, internet protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), etc.). Example communication networks may include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), mobile telephone networks (e.g., cellular networks), Plain Old Telephone (POTS) networks, and wireless data networks (e.g., Institute of Electrical and Electronics Engineers (IEEE) 802.11 family of standards known as Wi-Fi®, IEEE 802.16 family of standards known as WiMax®), IEEE 802.16.4 family of standards, peer-to-peer (P2P) networks, among others. In an example, the network interface device 720 may include one or more physical jacks (e.g., Ethernet, coaxial, or phone jacks) or one or more antennas to connect to the communications network 726. In an example, the network interface device 720 may include a plurality of antennas to wirelessly communicate using at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) techniques. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding or carrying instructions for execution by the machine 700, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software. A transmission medium is a machine readable medium.
The above description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show, by way of illustration, specific embodiments in which the invention can be practiced. These embodiments are also referred to herein as “examples.” Such examples can include elements in addition to those shown or described. However, the present inventors also contemplate examples in which only those elements shown or described are provided. Moreover, the present inventors also contemplate examples using any combination or permutation of those elements shown or described (or one or more aspects thereof), either with respect to a particular example (or one or more aspects thereof), or with respect to other examples (or one or more aspects thereof) shown or described herein.
In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one, independent of any other instances or usages of “at least one” or “one or more.” In this document, the term “or” is used to refer to a nonexclusive or, such that “A or B” includes “A but not B,” “B but not A,” and “A and B,” unless otherwise indicated. In this document, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.” Also, in the following claims, the terms “including” and “comprising” are open-ended, that is, a system, device, article, composition, formulation, or process that includes elements in addition to those listed after such a term in a claim are still deemed to fall within the scope of that claim. Moreover, in the following claims, the terms “first,” “second,” and “third,” etc. are used merely as labels, and are not intended to impose numerical requirements on their objects.
The above description is intended to be illustrative, and not restrictive. For example, the above-described examples (or one or more aspects thereof) may be used in combination with each other. Other embodiments can be used, such as by one of ordinary skill in the art upon reviewing the above description. The Abstract is provided to allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. Also, in the above Detailed Description, various features may be grouped together to streamline the disclosure. This should not be interpreted as intending that an unclaimed disclosed feature is essential to any claim. Rather, inventive subject matter may lie in less than all features of a particular disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description as examples or embodiments, with each claim standing on its own as a separate embodiment, and it is contemplated that such embodiments can be combined with each other in various combinations or permutations. The scope of the invention should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
This application is a continuation of prior application Ser. No. 16/570,609, filed on Sep. 13, 2019, which is incorporated by reference herein in its entirety.
Number | Name | Date | Kind |
---|---|---|---|
7546376 | Widegren | Jun 2009 | B2 |
7958242 | Rey | Jun 2011 | B2 |
8806012 | Ramachandran | Aug 2014 | B2 |
20020099842 | Jennings | Jul 2002 | A1 |
20030115349 | Brinkman | Jun 2003 | A1 |
20050091380 | Gonen | Apr 2005 | A1 |
20070025301 | Petersson | Feb 2007 | A1 |
20070160072 | Thalanany | Jul 2007 | A1 |
20070198739 | Jennings | Aug 2007 | A1 |
20100211689 | Bijwaard | Aug 2010 | A1 |
20100262710 | Khatib | Oct 2010 | A1 |
20100299433 | De Boer | Nov 2010 | A1 |
20130275615 | Oyman | Oct 2013 | A1 |
20130304934 | Joch | Nov 2013 | A1 |
20130339464 | Goudarzi | Dec 2013 | A1 |
20140019635 | Reznik | Jan 2014 | A1 |
20140181266 | Joch | Jun 2014 | A1 |
20140359156 | Manber | Dec 2014 | A1 |
20150039680 | Gallant | Feb 2015 | A1 |
20150113156 | Smith | Apr 2015 | A1 |
20150149591 | Gibbon | May 2015 | A1 |
20150163273 | Radcliffe | Jun 2015 | A1 |
20160127260 | Gordon | May 2016 | A1 |
20160156691 | Leeb | Jun 2016 | A1 |
20190124408 | Xiong | Apr 2019 | A1 |
20200084232 | Lebling | Mar 2020 | A1 |
Number | Date | Country | |
---|---|---|---|
20210344737 A1 | Nov 2021 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 16570609 | Sep 2019 | US |
Child | 17379296 | US |