IP Library Granted Patent US 11,522,816
Granted Patent B2
US 11,522,816 · App. 17/030,647 · Granted Dec 6, 2022

Multi-stride packet payload mapping for robust transmission of data

Inventors: Vikram Singh (San Francisco, CA); Michal Pietras (London, GB)
Assignee: MIXHalo Corp.
H04L49/9057G10L19/167H04L1/0041H04L1/0045H04L1/1841H04L12/18H04L49/901H04L49/9005H04L65/70H04L65/80H04L69/16H04L1/0083H04N7/04
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 11,522,816
App. No.
17/030,647
Granted
Dec 6, 2022
Kind
B2
Abstract

Systems and methods for packet payload mapping for robust transmission of data are described. For example, methods may include receiving, using a network interface, packets that each respectively include a primary frame and one or more preceding frames from the sequence of frames of data that are separated from the primary frame in the sequence of frames by a respective multiple of a stride parameter; storing the frames of the packets in a buffer with entries that each hold the primary frame and the one or more preceding frames of a packet; reading a first frame from the buffer as the primary frame from one of the entries; determining that a packet with a primary frame that is a next frame in the sequence has been lost; and, responsive to the determination, reading the next frame from the buffer as a preceding frame from one of the entries.

Claims (77)

1. A system for receiving data partitioned into a sequence of frames of data, comprising:

a network interface;

a memory; and

a processor, wherein the memory includes instructions executable by the processor to cause the system to:

receive, using the network interface, packets that each respectively include a primary frame and two or more preceding frames from the sequence of frames of data,

wherein at least one of the two or more preceding frames of a respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a first stride parameter and at least one of the two or more preceding frames of the respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a second stride parameter that is different from the first stride parameter, and

wherein the two or more preceding frames of each respective packet include a number of preceding frames equal to a sum of redundancy parameters for respective stride parameters, including the first stride parameter and the second stride parameter;

store the frames of the packets in a buffer with entries that each hold the primary frame and the two or more preceding frames of a packet, wherein the buffer is sized to store frames from a number of packets equal to a largest stride parameter times the respective redundancy parameter for the largest stride parameter plus one;

read a first frame from the buffer as the primary frame from one of the entries of the buffer;

determine, based on the buffer, that a packet with a primary frame that is a next frame in the sequence of frames of data has been lost; and

responsive to the determination that the packet was lost, read the next frame from the buffer as a preceding frame from one of the entries of the buffer.

2. The system of claim 1 , wherein the memory includes instructions executable by the processor to cause the system to:

write frames, including the first frame and the next frame, that are read from the buffer to a reassembly buffer, wherein the reassembly buffer includes entries that each consist of a frame of the sequence of frames of data.

3. The system of claim 1 , wherein the memory includes instructions executable by the processor to cause the system to:

play audio data of the first frame responsive to reading the first frame from the buffer.

4. The system of claim 1 , wherein the memory includes instructions executable by the processor to cause the system to:

store the packets in a jitter buffer as they are received; and

read the packets from the jitter buffer before storing the frames of the packets in the buffer.

5. The system of claim 1 , wherein the first stride parameter is less than three and the second stride parameter is greater than four.

6. The system of claim 1 , wherein the two or more preceding frames of each respective packet include a number of preceding frames equal to a sum of redundancy parameters for respective stride parameters, and the redundancy parameter for the second stride parameter is greater than one.

7. The system of claim 1 , wherein the memory includes instructions executable by the processor to cause the system to:

receive, using the network interface, a packet map data structure that indicates the first stride parameter and the second stride parameter and indicates counts of redundant preceding frames to be transmitted in each of the packets for each stride parameter.

8. The system of claim 1 , wherein the sequence of frames of data is a sequence of frames of audio data.

9. The system of claim 1 , wherein frames in the sequence of frames of data are all a same size.

10. A method for receiving data partitioned into a sequence of frames of data, comprising:

receiving, using a network interface, packets that each respectively include a primary frame and two or more preceding frames from the sequence of frames of data,

wherein at least one of the two or more preceding frames of a respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a first stride parameter and at least one of the two or more preceding frames of the respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a second stride parameter that is different from the first stride parameter, and

wherein the two or more preceding frames of each respective packet include a number of preceding frames equal to a sum of redundancy parameters for respective stride parameters, including the first stride parameter and the second stride parameter;

storing the frames of the packets in a buffer with entries that each hold the primary frame and the two or more preceding frames of a packet, wherein the buffer is sized to store frames from a number of packets equal to a largest stride parameter times the respective redundancy parameter for the largest stride parameter plus one;

reading a first frame from the buffer as the primary frame from one of the entries of the buffer;

determining, based on the buffer, that a packet with a primary frame that is a next frame in the sequence of frames of data has been lost; and

responsive to the determination that the packet was lost, reading the next frame from the buffer as a preceding frame from one of the entries of the buffer.

11. The method of claim 10 , comprising:

writing frames, including the first frame and the next frame, that are read from the buffer to a reassembly buffer, wherein the reassembly buffer includes entries that each consist of a frame of the sequence of frames of data.

12. The method of claim 11 , comprising:

playing audio data that is stored in an oldest frame from the reassembly buffer; and

deleting the oldest frame from the reassembly buffer.

13. The method of claim 10 , comprising:

receiving, using the network interface, a packet map data structure that indicates the first stride parameter and the second stride parameter and indicates counts of redundant preceding frames to be transmitted in each of the packets for each stride parameter.

14. A system for receiving data partitioned into a sequence of frames of data, comprising:

a network interface;

a memory; and

a processor, wherein the memory includes instructions executable by the processor to cause the system to:

receive, using the network interface, packets that each respectively include a primary frame and two or more preceding frames from the sequence of frames of data,

wherein at least one of the two or more preceding frames of a respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a first stride parameter and at least one of the two or more preceding frames of the respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a second stride parameter that is different from the first stride parameter, and

wherein the two or more preceding frames of each respective packet include a number of preceding frames equal to a sum of redundancy parameters for respective stride parameters, and the redundancy parameter for the second stride parameter is greater than one;

store the frames of the packets in a buffer with entries that each hold the primary frame and the two or more preceding frames of a packet;

read a first frame from the buffer as the primary frame from one of the entries of the buffer;

determine, based on the buffer, that a packet with a primary frame that is a next frame in the sequence of frames of data has been lost; and

responsive to the determination that the packet was lost, read the next frame from the buffer as a preceding frame from one of the entries of the buffer.

15. The system of claim 14 , wherein the memory includes instructions executable by the processor to cause the system to:

write frames, including the first frame and the next frame, that are read from the buffer to a reassembly buffer, wherein the reassembly buffer includes entries that each consist of a frame of the sequence of frames of data.

16. The system of claim 14 , wherein the memory includes instructions executable by the processor to cause the system to:

play audio data of the first frame responsive to reading the first frame from the buffer.

17. The system of claim 14 , wherein the memory includes instructions executable by the processor to cause the system to:

store the packets in a jitter buffer as they are received; and

read the packets from the jitter buffer before storing the frames of the packets in the buffer.

18. The system of claim 14 , wherein the two or more preceding frames of each respective packet include a number of preceding frames equal to a sum of redundancy parameters for respective stride parameters, including the first stride parameter and the second stride parameter, and wherein the buffer is sized to store frames from a number of packets equal to a largest stride parameter times the respective redundancy parameter for the largest stride parameter plus one.

19. The system of claim 14 , wherein the first stride parameter is less than three and the second stride parameter is greater than four.

20. The system of claim 14 , wherein the memory includes instructions executable by the processor to cause the system to:

receive, using the network interface, a packet map data structure that indicates the first stride parameter and the second stride parameter and indicates counts of redundant preceding frames to be transmitted in each of the packets for each stride parameter.

21. A method for receiving data partitioned into a sequence of frames of data, comprising:

receiving, using a network interface, packets that each respectively include a primary frame and two or more preceding frames from the sequence of frames of data,

wherein at least one of the two or more preceding frames of a respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a first stride parameter and at least one of the two or more preceding frames of the respective packet is separated from the primary frame of the respective packet in the sequence of frames by a respective multiple of a second stride parameter that is different from the first stride parameter, and

wherein the two or more preceding frames of each respective packet include a number of preceding frames equal to a sum of redundancy parameters for respective stride parameters, and the redundancy parameter for the second stride parameter is greater than one;

storing the frames of the packets in a buffer with entries that each hold the primary frame and the two or more preceding frames of a packet;

reading a first frame from the buffer as the primary frame from one of the entries of the buffer;

determining, based on the buffer, that a packet with a primary frame that is a next frame in the sequence of frames of data has been lost; and

responsive to the determination that the packet was lost, reading the next frame from the buffer as a preceding frame from one of the entries of the buffer.

22. The method of claim 21 , comprising:

writing frames, including the first frame and the next frame, that are read from the buffer to a reassembly buffer, wherein the reassembly buffer includes entries that each consist of a frame of the sequence of frames of data.

23. The method of claim 22 , comprising:

playing audio data that is stored in an oldest frame from the reassembly buffer; and

deleting the oldest frame from the reassembly buffer.

24. The method of claim 21 , wherein the two or more preceding frames of each respective packet include a number of preceding frames equal to a sum of redundancy parameters for respective stride parameters, including the first stride parameter and the second stride parameter, and wherein the buffer is sized to store frames from a number of packets equal to a largest stride parameter times the respective redundancy parameter for the largest stride parameter plus one.

25. The method of claim 21 , comprising:

receiving, using the network interface, a packet map data structure that indicates the first stride parameter and the second stride parameter and indicates counts of redundant preceding frames to be transmitted in each of the packets for each stride parameter.

Assignments (2)
SECURITY INTEREST Recorded Oct 28, 2021
From: MIXHALO CORP.
To: DBD CREDIT FUNDING LLC
Reel/Frame 057955/0350 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2020
From: SINGH, VIKRAM; PIETRAS, MICHAL
To: MIXHALO CORP.
Reel/Frame 053869/0727 →
Continuity (2)
Provisional Application 62905786 · Sep 25, 2019
Related Publication 20210091894A1 · Mar 25, 2021