Model-based parameter prediction and selection for media sessions

Through the model-based parameter prediction and selection system, the problem that parameter updates in media sessions are difficult to adapt to network changes is solved, and more efficient media session optimization and user experience improvement are achieved.

CN119324867APending Publication Date: 2025-01-17MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202411435730.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2019-09-13
Filing Date
2020-06-18
Publication Date
2025-01-17

AI Technical Summary

Technical Problem

The prior art is difficult to dynamically update parameters in media sessions to adapt to changes in different network connections, resulting in poor user experience, especially when high-resolution video or large frame data transmission, the bandwidth estimation time is long, affecting communication quality.

Method used

Using a model-based parameter prediction and selection system, the machine learning model generates the best session parameters based on the properties and network characteristics of the computing device, including initial bandwidth, codec selection, etc., and updates the media stack parameters in real time to optimize the media session.

Benefits of technology

Improves the dynamicity and user experience of media sessions, shortens bandwidth estimation time, and improves network connection utilization and communication quality.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119324867A_ABST
    Figure CN119324867A_ABST
Patent Text Reader

Abstract

Techniques for providing improved online communication are provided herein. In one example, a model may be used to predict network parameters of a network connection of a computing device. The model may receive and use one or more attributes specifying characteristics of a network connection for the computing device to predict network parameters. The predicted network parameters may be provided to the computing device for initiating the media session.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application of application number 202080063400.0, filed on June 18, 2020, and named “Model-based parameter prediction and selection for media sessions”. Technical Field

[0002] This document relates generally, but not limited to, media sessions, and particularly, but not limited to, model-based selection of parameters for a media session. Background Art

[0003] Media sessions such as peer-to-peer communications, web conferences, etc. are established and participated in by users using various devices connected through various network connections. Applications used to perform online media sessions may include a media stack configured to control the operation of the media session. When initializing a media session, media stack parameters may be set using default parameters, which may be conservatively selected to ensure connectivity across all devices and network connections. BRIEF DESCRIPTION OF THE DRAWINGS

[0004] In the accompanying drawings, which are not necessarily drawn to scale, like numbers may describe similar components in different views. Like numbers with 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:

[0005] Figure 1 is a network diagram illustrating several computing devices configured to initiate and conduct a media session.

[0006] Figure 2 is a diagram illustrating an exemplary media stack for running an online media session.

[0007] Figure 3A and Figure 3B is a diagram illustrating an exemplary media session model for generating parameters for a media stack.

[0008] Figure 4 is a diagram illustrating an exemplary machine learning module.

[0009] Figure 5 is a flow chart illustrating a method of initializing a media session using a media session model.

[0010] Figure 6 is a flow chart illustrating a method of controlling parameters of a media stack while a media session is ongoing.

[0011] Figure 7 is a block diagram illustrating an example of a machine upon which one or more embodiments may be implemented. DETAILED DESCRIPTION

[0012] Disclosed herein are systems and methods for facilitating model-based selection of parameters for online media sessions. Media sessions (such as peer-to-peer communications, online conferences, etc.) may be run using one or more protocol stacks that include one or more functions to run a media session for a specific computing device connected via a specific network connection. The functions of the protocol stack may be controlled / run using one or more parameters set for each media session. Conventionally, these parameters are set using default values ​​and updated based on feedback while the media session is being run.

[0013] Attributes of a computing device running one or more applications to initiate and participate in a media session can be determined. The attributes can be environmental attributes, including tenant ID, geographic location, Internet service provider (ISP), platform, network connection type, user identifier, time, date, etc. For example, these attributes can be used to define the context of the computing device and the corresponding network connection. The context can be used to reference one or more models, which are configured to generate or otherwise select optimal session parameters based on the context. The session parameters can be used to control and / or run one or more functions of the protocol stack to initialize and / or run a media session. For example, these parameters can be selected and applied to initiate the media session before any dynamic quality feedback (such as one or more metrics for the corresponding network connection) is available for the media session.

[0014] Figure 1 1 is a network diagram illustrating a system 100 including several computing devices 102a-102c configured to initiate and conduct media sessions through one or more servers 104. The servers 104 may be located in a single geographic location or may be distributed across several remote locations. The computing devices 102a-102c may be configured to access the servers 104 through one or more networks 106, which may be one or more wired and / or wireless networks. The computing devices 102a-102c may be any computing device, including mobile phones, tablet computers, laptop computers, desktop computers, wearable devices, etc.

[0015] Each computing device 102a-102c may be configured to run one or more applications to initiate and conduct media sessions with other corresponding computing devices 102a-102c or with any other computing device located in any geographic location. Some computing devices, such as illustrated by computing devices 102a and 102c, may be located on a private network behind a firewall and / or router that uses network address translation (NAT). Computing devices 102a-102c may be in different geographic locations, including in different countries, and may be connected to network 106 through distinct network connections. In some examples, the computing devices may be desktop computers connected in a corporate environment, mobile devices accessing network 106 in an airport, low-power devices on a low-bandwidth cellular network, or any other computing system with any other network connection.

[0016] The computing devices 102a-102c may be configured to initiate a media session with one or more other computing devices 102a-102c, including peer-to-peer communications, audio and / or video web conferencing, etc. For example, the peer-to-peer communications may be pure audio communications such as over a public switched telephone network (PSTN), or may be a multi-user web conference including 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, etc., resulting in each computing device 102a-102c having a different optimal configuration for running a media session.

[0017] Each computing device 102a-102c may also be connected to the network 106 through different network configurations and conditions, including User Datagram Protocol (UDP), Transmission Control Protocol (TCP), Hypertext Transfer Protocol Secure (HTTPS) connection, wired connection, A combination of 2nd (2G), 3rd (3G), 4th (4G), or 5th (5G) generation cellular networks, consumer home networks, business networks, etc. This wide variation in conditions for each computing device 102a-102c requires the protocol / media stack used to run the media session to handle the varying network characteristics, including bandwidth, loss, jitter, latency, reliability, etc.

[0018] Figure 22 is a diagram illustrating an exemplary media stack 200 for running an online media session for a respective computing device such as computing devices 102a-102c. The media stack 200 can be implemented by one or more applications running on the computing devices 102a-102c, and can include an application programming interface (API) layer 202, an engine layer 204, a functional component layer 206, and a platform abstraction layer 208. Although illustrated in 4 layers, other media / protocol stacks can include more, fewer, or alternative layers. Each of the API layer 202, the engine layer 204, the functional component layer 206, and the platform abstraction layer 208 can include one or more operating components. Each of these operating components can receive one or more parameters for operation. For example, the media stack 200 can be implemented in any combination of hardware and software, and the software components can be implemented using any desired programming language.

[0019] The API layer 202 may provide, for example, a media stack interface that implements a proposal / answer protocol. In an example, the API layer 202 uses proposal / answer transaction semantics to implement a session description protocol (SDP). The API layer 202 may also include an interface for a media server. The engine layer 204 may be implemented to handle the difference in operating environment between the corresponding computing device and the server. The engine layer 204 may also establish a platform and promote threading and interaction of components of the functional component layer 206. The platform abstraction layer 208 may be configured to provide a common primitive set of platforms independent of respective computing devices to the upper layers (202, 204, and 206), and to provide abstractions for networks, passwords, physical audio / video device access, logging, synchronization primitives, persistent storage primitives, experiments, and configuration services (ECS), etc.

[0020] The functional component layer 206 may include a collection of reusable components, each of which can implement various functions. For example, these functions may be self-contained and may include physical and virtual audio / video / data device logic units and management, network connection logic units, network address translation (NAT) traversal and wire protocols, client and server audio pipelines and audio digital signal processing (DSP) algorithms, client and server video pipelines and video DSP algorithms; bandwidth estimation / allocation and codec selection; telemetry framework, real-time transport protocol (RTP) / RTP control protocol (RTCP) and corresponding extensions, encryption, payload-specific packaging, audio / video codec implementation, server audio / video mixing / subscription, dominant speaker logic units, audio / video / data routing, container categories, cache management, etc.

[0021] The components of the functional component layer 206 may include one or more configurable parameters that control how the components operate during the initiation, operation, and resumption of a media session. For example, a codec selection component may have parameters that specify the codecs to be used during the corresponding media session. In conventional systems, many of these configurable parameters have been set to default values ​​for initialization of the media session. These default parameters are often conservative to ensure that users with poor network connections can still successfully initiate and participate in online communications. This may harm users with good network connections because it takes time to dynamically update the parameters to more closely reflect the ability of the corresponding network connection.

[0022] Figure 3A and Figure 3B is a diagram illustrating exemplary media session models 300a and 300b that are used to generate parameters for the startup and operation of a media session. Although illustrated as two models 300a and 300b, models 300a and 300b may be part of the same model, or each model may be implemented as several individual models. Model 300a may be configured to receive attributes and generate or otherwise select predicted optimal media session startup parameters; and model 300b may be configured to receive attributes and / or data collected during the operation of a media session, and generate or otherwise select updated media session parameters to update parameters of a media session already in progress.

[0023] The attributes can be used to define user contexts that can be used as inputs to models 300a and 300b, or to select individual models. The attributes can be environmental attributes including one or more of tenant ID, geographic location (such as country, state, city, geographic coordinates, etc.), Internet service provider (ISP), platform, network connection type, user identifier, time, etc. These attributes can be collected by a computing device to form a user context for a corresponding computing device and a network connection. The user context can represent user scenarios of different levels of particularity. In one example, model 300a can include custom models for many granular user contexts. In other examples, model 300a can include one or more models, which can be used for each user context in several most common user contexts, or any position between the two. Some exemplary user contexts include, but are not limited to, users in a corporate environment, users on mobile phones in an airport, users on low-power tablet computers connected by a 3rd generation (3G) cellular network, etc.

[0024] The output of models 300a and 300b may be, for example, a Figure 2One or more predicted optimal media session parameters used by one or more applications of the media stack illustrated in . These parameters may include startup parameters used during the media session establishment phase, parameters used during the operation of the media session, and / or parameters used during the recovery phase. The parameters may include, but are not limited to: RTCP probe packet cadence and size, waiting time before retransmission request after packet loss, media timeout, agreed packet cadence and reconnection trigger, retransmission probe cadence and size to improve receiver estimated maximum bitrate (REMB) performance, minimum video bitrate, number of participants to trigger conference mode, initial bandwidth, various bandwidth limits, audio codec, video codec, jitter buffer size, etc. The outputs from models 300a and 300b can be directly applied to the media stack 200, for example, during the initiation and / or execution of a media session.

[0025] In the example, in conventional systems, the initial bandwidth is unknown, and therefore the initial bandwidth selected for the media session may be conservatively selected 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 for the bandwidth estimate to be improved to an accurate value. During this period, the sender does not fully utilize the network capacity, which is not conducive to high-resolution video / application sharing that may require large frames of data to be transmitted quickly at the beginning of communication. By predicting the optimal startup parameters for the media session based on the media context, the initial bandwidth can be selected to more accurately reflect the network connection of the computing device, removing the initial 20 to 30 seconds of improvement in the bandwidth estimate, and improving the user's media session experience.

[0026] To generate optimal parameters for prediction, models 300a and 300b may be initially trained using historical data, for example using a method such as described below with respect to Figure 4 The historical data may be trained using one or more machine learning techniques described in more detail. Exemplary machine learning techniques / algorithms may include logistic regression, neural networks, decision forests, decision jungles, enhanced decision trees, support vector machines, etc. The historical data may include media stack data, for example, about past audio and / or video communications. For example, historical data may be used to generate training data, and the training data may include past attributes or user contexts labeled with corresponding optimal media session startup and / or operation parameters. For example, the historical data may also include network data that is not directly related to online communications. The historical data can be used to train models 300a and 300b, for example, using supervised or unsupervised learning.

[0027] The model may also be updated during and / or after the run of each media session. For example, data regarding bandwidth, loss, jitter, latency, reliability, etc. may be collected during a media session. With the media context understood, the collected data can be used to further train / update the model using one or more machine learning techniques / algorithms. This may occur in real time, so that the model is updated during the run of the media session, or may occur at a later time, such as after the media session has completed. By using actual data to update the model, the system can more accurately set initial media session startup parameters for future media sessions.

[0028] One or more models 300b may be used during the operation of a media session and take as additional input the data collected during the media session. The data may include, but is not limited to, connection protocol, network round trip time (RTT), loss characteristics, jitter characteristics, bandwidth characteristics, device class, connection path type, etc. Model 300b may also take the device context as input and generate updated session parameters for the corresponding media session. These updated session parameters may be provided to the media stack 200, for example, during the operation of the media session to provide a better experience for one or more users during the media session.

[0029] Models 300a and 300b allow for establishing more optimized parameters for the media stack during the initiation and / or operation of a media session to improve the user experience. In an example, models 300a and / or 300b may be able to capture the underlying network characteristics in a corporate network. The input to model 300a or 300b may indicate the location of the employee. Through machine learning and training, model 300a or 300b is able to detect and provide optimal parameters for scenarios, including but not limited to: a private network allows UDP connections and has high bandwidth to provide a high-quality experience, the best codec selection for a given user, HTTP proxy is the only available connection for a private network, using an alternative protocol is temporarily effective but will cause a delay in communication whitelist failure, all real-time media services for a given user must be forced through a relay server, etc. Models 300a and 300b can also allow the media stack to learn and adapt to crowded remote site locations, provide jitter buffers and healer adaptation for proxy-only environments, etc.

[0030] In addition to capturing the underlying network characteristics for enterprise networks, models 300a and 300b may be able to capture the underlying network characteristics of home networks and public networks. Figure 1As seen in , computing devices 102a and 102c include a Network Address Translation (NAT). Certain NAT behaviors can affect the connectivity of media sessions. Usage models 300a and 300b are able to anticipate and adapt to such behaviors. Some scenarios that usage models 300a and 300b can detect and adapt to may include: switching to a relay-relay path if it is known from previous connection attempts that the home NAT is having issues; identifying and adapting to virtual private network (VPN) usage; adapting to ISP-specific traffic shaping and load characteristics, etc. Models 300a and 300b may also be able to provide optimal parameters for use from popular public locations, including coffee shops, hotspots, airports, in-flight Network, etc.

[0031] Figure 4 4 is a diagram illustrating an exemplary machine learning module 400 for training and / or using models, such as models 300a and 300b. The machine learning module 400 may be implemented in whole or in part by any server 104 and / or any of the computing devices 102a-102c. In some examples, the training module 410 may be implemented by a different device than the prediction module 420. In these examples, the model 480, which may be any of the models 300a and / or 300b, may be created on a first machine and then sent to a second machine (e.g., created by the server 104 and sent to one of the computing devices 102a-102c).

[0032] The machine learning module 400 utilizes the training module 410 and the prediction module 420. The training module 410 inputs the feature data 430 into the 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, network interfaces available on the computing device, audio and video devices and drivers available on the computing device, time and date, etc.

[0033] The feature determination module 450 determines one or more features for the feature vector 460 based on the feature data 430. The features of the feature vector 460 can be one or more user contexts, such as information determined to predict the selection of relevant media stack parameters. The features selected for inclusion in the feature vector 460 can be all of the feature data 430, or in some examples, can be a subset of all of the feature data 430. In examples where the features selected for the feature vector 460 are a subset of the feature data 430, a predetermined list of the feature data 430 included in the feature vector can be utilized. The machine learning algorithm 470 can utilize the feature vector 460 (along with any applicable labels) to generate a model 480.

[0034] In the prediction module 420, the current feature data 490 can be input to the feature determination module 495. The feature determination module 495 can determine the same feature set as the feature determination module 450 or a different feature set. In some examples, the feature determination modules 450 and 495 are the same module or different instances of the same module. The feature determination module 495 generates a feature vector 497, which is input into the model 480 to sort or select the media stack parameters 499.

[0035] The training module 410 can operate in an offline manner to train the model 480. However, the prediction module 420 can be designed to operate in an online manner. It should be noted that the model 480 can be regularly updated via additional training and / or user feedback. For example, additional feature data 430 can be collected as users initiate and participate in various online media sessions. The attributes can then be fed back through the training module 410 labeled with the best parameters to improve the model 480.

[0036] The machine learning algorithm 470 can be selected from 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 bisection 3, C4.5, classification and regression trees (CART), chi-square automatic interaction detector (CHAID), etc.), random forests, linear classifiers, quadratic classifiers, k nearest neighbors, linear regression, logistic regression, and hidden Markov models. Examples of unsupervised learning algorithms include expectation maximization algorithms, vector quantization, and information bottleneck methods. Unsupervised models may not have training modules 410.

[0037] Figure 54 is a flow chart illustrating a method 400 for initializing a media session using a media session model (such as any of the models discussed herein). At step 502, attributes are collected for a computing device. This step may occur before initiating a media session, and therefore before any feedback data for the media session (such as network metrics for one or more computing devices and / or one or more network connections for the media session) is available. In some examples, these attributes may be transmitted to a server 104. For example, before initiating a media session, a corresponding computing device may collect network attributes, such as country or other geographic location, tenant ID, user ID, endpoint ID, platform type, ISP, network interfaces available on the computing device, audio and video devices and drivers available on the computing device, time and date, etc. For example, in response to opening a communication client application on a computing device, the computing device may automatically obtain the attributes. An application running on a computing device may collect the attributes immediately upon startup, or collect the attributes when a user commands the application to perform one or more functions (such as initiating an online communication event). In another example, one or more servers may instruct a computing device to collect the attributes.

[0038] In an example, a server or computing device may compile the attributes to determine a context indicating one or more user contexts. The user context may be refined as needed. For example, a mobile device on a second generation (2G) cellular network in a specified country may have a general user context. The user context and / or individual attributes may be input or otherwise used to reference one or more models to generate a predicted startup parameter for an upcoming media session. At step 504, a media session startup parameter selection is output from the model. This step may be completed locally by a corresponding computing device or by one or more servers. For example, the model may be stored by a computing device or transmitted from a server to a computing device upon request. Then, the computing device may provide attributes and / or user context to the model to generate startup parameters. In another example, the computing device may transmit attributes and / or user context to a server, and the server may provide attributes and / or user context to the model to generate startup parameters. If the server generates the startup parameters, the server may transmit the startup parameters to the computing device to initiate the media session.

[0039] At step 506, the media session is initiated by one or more applications running on the computing device using the startup parameters generated at step 404. The startup parameters may include transport protocol stack parameters, startup bandwidth seed, codec selection, and parameters of an optimized audio stack (such as a jitter buffer) specific to the computing device, etc. At step 508, data about the media session is collected. This may include data about bandwidth, loss, jitter, delay, reliability, etc. The model may be updated using the attributes and / or the collected data, such as the reference Figure 4 The updating may occur during and / or after the running of a media session. For example, the model may be trained each time data is collected for a media session, or data may be collected for many media sessions and the model may be trained using data about many media sessions at once.

[0040] Figure 6 6 is a flow chart illustrating a method 600 of controlling parameters of a media stack while a media session is running. At step 602, properties are collected by a computing device. In some examples, the computing device can transmit the properties to a server 104. For example, before or during running a media session, a respective computing device can collect network properties such as country or other geographic location, tenant ID, user ID, endpoint ID, platform type, ISP, network interfaces available on the computing device, audio and video devices and drivers available on the computing device, time and date, etc.

[0041] In an example, a server or computing device may compile the attributes to determine one or more user contexts based on the attributes. The user contexts may be refined as needed. For example, a general user context may exist for a mobile device on a second generation (2G) cellular network in a specified country. Data about the current operation of a media session may also be obtained, such as bandwidth, loss, jitter, delay, reliability, etc. The user context and / or individual attributes and / or data collected about the current operation of a media session may be input into one or more models to generate parameters for the currently running media session, such as those described above with reference to FIG. 3 and FIG. Figure 4As described. At step 604, updated parameters are generated by the model. This step can be performed by a computing device or by a server. For example, the model can be stored by the computing device or transmitted from the server to the computing device upon request. The computing device can then provide attributes and / or user context and / or collected data to the model to generate parameters. In another example, the computing device can transmit the attributes and / or collected data to the server, and the server can provide the attributes and / or collected data to the model to generate parameters. If the server generates the parameters, the server can transmit the parameters to the computing device to update the media stack during the operation of the media session.

[0042] At step 606, the parameters from the model are used to update the media stack during the run of the media session. At step 608, additional data about the media session is collected. This may include data about bandwidth, loss, jitter, delay, etc. The model may be updated using attributes and / or collected data, such as described above with respect to Figure 4 The updating may occur during and / or after the running of a media session. For example, the model may be trained each time data is collected for a media session, or data may be collected for many media sessions and the model may be trained using data for many media sessions at once.

[0043] Despite Figure 5 and Figure 6 2 is illustrated as using the models during the initiation of a media session and during the operation of the media session, but for example, one or more models may also be used to generate parameters for the resumption of the media session. For example, upon completion of the media session, the attributes and / or data collected during the operation of the media session may be used to generate parameters for use by the media stack 200, for example, during the resumption phase of the corresponding media session.

[0044] Figure 7A block diagram of an exemplary machine 700 on which any one or more of the techniques (e.g., methods) discussed herein can be performed is illustrated. For example, the machine 700 can be any one or more of the servers 104 and / or computing devices 102a-102c. As described herein, the example may include a logic unit or multiple components or mechanisms in the machine 700, or may be operated by it. A circuit (e.g., a processing circuit) is a collection of circuits implemented in a tangible entity of the machine 700 including hardware (e.g., simple circuits, gates, logic units, etc.). The members of the circuit can change flexibly over time. The circuit includes members that can perform specified operations when operating, either alone or in combination. In an example, the hardware of the circuit can be designed to perform specific operations (e.g., hard-wired) invariably. In an example, the hardware of the circuit can include variably connected physical components (e.g., operating units, transistors, simple circuits, etc.), including machine-readable media that are physically modified (e.g., magnetic, electrical, movable placement of constant mass particles, etc.) to encode instructions for specific operations. When physical components are connected, the basic electrical properties of the hardware components change, for example, from an insulator to a conductor, or vice versa. The instructions enable embedded hardware (e.g., an operating unit or a loading mechanism) to create members of a circuit in hardware via a variable connection to perform parts of a specific operation when in operation. Therefore, in an example, a machine-readable medium element is part of a circuit or is communicatively coupled to other components of the circuit when the device is operating. In an example, any of the physical components can be used in more than one member of more than one circuit. For example, in operation, an operating unit can be used in a first circuit in a first circuit system at one point in time, and reused by a second circuit in the first circuit system or by a third circuit in the second circuit system at a different time. The following are additional examples of these components of the machine 700.

[0045] In alternative embodiments, the machine 700 can be operated as a standalone device or can be connected (e.g., networked) to other machines. In a networked deployment, the machine 700 can operate in a server-client network environment with the capabilities of a server machine, a client machine, or both. In an example, the machine 700 can act as a peer machine in a peer-to-peer (P2P) (or other distributed) network environment. The machine 700 can be: a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, a network appliance, a network router, a switch or a bridge, or any machine capable of (sequentially or otherwise) executing instructions for the actions to be taken by the specified machine. In addition, although only a single machine is illustrated, the term "machine" should also be understood to include any collection of machines that individually or jointly run a set (or multiple sets) of instructions to perform any one or more of the methods discussed herein, such as cloud computing, software as a service (SaaS), and other computer cluster configurations.

[0046] 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, basic input and output (BIOS), unified extensible firmware interface (UEFI), etc.) 706, and a mass storage device 708 (e.g., a hard drive, a tape drive, a flash memory, or other block device), some or all of which may communicate with each other via an interconnect link (e.g., a bus) 730. The machine 700 may also 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, the input device 712, and the UI navigation device 714 may be a touch screen display. The machine 700 may additionally include a storage device (e.g., a drive unit) 708, a signal generating device 718 (e.g., a speaker), a network interface device 720, and one or more sensors 716 (e.g., a global positioning system (GPS) sensor, a compass, an 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, a card reader, etc.).

[0047] The registers of the processor 702, the main memory 704, the static memory 706, or the mass storage device 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) that embody or are utilized by any one or more of the techniques or functions described herein. The instructions 724 may also reside completely or at least partially in any one of the registers of the processor 702, the main memory 704, the static memory 706, or the mass storage device 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 device 708 may constitute the machine-readable medium 722. Although 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 one or more instructions 724.

[0048] The term "machine-readable medium" may include any medium that can store, encode or carry instructions for being run by the machine 700 and causing the machine 700 to perform any one or more of the techniques of the present disclosure, or can store, encode or carry data structures used by or associated with such instructions. Non-limiting machine-readable medium examples may include solid-state memory, 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 includes a machine-readable medium having a plurality of particles, the plurality of particles having a constant (e.g., stationary) mass, and thus being a composition of matter. Therefore, a non-transitory machine-readable medium is a machine-readable medium that does not include a temporary propagation signal. 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; disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

[0049] The instructions 724 may be further sent or received over a communication network 726 using a transmission medium via a network interface device 720 that utilizes any of a variety of transmission protocols (e.g., frame relay, Internet Protocol (IP), transmission control protocol (TCP), user datagram protocol (UDP), hypertext transfer protocol (HTTP), etc.). Exemplary communication networks may include a local area network (LAN), a wide area network (WAN), a packet data network (e.g., the Internet), a mobile telephone network (e.g., a cellular network), a plain old telephone (POTS) network, and a wireless data network (e.g., a wireless network known as a wireless network). The Institute of Electrical and Electronics Engineers (IEEE) 802.11 series of standards, known as The IEEE 802.16 family of standards), IEEE 802.16.4 family of standards, peer-to-peer (P2P) networks, etc. In an example, the network interface device 720 may include one or more physical jacks (e.g., Ethernet, coaxial, or telephone jacks) or one or more antennas to connect to the communication network 726. In an example, the network interface device 720 may include multiple antennas to use at least one of single-input multiple-output (SIMO), multiple-input multiple-output (MIMO), or multiple-input single-output (MISO) technology for wireless communication. The term "transmission medium" should be understood to include any intangible medium that can store, encode, or carry instructions executed by the machine 700, and includes digital or analog communication signals or other intangible media to facilitate the communication of such software. Transmission media are machine-readable media.

[0050] The above description includes reference to the accompanying drawings, which form a part of the detailed description. The accompanying drawings illustrate specific embodiments in which the present invention can be put into practice by way of illustration. These embodiments are also referred to as "examples" in this article. Such examples may include elements other than the elements shown or described. However, the inventors also contemplate examples in which only those elements shown or described are provided. In addition, the inventors also contemplate examples of any combination or arrangement of those elements shown or described (or one or more aspects thereof), whether relative to a specific example (or one or more aspects thereof), or relative to other examples shown or described herein (or one or more aspects thereof).

[0051] In this document, as is common in patent documents, the terms "a" or "an" are used to include one or more than one, independent of any other instance or usage of "at least one" or "one or more." In this document, the term "or" is used to represent a non-exclusive or, so that "A or B" includes "A but not B," "B but not A," and "A and B," unless otherwise noted. In this document, the terms "including" and "in which" are used as the plain English equivalents of the respective terms "comprising" and "wherein." In addition, in the following claims, the terms "including" and "comprising" are open-ended, i.e., systems, devices, articles, compositions, preparations, or processes that include elements other than those listed after such terms in a claim are still deemed to fall within the scope of the claim. In addition, in the appended claims, the terms "first," "second," and "third," etc. are used merely as labels and are not intended to impose numerical requirements on their objects.

[0052] The above description is intended to be illustrative rather than restrictive. For example, the above examples (or one or more aspects thereof) may be used in combination with each other. For example, a person of ordinary skill in the art may use other embodiments after reading the above description. The abstract is provided to enable the reader to quickly determine the nature of the technical disclosure. It should be understood at the time of submission that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the above detailed description, various features may be combined together to simplify the present disclosure. This should not be interpreted as indicating that the disclosed features that are not claimed for protection are essential to any claim. On the contrary, the subject matter of the invention may not lie in all the features of a particular disclosed embodiment. Therefore, the attached claims are incorporated into the detailed description as examples or embodiments, wherein each claim exists independently as a separate embodiment, and it is expected that these embodiments can be combined with each other in various combinations or arrangements. The scope of the present invention should be determined with reference to the attached claims and the full scope of equivalents enjoyed by these claims.

Claims

1. A method of selecting a network parameter value for online communication between computing devices using one or more hardware processors, the method comprising: Prior to initiating a media session and prior to receiving feedback data indicative of one or more metrics of a network connection of a computing device for the media session: receiving one or more property values ​​specifying characteristics of the network connection for the computing device for use in initiating the media session over one or more networks via the network connection; accessing a plurality of stored media session startup parameter values ​​for initializing a media session, the plurality of stored media session startup parameter values ​​being associated with different attribute values; selecting one or more media session startup parameter values ​​from the stored media session startup parameter values ​​for the media session using the received one or more attribute values; as well as applying the selected one or more startup parameter values ​​as initialization values ​​for the media session; as well as The media session is initiated on the computing device over the network connection using the initialization value.

2. The method according to claim 1, wherein: Applying the selected one or more startup parameter values ​​as the initialization values ​​for the media session is configured to: control one or more functions of a protocol stack to perform the media session.

3. The method according to claim 1, wherein: Selecting one or more of the stored media session initiation parameter values ​​for the media session using the received one or more attribute values ​​includes: selecting one or more of the stored media session startup parameter values ​​for the media session using a relationship between the stored media session startup parameter values ​​for the media session and the received one or more attribute values, The one or more startup parameter values ​​include one or more of the following: bandwidth, network connection type, timeout setting, or codec, and Wherein, the one or more attribute values ​​include one or more of the following: geographic location, network provider of the one or more networks, type of the one or more networks, type of the computing device, platform of the computing device, form factor, time of day, day of the week, or workload of the computing device.

4. The method according to claim 3, comprising: After initiating the media session on the computing device over the network connection using the initialization value: receiving feedback data indicative of one or more metrics of the network connection of the computing device for the media session; as well as The relationship between the plurality of stored media session startup parameter values ​​and the received one or more property values ​​is dynamically updated using the received feedback data.

5. The method according to claim 1, wherein: Selecting one or more of the stored media session initiation parameter values ​​for the media session using the received one or more attribute values ​​includes: accessing the model using the received one or more property values; and Based on the received one or more attribute values, one or more startup parameter values ​​for the media session are generated via the model, and wherein applying the selected one or more startup parameter values ​​as initialization values ​​for the media session includes: applying the generated one or more startup parameter values ​​to the media session.

6. The method according to claim 5, wherein: The one or more property values ​​form a network context for the computing device, the network context describing the network connection for the computing device, wherein the model is selected from a plurality of models using the one or more attribute values ​​and the network context, and The multiple models include a first model that is trained via machine learning techniques using historical data about multiple previously performed media sessions.

7. The method according to claim 1, comprising: After initiating the media session on the computing device over the network connection using the initialization value: receiving data regarding one or more session parameters of the media session while the media session is executing; as well as The execution of the media session is updated using the one or more session parameters.

8. A system for selecting network parameter values ​​for online communications between computing devices, the system comprising: one or more hardware processors; One or more memories storing instructions that, when executed, cause the one or more hardware processors to perform operations including: Prior to initiating a media session and prior to receiving feedback data indicative of one or more metrics of a network connection of a computing device for the media session: receiving one or more property values ​​specifying characteristics of the network connection for the computing device for use in initiating the media session over one or more networks via the network connection; accessing a plurality of stored media session startup parameter values ​​for initializing a media session, the plurality of stored media session startup parameter values ​​being associated with different attribute values; selecting one or more media session startup parameter values ​​from the stored media session startup parameter values ​​for the media session using the received one or more attribute values; as well as applying the selected one or more startup parameter values ​​as initialization values ​​for the media session; as well as The media session is initiated on the computing device over the network connection using the initialization value.

9. The system according to claim 8, wherein: Applying the selected one or more startup parameter values ​​as the initialization values ​​for the media session is configured to control one or more functions of a protocol stack to perform the media session.

10. The system according to claim 8, wherein: Selecting one or more of the stored media session initiation parameter values ​​for the media session using the received one or more attribute values ​​includes: selecting one or more of the stored media session startup parameter values ​​for the media session using a relationship between the stored media session startup parameter values ​​for the media session and the received one or more attribute values, The one or more startup parameter values ​​include one or more of the following: bandwidth, network connection type, timeout setting, or codec, and Wherein, the one or more attribute values ​​include one or more of the following: geographic location, network provider of the one or more networks, type of the one or more networks, type of the computing device, platform of the computing device, form factor, time of day, day of the week, or workload of the computing device.

11. The system of claim 10, wherein the operations further comprise: After initiating the media session on the computing device over the network connection using the initialization value: receiving feedback data indicative of one or more metrics of the network connection of the computing device for the media session; as well as The relationship between the plurality of stored media session startup parameter values ​​and the received one or more property values ​​is dynamically updated using the received feedback data.

12. The system according to claim 8, wherein: Selecting one or more of the stored media session initiation parameter values ​​for the media session using the received one or more attribute values ​​includes: accessing the model using the received one or more property values; and Based on the received one or more attribute values, the one or more startup parameter values ​​for the media session are generated via the model, and wherein applying the selected one or more startup parameter values ​​as initialization values ​​for the media session includes: applying the generated one or more startup parameter values ​​to the media session.

13. The system according to claim 12, wherein: The one or more property values ​​form a network context for the computing device, the network context describing the network connection for the computing device, wherein the model is selected from a plurality of models using the one or more attribute values ​​and the network context, and The multiple models include a first model that is trained via machine learning techniques using historical data about multiple previously performed media sessions.

14. The system of claim 8, the operations further comprising: After initiating the media session on the computing device over the network connection using the initialization value: receiving data regarding one or more session parameters of the media session while the media session is executing; as well as The execution of the media session is updated using the one or more session parameters.

15. A system for selecting network parameter values ​​for online communications between computing devices, the system comprising: means for receiving one or more property values ​​specifying characteristics of a network connection for the computing device to initiate the media session over one or more networks via the network connection; means for accessing a plurality of stored media session startup parameter values ​​to initialize a media session, the plurality of stored media session startup parameter values ​​being associated with different attribute values; means for selecting one or more of the stored media session startup parameter values ​​for the media session using the received one or more attribute values; means for applying the selected one or more startup parameter values ​​as initialization values ​​for the media session; as well as Means for initiating the media session on the computing device via the network connection using the initialization value.

16. The system of claim 15, wherein: The means for selecting one or more of the stored media session startup parameter values ​​for the media session using the received one or more attribute values ​​comprises: means for selecting one or more of the stored media session startup parameter values ​​for the media session using a relationship between the stored media session startup parameter values ​​for the media session and the received one or more attribute values, The one or more startup parameter values ​​include one or more of the following: bandwidth, network connection type, timeout setting, or codec, and Wherein, the one or more attribute values ​​include one or more of the following: geographic location, network provider of the one or more networks, type of the one or more networks, type of the computing device, platform of the computing device, form factor, time of day, day of the week, or workload of the computing device.

17. The system of claim 16, further comprising: means for receiving feedback data indicating one or more metrics of the network connection of the computing device for the media session; as well as Means for dynamically updating a relationship between the plurality of stored media session startup parameter values ​​and the received one or more property values ​​using the received feedback data.

18. The system of claim 15, wherein: The means for selecting one or more of the stored media session startup parameter values ​​for the media session using the received one or more attribute values ​​comprises: means for accessing the model using the received one or more property values; and A unit for generating the one or more startup parameter values ​​for the media session via the model based on the received one or more attribute values, and wherein the unit for applying the selected one or more startup parameter values ​​as initialization values ​​for the media session includes: a unit for applying the generated one or more startup parameter values ​​to the media session.

19. The system of claim 18, wherein: The one or more property values ​​form a network context for the computing device, the network context describing the network connection for the computing device, wherein the model is selected from a plurality of models using the one or more attribute values ​​and the network context, and The multiple models include a first model that is trained via machine learning techniques using historical data about multiple previously performed media sessions.

20. The system of claim 15, further comprising: means for receiving data regarding one or more session parameters of the media session while the media session is executing after initiating the media session on the computing device over the network connection using the initialization value; as well as Means for updating performance of the media session using the one or more session parameters.