IP Library Granted Patent US 9,215,476
Granted Patent B2
US 9,215,476 · App. 13/919,746 · Granted Dec 15, 2015

Media distribution to a plurality of devices utilizing buffered dispersed storage

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 9,215,476
App. No.
13/919,746
Granted
Dec 15, 2015
Kind
B2
Abstract

A method begins by a processing module receiving a plurality of playback requests for a stored program, wherein the stored program is stored in a dispersed storage network (DSN) memory as sets of encoded data slices. In response to the playback requests, the method continues with the processing module entering a loop that begins with retrieving a group of sets of encoded data slices, generating copies therefrom, and storing the copies. The loop continues with the processing module sending a unique copy of the copies to a requesting device. The method continues with the processing module existing the loop when the last group of the request has been retrieved and repeating the loop when it has not.

Claims (76)

1. A method for execution by a dispersed storage processing module, the method comprises:

receiving, from a plurality of requesting devices, a plurality of playback requests for a stored program, wherein the stored program is stored in a dispersed storage network (DSN) memory as a plurality of groups of sets of encoded data slices, wherein a group of sets of the plurality of groups of sets of encoded data slices corresponds to a time window of the stored program and a set of encoded data slices of the group of sets of the plurality of groups of sets of encoded data slices corresponds to a data segment of the time window; and

in response to the plurality of playback requests, entering a loop that includes:

retrieving a group of the plurality of groups of sets of encoded data slices from the DSN memory;

generating copies of the group of the plurality of groups of sets of encoded data slices;

storing the copies of the group of the plurality of groups of sets of encoded data slices in a playback DSN memory;

for each of at least some of the plurality of playback requests, sending a unique copy of the copies of the group of the plurality of groups of sets of encoded data slices to one of the plurality of requesting devices;

existing the loop when the group of the plurality of groups of sets of encoded data slices is identified as a last group to be retrieved; and

repeating the loop with another group of the plurality of groups of sets of encoded data slices as the group of the plurality of groups of sets of encoded data slices when the group of the plurality of groups of sets of encoded data slices is not identified as the last group to be retrieved.

2. The method of claim 1 , wherein the storing the group of the plurality of groups of sets of encoded data slices further comprises at least one of:

overwriting, in the playback DSN memory, previous copies of a previous group of the plurality of groups of sets of encoded data slices with the copies of the group of the plurality of groups of sets of encoded data slices; and

deleting the previous copies of the previous group of the plurality of groups of sets of encoded data slices from the playback DSN memory.

3. The method of claim 1 , wherein the storing the group further comprises:

decoding the group of the plurality of groups of sets of encoded data slices in accordance with an error coding dispersal storage function to produce a recaptured time window of the stored program;

encoding the recaptured time window in accordance with a second error coding dispersal storage function to produce a re-encoded first group; and

storing copies of the re-encoded first group in the playback DSN memory as the copies of the group of the plurality of groups of sets of encoded data slices.

4. The method of claim 1 , wherein the sending a unique copy of the copies of the group of the plurality of groups of sets of encoded data slices to one of the plurality of requesting devices comprises:

for the one of the plurality of requesting devices, selecting the unique copy of the copies of the group of the plurality of groups of sets of encoded data slices;

decoding the unique copy of the group of the plurality of groups of sets of encoded data slices in accordance with an error coding dispersal storage function to produce a time window of the stored program; and

outputting the time window of the stored program to the one of the plurality of requesting devices.

5. The method of claim 1 further comprises at least one of:

receiving a pause command from a particular requesting device of the plurality of requesting devices:

pausing processing of the loop for the particular requesting device; and

flagging the group of the plurality of groups of sets of encoded data slices for the particular requesting device to produce a most recent group indicator; and

receiving a play command from the particular requesting device:

resuming the processing of the loop from the most recent group indicator; and

receiving a rewind command from the particular requesting device:

repeating the loop with the other group of the plurality of groups of sets of encoded data slices as the group of the plurality of groups of sets of encoded data slices, wherein the other group of the plurality of groups of sets of encoded data slices is the previous group of the plurality of groups of sets of encoded data slices; and

receiving a fast forward command from the particular requesting device:

repeating the loop with the other group of the plurality of groups of sets of encoded data slices as the group of the plurality of groups of sets of encoded data slices, wherein the other group of the plurality of groups of sets of encoded data slices is a subsequent and not a next sequential time window of the stored program.

6. The method of claim 1 further comprises:

generating a number of copies of the group of the plurality of groups of sets of encoded data slices to correspond to a number of the plurality of playback requests; and

sending one of the number of copies as the unique copy to the one of the plurality of requesting devices.

7. The method of claim 1 further comprises:

generating a limited number of copies of the group of the plurality of groups of sets of encoded data slices that is less than a number of the plurality of playback requests;

selecting a subset of encoded data slices for each of the sets of encoded data slices of one of the limited number of copies of the group of the plurality of groups of sets of encoded data slices as the unique copy; and

sending the unique copy to the one of the plurality of requesting devices.

8. A computer comprises:

an interface; and

a processing module operable to:

receive, via the interface from a plurality of requesting devices, a plurality of playback requests for a stored program, wherein the stored program is stored in a dispersed storage network (DSN) memory as a plurality of groups of sets of encoded data slices, wherein a group of sets of the plurality of groups of sets of encoded data slices corresponds to a time window of the stored program and a set of encoded data slices of the group of sets of the plurality of groups of sets of encoded data slices corresponds to a data segment of the time window; and

in response to the plurality of playback requests, perform a loop that includes:

retrieving, via the interface, a group of the plurality of groups of sets of encoded data slices from the DSN memory;

generating copies of the group of the plurality of groups of sets of encoded data slices;

storing the copies of the group of the plurality of groups of sets of encoded data slices in a playback DSN memory;

for each of at least some of the plurality of playback requests, sending, via the interface, a unique copy of the copies of the group of the plurality of groups of sets of encoded data slices to one of the plurality of requesting devices;

existing the loop when the group of the plurality of groups of sets of encoded data slices is identified as a last group to be retrieved; and

repeating the loop with another group of the plurality of groups of sets of encoded data slices as the group of the plurality of groups of sets of encoded data slices when the group of the plurality of groups of sets of encoded data slices is not identified as the last group to be retrieved.

9. The computer of claim 8 , wherein the processing module further functions to store the group of the plurality of groups of sets of encoded data slices by at least one of:

overwriting, in the playback DSN memory, previous copies of a previous group of the plurality of groups of sets of encoded data slices with the copies of the group of the plurality of groups of sets of encoded data slices; and

deleting the previous copies of the previous group of the plurality of groups of sets of encoded data slices from the playback DSN memory.

10. The computer of claim 8 , wherein the processing module further functions to store the group by:

decoding the group of the plurality of groups of sets of encoded data slices in accordance with an error coding dispersal storage function to produce a recaptured time window of the stored program;

encoding the recaptured time window in accordance with a second error coding dispersal storage function to produce a re-encoded first group; and

storing, via the interface, copies of the re-encoded first group in the playback DSN memory as the copies of the group of the plurality of groups of sets of encoded data slices.

11. The computer of claim 8 , wherein the processing module further functions to send the unique copy of the copies of the group of the plurality of groups of sets of encoded data slices to one of the plurality of requesting devices by:

for the one of the plurality of requesting devices, selecting the unique copy of the copies of the group of the plurality of groups of sets of encoded data slices;

decoding the unique copy of the group of the plurality of groups of sets of encoded data slices in accordance with an error coding dispersal storage function to produce a time window of the stored program; and

outputting the time window of the stored program to the one of the plurality of requesting devices.

12. The computer of claim 8 , wherein the processing module further functions to:

receive, via the interface, a pause command from a particular requesting device of the plurality of requesting devices:

pausing processing of the loop for the particular requesting device; and

flagging the group of the plurality of groups of sets of encoded data slices for the particular requesting device to produce a most recent group indicator; and

receive, via the interface, a play command from the particular requesting device:

resuming the processing of the loop from the most recent group indicator; and

receive, via the interface, a rewind command from the particular requesting device:

repeating the loop with the other group of the plurality of groups of sets of encoded data slices as the group of the plurality of groups of sets of encoded data slices, wherein the other group of the plurality of groups of sets of encoded data slices is the previous group of the plurality of groups of sets of encoded data slices; and

receive, via the interface, a fast forward command from the particular requesting device:

repeating the loop with the other group of the plurality of groups of sets of encoded data slices as the group of the plurality of groups of sets of encoded data slices, wherein the other group of the plurality of groups of sets of encoded data slices is a subsequent and not a next sequential time window of the stored program.

13. The computer of claim 8 , wherein the processing module further functions to:

generate a number of copies of the group of the plurality of groups of sets of encoded data slices to correspond to a number of the plurality of playback requests; and

send one of the number of copies as the unique copy to the one of the plurality of requesting devices.

14. The computer of claim 8 , wherein the processing module further functions to:

generate a limited number of copies of the group of the plurality of groups of sets of encoded data slices that is less than a number of the plurality of playback requests;

select a subset of encoded data slices for each of the sets of encoded data slices of one of the limited number of copies of the group of the plurality of groups of sets of encoded data slices as the unique copy; and

send the unique copy to the one of the plurality of requesting devices.

Assignments (3)
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 →