Abstract:
A system and method for conducting a video call between an originating device and a terminating device by establishing a peer-to-peer (P2P) connection between the devices. The originating and terminating devices exchange candidate information through a P2P server, except that the candidate information for the terminating device is altered before arriving at the originating device. The altering includes changing the IP address and corresponding port for each candidate. The originating device uses the altered candidate information to derive new candidate pairs that are sent to the terminating device, which uses the new candidate pairs to also derive a second candidate list. If the candidate pairs match, a P2P connection is established between the devices.
Abstract:
A method for adaptive audio codec selection during a communication session is disclosed. The method can include negotiating a set of audio codecs for use during the communication session. The method can further include defining multiple audio tiers. Each audio tier can be associated with a network condition and can define an audio codec from the set of audio codecs for use in the associated network condition. The method can also include using a first audio codec during the wireless communication session. The method can additionally include determining a changed network condition selecting a second audio codec by determining the audio tier corresponding to the changed network condition. The method can further include, in response to the changed network condition, switching from the first audio codec to a second audio codec that is defined by an audio tier having an associated network condition corresponding to the changed network condition.
Abstract:
A wireless device described herein can use information on data flow, in addition to indications from the physical network, to decide on suitable bandwidth usage for audio and video information. This data flow information is further used to determine an efficient network route to use for high-quality reception and transmission of audio and video data, as well as the appropriate time to switch between available network routes to improve bandwidth performance.
Abstract:
A device implementing the subject technology may include at least one processor configured to transmit an allocation request requesting allocation of a group communication session with a plurality of devices and receive an allocation response in response to the allocation request, the allocation response including credential information for the device to use to join the group communication session. The at least one processor may be further configured to transmit an allocation bind request with the credential information to join the group communication session using the credential information and receive an allocation bind success response in response to the allocation bind request, the allocation bind success response indicating that the device has joined the group communication session. The at least one processor may be further configured to provide a join notification to the plurality of devices via an intermediary device to notify that the device has joined the group communication session.
Abstract:
A quick relay communication protocol is used by an initiating communication device (such as a wearable electronic device, e.g., a smart watch) and/or a recipient communication device (such as a companion electronic device to the wearable electronic device, e.g., a smart phone, a tablet computer or a laptop computer) to selectively communicate messages via different communication channels. Based on available connections and a communication constraint associated with a message, a processor executing a program module in an application layer in the initiating communication device provides transmission instructions to an interface circuit in the initiating communication device, which transmits a message to the recipient communication device based on the transmission instructions. When there are currently no available connections and the message is eligible to be communicated through a cloud-based relay server, the processor establishes a cloud-based connection with the recipient communication device via the relay server.
Abstract:
A device implementing the subject technology may include at least one processor configured to receive an indication of a task being performed at an other device. The at least one processor is further configured to perform, in response to receipt of the indication, one or more preliminary operations in anticipation of receiving a handoff of the task. The at least one processor is further configured to receive, after performing the one or more preliminary operations, a notification that the task is being handed off. The at least one processor is further configured to receive the handoff of the task from the other device. The at least one processor is further configured to continue to perform the task based at least in part on the one or more preliminary operations that were performed prior to receiving the notification that the task is being handed off.
Abstract:
A device implementing a system for audio-video conferencing using multiple stream identifiers includes a processor configured to receive, from a sending device, indication of a first content stream and a first stream identifier, and indication of a second content stream and a second stream identifier associated. The first content stream and the second content stream correspond to different bit rates of streaming content. The processor is configured to receive, from a receiving device, a request to subscribe to the second content stream, the request including the second stream identifier, and receive, from the sending device, an indication that the second stream identifier has been associated with the first content stream. The processor is configured to forward, to the receiving device, the first content stream based on the request to subscribe to the second content stream and on the indication that the second stream identifier has been associated with the first content stream.
Abstract:
When direct communication, such as via Bluetooth, is unavailable, a communication protocol is used by an initiating communication device and/or a recipient communication device to establish a communication session via a cloud-based relay server. Establishing the communication session, such as a phone call or video streaming, includes setting up at least a first connection or link between the initiating communication device and the relay server, and at least a second connection or link between the relay server and the recipient communication device. Transports and interfaces for the first link and the second link may be selected independently of each other, and at least one of transports and interfaces for the first link and the second link may differ, e.g., the communication session may include asymmetric transport.
Abstract:
When direct communication between devices, such as via Bluetooth, is unavailable, a communication protocol is used by an initiating communication device and/or a recipient communication device to establish a communication session via a cloud-based relay server. This communication protocol efficiently allocates (or binds) the initiating communication device, the recipient communication device, and the relay server together for the communication session. The communication protocol may include handshaking messages that specify a transport type and channel used for connections in the communication session, as well as an address of the relay server. After the communication session is confirmed, the communication protocol allows the initiating communication device and the recipient communication device to share messages even when physically separated from each other.
Abstract:
Some embodiments relate to a device that transmits/receives encrypted communications with another device. A first device, such as a smart phone or smart watch, may generate a message associated with a certain data class, which may determine the security procedure used in the communication of the message. The first device may establish an encryption session for the purpose of communicating the message to a second device. Prior to sending the message, the first device may wait until encryption credentials are accessible according to certain conditions, which may be determined at least in part by the data class of the message. Similarly, after receiving the message, the second device may not be able to decrypt the message until encryption credentials are accessible according to certain conditions, which may be determined at least in part by the message data class.