Abstract:
A device implementing the subject technology may include at least one processor configured to receive a plurality of buffer reports from a plurality of other devices, each of the plurality of buffer reports indicating a current target buffer level for a respective one of the plurality of other devices. The at least one processor may be further configured to determine a group target buffer level based at least in part on the current target buffer levels of the plurality of other devices and a current target buffer level of the at least one buffer. The at least one processor may be further configured to transmit the group target buffer level to the plurality of other devices. The at least one processor may be further configured to manage an occupancy of the at least one buffer based at least in part on the group target buffer level.
Abstract:
A device implementing a system for multiway audio-video conferencing includes a processor configured to receive, from a first device, indication of a first channel and a second channel for communicating content for an audio-video conference session. The first channel and the second channel correspond to different types of communication interfaces. The processor is further configured to receive, from the first device, a first request to subscribe to a first content stream for the audio-video conference session via the first channel, and to subscribe to a second content stream for the audio-video conference session via the second channel, and in response to receiving the first request, forward, to the first device, the first content stream via the first channel.
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:
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:
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:
Apparatus and methods to evaluate connectivity between a primary device and a secondary device to support a connection for a real-time application to a remote device are disclosed. The primary device receives a connection request from the remote device and sends invitations to one or more secondary devices to connect with the remote device, the invitations sent through a first communication path. A secondary device that receives the invitation sends a connectivity evaluation packet to the primary device through a second communication path. When a connectivity response is received from the primary device through the second communication path and a user accepts the invitation, the secondary device sends an invitation response to the primary device and subsequently establishes a connection to the primary device through the second communication path. In some embodiments, the first communication path includes a cloud-based server that provides a guaranteed delivery message service.
Abstract:
A unified message delivery between multiple devices is disclosed. Sending messages through a local communications link, such as but not limited to at least one of a Bluetooth connection and a peer-to-peer WiFi connection, can lead to faster transmission times and reduced server load. When the local communications link is unavailable or not suitable, the messages can be sent through a network and a push server. In some examples, messages can be sent through both the local communications link and through the network and the push server. Duplicates of a received message can be avoided by utilizing indicators. In some examples, one or more devices can include queue(s) to ensure ordered delivery of a plurality of messages when a local communications link and network connection become unavailable.
Abstract:
Coded video data may be transmitted between an encoder and a decoder using multiple FEC codes and/or packets for error detection and correction. Only a subset of the FEC packets need be transmitted between the encoder and decoder. The FEC packets of each FEC group may take, as inputs, data packets of a current FEC group and also an untransmitted FEC packet of a preceding FEC group. Due to relationships among the FEC packets, when transmission errors arise and data packets are lost, there remain opportunities for a decoder to recover lost data packets from earlier-received FEC groups when later-received FEC groups are decoded. This opportunity to recover data packets from earlier FEC groups may be useful in video coding and other systems, in which later-received data often cannot be decoded unless earlier-received data is decoded properly.
Abstract:
A device implementing the subject technology may include at least one processor configured to establish a group communication session for two or more electronic devices utilizing a first communication modality. The at least one processor may be further configured to determine to utilize a second communication modality for the group communication session. The at least one processor may be further configured to transition the group communication session from the first communication modality to the second communication modality.
Abstract:
Systems, methods and non-transitory computer readable media for allowing a user to switch between wearable items that have been paired or associated with an electronic device, such as a smartphone, are described. In one embodiment, the wearable items automatically detect a removal of a first wearable item from a user's body and an attachment of a second wearable item to the user's body. Messages from the wearable items are transmitted to the electronic device to allow the electronic device to switch the active wearable item from the first wearable item to the second wearable item. The switch can occur while the electronic device is in a locked state, and the electronic device can synchronize the second wearable item with data received from the first wearable item. Other embodiments are also described.