IP Library Granted Patent US 8,751,894
Granted Patent B2
US 8,751,894 · App. 13/565,607 · Granted Jun 10, 2014

Concurrent decoding of data streams

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 8,751,894
App. No.
13/565,607
Granted
Jun 10, 2014
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module receiving one or more pairs of coded values. The method continues with the DS processing module creating a received coded matrix from the one or more pairs of coded values. When the received coded matrix includes a decode threshold number of pairs of coded values, the method continues with the DS processing module generating a data matrix from the received coded matrix and an encoding matrix, reproducing a one of a first plurality of data segments from a first plurality of data blocks of the data matrix, and reproducing a one of a second plurality of data segments from a second plurality of data blocks of the data matrix, wherein the one of the first plurality of data segments and the one of the second plurality of data segments maintain the time alignment of a first and second data streams.

Claims (78)

1. A method for execution by a computing device, the method comprises:

receiving one or more pairs of coded values, wherein a pair of coded values of the one or more pairs of coded values includes a coded value corresponding to one of a first plurality of data segments and a coded value corresponding to the one of a second plurality of data segments and wherein each of a first data stream and a second data streams are time aligned and segmented to produce the first plurality of data segments corresponding to the first data stream and the second plurality of data segments corresponding to the second data stream;

creating a received coded matrix from the one or more pairs of coded values; and

when the received coded matrix includes a decode threshold number of pairs of coded values:

generating a data matrix from the received coded matrix and an encoding matrix;

reproducing the one of the first plurality of data segments from a first plurality of data blocks of the data matrix; and

reproducing the one of the second plurality of data segments from a second plurality of data blocks of the data matrix, wherein the one of the first plurality of data segments and the one of the second plurality of data segments maintain the time alignment of the first and second data streams.

2. The method of claim 1 , wherein the creating the received coded matrix comprises:

when triggered, determining whether the received coded matrix includes the decode threshold number of pairs of coded values; and

when the received coded matrix does not include the decode threshold number of pairs of coded values:

generating a request for one or more additional pairs of coded values;

sending the request to a transmitting entity; and

receiving the one or more additional pairs of coded values from the transmitting entity.

3. The method of claim 2 , wherein the generating the request for the one or more additional pairs of coded values comprises:

identifying a number of additional pairs of coded values; and

generating the request for the number of additional pairs of coded values to include a list of slice names associated with the number of additional pairs of coded values.

4. The method of claim 2 , wherein the determining whether the received coded matrix includes the decode threshold number of pairs of coded values when triggered comprises at least one of:

expiration of a predetermined time period;

receiving an indication from the transmitting entity that at least a decode threshold number of the pairs of coded values have been transmitted; and

determining that the at least a decode threshold number of the pairs of coded values have been transmitted based on subsequent receptions of pairs of coded values from other data segments of the first and second data streams.

5. The method of claim 1 further comprises:

determining whether the reproduced one of the first plurality of data segments and the reproduced one of the second plurality of data segments are valid;

when the reproduced one of the first plurality of data segments and the reproduced one of the second plurality of data segments are valid, indicating to a transmitting entity that the received coded matrix includes the decode threshold number of pairs of coded values; and

when the reproduced one of the first plurality of data segments and the reproduce one of the second plurality of data segments are not valid, indicating that the received coded matrix does not include the decode threshold number of pairs of coded values.

6. The method of claim 1 , wherein the creating the received coded matrix from the one or more pairs of coded values comprises:

inputting pairs of coded values into the received coded matrix in a sequential order corresponding to a time ordering of the one of the first plurality of data segments and the one of the second plurality of data segments to maintain the time alignment of the first and second data streams.

7. The method of claim 1 , wherein the encoding matrix comprises at least one of:

a Reed-Solomon based encoding matrix, an on-line coding based matrix, a Cauchy Reed-Solomon based encoding matrix, a forward error correction based matrix, and an erasure code based matrix.

8. The method of claim 1 , wherein the generating the data matrix from the received coded matrix and the encoding matrix comprises:

for each column of the received coded matrix:

creating a received value matrix that includes a decode threshold number of coded values of the column;

creating a square encoding matrix based on corresponding rows of the decode threshold number of coded values of the column;

inverting the square encoding matrix to produce an inverted square encoding matrix; and

matrix multiplying the received value matrix by the inverted square encoding matrix to produce a corresponding column of the data matrix.

9. The method of claim 1 further comprises:

the first data stream corresponding to a first recording of an environment; and

the second data stream corresponding to a second recording of the environment.

10. A dispersed storage (DS) module comprises:

a first module, when operable within a computing device, causes the computing device to:

receive one or more pairs of coded values, wherein a pair of coded values of the one or more pairs of coded values includes a coded value corresponding to one of a first plurality of data segments and a coded value corresponding to the one of a second plurality of data segments and wherein each of a first data stream and a second data streams are time aligned and segmented to produce the first plurality of data segments corresponding to the first data stream and the second plurality of data segments corresponding to the second data stream;

a second module, when operable within the computing device, causes the computing device to:

create a received coded matrix from the one or more pairs of coded values; and

a third module, when operable within the computing device, causes the computing device to:

when the received coded matrix includes a decode threshold number of pairs of coded values:

generating a data matrix from the received coded matrix and an encoding matrix;

reproducing the one of the first plurality of data segments from a first plurality of data blocks of the data matrix; and

reproducing the one of the second plurality of data segments from a second plurality of data blocks of the data matrix, wherein the one of the first plurality of data segments and the one of the second plurality of data segments maintain the time alignment of the first and second data streams.

11. The DS module of claim 10 , wherein the second module functions to create the received coded matrix by:

when triggered, determining whether the received coded matrix includes the decode threshold number of pairs of coded values; and

when the received coded matrix does not include the decode threshold number of pairs of coded values:

generating a request for one or more additional pairs of coded values;

sending the request to a transmitting entity; and

receiving, the one or more additional pairs of coded values from the transmitting entity.

12. The DS module of claim 11 , wherein the second module functions to generate the request for the one or more additional pairs of coded values by:

identifying a number of additional pairs of coded values; and

generating the request for the number of additional pairs of coded values to include a list of slice names associated with the number of additional pairs of coded values.

13. The DS module of claim 11 , wherein the second module functions to determine whether the received coded matrix includes the decode threshold number of pairs of coded values when triggered by at least one of:

expiration of a predetermined time period;

receiving an indication from the transmitting entity that at least a decode threshold number of the pairs of coded values have been transmitted; and

determining that the at least a decode threshold number of the pairs of coded values have been transmitted based on subsequent receptions of pairs of coded values from other data segments of the first and second data streams.

14. The DS module of claim 10 further comprises:

a fourth module, when operable within the computing device, causes the computing device to:

determine whether the reproduced one of the first plurality of data segments and the reproduced one of the second plurality of data segments are valid;

when the reproduced one of the first plurality of data segments and the reproduced one of the second plurality of data segments are valid, indicate to a transmitting entity that the received coded matrix includes the decode threshold number of pairs of coded values; and

when the reproduced one of the first plurality of data segments and the reproduce one of the second plurality of data segments are not valid, indicate that the received coded matrix does not include the decode threshold number of pairs of coded values.

15. The DS module of claim 10 , wherein the second module functions to create the received coded matrix from the one or more pairs of coded values by:

inputting pairs of coded values into the received coded matrix in a sequential order corresponding to a time ordering of the one of the first plurality of data segments and the one of the second plurality of data segments to maintain the time alignment of the first and second data streams.

16. The DS module of claim 10 , wherein the encoding matrix comprises at least one of:

a Reed-Solomon based encoding matrix, an on-line coding based matrix, a Cauchy Reed-Solomon based encoding matrix, a forward error correction based matrix, and an erasure code based matrix.

17. The DS module of claim 10 , wherein the third module functions to generate the data matrix from the received coded matrix and the encoding matrix by:

for each column of the received coded matrix:

creating a received value matrix that includes a decode threshold number of coded values of the column;

creating a square encoding matrix based on corresponding rows of the decode threshold number of coded values of the column;

inverting the square encoding matrix to produce an inverted square encoding matrix; and

matrix multiplying the received value matrix by the inverted square encoding matrix to produce a corresponding column of the data matrix.

18. The DS module of claim 10 further comprises:

the first data stream corresponding to a first recording of an environment; and

the second data stream corresponding to a second recording of the environment.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 5, 2012
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 029413/0744 →