IP Library Granted Patent US 10,893,084
Granted Patent B2
US 10,893,084 · App. 16/111,571 · Granted Jan 12, 2021

Bandwidth efficient streaming and synching multimedia content at a desired quality of experience

Inventor: Praveen Raja Dhanabalan (Bangalore, IN)
Assignee: Citrix Systems, Inc.
H04L65/4092H04L65/604H04L65/608H04L65/80H04L67/1095H04L67/42
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,893,084
App. No.
16/111,571
Granted
Jan 12, 2021
Kind
B2
Abstract

Methods and systems for bandwidth efficient streaming and synching multimedia content at a desired quality of experience are described herein. One method includes: requesting, by a client device and from a server device, a multimedia file for streaming; receiving, at the client device and responsive to the request, a plurality of chunks of the multimedia file, wherein the chunks are of varying quality; streaming the multimedia file based on the received plurality of chunks; determining a first subset of the plurality of chunks that meet a predefined quality threshold, and a second subset of the plurality of chunks that do not meet the predefined quality threshold; requesting, by the client device and from the server device, a replacement chunk for each chunk of the second subset, wherein each replacement chunk meets the predefined quality threshold; and storing the multimedia file using the first subset and the replacement chunks.

Claims (53)

1. A method, comprising:

receiving, at a client device, a multimedia file from a server device, the multimedia file including a plurality of chunks, wherein the chunks are of varying quality;

streaming the multimedia file based on the received plurality of chunks;

determining, by the client device, a first subset of the plurality of chunks that meet a quality threshold, and a second subset of the plurality of chunks that do not meet the quality threshold;

performing, in response to determining that a bandwidth characteristic satisfies a threshold, two or more iterations of:

identifying, by the client device, a lowest quality chunk of the second subset;

requesting, by the client device and from the server device, a replacement chunk for the lowest quality chunk of the second subset;

receiving, by the client device and from the server device, the replacement chunk for the lowest quality chunk of the second subset, wherein the replacement chunk meets the quality threshold; and

replacing, by the client device, the lowest quality chunk of the second subset with the replacement chunk; and

after performing the two or more iterations, storing the multimedia file.

2. The method of claim 1 , wherein the replacement chunk is requested while the client device is idle.

3. The method of claim 2 , further comprising determining that the client device has become idle based on an amount of time that has lapsed during which the client device is not streaming the multimedia file.

4. The method of claim 1 , wherein the plurality of chunks is received using an adaptive bit rate protocol.

5. The method of claim 1 , wherein the quality threshold is at least 1080p.

6. The method of claim 1 , further comprising storing a quality flag associated with each chunk, the quality flags associated with chunks of the first subset indicating a high-quality and the quality flags associated with chunks of the second subset indicating a low-quality.

7. The method of claim 1 , wherein each subsequent replacement chunk requested after a first iteration of the two or more iterations is that of the lowest quality chunk in the second subset that has not yet been requested.

8. The method of claim 1 , wherein, after performing at least one of the two or more iterations, the second subset of the plurality of chunks consists of zero chunks.

9. One or more non-transitory computer readable storage media comprising computer readable instructions that, when executed, cause a client device to:

receive a multimedia file from a server device, the multimedia file including a plurality of chunks, wherein the chunks are of varying quality;

stream the multimedia file based on the received plurality of chunks;

determine a first subset of the plurality of chunks that meet a quality threshold, and a second subset of the plurality of chunks that do not meet the quality threshold;

perform, in response to determining that a bandwidth characteristic satisfies a threshold, two or more iterations of:

identifying, by the client device, a lowest quality chunk of the second subset;

requesting, from the server device, a replacement chunk for the lowest quality chunk of the second subset;

receiving, from the server device, the replacement chunk for the lowest quality chunk of the second subset, wherein the replacement chunk meets the quality threshold; and

replacing, by the client device, the lowest quality chunk of the second subset with the replacement chunk; and

after performing the two or more iterations, store the multimedia file.

10. The computer readable storage media of claim 9 , wherein the replacement chunk is requested while the client device is idle.

11. The computer readable storage media of claim 10 , wherein the computer readable instructions further cause the client device to determine that the client device has become idle based on an amount of time that has lapsed during which the client device is not streaming the multimedia file.

12. The computer readable storage media of claim 9 , wherein the plurality of chunks is received using an adaptive bit rate protocol.

13. The computer readable storage media of claim 9 , wherein the quality threshold is at least 1080p.

14. The computer readable storage media of claim 9 , wherein the computer readable instructions further cause the client device to store a quality flag associated with each chunk, the quality flags associated with chunks of the first subset indicating a high-quality and the quality flags associated with chunks of the second subset indicating a low-quality.

15. The computer readable storage media of claim 9 , wherein each subsequent replacement chunk requested after a first iteration of the two or more iterations is that of the lowest quality chunk in the second subset that has not yet been requested.

16. The computer readable storage media of claim 9 , wherein, after the computer readable instructions cause the client device to perform at least one of the two or more iterations, the second subset of the plurality of chunks consists of zero chunks.

17. A method, comprising:

receiving, by a server device and from a client device, a request to stream a multimedia file hosted by the server device;

transmitting, from the server device to the client device, the multimedia file as a plurality of chunks, wherein the chunks are of varying quality responsive to feedback regarding an available bandwith of the client device; and

performing, in response to determining that the available bandwith of the client device satisfies a threshold, two or more iterations of:

receiving, by the server device and from the client device, a request to download a replacement chunk for a previously successfully transmitted chunk, wherein the previously successfully transmitted chunk did not meet a quality threshold; and

transmitting, from the server device to the client device, the replacement chunk, wherein the replacement chunk meets the quality threshold.

18. The method of claim 17 , wherein the plurality of chunks is transmitted using an adaptive bit rate protocol.

19. The method of claim 17 , wherein the quality threshold is at least 1080p.

20. A system comprising

one or more processors; and

memory storing computer-executable instructions that, when executed by the one or more processors, cause the system to:

receive, at a client device, a multimedia file from a server device, the multimedia file including a plurality of chunks, wherein the chunks are of varying quality;

stream the multimedia file based on the received plurality of chunks;

determine, by the client device, a first subset of the plurality of chunks that meet a quality threshold, and a second subset of the plurality of chunks that do not meet the quality threshold;

perform, in response to determining that a bandwidth characteristic satisfies a threshold, two or more iterations of:

identifying, by the client device, a lowest quality chunk of the second subset;

requesting, by the client device and from the server device, a replacement chunk for the lowest quality chunk of the second subset receiving, by the client device and from the server device, the replacement chunk for the lowest quality chunk of the second subset, wherein the replacement chunk meets the quality threshold; and

replacing, by the client device, the lowest quality chunk of the second subset with the replacement chunk; and

after performing the two or more iterations, store the multimedia file.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2018
From: DHANABALAN, PRAVEEN RAJA
To: CITRIX SYSTEMS, INC.
Reel/Frame 046722/0462 →
Continuity (1)
Related Publication 20200068000A1 · Feb 27, 2020