A method for data communication from a first node to a second node over a data channel coupling the first node and the second node includes receiving messages at the first node from the second node, including receiving messages comprising data that depend at least in part of characteristics of the channel coupling the first node and the second node, transmitting messages from the first node to the second node, including applying forward error correction according to parameters determined from the received messages, the parameters determined from the received messages including at least two of a block size, an interleaving factor, and a code rate.
Legal claims defining the scope of protection, as filed with the USPTO.
1. A method for data communication from a first node to a second node over a data channel coupling the first node and the second node, the method comprising: executing, at the second node, a client application; receiving, at the second node and from the first node, messages comprising message data and redundancy data generated by forward error correction applied at the first node according to parameters including at least two of: a block size, an interleaving factor, a code rate, a pacing rate, and a window size; and transmitting, from the second node and to the first node, a feedback message comprising data that depends at least in part on: (i) measured or expected characteristics of the data channel coupling the first node and the second node, and (ii) at least one of a state of a buffer size at the second node and a state of unused data at the client application, wherein the first node dynamically adjusts the forward error correction based on the feedback message received from the second node.
2. The method of claim 1 , wherein the data that depends at least in part on: (i) measured or expected characteristics of the data channel coupling the first node and the second node, and (ii) at least one of the state of the buffer size at the second node and the state of unused data at the client application includes data characterizing a pattern of message erasure on the data channel.
3. The method of claim 1 , wherein the data characterizing the pattern of message erasure comprises data representing an erasure rate.
4. The method of claim 1 , further comprising computing, at the second node, the parameters of forward error correction for application to messages at the first node, wherein the feedback message comprises data representing the computed parameters.
5. The method of claim 4 , further comprises generating, at the second node, the data representing the computed parameters.
6. The method of claim 1 , wherein the first node determines the parameters from the feedback message.
7. The method of claim 1 , wherein the client application outputs multimedia content, and wherein the data that depends at least in part on: (i) measured or expected characteristics of the data channel coupling the first node and the second node, and (ii) at least one of the state of the buffer size at the second node and the state of unused data at the client application includes data corresponding to a play-out time of the unused data.
8. The method of claim 1 , further comprising transmitting, from the second node and to the first node, a retransmission request when the message data and redundancy data is insufficient to reconstruct an erased data unit transmitted by the first node.
9. The method of claim 1 , wherein the second node comprises an error control component that receives the messages and transmits the feedback message.
10. The method of claim 1 , wherein the message data and the redundancy data are transmitted in alternating runs.
11. A receiving computing device that is in data communication with a transmitting computing device over a data channel coupling the receiving and transmitting computing devices, comprising: one or more processors; and a non-transitory computer-readable storage medium having a plurality of instructions stored thereon, which, when executed by the one or more processors, cause the one or more processors to perform operations comprising: executing a client application; receiving, from the transmitting computing device, messages comprising message data and redundancy data generated by forward error correction applied at the transmitting computing device according to parameters including at least two of: a block size, an interleaving factor, a code rate, a pacing rate, and a window size; and transmitting, to the transmitting computing device, a feedback message comprising data that depends at least in part on: (i) measured or expected characteristics of the data channel coupling the receiving and transmitting computing devices, and (ii) at least one of a state of a buffer size at the receiving computing device and a state of unused data at the client application, wherein the transmitting computing device dynamically adjusts the forward error correction based on the feedback message received from the receiving computing device.
12. The receiving computing device of claim 11 , wherein the data that depends at least in part on: (i) measured or expected characteristics of the data channel coupling the transmitting computing device and the receiving computing device, and (ii) at least one of the state of the buffer size at the receiving computing device and the state of unused data at the client application includes data characterizing a pattern of message erasure on the data channel.
13. The receiving computing device of claim 11 , wherein the data characterizing the pattern of message erasure comprises data representing an erasure rate.
14. The receiving computing device of claim 11 , wherein the operations further comprise computing the parameters of forward error correction for application to messages at the transmitting computing device, wherein the feedback message comprises data representing the computed parameters.
15. The receiving computing device of claim 14 , wherein the operations further comprise generating the data representing the computed parameters.
16. The receiving computing device of claim 11 , wherein the transmitting computing device determines the parameters from the feedback message.
17. The receiving computing device of claim 11 , wherein the client application outputs multimedia content, and wherein the data that depends at least in part on: (i) measured or expected characteristics of the data channel coupling the transmitting computing device and the receiving computing device, and (ii) at least one of the state of the buffer size at the receiving computing device and the state of unused data at the client application includes data corresponding to a play-out time of the unused data.
18. The receiving computing device of claim 11 , wherein the operations further comprise transmitting, to the transmitting computing device, a retransmission request when the message data and redundancy data is insufficient to reconstruct an erased data unit transmitted by the transmitting computing device.
19. The receiving computing device of claim 11 , further comprising an error control component that receives the messages and transmits the feedback message.
20. The receiving computing device of claim 11 , wherein the message data and the redundancy data are transmitted in alternating runs.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
October 31, 2018
April 14, 2020
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.