# US 9,883,139 B2 · Video conferencing over IP networks

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,883,139 B2
- Document ID: US9883139B2
- Status: Granted
- Kind: B2
- Application number: 15/495,734
- Filed: 2017-04-24
- Published: 2017-08-10
- Granted: 2018-01-30
- Earliest claimed: 2006-08-07
- Assignees: Krush Technologies, LLC
- Applicants: Krush Technologies, LLC
- Inventors: Chang Feng; Sergey Pesherov
- Web page: https://patentgrep.com/patent/US9883139B2

## CPC

- H04N 7/147: {Communication arrangements, e.g. identifying the communication as a video-communication, intermediate storage of the signals (selecting H04Q)}
- G06Q 10/10: Office automation; Time management
- H04L 7/0008: {Synchronisation information channels, e.g. clock distribution lines}
- H04L 41/509: {wherein the managed service relates to media content delivery, e.g. audio, video or TV}
- H04L 47/2475: for supporting traffic characterised by the type of applications
- H04L 47/38: by adapting coding or compression rate
- H04L 47/56: implementing delay-aware scheduling
- H04L 65/403: Arrangements for multi-party communication, e.g. for conferences (data switching systems for conference H04L12/18; arrangements for connecting several subscribers to a common circuit, i.e. affording conference facilities H04M3/56; television conferencing systems H04N7/15)
- H04M 3/5307: {for recording messages comprising any combination of audio and non-audio components}
- H04M 3/5315: {where the non-audio components are still images or video (still image mailbox systems H04N1/324, intermediate storage of video signals for videophones H04N7/147)}
- H04M 7/0072: {Speech codec negotiation (H04L65/1069 takes precedence)}
- H04N 7/15: Conference systems
- H04L 47/2416: Real-time traffic
- H04M 1/2535: {adapted for voice communication over an Internet Protocol [IP] network (Voice over Internet Protocol (VoIP) network equipment and services H04M7/006; implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP] H04L69/16)}
- H04M 3/568: {audio processing specific to telephonic conferencing, e.g. spatial distribution, mixing of participants (echo suppression in two-way loud-speaking telephone systems H04M9/02; sound field processing per se H04S7/30)}
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04M: TELEPHONIC COMMUNICATION (circuits for controlling other apparatus via a telephone cable and not involving telephone switching apparatus G08)

## Abstract

A method for communication includes establishing multiple communication links over a packet network between a server and plurality of client computers that are to participate in a video teleconference. The client computers may also create secondary communication links that function similarly to links between the server and client computers. The server receives from the client computers uplink audio packets and uplink video packets, which respectively contain audio and video data captured by each of the client computers. The server determines the optimal bandwidth for each client computer. The server also mixes the audio data from the uplink audio packets so as to create respective streams of mixed audio data for transmission to the client computers and transmits to the client computers downlink audio packets containing the respective streams of mixed audio data. The server relays the video data to the client computers in downlink video packets. The client computers receive and synchronize the video data with the mixed audio data.

## Claims

### Claim 1

A method comprising:
establishing, by at least one processor of a first computing device, a first communication link over a packet network between a client component of the first computing device and a video communications server;
receiving, by the at least one processor and from the video communications server, instructions for initiating a video teleconference between the first computing device and a second computing device;
establishing, by the at least one processor, a second communication link over the packet network between a server component of the first computing device and the second computing device based on the received instructions;
transmitting, by the at least one processor and during the video teleconference, audio and video packets via the second communication link, wherein the audio and video packets respectively comprise audio and video data; and
transmitting, by the at least one processor and during the video teleconference, synchronization packets via the second communication link, wherein the audio and video packets are synchronized for output of the audio and video data at the second computing device based on synchronization information comprised in the synchronization packets.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
establishing, by the at least one processor, a third communication link over the packet network between the server component of the first computing device and a third computing device, wherein each of the first, second, and third computing devices are enabled to participate in the video teleconference.

### Claim 3 (depends on 2)

The method of claim 2, wherein the third communication link is established based on the received instructions, wherein the received instructions comprise instructions for initiating a video teleconference between the first, second, and third computing devices.

### Claim 4 (depends on 2)

The method of claim 2, further comprising:
transmitting, by the at least one processor and during the video teleconference, the audio and video packets via the third communication link; and
transmitting, by the at least one processor and during the video teleconference, the synchronization packets via the third communication link, wherein the audio and video packets are synchronized for output of the audio and video data at the third computing device based on the synchronization information.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
selecting, by the at least one processor, a first codec for the second computing device based on the received instructions; and
selecting, by the at least one processor, a second codec for the third computing device based on the received instructions, wherein the first codec is different than the second codec.

### Claim 6 (depends on 5)

The method of claim 5, wherein the first codec is used by the second computing device to decode at least one of the audio and video data, and wherein the second codec is used by the third computing device to output at least one of the audio and video data.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving, by the at least one processor via the second communication link, second audio, second video, and second synchronization packets, wherein the second audio and video packets respectively comprise second audio and second video data, and wherein the second audio and second video packets are synchronized for output of the second audio and second video data at the first computing device based on synchronization information comprised in the second synchronization packets.

### Claim 8

A non-transitory computer-readable medium comprising code that, when executed, causes at least one processor of a first computing device to perform the operations of:
establishing, by the at least one processor, a first communication link over a packet network between a client component of the first computing device and a video communications server;
receiving, by the at least one processor and from the video communications server, instructions for initiating a video teleconference between the first computing device and a second computing device;
establishing, by the at least one processor, a second communication link over the packet network between a server component of the first computing device and the second computing device based on the received instructions;
transmitting, by the at least one processor and during the video teleconference, audio and video packets via the second communication link, wherein the audio and video packets respectively comprise audio and video data; and
transmitting, by the at least one processor and during the video teleconference, synchronization packets via the second communication link, wherein the audio and video packets are synchronized for output of the audio and video data at the second computing device based on synchronization information comprised in the synchronization packets.

### Claim 9 (depends on 8)

The non-transitory computer-readable medium of claim 8, further comprising code that, when executed, causes the at least one processor to perform the operations of:
establishing, by the at least one processor, a third communication link over the packet network between the server component of the first computing device and a third computing device, wherein each of the first, second, and third computing devices are enabled to participate in the video teleconference.

### Claim 10 (depends on 9)

The non-transitory computer-readable medium of claim 9, wherein the third communication link is established based on the received instructions, wherein the received instructions comprise instructions for initiating a video teleconference between the first, second, and third computing devices.

### Claim 11 (depends on 9)

The non-transitory computer-readable medium of claim 9, further comprising code that, when executed, causes the at least one processor to perform the operations of:
transmitting, by the at least one processor and during the video teleconference, the audio and video packets via the third communication link; and
transmitting, by the at least one processor and during the video teleconference, the synchronization packets via the third communication link, wherein the audio and video packets are synchronized for output of the audio and video data at the third computing device based on the synchronization information.

### Claim 12 (depends on 11)

The non-transitory computer-readable medium of claim 11, further comprising code that, when executed, causes the at least one processor to perform the operations of:
selecting, by the at least one processor, a first codec for the second computing device based on the received instructions; and
selecting, by the at least one processor, a second codec for the third computing device based on the received instructions, wherein the first codec is different than the second codec.

### Claim 13 (depends on 12)

The non-transitory computer-readable medium of claim 12, wherein the first codec is used by the second computing device to decode at least one of the audio and video data, and wherein the second codec is used by the third computing device to output at least one of the audio and video data.

### Claim 14 (depends on 8)

The non-transitory computer-readable medium of claim 8, further comprising code that, when executed, causes the at least one processor to perform the operations of:
receiving, by the at least one processor via the second communication link, second audio, second video, and second synchronization packets, wherein the second audio and video packets respectively comprise second audio and second video data, and wherein the second audio and second video packets are synchronized for output of the second audio and second video data at the first computing device based on synchronization information comprised in the second synchronization packets.

### Claim 15

A first computing device comprising:
at least one memory comprising instructions; and
at least one processor configured to execute the instructions, wherein executing the instructions causes the at least one processor to perform the operations of:
establishing, by the at least one processor, a first communication link over a packet network between a client component of the first computing device and a video communications server;
receiving, by the at least one processor and from the video communications server, instructions for initiating a video teleconference between the first computing device and a second computing device;
establishing, by the at least one processor, a second communication link over the packet network between a server component of the first computing device and the second computing device based on the received instructions;
transmitting, by the at least one processor and during the video teleconference, audio and video packets via the second communication link, wherein the audio and video packets respectively comprise audio and video data; and
transmitting, by the at least one processor and during the video teleconference, synchronization packets via the second communication link, wherein the audio and video packets are synchronized for output of the audio and video data at the second computing device based on synchronization information comprised in the synchronization packets.

### Claim 16 (depends on 15)

The first computing device of claim 15, wherein executing the instructions further causes the at least one processor to perform the operations of:
establishing, by the at least one processor, a third communication link over the packet network between the server component of the first computing device and a third computing device, wherein each of the first, second, and third computing devices are enabled to participate in the video teleconference.

### Claim 17 (depends on 16)

The first computing device of claim 16, wherein the third communication link is established based on the received instructions, the received instructions comprise instructions for initiating a video teleconference between the first, second, and third computing devices.

### Claim 18 (depends on 16)

The first computing device of claim 16, wherein executing the instructions further causes the at least one processor to perform the operations of:
transmitting, by the at least one processor and during the video teleconference, the audio and video packets via the third communication link; and
transmitting, by the at least one processor and during the video teleconference, the synchronization packets via the third communication link, wherein the audio and video packets are synchronized for output of the audio and video data at the third computing device based on the synchronization information.

### Claim 19 (depends on 18)

The first computing device of claim 18, wherein executing the instructions further causes the at least one processor to perform the operations of:
selecting, by the at least one processor, a first codec for the second computing device based on the received instructions, wherein the first codec is used by the second computing device to decode at least one of the audio and video data; and
selecting, by the at least one processor, a second codec for the third computing device based on the received instructions, wherein the second codec is used by the third computing device to output at least one of the audio and video data, and wherein the first codec is different than the second codec.

### Claim 20 (depends on 15)

The first computing device of claim 15, wherein the video communications server comprises, is, or is comprised in the second computing device, or wherein executing the instructions further causes the at least one processor to perform the operations of:
receiving, by the at least one processor via the second communication link, second audio, second video, and second synchronization packets, wherein the second audio and video packets respectively comprise second audio and second video data, and wherein the second audio and second video packets are synchronized for output of the second audio and second video data at the first computing device based on synchronization information comprised in the second synchronization packets.
