IP Library Granted Patent US 10,327,013
Granted Patent B2
US 10,327,013 · App. 15/944,312 · Granted Jun 18, 2019

System and method for asynchronous uploading of live digital multimedia with guaranteed delivery

Inventors: Paul Martel (Richardson, TX); Bradley Reitmeyer (Allen, TX)
Assignee: LIVING AS ONE, LLC
H04N21/2187H04N21/2365H04N21/2743H04N21/432H04N21/63345H04N21/63775H04N21/8456
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,327,013
App. No.
15/944,312
Granted
Jun 18, 2019
Kind
B2
Abstract

A system for asynchronous uploading of digital multimedia with guaranteed delivery is provided. The system comprises at least one processor and a memory coupled to the at least one processor, the memory containing computer executable instructions that, when executed by the at least one processor, cause the system to attempt by at least one upload worker thread to transmit a first container to a remote server, execute by the at least one upload worker thread a data integrity test on the first container upon a successful upload of the first container, and repeat, if the data integrity test fails, the attempt and execute steps.

Claims (89)

1. A system for asynchronous uploading of digital multimedia with guaranteed delivery comprising:

at least one processor and a memory coupled to the at least one processor, the memory containing computer executable instructions that, when executed by the at least one processor, cause the system to:

attempt by at least one upload worker thread to transmit a first container to a remote server;

execute by the at least one upload worker thread a data integrity test on the first container upon a successful upload of the first container; and

repeat, if the data integrity test fails, the attempt and execute steps.

2. The system of claim 1 , wherein the computer executable instructions, when executed by the at least one processor, further cause the system to:

determine by the at least one upload worker thread if an instability with a connection to the remote server exists, and, if so,

repeat the attempt and determine steps.

3. The system of claim 2 , wherein the computer executable instructions, when executed by the at least one processor, further cause the system to:

set a reattempt threshold, wherein the reattempt threshold is a number of upload reattempts allowed in the event of an instability with the connection to the remote server or a failure of the data integrity test; and

determine upon reaching one of the repeat steps, whether the reattempt threshold has been reached, and, if so,

place the first container back in an upload queue.

4. The system of claim 3 , wherein placing the first container instead places the first container into a separate reattempt queue.

5. The system of claim 4 , wherein the computer executable instructions, when executed by the at least one processor, further cause the system to:

check, before the upload worker thread takes the first container from the upload queue, whether the separate reattempt queue currently contains a reattempt container, and, if so:

remove the reattempt container from the separate reattempt queue;

start by the at least one upload worker thread a communications protocol client, wherein the communication protocol client establishes a connection to the remote server;

attempt by the at least one upload worker thread to transmit the reattempt container to the remote server;

determine by the at least one upload worker thread if an instability with the connection to the remote server exists, and, if so,

repeat the attempt and determine steps;

execute by the at least one upload worker thread a data integrity test on the reattempt container upon a successful upload of the reattempt container;

repeat, if the data integrity test fails, the attempt, determine, and execute steps; and

determine upon reaching one of the repeating steps, whether the reattempt threshold has been reached, and, if so,

place the reattempt container back in the reattempt queue.

6. The system of claim 1 , wherein the computer executable instructions, when executed by the at least one processor, further cause the system to:

create a manifest;

store the manifest on a local storage device;

add the manifest to an upload queue;

create a container, wherein the container includes content therein;

store the container on the local storage device;

add the container to the upload queue;

initiate at least one upload worker thread, wherein the at least one upload worker thread is a process that performs independently of the create, store, and add steps, and wherein the process performs independently of other upload worker threads;

remove the first container from the upload queue; and

start by the at least one upload worker thread a communications protocol client, wherein the communication protocol client establishes a connection to the remote server.

7. The system of claim 6 , wherein the computer executable instructions, when executed by the at least one processor, further cause the system to encrypt the container, resulting in an encrypted container.

8. The system of claim 7 , wherein the computer executable instructions, when executed by the at least one processor, further cause the system to:

create a decryption key associated with the encrypted container;

update the manifest to include information related to the decryption key; and

upload by the upload worker thread the decryption key to the remote server.

9. The system of claim 6 , further comprising a decoding client, wherein the decoding client includes executable instructions for:

downloading a plurality of data from the remote server, wherein the plurality of data includes the manifest, the first container, and any other data uploaded to the remote server by the at least one upload worker thread; and

storing the plurality of data on a local storage drive.

10. The system of claim 9 , wherein the decoding client further includes instructions for:

determining if a buffer limit has been reached, wherein the buffer limit is a set amount of data allowed to be downloaded; and

when the buffer limit is reached, temporarily halting downloading of the plurality of data.

11. A method for asynchronous uploading of digital multimedia with guaranteed delivery, comprising:

attempting by at least one upload worker thread to transmit a first container to a remote server;

executing by the at least one upload worker thread a data integrity test on the first container upon a successful upload of the first container; and

repeating, if the data integrity test fails, the attempting and executing steps.

12. The method of claim 11 , further comprising:

determining by the at least one upload worker thread if an instability with a connection to the remote server exists, and, if so,

repeating the attempting and determining steps.

13. The method of claim 12 , further comprising:

setting a reattempt threshold, wherein the reattempt threshold is a number of upload reattempts allowed in the event of an instability with the connection to the remote server or a failure of the data integrity test; and

determining upon reaching one of the repeating steps, whether the reattempt threshold has been reached, and, if so,

placing the first container back in an upload queue.

14. The method of claim 13 , wherein the placing step instead places the first container into a separate reattempt queue.

15. The method of claim 14 , further comprising:

checking, before the upload worker thread takes the first container from the upload queue, whether the separate reattempt queue currently contains a reattempt container, and, if so:

removing the reattempt container from the separate reattempt queue;

starting by the at least one upload worker thread a communications protocol client, wherein the communication protocol client establishes a connection to the remote server;

attempting by the at least one upload worker thread to transmit the reattempt container to the remote server;

determining by the at least one upload worker thread if an instability with the connection to the remote server exists, and, if so,

repeating the attempting and determining steps;

executing by the at least one upload worker thread a data integrity test on the reattempt container upon a successful upload of the reattempt container;

repeating, if the data integrity test fails, the attempting, determining, and executing steps; and

determining upon reaching one of the repeating steps, whether the reattempt threshold has been reached, and, if so,

placing the reattempt container back in the reattempt queue.

16. The method of claim 11 , further comprising:

creating a manifest;

storing the manifest on a local storage device;

adding the manifest to an upload queue;

creating a container, wherein the container includes content therein;

storing the container on the local storage device;

adding the container to the upload queue;

initiating at least one upload worker thread, wherein the at least one upload worker thread is a process that performs independently of the creating, storing, and adding steps, and wherein the process performs independently of other upload worker threads;

removing the first container from the upload queue; and

starting by the at least one upload worker thread a communications protocol client, wherein the communication protocol client establishes a connection to the remote server.

17. The method of claim 16 , further comprising encrypting the container, resulting in an encrypted container.

18. The method of claim 17 , further comprising:

creating a decryption key associated with the encrypted container;

updating the manifest to include information related to the decryption key; and

uploading by the upload worker thread the decryption key to the remote server.

19. The method of claim 16 , further comprising:

downloading by a decoding client a plurality of data from the remote server, wherein the plurality of data includes the manifest, the first container, and any other data uploaded to the remote server by the at least one upload worker thread; and

storing the plurality of data on a local storage drive.

20. The method of claim 19 , further comprising:

determining by the decoding client if a buffer limit has been reached, wherein the buffer limit is a set amount of data allowed to be downloaded; and

when the buffer limit is reached, temporarily halting downloading of the plurality of data.

Assignments (8)
TERMINATION AND RELEASE OF PATENT SECURITY INTERESTS RECORDED ON MAY 19, 2023, AT REEL/FRAME 063696/0709 Recorded Aug 20, 2024
From: CRESCENT AGENCY SERVICES LLC, AS ADMINISTRATIVE AGENT
To: PUSHPAY USA INC; RESI MEDIA LLC
Reel/Frame 068722/0660 →
PATENT SECURITY AGREEMENT Recorded Aug 20, 2024
From: PUSHPAY USA INC; RESI MEDIA LLC
To: JEFFERIES FINANCE LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 068722/0758 →
SECURITY INTEREST Recorded May 19, 2023
From: PUSHPAY USA INC; RESI MEDIA LLC
To: CRESCENT AGENCY SERVICES LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 063696/0709 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded May 19, 2023
From: BANK OF NEW ZEALAND, AS SECURITY TRUSTEE
To: RESI MEDIA, LLC
Reel/Frame 063703/0518 →
SECURITY INTEREST Recorded Sep 30, 2021
From: RESI MEDIA LLC
To: BANK OF NEW ZEALAND, AS SECURITY TRUSTEE
Reel/Frame 057660/0291 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 11, 2020
From: ASYNCHRONOUS HOLDINGS, LLC
To: RESI MEDIA LLC
Reel/Frame 052906/0867 →
CHANGE OF NAME Recorded Jun 10, 2020
From: LIVING AS ONE, LLC
To: ASYNCHRONOUS HOLDINGS, LLC
Reel/Frame 052893/0177 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2018
From: MARTEL, PAUL; REITMEYER, BRADLEY
To: LIVING AS ONE, LLC
Reel/Frame 045426/0891 →
Continuity (3)
Continuation 15462816 · Mar 18, 2017
Continuation 15252368 · Aug 31, 2016
Related Publication 20180227602A1 · Aug 9, 2018
Cited By (2)
US 12,610,092 US 12,610,093