BACKGROUND OF THE INVENTION

Consumers of media content, such as movies, television programs, and short videos, are increasingly streaming media content over the Internet to client devices, such as laptops, smart TVs, and streaming media players. Typically, when online streaming is used, media content is constantly received in blocks and rendered on the client devices as the blocks are received. Online streaming may thus generate a higher bandwidth usage than other online activities.

When performed inefficiently, online streaming may waste network resources. For instance, network infrastructure may be under-utilized in situations where blocks of streamed content are requested one-by-one. In such situations, a client device may transmit a first request, receive a response, and transmit a second request only after the response to the first request is received. Streaming content in this manner may result in a network throughput that is below the network's bandwidth.

SUMMARY OF THE INVENTION

In some embodiments, a system for controlling delivery of content is provided. The system includes processing circuitry configured to: transmit, to a server, a plurality of requests for blocks of the content; while at least some of the plurality of requests are still outstanding: detect a change of a service characteristic of a connection between the system and the server; determine a preferred number of outstanding requests; and cancel at least some of the requests from the plurality that are still outstanding based on the preferred number and a count of the requests from the plurality that are still outstanding.

In some embodiments, a system for presenting media content using cached assets is provided. The system includes processing circuitry configured to: transmit to a server a plurality of requests for blocks of a content, the plurality including a first request for a first block of the content and a second request for a second block of the content; while the second request is still outstanding: receive a first block of the content responsive to the first request; determine a preferred number of outstanding requests; and when the preferred number of outstanding requests is greater than the number of requests from the plurality that are currently outstanding, transmit a third request for a third block before the second block is received by the processing circuitry; otherwise, when the preferred number of outstanding requests is less than or equal to the number of requests from the plurality that are currently outstanding, transmit the third request after the second block is received by the processing circuitry.

In some embodiments, a method for controlling delivery of content is provided, the method comprising: transmitting a plurality of requests for blocks of the content to a server; while at least some of the plurality of requests are still outstanding: detecting a change of a service characteristic of a connection with a server; determining, by a processing circuitry, a preferred number of outstanding requests; and cancelling at least some of the requests from the plurality that are still outstanding based on the preferred number and a count of the requests from the plurality that are still outstanding.

In some embodiments, a method for controlling delivery of content is provided, the method comprising: transmitting, by a device to a server, a plurality of requests for blocks of a content, the plurality including a first request for a first block of the content and a second request for a second block of the content; while the second request is still outstanding: receiving a first block of the content responsive to the first request; determining a preferred number of outstanding requests; and when the preferred number of outstanding requests is greater than the number of requests from the plurality that are currently outstanding, transmitting a third request for a third block of the content before the second block is received at the device; otherwise, when the preferred number of outstanding requests is less than or equal to the number of requests from the plurality that are currently outstanding, transmitting the third request after the second block is received at the device.

In some embodiments, a non-transitory computer-readable medium is provided that contains computer-executable instructions. The computer-executable instructions, when executed by a processing circuitry, cause the processing circuitry to perform a method for controlling delivery of content, the method comprising: transmitting a plurality of requests for blocks of the content to a server; while at least some of the plurality of requests are still outstanding: detecting a change of a service characteristic of a connection with a server; determining a preferred number of outstanding requests; and cancelling at least some of the requests from the plurality that are still outstanding based on the preferred number and a count of the requests from the plurality that are still outstanding.

In some embodiments, a non-transitory computer-readable medium is provided that contains computer-executable instructions. The computer-executable instructions, when executed by a processing circuitry, cause the processing circuitry to perform a method for controlling delivery of content, the method comprising: transmitting to a server a plurality of requests for blocks of a content, the plurality including a first request for a first block of the content and a second request for a second block of the content; while the second request is still outstanding, receiving a first block of the content responsive to the first request; determining a preferred number of outstanding requests; and when the preferred number of outstanding requests is greater than the number of requests from the plurality that are currently outstanding, transmitting a third request for a third block of the content before the second block is received at the device; when the preferred number of outstanding requests is less than or equal to the number of requests from the plurality that are currently outstanding, transmitting the third request after the second block is received at the device.

