IP Library Granted Patent US 9,288,251
Granted Patent B2
US 9,288,251 · App. 13/491,955 · Granted Mar 15, 2016

Adaptive bitrate management on progressive download with indexed media files

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,288,251
App. No.
13/491,955
Granted
Mar 15, 2016
Kind
B2
Abstract

A method includes receiving streaming media data having an original media frame and an original frame index referencing the original media frame; determining an optimal session bitrate, wherein the optimal session bitrate is based on the available network bandwidth between a server and a terminal; allocating a frame budget for an output media frame by estimating a frame size of the output media frame based on the original frame index and the optimal session bitrate; generating the output media frame by processing the original media frame based on first encoding parameters and, if the allocated frame budget is greater than a frame size of the processed media frame, padding the processed media frame; and providing the output media frame.

Claims (66)

1. A method performed by one or more processors of an adaptive bitrate manager, the method comprising:

receiving streaming media data having an original media frame, an original frame index referencing the original media frame, and an original file index;

determining an optimal session bitrate, wherein the optimal session bitrate is based on the available network bandwidth between a server and a terminal;

allocating a frame budget for an output media frame by estimating a frame size of the output media frame based on the original frame index and the optimal session bitrate, wherein the frame budget represents estimated size of the output media frame;

generating the output media frame by processing the original media frame based on first encoding parameters and, if the allocated frame budget is greater than a frame size of the processed media frame, padding the processed media frame;

generating an output file index based on the frame budget and the original file index; and

providing the output media frame associated with the output file index.

2. The method of claim 1 , further comprising:

allocating frame budgets for output media frames by estimating frame sizes of the output media frames based on the original frame index and the optimal session bitrate, each output media frame having a corresponding frame budget; and

generating, before the output media frames are generated, an output frame index referencing the output media frames based on the frame budgets and the original frame index.

3. The method of claim 2 , further comprising:

determining an updated optimal session bitrate;

determining new encoding parameters using the updated optimal session bitrate; and

generating a second output media frame associated with the output file index, wherein the output media frame is generated using the original media frame and the new encoding parameters.

4. The method of claim 1 , further comprising:

retrieving the original media frame from the streaming media data based on the original frame index;

decoding the original media frame; and

obtaining the first processing parameters based on the decoded original media frame.

5. The method of claim 1 , further comprising:

if the output media frame does not fit within the frame budget, determining second encoding parameters based on the frame budget and on the first encoding parameters; and

generating the output media frame by re-processing the media frame based on the second encoding parameters and, if the allocated frame budget is greater than a frame size of the processed media frame, padding the processed media frame.

6. The method of claim 1 , further comprising:

removing the padding by compressing the output media frame before sending the output media frame to the terminal.

7. A server configured to receive streaming media data having an original media frame, an original frame index referencing the original media frame, and an original file index, the server comprising:

an adaptive bitrate controller module configured to determine an optimal session bitrate, wherein the optimal session bitrate is based on the available network bandwidth between a server and a terminal;

a frame budget algorithm module configured to allocate a frame budget for an output media frame by estimating a frame size of the output media frame based on the original frame index and the optimal session bitrate, wherein the frame budget represents estimated size of the output media frame;

a quantization algorithm module configured to determine first encoder parameters based on the frame budget, the optimal session bitrate, and the original media frame;

an encoder configured to encode the media frame based on the first processing parameters;

a frame padder configured to pad the processed media frame to generate the output media frame;

a file index generator configured to generate an output file index based on the frame budget and the original file index; and

a frame writer configured to provide the output media frame associated with the output file index.

8. The server of claim 7 , further comprising a file reader configured to receive the streaming media data and extract the original frame index.

9. The server of claim 7 , wherein the frame budget algorithm module is further configured to:

allocate frame budgets for output media frames by estimating frame sizes of the output media frames based on the original frame index and the optimal session bitrate, each output media frame having a corresponding frame budget.

10. The server of claim 9 ,

wherein the file index generator is further configured to generate, before the output media frames are generated, an output frame index referencing the output media frames based on the frame budgets and the original frame index.

11. The server of claim 10 , the file index generator is further configured to update the output frame index based on configuration information of the encoder.

12. The server of claim 7 , further comprising:

a decoder configured to decode the original media frame, and obtain information from the decoded media frame to facilitate the processing algorithm module to determine the first processing parameters.

13. The server of claim 7 , the processing algorithm module is further configured to:

if the output media frame does not fit within the frame budget, determine second encoding parameters based on the frame budget and on the first encoding parameters.

14. The server of claim 13 , the processing module is further configured to:

re-process the output media frame based on the second processing parameters such that the processed media frame fits within the frame budget.

15. A non-transitory computer readable medium that stores a set of instructions that is executable by at least one processor of a server to cause the server to perform a method, the method comprising:

receiving streaming media data having an original media frame, an original frame index referencing the original media frame, and an original file index;

determining an optimal session bitrate, wherein the optimal session bitrate is based on the available network bandwidth between a server and a terminal;

allocating a frame budget for an output media frame by estimating a frame size of the output media frame based on the original frame index and the optimal session bitrate, wherein the frame budget represents estimated size of the output media frame;

generating the output media frame by processing the original media frame based on first encoding parameters and, if the allocated frame budget is greater than a frame size of the processed media frame, padding the processed media frame;

generating an output file index based on the frame budget and the original file index; and

providing the output media frame associated with the output file index.

16. The non-transitory computer readable medium of claim 15 , wherein the set of instructions that is executable by the at least one processor of the server to cause the server to further perform:

allocating frame budgets for output media frames by estimating frame sizes of the output media frames based on the original frame index and the optimal session bitrate, each output media frame having a corresponding frame budget; and

generating, before the output media frames are generated, an output frame index referencing the output media frames based on the frame budgets and the original frame index.

17. The non-transitory computer readable medium of claim 16 , wherein the set of instructions that is executable by the at least one processor of the server to cause the server to further perform:

determining an updated optimal session bitrate;

determining new encoding parameters using the updated optimal session bitrate; and

generating a second output media frame associated with the output file index, wherein the output media frame is generated using the original media frame and the new encoding parameters.

18. The non-transitory computer readable medium of claim 15 , wherein the set of instructions that is executable by the at least one processor of the server to cause the server to further perform:

retrieving the original media frame from the streaming media data based on the original frame index;

decoding the original media frame; and

obtaining the first processing parameters based on the decoded original media frame.

19. The non-transitory computer readable medium of claim 15 , wherein the set of instructions that is executable by the at least one processor of the server to cause the server to further perform:

if the output media frame does not fit within the frame budget, determining second encoding parameters based on the frame budget and the first encoding parameters; and

generating the output media frame by re-processing the media frame based on the second encoding parameters and, if the allocated frame budget is greater than a frame size of the processed media frame, padding the processed media frame.

20. The non-transitory computer readable medium of claim 15 , wherein the set of instructions that is executable by the at least one processor of the server to cause the server to further perform:

removing the padding by compressing the output media frame before sending the output media frame to the terminal.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2023
From: BYTEMOBILE INNOVATIONS, LLC
To: OPTIMORPHIX, INC.
Reel/Frame 064020/0183 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2022
From: CITRIX SYSTEMS, INC.
To: BYTEMOBILE INNOVATIONS, LLC
Reel/Frame 059087/0052 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2015
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 037289/0606 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2015
From: CITRIX SYSTEMS, INC.
To: BYTEMOBILE, INC.
Reel/Frame 035440/0599 →
NUNC PRO TUNC ASSIGNMENT Recorded Dec 6, 2013
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 031730/0322 →
THIS SUBMISSION IS TO CORRECT THE SPELLING OF THE RECEIVING PARTY (ASSIGNEE)'S STREET NAME IN THE ORIGINAL COVER SHEET RECORDED AT REEL/FRAME 030609/0389. THE ADDRESS NAME SHOULD BE WEST CYPRESS CREEK ROAD. Recorded Sep 17, 2013
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 031287/0874 →
MERGER Recorded Jun 13, 2013
From: BYTEMOBILE, INC.
To: CITRIX SYSTEMS, INC.
Reel/Frame 030609/0389 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 9, 2012
From: MELNYK, MIGUEL; KIDD, ROBERT; PENNER, ANDREW; KOOPMANS, FREDERICK; TIDEMANN, JEREMY; BREG, FABIAN
To: BYTEMOBILE, INC.
Reel/Frame 028516/0692 →