IP Library Granted Patent US 10,063,261
Granted Patent B1
US 10,063,261 · App. 14/882,118 · Granted Aug 28, 2018

Communication endpoints and related methods for forward error correction of packetized data

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,063,261
App. No.
14/882,118
Granted
Aug 28, 2018
Kind
B1
Abstract

Communication endpoints and related methods for forward error correction (FEC) are disclosed. A communication endpoint includes control circuitry including a packetizer configured to segment near-end data into groups of near-end data packets, and a forward error correction (FEC) packet generator configured to generate at least two near-end FEC packets for each group of near-end data packets. A method includes generating the FEC packets, and transmitting the data packets and the FEC packets to a far-end communication endpoint. A communication endpoint includes control circuitry including a forward error correction repairer configured to use far-end FEC packets to repair groups of far-end data packets. A method includes receiving a group of far-end data packets and corresponding far-end FEC packets, and repairing far-end data packets with the corresponding far-end FEC packets.

Claims (34)

1. A communication endpoint, comprising: control circuitry including:

a packetizer configured to segment near-end data into groups of data packets; and

a forward error correction (FEC) packet generator configured to:

generate at least a first row FEC packets packet, a second row FEC packet, and a third row FEC packet, each of the row FEC packets comprising a row FEC parity of respective first group of data packets, second group of data packets, and third group of data packets associated therewith;

generate at least a first diagonal FEC packet, a second diagonal FEC packet, and a third diagonal FEC packet, each of the diagonal FEC packets comprising a diagonal FEC parity of the respective first group of data packets, second group of data packets, and third group of data packets associated therewith, wherein a number of FEC data units in each of the diagonal FEC packets is at least equal to a number of data units in a longest packet of the data packets in the group plus a number one less than a number of the data packets in the group associated therewith, and wherein the third group of data packets used for the third row FEC packet and the third diagonal FEC packet at least partially overlaps with at least one of the first group of data packets or the second group of data packets; and

dynamically adjust at least one of a number of FEC packets, including the row FEC packets and the diagonal FEC packets, that are generated for each corresponding protected group of data packets or a number of maximum data packets in the corresponding protected group of data packets based, at least in part, on an determining an expected packet loss rate during transmission of the groups of data packets to the far-end communication endpoint; and

one or more communication elements operably coupled to the control circuitry and configured to transmit the groups of data packets, the row FEC packets, and the diagonal FEC packets through one or more data networks to a far-end communication endpoint.

2. The communication endpoint of claim 1 , wherein the FEC packet generator is further configured to generate other diagonal FEC packets in another direction, each of the other diagonal FEC packets associated with a different group of the data packets, and each of the other diagonal FEC packets comprising another diagonal FEC parity of the group of data packets associated therewith.

3. The communication endpoint of claim 1 , wherein the row FEC packets and the diagonal FEC packets each include an FEC header with indexing information indicating how the data packets are indexed into the group of data packets associated therewith.

4. The communication endpoint of claim 1 , further comprising a video camera configured to capture near-end video images and provide uncompressed near-end video data corresponding thereto as the near-end data segmented into groups of data packets, wherein the control circuitry further comprises an encoder configured to compress the uncompressed near-end video data into near-end video data for segmenting into groups of data packets, and wherein the one or more communication elements are further configured to receive packetized far-end video data from the far-end communication endpoint.

5. The communication endpoint of claim 1 , wherein the second group of data packets used for the second row FEC packet and the second diagonal FEC packet partially overlaps with the first group of data packets used for the first row FEC packet and the first diagonal FEC packet.

6. The communication endpoint of claim 5 , wherein the third group of data packets used for the third row FEC packet and the third diagonal FEC packet partially overlaps with the second group of data packets used for the first row FEC packet and the first diagonal FEC packet.

7. The communication endpoint of claim 6 , wherein the third group of data packets and the first group of data packets do not overlap.

8. The communication endpoint of claim 1 , wherein the third group of data packets used for the third row FEC packet and the third diagonal FEC packet is a concatenation with first group of data packets and the second group of data packets.

9. A method of transmitting packetized data through one or more networks, the method comprising:

segmenting near-end data into data packets of data units;

indexing groups of the data packets into logically ordered set of data packets including one of the data packets in each column of the ordered set of data packets;

generating a row forward error correction (FEC) packet corresponding to at least each of a first group of the data packets a second group of data packets, and a third group of data packets, the row FEC packets each including row FEC units computed to be a row parity of each of the corresponding data packets in a different row of the ordered set of data packets;

generating one or more diagonal FEC packets corresponding to at least each of the group of the data packets, the second group of data packets, and the third group of data packets, wherein each of the one or more diagonal FEC packets include diagonal FEC units computed to be a diagonal parity along respective diagonals of the ordered set of data packets, wherein a number of diagonal FEC data units in each of the diagonal FEC packets is at least a number of data units in a longest packet of the data packets in the group plus a number one less than a number of the data packets in the group associated therewith, and wherein the third group of data packets at least partially overlaps with at least one of the first group of data packets or the second group of data packets;

dynamically adjusting at least one of a number of FEC packets, including the row FEC packets and the diagonal FEC packets, that are generated for each corresponding protected group of data packets or a number of maximum data packets in the corresponding protected group of data packets based, at least in part, on an determining an expected packet loss rate during transmission of the groups of data packets to the far-end communication endpoint; and

transmitting the groups of the data packets and the corresponding row FEC packets and one or more diagonal FEC packets through one or more networks to a far-end communication endpoint.

10. The method of claim 9 , wherein transmitting the groups of the data packets and the corresponding row FEC packets and one or more diagonal FEC packets comprises transmitting the groups of the data packets through a first data channel, and transmitting the row FEC packets and the one or more diagonal FEC packets through a second data channel that is separate from the first data channel.

11. The method of claim 9 , wherein segmenting the data into the data packets includes adding data headers to each of the data packets before generating the row FEC packet and the one or more diagonal FEC packets.

12. The method of claim 9 , wherein generating at least two diagonal FEC packets extending in different directions that correspond to each of the groups of the data packets.

13. The method of claim 9 , wherein computing the row parity and computing the diagonal parity includes at least one of an XOR function, an addition function, and a multiplication function.

14. The method of claim 9 , wherein dynamically adjusting at least one of a number of FEC packets or a number of maximum data packets in the corresponding protected group of data packets includes dynamically adjusting both the number of FEC packets and the number of maximum data packets in the corresponding protected group of data packets depending on the determined packet loss percentage.

15. The method of claim 9 , wherein dynamically adjusting at least one of a number of FEC packets or a number of maximum data packets in the corresponding protected group of data packets includes adjusting the number of FEC packets to be dual parity for a first data rate, and adjusting the number of FEC packets to be triple parity for a second data rate.

16. The method of claim 9 , wherein dynamically adjusting at least one of a number of FEC packets or a number of maximum data packets in the corresponding protected group of data packets includes having a fixed number of FEC packets and adjusting the number of maximum data packets in the corresponding protected group of data packets depending on the determined packet loss percentage.

17. The method of claim 9 , wherein dynamically adjusting at least one of a number of FEC packets or a number of maximum data packets in the corresponding protected group of data packets is responsive to both the packet loss rate and a download data rate.

18. The method of claim 9 , wherein the second group of data packets used for the second row FEC packet and the second diagonal FEC packet partially overlaps with the first group of data packets used for the first row FEC packet and the first diagonal FEC packet.

19. The method of claim 18 , wherein the third group of data packets used for the third row FEC packet and the third diagonal FEC packet partially overlaps with the second group of data packets used for the first row FEC packet and the first diagonal FEC packet.

20. The method of claim 19 , wherein the third group of data packets and the first group of data packets do not overlap.

21. The method of claim 9 , wherein the third group of data packets used for the third row FEC packet and the third diagonal FEC packet is a concatenation with first group of data packets and the second group of data packets.

22. The method of claim 9 , wherein the overlapping portion of the first and second groups of data packets is not re-transmitted when the second row FEC packet and the second diagonal FEC packet are generated.

Assignments (15)
CORRECTIVE ASSIGNMENT TO CORRECT THE RECEIVING PARTY DATA THE NAME OF THE LAST RECEIVING PARTY SHOULD BE CAPTIONCALL, LLC PREVIOUSLY RECORDED ON REEL 67190 FRAME 517. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded May 31, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: SORENSON IP HOLDINGS, LLC; SORENSON COMMUNICATIONS, LLC; CAPTIONCALL, LLC
Reel/Frame 067591/0675 →
SECURITY INTEREST Recorded Apr 23, 2024
From: SORENSON COMMUNICATIONS, LLC; INTERACTIVECARE, LLC; CAPTIONCALL, LLC
To: OAKTREE FUND ADMINISTRATION, LLC, AS COLLATERAL AGENT
Reel/Frame 067573/0201 →
RELEASE OF SECURITY INTEREST Recorded Apr 23, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: SORENSON IP HOLDINGS, LLC; SORENSON COMMUNICATIONS, LLC; CAPTIONALCALL, LLC
Reel/Frame 067190/0517 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2021
From: CORTLAND CAPITAL MARKET SERVICES LLC
To: SORENSON COMMUNICATIONS, LLC; CAPTIONCALL, LLC
Reel/Frame 058533/0467 →
JOINDER NO. 1 TO THE FIRST LIEN PATENT SECURITY AGREEMENT Recorded Apr 22, 2021
From: SORENSON IP HOLDINGS, LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 056019/0204 →
LIEN Recorded Feb 11, 2020
From: SORENSON COMMUNICATIONS, LLC; CAPTIONCALL, LLC
To: CORTLAND CAPITAL MARKET SERVICES LLC
Reel/Frame 051894/0665 →
RELEASE OF SECURITY INTEREST Recorded May 8, 2019
From: U.S. BANK NATIONAL ASSOCIATION
To: SORENSON COMMUNICATIONS, LLC; SORENSON IP HOLDINGS, LLC; CAPTIONCALL, LLC; INTERACTIVECARE, LLC
Reel/Frame 049115/0468 →
RELEASE OF SECURITY INTEREST Recorded May 7, 2019
From: JPMORGAN CHASE BANK, N.A.
To: SORENSON COMMUNICATIONS, LLC; SORENSON IP HOLDINGS, LLC; CAPTIONCALL, LLC; INTERACTIVECARE, LLC
Reel/Frame 049109/0752 →
PATENT SECURITY AGREEMENT Recorded Apr 29, 2019
From: SORENSEN COMMUNICATIONS, LLC; CAPTIONCALL, LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 050084/0793 →
SECURITY INTEREST Recorded Apr 12, 2017
From: SORENSON IP HOLDINGS, LLC; CAPTIONCALL, LLC
To: U.S. BANK NATIONAL ASSOCIATION
Reel/Frame 042242/0001 →
SECURITY INTEREST Recorded Apr 9, 2017
From: SORENSON IP HOLDINGS, LLC; CAPTIONCALL, LLC
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 042229/0120 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 27, 2017
From: SORENSON COMMUNICATIONS INC.
To: SORENSON IP HOLDINGS LLC
Reel/Frame 041521/0614 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Mar 28, 2016
From: SORENSON COMMUNICATIONS, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038274/0654 →
SENIOR FIRST LIEN PATENT SECURITY AGREEMENT Recorded Mar 28, 2016
From: SORENSON COMMUNICATIONS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038274/0606 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 13, 2015
From: CROXALL, ALAN, II; LONG, JEREMIAH; BRIGGS, JASON; ROACH, ISAAC
To: SORENSON COMMUNICATIONS, INC.
Reel/Frame 036852/0284 →
Cited By (1)
US 12,210,412