IP Library Granted Patent US 10,182,211
Granted Patent B2
US 10,182,211 · App. 13/095,552 · Granted Jan 15, 2019

Methods and systems to fast fill media players

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,182,211
App. No.
13/095,552
Granted
Jan 15, 2019
Kind
B2
Abstract

Methods and systems are provided to fast fill media players and buffers associated with media players. A bandwidth associated with initial startup of a media player is overloaded to rapidly fill the buffer and initiate the media player. Alternatively, multiple simultaneous data communication sessions are established with a media data source device, and the media data are concurrently received from the simultaneous sessions into the buffer or transferred of out the buffer at startup, thereby decreasing the latency associated with initiating the media player.

Claims (72)

1. A method of filling a media player residing in a non-transitory computer-readable storage medium and for execution on a machine, comprising:

determining, by a media player executing on the machine, a connection bandwidth and a latency threshold for use in requesting media data, the connection bandwidth indicating a bandwidth that is to be used when delivering the media data to the media player;

generating a set of data communication requests, each data communication request of the set of data communication requests configured to request a portion of the media data from a media source, the set of data communication requests being configured to be executed concurrently;

estimating a duration of executing the set of data communication requests concurrently;

determining that the estimated duration of executing the set of data communication requests exceeds the latency threshold;

in response to determining that the estimated duration of executing the set of data communication requests exceeds the latency threshold:

identifying a quantity of additional data communication requests to be added to the set of data communication requests based on the estimated duration of executing the set of data communication requests; and

updating the set of data communication requests to include the quantity of additional data communication requests;

initiating, by the machine, execution of the updated set of data communication requests, wherein execution of each data communication request of the updated set of data communication requests triggers establishing a transfer session with the media source that is configured to transfer the portion of the media data corresponding to the data communication request;

estimating a combined bandwidth corresponding to supporting transfer sessions for each of the updated set of data communication requests;

determining that the estimated combined bandwidth exceeds a processing rate of the media player;

in response to determining that the estimated combined bandwidth exceeds the processing rate, increasing, by the machine, the processing rate of the media player to a new processing rate;

receiving, by the machine and via processing of the media player at the new processing rate, multiple portions of the media data into a single buffer associated with the media player, the multiple portions corresponding to multiple data communication requests of the updated set of data communication requests;

determining, by the machine and prior to having stored all portions corresponding to all of the updated set of data communication requests in the single buffer, that the single buffer is full; and

in response to determining that the single buffer is full, initiating, by the machine, playback of the media data by the media player, wherein initiation of the media player causes one or more of the multiple portions of the media data in the single buffer to be removed from the single buffer and played by the media player.

2. The method of claim 1 , wherein portions of the media data are received into the single buffer without using cache memory.

3. The method of claim 2 , wherein a latency associated with initiating playback of the media data by the media player is reduced.

4. The method of claim 1 , wherein the new processing rate is a factor increase in the processing rate of the media player.

5. The method of claim 1 , wherein determining that the single buffer is filled comprises:

detecting that a portion of the media data is stored in a first block of the single buffer; and

detecting that a portion of the media data is stored in a last block of the single buffer, wherein one or more blocks between the first block and the last block do not have a portion of the media data stored therein.

6. The method of claim 1 , wherein multiple portions of the media data are received using a bandwidth that exceeds the connection bandwidth.

7. The method of claim 1 , wherein receiving multiple portions of the media data into a single buffer associated with the media player comprises:

filling a remaining capacity of the single buffer with duplicate copies of the multiple portions of the media data until the single buffer is full, wherein one or more additional portions of the media data are received and replace the duplicate copies before the media player obtains the duplicate copies.

8. A system comprising:

one or more processors;

a non-transitory computer-readable medium including instructions that when executed by the one or more processors, cause the one or more processors to perform operations including:

determining, by a media player, a connection bandwidth and a latency threshold for use in requesting media data, the connection bandwidth indicating a bandwidth that is to be used when delivering the media data to the media player;

generating a set of data communication requests, each data communication request of the set of data communication requests configured to request a portion of the media data from a media source, the set of data communication requests being configured to be executed concurrently;

estimating a duration of executing the set of data communication requests concurrently;

determining that the estimated duration of executing the set of data communication requests exceeds the latency threshold;

in response to determining that the estimated duration of executing the set of data communication requests exceeds the latency threshold:

identifying a quantity of additional data communication requests to be added to the set of data communication requests based on the estimated duration of executing the set of data communication requests; and

updating the set of data communication requests to include the quantity of additional data communication requests;

initiating execution of the updated set of data communication requests, wherein execution of each data communication request of the updated set of data communication requests triggers establishing a transfer session with the media source that is configured to transfer the portion of the media data corresponding to the data communication request

estimating a combined bandwidth corresponding to supporting transfer sessions for each of the updated set of data communication requests;

determining that the estimated combined bandwidth exceeds a processing rate of the media player;

in response to determining that the estimated combined bandwidth exceeds the processing rate, increasing the processing rate of the media player to a new processing rate;

receiving, via processing of the media player at the new processing rate, multiple portions of the media data into a single buffer associated with the media player, the multiple portions corresponding to multiple data communication requests of the updated set of data communication requests;

determining, prior to having stored all portions corresponding to all of the updated set of data communication requests in the single buffer, that the single buffer is full; and

in response to determining that the single buffer is full, initiating playback of the media data by the media player, wherein initiation of the media player causes one or more of the multiple portions of the media data in the single buffer to be removed from the single buffer and played by the media player.

9. The system of claim 8 , wherein portions of the media data are received into the single buffer without using cache memory.

10. The system of claim 8 , wherein a latency associated with initiating playback of the media data by the media player is reduced.

11. The system of claim 8 , wherein the new processing rate is a factor increase in the processing rate of the media player.

12. The system of claim 8 , wherein determining that the single buffer is filled comprises:

detecting that a portion of the media data is stored in a first block of the single buffer; and

detecting that a portion of the media data is stored in a last block of the single buffer, wherein one or more blocks between the first block and the last block do not have a portion of the media data stored therein.

13. The system of claim 8 , wherein multiple portions of the media data are received using a bandwidth that exceeds the connection bandwidth.

14. The system of claim 8 , wherein receiving multiple portions of the media data into a single buffer associated with the media player comprises:

filling a remaining capacity of the single buffer with duplicate copies of the multiple portions of the media data until the single buffer is full, wherein one or more additional portions of the media data are received and replace the duplicate copies before the media player obtains the duplicate copies.

15. A non-transitory computer-readable medium including instructions that when executed by one or more processors, cause the one or more processors to perform operations including:

determining, by a media player, a connection bandwidth and a latency threshold for use in requesting media data, the connection bandwidth indicating a bandwidth that is to be used when delivering the media data to the media player;

generating a set of data communication requests, each data communication request of the set of data communication requests configured to request a portion of the media data from a media source, the set of data communication requests being configured to be executed concurrently;

estimating a duration of executing the set of data communication requests concurrently;

determining that the estimated duration of executing the set of data communication requests exceeds the latency threshold;

in response to determining that the estimated duration of executing the set of data communication requests exceeds the latency threshold:

identifying a quantity of additional data communication requests to be added to the set of data communication requests based on the estimated duration of executing the set of data communication requests; and

updating the set of data communication requests to include the quantity of additional data communication requests;

initiating execution of the updated set of data communication requests, wherein execution of each data communication request of the updated set of data communication requests triggers establishing a transfer session with the media source that is configured to transfer the portion of the media data corresponding to the data communication request

estimating a combined bandwidth corresponding to supporting transfer sessions for each of the updated set of data communication requests;

determining that the estimated combined bandwidth exceeds a processing rate of the media player;

in response to determining that the estimated combined bandwidth exceeds the processing rate, increasing the processing rate of the media player to a new processing rate;

receiving via processing of the media player at the new processing rate, multiple portions of the media data into a single buffer associated with the media player, the multiple portions corresponding to multiple data communication requests of the updated set of data communication requests;

determining prior to having stored all portions corresponding to all of the updated set of data communication requests in the single buffer, that the single buffer is full; and

in response to determining that the single buffer is full, initiating playback of the media data by the media player, wherein initiation of the media player causes one or more of the multiple portions of the media data in the single buffer to be removed from the single buffer and played by the media player.

16. The non-transitory computer-readable medium of claim 15 , wherein portions of the media data are received into the single buffer without using cache memory.

17. The non-transitory computer-readable medium of claim 15 , wherein a latency associated with initiating playback of the media data by the media player is reduced.

18. The non-transitory computer-readable medium of claim 15 , wherein the new processing rate is a factor increase in the processing rate of the media player.

19. The non-transitory computer-readable medium of claim 15 , wherein determining that the single buffer is filled comprises:

detecting that a portion of the media data is stored in a first block of the single buffer; and

detecting that a portion of the media data is stored in a last block of the single buffer, wherein one or more blocks between the first block and the last block do not have a portion of the media data stored therein.

20. The non-transitory computer-readable medium of claim 15 , wherein multiple portions of the media data are received using a bandwidth that exceeds the connection bandwidth.

Assignments (8)
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 22, 2018
From: MICRO FOCUS SOFTWARE INC.
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 046180/0580 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
CHANGE OF NAME Recorded Sep 13, 2016
From: NOVELL, INC.
To: MICRO FOCUS SOFTWARE INC.
Reel/Frame 040020/0703 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →