U.S. patent application number 13/927639 was filed with the patent office on 2014-01-09 for system and methods for buffering of real-time data streams.
The applicant listed for this patent is Rovi Solutions Corporation. Invention is credited to Latchesar Stoyanov.
Application Number | 20140012953 13/927639 |
Document ID | / |
Family ID | 42469754 |
Filed Date | 2014-01-09 |
United States Patent
Application |
20140012953 |
Kind Code |
A1 |
Stoyanov; Latchesar |
January 9, 2014 |
SYSTEM AND METHODS FOR BUFFERING OF REAL-TIME DATA STREAMS
Abstract
A computer-implemented system, and methods for buffering of
real-time data streams are disclosed. The apparatus and method in
an example embodiment includes: configuring a content server for an
initial content quality type associated with a content stream;
receiving the content stream with the initial content quality type
from a content feed; detecting a low watermark condition, as the
content stream is played on a playback device; reconfiguring the
content server for a modified content quality type associated with
the content stream while receipt of the content stream is in
progress; and receiving the content stream with the modified
content quality type from the content feed.
Inventors: |
Stoyanov; Latchesar;
(Sunnyvale, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Rovi Solutions Corporation |
Santa Clara |
CA |
US |
|
|
Family ID: |
42469754 |
Appl. No.: |
13/927639 |
Filed: |
June 26, 2013 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12387511 |
May 4, 2009 |
8499059 |
|
|
13927639 |
|
|
|
|
Current U.S.
Class: |
709/219 |
Current CPC
Class: |
H04N 21/23406 20130101;
H04L 65/60 20130101; H04L 65/80 20130101; H04L 65/4084 20130101;
H04N 21/2401 20130101; H04N 21/44004 20130101 |
Class at
Publication: |
709/219 |
International
Class: |
H04L 29/06 20060101
H04L029/06 |
Claims
1-22. (canceled)
23. A method comprising: transmitting a first request, from a user
device, to a content server for a content stream with an initial
content quality type; in response to the first request, receiving,
at the user device, the content stream from a content feed located
remotely from the content server; determining, at the user device,
an available bandwidth associated with the content feed;
transmitting a second request, from the user device, to the content
server for a modified content quality type based on the determined
available bandwidth; and receiving, at the user device, the content
stream with the modified content quality type from the content
feed.
24. The method of claim 23, further comprising receiving a user
selection of the initial content quality type.
25. The method of claim 23, further comprising storing data from
the content stream in a content stream buffer.
26. The method of claim 23, further comprising generating for
display data from the content stream.
27. The method of claim 23, wherein determining, at the user
device, the available bandwidth associated with the content feed
further comprises monitoring, at the user device, for a low
watermark condition as data from the content stream is consumed by
the user device.
28. The method of claim 23, further comprising determining a low
watermark condition, wherein the low watermark condition relates to
data from the content stream being consumed faster than the data is
received.
29. The method of claim 28, further comprising adjusting the
consummation rate of data from the content stream in response to
detecting the low watermark condition.
30. The method of claim 23, wherein determining, at the user
device, the available bandwidth associated with the content feed
further comprises monitoring, at the user device, for a high
watermark condition as data from the content stream is consumed on
the user device.
31. The method of claim 23, wherein the initial content quality
type corresponds to a first resolution and the modified content
quality type corresponds to a second resolution.
32. The method of claim 23, further comprising selecting the
modified content quality type based on a determination that
receiving the content stream with the modified content quality type
from the content feed will prevent interruptions while consuming
data from the content stream.
33. A system comprising, control circuitry configured to: transmit
a first request, from a user device, to a content server for a
content stream with an initial content quality type; in response to
the first request, receive, at the user device, the content stream
from a content feed located remotely from the content server;
determine, at the user device, an available bandwidth associated
with the content feed; transmit a second request, from the user
device, to the content server for a modified content quality type
based on the determined available bandwidth; and receive, at the
user device, the content stream with the modified content quality
type from the content feed.
34. The system of claim 33, wherein the control circuitry is
further configured to receive a user selection of the initial
content quality type.
35. The system of claim 33, wherein the control circuitry is
further configured to store data from the content stream in a
content stream buffer.
36. The system of claim 33, wherein the control circuitry is
further configured to generate for display data from the content
stream.
37. The system of claim 33, wherein the control circuitry is
further configured to determine, at the user device, the available
bandwidth associated with the content feed further comprises
monitoring, at the user device, for a low watermark condition as
data from the content stream is consumed by the user device.
38. The system of claim 33, wherein the control circuitry is
further configured to determine a low watermark condition, wherein
the low watermark condition relates to data from the content stream
being consumed faster than the data is received.
39. The system of claim 38, wherein the control circuitry is
further configured to adjust the consummation rate of data from the
content stream in response to detecting the low watermark
condition.
40. The system of claim 33, wherein the control circuitry is
further configured to determine, at the user device, the available
bandwidth associated with the content feed further comprises
monitoring, at the user device, for a high watermark condition as
data from the content stream is consumed on the user device.
41. The system of claim 33, wherein the initial content quality
type corresponds to a first resolution and the modified content
quality type corresponds to a second resolution.
42. The system of claim 33, wherein the control circuitry is
further configured to select the modified content quality type
based on a determination that receiving the content stream with the
modified content quality type from the content feed will prevent
interruptions while consuming data from the content stream.
Description
COPYRIGHT NOTICE
[0001] A portion of the disclosure of this patent document contains
material that is subject to copyright protection. The copyright
owner has no objection to the facsimile reproduction of the patent
document or the patent disclosure, as it appears in the Patent and
Trademark Office patent files or records, but otherwise reserves
all copyright rights whatsoever. The following notice applies to
the software and data as described below and in the drawings that
form a part of this document: Copyright 2008-2009, Macro-vision
Solutions Corporation, All Rights Reserved.
BACKGROUND
[0002] 1. Technical Field
[0003] This disclosure relates to networked systems. More
particularly, the present disclosure relates to buffering of
real-time data streams.
[0004] 2. Related Art
[0005] In conventional network-based streaming content delivery
systems, it is a challenge to maintain a constant playback rate for
the streamed content at a client playback device when the network
transmission of the content is subject to unpredictable and erratic
delays. Though some existing systems attempt to slow the data rate
at the server, these solutions still tend to produce erratic
streams and increased network traffic. Further, the content feeds
that provide the data streams may not be controllable by a client
playback device.
[0006] Thus, a computer-implemented system and methods for
buffering of real-time data streams is needed.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Embodiments illustrated by way of example and not limitation
in the figures of the accompanying drawings, in which:
[0008] FIG. 1 illustrates an example embodiment of a networked
system in which various embodiments may operate.
[0009] FIG. 2 illustrates an example embodiment showing the
functional components of the buffer manager.
[0010] FIG. 3 illustrates another example embodiment of a networked
system in which various embodiments may operate.
[0011] FIG. 4 is a sequence diagram illustrating a sequence of
operations in a first example embodiment.
[0012] FIG. 5 is a sequence diagram illustrating a sequence of
operations in a second example embodiment.
[0013] FIGS. 6 and 7 are processing flow diagrams illustrating a
sequence of processing operations in various example
embodiments.
[0014] FIG. 8 shows a diagrammatic representation of a machine in
the form of a computer system within which a set of instructions;
for causing the machine to perform any one or more of the
methodologies discussed herein, may be executed, according to an
example embodiment.
DETAILED DESCRIPTION
[0015] A computer-implemented system and methods for buffering of
real-time data streams are disclosed. In the following description,
numerous specific details are set forth. However, it is understood
that embodiments may be practiced without these specific details.
In other instances, well-known processes, structures and techniques
have not been shown in detail in order not to obscure the clarity
of this description. Various embodiments are described below in
connection with the figures provided herein.
[0016] United States Patent Publication No. US 2002/0120747
discloses a system and method for buffering streaming audio data or
other media sources to client devices, where said system maintains
a constant buffering time by adjusting the low water mark of the
play buffer based on the bit rate of the stream to a level such
that the time for the play buffer to fill to the low water mark is
constant for all streams.
[0017] U.S. Pat. No. 5,881,245 discloses a method and device for
communicating encoded data (such as MPEG encoded data for example)
from a server to a decoder via a buffer. The rate at which the
server provides the encoded data are adjusted based on a state of
the buffer such that the buffer does not overflow or run dry, even
when the communication of the data is subject to drift.
Specifically, when the butler is below a predetermined level the
rate at which the server provides the encoded data is increased. On
the other hand, when the buffer is above a predetermined level, the
rate at which the server provides the encoded data is
decreased.
[0018] U.S. Pat. No. 5,619,337 discloses a system to record a
single program from a multi-program transport stream that is
encoded according to the MPEG-2 standard. The system demultiplexes
transport packets from the multi-program transport stream and
records the demultiplexed packets on a digital video cassette
recorder (DVCR). The system includes circuitry in the encoder which
emulates a buffer in the digital recorder that is used to hold the
packets to convert the bursty packet data into constant rate data
for recording. This emulated buffer controls the overall rate at
which packets of the selected program are inserted into the
multi-program transport stream by the encoder.
[0019] The real-time streaming buffer management process and system
of the various embodiments described herein enable playback devices
to receive a constant rate feed of content from network-based
content sources. As described herein, a content server can be
considered a network-accessible server, server farm, web site, or
the like that can enable network access to and from client systems
with playback devices via a network (e.g. the Internet). FIG. 1
illustrates an example embodiment of a networked system in which
various embodiments may operate. As shown in FIG. 1, a content
server 120 is in data communication with one or more playback
devices 130 and 131 via a conventional network 105, such as the
Internet Playback devices 130 and 131 can be used by individuals
who can log in to the content server 120 via the network 105 and
become subscribers or members of the real-time streaming service
enabled by the various embodiments described herein. In a
particular embodiment shown in FIG. 1, a buffer manager 132 can be
provided in or by playback devices 130 and 131. As described in
more detail below, the buffer manager 132 controls the flow of
content into and out of a playback device content buffer. In the
example embodiment shown, content server 120 includes a content
aggregator 122 and a content streamer 124. Content aggregator 122
includes processing logic to communicate with one or more content
feeds 110 to coordinate the streaming of a user-selected item of
content directly from the one or more content feeds 110 to the user
playback device via network 105. Content feeds 110 can be sources
or repositories of digital content 112 that can be streamed to a
particular playback device via network 105. Content 112 can be any
of various forms of digital content including video or multimedia
(e.g., MPEG), still images (e.g., JPEG or TIFF), audio (e.g., MP3),
spoken audio, digital documents, executable code, and the like.
Content feeds 110 can represent websites, servers, peer-to-peer
nodes, and the like. Content aggregator 122 can also include
functionality to query a content feed 110 for a list of available
content. These content lists from various content feeds 110 can be
posted on content server 120 for viewing, searching, and selection
by users of playback devices 130 and 131. The users of playback
devices 130 and 131 can log in to accounts maintained on content
server 120, search a list of available content, and select a
particular item, of content for streaming to the user's playback
device via network 105. Content streamer 124 provides the
processing logic to manage the streaming of the selected content to
the playback device 130 or 131. As described in more detail below,
the content streamer 124 operates in concert with the buffer
manager 132 to control the rate and/or quality of the content
stream as necessary to make sure the playback device 130 or 131
receives a constant rate feed of content from the network-based
content feeds 110.
[0020] It will be apparent to those of ordinary skill in the art
that an equivalent configuration could include multiple content
server sites, each managing a portion of the functionality provided
as described herein. A particular embodiment may include an
additional layer, called the Partner Sites, wherein each Partner
Site can be hosted on a separate server and each Partner Site can
communicate with the buffer manager 132, described in more detail
below. In this embodiment, each Partner Site can aggregate a subset
of the available content from content feeds 110. Further, it will
be apparent to those of ordinary skill in the art that another
equivalent configuration could include a portion of the
functionality provided by the buffer manager 132 being downloaded
from the content server 120 to playback devices 130 and 131 and
executed locally at the client sites. In any of these alternative
configurations, the buffer manager 132 functionality provides and
supports a system for enabling buffering for real-time data
streaming as described in more detail below.
Description of the Real-time Streaming and Buffer Management of an
Example Embodiment
[0021] Referring now to FIG. 2, an example embodiment showing the
functional components of the buffer manager 132 is shown. As
illustrated in FIG. 1 as described above, a content server 120 is
in networked data communication with one or more playback devices
130 and 131 via a conventional network 105, such as the internet.
As suck the content server 120 can receive access and content
requests from a plurality of users of playback devices 130 and 131.
The playback devices 130 and 131 can provide a buffer manager
component 132 to support the receipt of streamed content from the
content server 120. The functionality provided by the buffer
manager 132 of a particular embodiment to support users can be
partitioned into a set of functional components 161-163. It will be
understood that these functional components can be implemented in
software executing on the playback devices 130 and 131. As
described above, other equivalent configurations can also be
implemented.
[0022] In a first functional component, an incoming data management
component 161 is provided as part of buffer manager 132. The
incoming data management component 161 provides the functionality
for interfacing with content streamer 124 of content server 120 via
network 105. The incoming data management component 161 cm discover
an available bandwidth (e.g., data rate or capacity) supported for
streaming a particular item of content from a content feed 110 to
the playback device 130 and/or 131 via network 105. Conventional
ping and traceroute functions can be used to accomplish bandwidth
discovery in a particular embodiment. The incoming-data management
component 161 can also negotiate with the content server 120 for a
content quality type compatible with the particular item of
content, compatible with user selections, and compatible with the
available bandwidth for the streaming operation. Once the available
bandwidth and content quality type for streaming a particular item
of content are determined, the incoming data management component
161 can compute and set an initial incoming data speed (Si), an
initial playback speed (Sp), and an initial buffer size (B) needed
to ensure uninterrupted playback of the selected item of content on
the playback device 130 and/or 131. In a particular embodiment, the
initial buffer size (B) can be calculated from the difference
between Sp and Si and the length of the content item being
streamed. Typically, the initial buffer size (B) is allocated at
the beginning of a streaming operation and remains constant, while
Si and Sp are variables that can be changed during the streaming
operation. The incoming data management component 161 can also
compute and set an initial content buffer high and low watermark to
track the capacity level of the buffer currently consumed by the
streamed and unplayed content. In the case of a very long content
item, the buffer manager 132 may not be able to fill in the whole
buffer before playback is started; because, loading the buffer may
take too long. The criterion for starting to play the content item
is when the boiler is filled to (or over) the high watermark. The
use of the high and low watermarks is described in more detail
below. Once the incoming data management component 161 determines
or computes the various parameters described above, the incoming
data management component 161 can signal the content server 120 to
begin streaming the selected item of content. As described in more
detail below, the incoming data management component 161 can also
negotiate with the content server 120, after the streaming
operation has started, for a different content quality type
compatible with the speed at which the particular playback device
130 and/or 131 is able to consume the content stream,
[0023] In a second functional component of buffer manager 132, a
buffer management processing component 162 is provided as part of
buffer manager 132. The buffer management processing component 162
of an example embodiment provides the functionality for filling the
content buffer and for detecting when the content has reached the
high and low watermarks of the content buffer. The use of the high
and low watermarks is described in more detail below. The buffer
management processing component 162 of an example embodiment also
provides the functionality for transferring the content from the
contest buffer to the playback device interface 163 for playback to
the user of playback device 130 and/or 131.
[0024] In a third functional component, a playback device interface
component 163 is provided as part of buffer manager 132. The
playback device interface component 163 of an example embodiment
provides the functionality for receiving content from the buffer
management processing component 162 and for processing the content
for playback to the user of playback device 130 and/or 131.
[0025] FIG. 3 illustrates another example embodiment of a networked
system in which various embodiments may operate. As shown for am
example embodiment, buffer manager 132 can be a component of a
playback device 130. Buffer manager 132 can use a buffer manager
interface 150 to send and receive data to/from content server 120
via network 105. In a particular embodiment, buffer manager
interface 150 can send and receive data to/from content server 120
via a web server interface 144 or an application programmatic
interface (API) 142. Buffer manager interface 150 can also be used
to receive content from content feeds 110, 113, and/or 115 via a
web server interface 144 or an application programmatic interface
142. As described above, the content aggregator 122 of the content
server 120 includes processing logic to communicate with one or
more content feeds 110, 113, and/or 115 and, in concert with
content streamer 124, to coordinate the streaming of a
user-selected item of content directly from the content feeds 110,
113, and/or 115 to the user playback device 130 via network 105.
This content stream from a content feed 110, 113, and/or 115 can be
received by the buffer manager interface 150 and stored in the
content buffer 152 under control of the incoming data management
component 161 and the buffer management processing component
162.
[0026] FIG. 4 is a sequence diagram illustrating a sequence of
operations in a first example embodiment, wherein the buffer
manager 132 uses a playback data redaction method to regulate the
flow of content into and out of the content buffer 152. The example
sequence of operations shown includes data interactions between a
content server 120, a content feed 110 (not shown), and an incoming
data management component 161, a buffer management processing
component 162, and a playback device interface component 163 of
buffer manager 132 on a playback device 130. In the example shown,
in a first operation, the incoming data management component 161
can discover an available bandwidth (e.g., data rate or capacity)
supported for streaming a particular item of content from a content
feed 110 to the playback device 130 via network 105. In a second
operation, the incoming data management component 161 can negotiate
with the content server 120 for a content quality type compatible
with the particular item of content, compatible with user
selections, and compatible with the available bandwidth for the
streaming operation. The various content quality types can include
content encoding identifiers, pixel densities, audio or video type,
data rate specifications, and the like. In a third and fourth
operation, once the available bandwidth and content quality type
for streaming a particular item of content are determined, the
incoming data management component 161 can compute and configure an
initial incoming data speed (Si), an initial playback speed (Sp),
and an initial buffer size (B) needed to ensure uninterrupted
playback of the selected item of content on the playback device
130. In a fifth operation, the incoming data management component
161 can also compute and configure an initial butler high and low
watermark to track the capacity level of the content buffer 152
currently consumed by the streamed and un-played content. In a
sixth operation, once the incoming data management component 161
determines or computes the various parameters described above, the
incoming data management component 161 can signal the content
server 120 to begin streaming the selected item of content. In a
separate series of operations (not shown), content server 120 can
communicate with a content feed 110, 113, or 115 that can source
the selected item of content. The content server 120 can initialize
the content feed 110, 113, or 115 with the content quality type and
speed parameters (e.g., Si) generated as described above. The
content server 120 can also initialize the content feed 110, 113,
or 115 with the network address of the particular playback device
130 that requested the particular item of content. The content
server 120 can also direct the content feed 110, 113, or 115 to
begin streaming the selected item of content to the particular
playback device 130. As shown in FIG. 4, the content stream from
the content feed 110, 113, or 115 is received by the incoming data
management component 161 of buffer manager 132 and passed to the
buffer management processing component 102.
[0027] In a seventh and eighth operation as shown for an example
embodiment in FIG. 4, the buffer management processing component
162 receives the content stream from the incoming data management
component 161 and begins to fill the content buffer 152 with the
received content stream. This content fill process continues until
a location in the content buffer 152 indicated by the high
watermark is reached. As described hereto, the high watermark and
low watermark conditions should be met for certain pre-determined
amount of time (denoted as the integration time or hysteresis)
before triggering any subsequent action. This integration time will
prevent false alarms and conditions where subsequent actions are
triggered too often and too quickly. Once the high watermark is
reached and the integration time is satisfied, the playback device
130 can begin to play the received content. In a ninth operation,
the buffer management processing component 162 enables the playback
device interface component 163 to play the content from the content
buffer 152 for the user of playback device 130. As the content is
played by or through the playback device interface component 163,
the content buffer 152 begins to empty, if the content is not
filling the content buffer 152 as fast as the content is being
played. In a tenth operation, if the content buffer 152 begins to
empty, the buffered content being played will eventually reach a
location in the content buffer 152 indicated by the low watermark.
In operation eleven, when the buffered content being played reaches
the low watermark, the buffer management processing component 162
signals a low watermark condition to the incoming data management
component 161. In operation twelve, when the low watermark
condition is received by the incoming data management component
161, the incoming data management component 161 can negotiate with
the content server 120, after the streaming operation has started,
for a different content quality type compatible with the speed at
which the particular playback device 130 is able to consume the
content stream. In this case because of the low watermark condition
detected, the incoming data management component 161 can negotiate
with the content server 120 for a lower quality content type
associated with a content stream that needs less bandwidth.
Assuming a lower quality content type is available for the
particular content item for which streaming is in progress, the
content server 120 can signal the corresponding content feed 110,
113, or 115 to continue streaming the selected, content item to the
playback device 130 at the lower quality content type. In operation
thirteen, the content stream from the content feed 110, 113, or 115
is received by the incoming data management component 161 of buffer
manager 132 at a lower quality content type and passed to the
buffer management processing component 162. In operation fourteen,
the buffer management processing component 162 enables the playback
device interface component 163 to continue playing the content (now
a lower quality of content) from the content buffer 152 for the
user of playback device 130. In a typical case, because of the
lower bandwidth requirements, the lower quality content stream
begins to fill the content buffer 152 faster than the buffered
content cars be played. Thus, in operation fifteen, as the content
buffer 152 begins to fill up, the buffered content being filled
will eventually reach a location in the content buffer 152
indicated by the high watermark. In operation fifteen, when the
content being buffered reaches the high watermark, the buffer
management processing component 162 signals a high watermark
condition to the incoming data management component 161. In
operation sixteen, when the high watermark condition is received by
the incoming data management component 161, the incoming data
management component 161 can negotiate with the content server 120,
after the streaming operation has started, for a different content
quality type compatible with the speed at which the particular
playback device 130 is able to consume the content stream. In this
case because of the high watermark condition detected, the incoming
data management component 161 can negotiate with the content server
120 for a higher quality content type associated with a content
stream that needs more bandwidth. Assuming a higher quality content
type is available for the particular content item for which
streaming is in progress, the content server 120 can signal the
corresponding content feed 110, 113, or 115 to continue streaming
the selected content item to the playback device 130 at the higher
quality content type. In operation seventeen, the content stream
from the content feed 110, 113, or 115 is received by the incoming
data management component 161 of buffer manager 132 at a higher
quality content type and passed to the buffer management processing
component 162. The process can continue as described above. As the
content streaming process continues, the detection of the low
watermark condition as described above can cause the buffer manager
132 to negotiate with the content server 120 to reduce the quality
of the content stream and thereby reduce the bandwidth requirements
for streaming the content to the playback device. Conversely, the
detection of the high watermark condition as described above can
cause the buffer manager 132 to negotiate with the content server
120 to increase the quality of the content stream and thereby
increase the bandwidth requirements for streaming the content to
the playback device. As shown in FIG. 4 and described above, the
modification of the quality of the content stream can occur as
necessary while the content streaming is in progress to ensure that
the playback devices can receive a constant rate feed of content
from network-based content sources.
[0028] In summary as detailed above, a sequence of operations in a
first example embodiment, wherein the buffer manager 132 uses a
playback data reduction method to regulate the flow of content into
and out of the content buffer 152, the example sequence of
operations includes: [0029] At startup [0030] Do Bandwidth
discovery using ping and traceroute; [0031] At content selection
[0032] Choose the stream for which Sp is closest to the average Sp;
[0033] During playback
[0034] In case of Low Watermark for the Th seconds, trigger Low
Watermark signal; In order to reduce false alarms, we introduce
integration time or Hysteresis, Th. Th is the amount of time needed
to validate a condition--in other words, to trigger an event such
as an event occurring after a Low Watermark, the Low Watermark
condition has to be present uninterrupted for Th seconds.
Renegotiate stream downwards to reduce Sp.
[0035] FIG. 5 is a sequence diagram illustrating a sequence of
operations in a second example embodiment wherein the buffer
manager 132 uses a playback speed control method to regulate the
flow of content into and out of the content buffer 152. The example
sequence of operations shown includes data, interactions between, a
content server 120, a content feed 110 (not shown), and an incoming
date management component 161, a buffer management processing
component 162, and a playback device interface component 163 of
buffer manager 132 on a playback device 130. In the example shown,
in a first operation, the incoming data management component 161
can discover an available bandwidth (e.g., data rate or capacity)
supported for streaming a particular item of content from content
server 120 to the playback device 130 via network 105. In a second
operation, the incoming data management component 161 can negotiate
with the content server 120 for a content quality type compatible
with the particular item of content, compatible with user
selections, and compatible with the available bandwidth for the
streaming operation. The various content quality types can include
content encoding identifiers, pixel densities, audio or video type,
data rate specifications, and the like. In a third and fourth
operation, once the available bandwidth and content quality type
for streaming a particular item of content are determined, the
incoming data management component 161 can compute and set an
initial incoming data speed (Si), an initial playback speed (Sp),
and an initial buffer size (B) needed to ensure uninterrupted
playback of the selected item of content on the playback device
130. In a fifth operation, the incoming data management component
161 can also compute and set an initial buffer high and low
watermark to track the capacity level of the content buffer 152
currently consumed by the streamed and un-played content. In a
sixth operation, once the incoming data management component 161
determines or computes the various parameters described above, the
incoming data management component 161 can signal the content
server 120 to begin streaming the selected item of content. In a
separate series of operations (not shown), content server 120 can
communicate with a content feed 110, 113, or 115 that can source
the selected item of content. The content server 120 can initialize
the content feed 110, 113, or 115 with the content quality type and
speed parameters (e.g., Si) generated as described above. The
content server 120 can also initialize the content feed 110, 113,
or 115 with the network address of the particular playback device
130 that requested the particular item of content. The content
server 120 can also direct the content feed 110, 113, or 115 to
begin streaming the selected item of content to the particular
playback device 130. As shown in FIG. 5, the content stream from
the content feed 110, 113, or 115 is received by the incoming data
management component 101 of buffer manager 132 and passed to the
buffer management processing component 162.
[0036] In a seventh and eighth operation as shown for an example
embodiment in FIG. 5, the buffer management processing component
162 receives the content stream from the incoming data management
component 161 and begins to fill the content buffer 152 with the
received content stream. This content fill process continues until
a location in the content buffer 152 indicated by the high
watermark is reached. At this point, the playback device 130 can
begin to play the received content. In a ninth operation, the
buffer management processing component 162 enables the playback
device interface component 163 to play the content from the content
buffer 152 for the user of playback device 130. As the content is
played by or through the playback device interface component 163,
the content butler 152 begins to empty, if the content is not
filling the content buffer 152 as fast as the content is being
played. In a tenth operation, if the content buffer 152 begins to
empty, the buffered content being played will eventually reach a
location in the content buffer 152 indicated by the low watermark.
In operation eleven, when the buffered content being played reaches
the low watermark, the buffer management processing component 162
commands the playback device interface component 163 to slow down
the playback speed of the playback of the buffered content. In a
typical case, because of the slower playback speed, the content
stream begins to fill the content buffer 152 faster than the
buffered content can be played. In operation eleven, the buffer
management processing component 162 enables the playback device
interface component 163 to continue playing the content from the
content buffer 152 at a slower playback speed for the user of
playback device 130. Thus, in operation twelve; as the content
buffer 152 begins to fill up, the buffered content being filled
will eventually reach a location in the content buffer 152
indicated by the high watermark. In operation thirteen, when the
content being buffered reaches the high watermark, the buffer
management processing component 162 commands the playback device
interface component 163 to increase the playback speed (or restore
an initial speed) of the playback of the buffered content. The
process can then continue as described above. As the content
streaming process continues, the detection of the low watermark
condition as described above can cause the buffer manager 132 to
slow down the playback speed of the content stream and thereby
reduce the bandwidth requirements for streaming the content to the
playback device. Conversely, the detection of the high watermark
condition as described above can cause the buffer manager 132 to
increase the playback speed of the content stream and thereby
increase the bandwidth requirements for streaming the content to
the playback device. As shown in FIG. 5 and described above, the
modification of the speed of the content stream can occur as
necessary while the content streaming is in progress to ensure that
the playback devices can receive a constant rate feed of content
from network-based content sources.
[0037] In summary as detailed above, a sequence of operations in a
second example embodiment, wherein the buffer manager 132 uses a
playback speed control method to regulate the flow of content into
and out of the content buffer 152, the example sequence of
operations includes processing as described below.
[0038] The Buffer Manager 132 should allocate an initial buffer. In
order to ensure uninterrupted playback, the size of the initial
buffer can be calculated using the following formula:
B=Tp*((Sp-Si)+C <Formula F1> [0039] Where: [0040] B is the
initial buffer length needed for uninterrupted playback in Kbits;
[0041] Tp is the playing time in seconds; [0042] Sp is the initial
playback speed Kbps; [0043] Si is initial incoming data speed Kbps;
[0044] C is cushion data in Kbps. For the cases that Si<Sp, the
time to fill the buffet B in seconds is as follows:
[0044] Tb=B/Si=(Tp*(Sp-Si)+C/Si <Formula F2>
[0045] The cushion data C can be adjusted so that in the cases
where Si=Sp and Si>Sp, the formula <Formula F1> doesn't
produce a zero or negative result respectively. Even in these
cases, it is preferable to allocate the initial buffer for a
certain amount, of cushion data.
[0046] Introducing an integration time or Hysteresis, Th, can
reduce false alarms. Th is the amount of seconds needed to average
Si. This is the amount of time also to validate a condition before
triggering an event.
[0047] To trigger a Low Watermark event, the Low Watermark
condition has to be present uninterrupted for Th seconds. If the
amount of buffered data exceeds the Low Watermark, a Low Watermark
event counter is reset.
[0048] To trigger High Watermark event, the High Watermark
condition has to be present uninterrupted for Th seconds. If the
amount of buffered data drops under the High Watermark, a High
Watermark event counter is reset.
[0049] The High Watermark event triggers; [0050] 1. The playback
startup at the beginning of the content stream. [0051] The
following formula shows the delay before starting the playback:
[0051] D=Wh/Si <Formula F3> [0052] Where: [0053] D is the
delay in seconds before the playback begins; [0054] Wh is the High
Watermark data in Kbps; [0055] 2. The restoring of the quality of
the content stream [0056] and/or [0057] 3. The restoring of the
playback speed.
[0058] The Low Watermark event triggers: [0059] 1. The reducing of
the quality of the content stream [0060] and/or [0061] 2. The
reducing of the playback speed Sp.
[0062] In the case of a Low Watermark event, the playback speed is
recalculated every Th seconds. The following formula shows the
dependency between the Low Watermark data and the playback time in
case we don't change the initial playback speed:
W1=L*Sp <Formula F4> [0063] Where: [0064] W1 is the Low
Watermark data in Kbits; [0065] L is the playback time for Low
Watermark in seconds.
[0066] In order to increase the playback time we reduce the
playback speed. The following formula determines the playback speed
for the next Th seconds during Low Watermark condition:
Spn=(Spc*Bc)/Bp <Formula F5> [0067] Where: [0068] Spn is the
new playback speed for the next Th seconds; [0069] Spc is the
playback speed for the current Th seconds; [0070] Bc is the amount
of data currently available in Kbits; [0071] Bp is the amount of
data in Kbits previously available Th seconds prior.
[0072] FIGS. 6 and 7 are processing flow diagrams illustrating a
sequence of processing operations in an example embodiment. As
shown in FIG. 6, processing operations performed by an example
embodiment 900 include; configuring a content server for an initial
content quality type-associated with a content stream (processing
block 910); receiving the content stream with the initial content
quality type from a content feed (processing block 912); detecting
a low watermark condition as the content stream is played on a
playback device (processing block 914); reconfiguring the content
server for a modified content quality type associated with the
content stream while receipt of the content stream is in progress
(processing block 916); and receiving the content stream with the
modified content quality type from the content feed (processing
block 918).
[0073] As shown in FIG. 7, processing operations performed by
another example embodiment 920 include: configuring a content
server for a content quality type associated with a content stream
(processing block 922); configuring a playback device for an
initial playback speed associated with the content stream
(processing block 924); receiving the content stream with the
content quality type from a content feed (processing block 926);
playing the content stream on the playback device with the initial
playback speed (processing block 928); detecting a low watermark
condition as the content stream is played on the playback device
(processing block 930); reconfiguring the playback device for a
modified playback speed associated with the contest stream, while
playback of the content stream is in progress (processing block
932); and playing the content stream with the modified playback
speed (processing block 934).
[0074] FIG. 8 shows a diagrammatic representation of a machine in
the example form of a computer system 700 within which a set of
instructions, for causing the machine to perform any one or more of
the methodologies discussed herein, may be executed. In alternative
embodiments, the machine operates as a standalone device or may be
connected (e.g., networked) to other machines. In a networked
deployment, the machine may operate in the capacity of a server or
a client machine in client-server network environment, or as a peer
machine in a peer-to-peer (or distributed) network environment. The
machine may be a server computer, a client computer, a personal
computer (PC), a tablet PC, a set-top box (STB), a Personal Digital
Assistant (PDA), a cellular telephone, a web appliance, an audio or
video player, a network router, switch or bridge, or any machine
capable of executing a set of instructions (sequential or
otherwise) that specify actions to be taken by that machine.
Further, while a single machine is illustrated, the term "machine"
shall also be taken to include any collection of machines that
individually or jointly execute a set (or multiple sets) of
instructions to perform any one or more of the methodologies
discussed herein.
[0075] The example computer system 700 includes a processor 702
(e.g., a central processing unit (CPU), a graphics processing unit
(GPU), or both), a main memory 704 and a static memory 706, which
communicate with each other via a bus 708. The computer system 700
may further include a video display unit 710 (e.g., a liquid
crystal display (LCD) or a cathode ray tube (CRT)). The computer
system 700 also includes an input device 712 (e.g., a keyboard), a
cursor control device 714 (e.g., a mouse), a disk drive unit 716, a
signal generation device 718 (e.g., a speaker) and a network
interface device 720.
[0076] The disk drive unit 716 includes a machine-readable medium
722 on which is stored one or more sets of instructions (e.g.,
software 724) embodying any one or more of the methodologies or
functions described herein. The instructions 724 may also reside,
completely or at least partially, within the main memory 704; the
static memory 706, and/or within the processor 702 during execution
thereof by the computer system 700. The main memory 704 and the
processor 702 also may constitute machine-readable media. The
instructions 724 may further be transmitted or received over a
network 726 via the network interface device 720.
[0077] Applications that may include the apparatus and systems of
various embodiments broadly include a variety of electronic and
computer systems. Some embodiments implement functions in two or
more specific interconnected hardware modules or devices with
related control and data signals communicated between and through
the modules, or as portions of an application-specific integrated
circuit. Thus, the example system is applicable to software,
firmware, and hardware implementations. In example embodiments, a
computer system (e.g., a standalone, client or server computer
system) configured by an application may constitute a "module" that
is configured and operates to perform certain operations as
described herein. In other embodiments, the "module" may be
implemented mechanically or electronically. For example, a module
may comprise dedicated circuitry or logic that is permanently
configured (e.g., within a special-purpose processor) to perform
certain operations. A module may also comprise programmable logic
or circuitry (e.g., as encompassed within a general-purpose
processor or other programmable processor) that is temporarily
configured by software to perform certain operations. It will be
appreciated that the decision to implement a module mechanically,
in the dedicated and permanently configured circuitry, or in
temporarily configured circuitry (e.g. configured by software) may
be driven by cost and time considerations. Accordingly, the term
"module" should be understood to encompass a tangible entity, be
that an entity that is physically constructed, permanently
configured (e.g., hardwired) or temporarily configured (e.g.,
programmed) to operate in a certain manner and/or to perform
certain operations described herein. While the machine-readable
medium 722 is shown in an example embodiment to be a single medium,
the term "machine-readable medium" should be taken to include a
single medium or multiple media (e.g., a centralized or distributed
database, and/or associated caches and servers) that store the one
or more sets of instructions. The term "machine-readable medium"
shall also be taken to include any medium that is capable of
storing, encoding or carrying a set of instructions for execution
by the machine and that cause the machine to perform any one or
more of the methodologies of the present description. The term
"machine-readable medium" shall accordingly be taken to include,
but not be limited to, solid state memories, optical and magnetic
media, and carrier wave signals. As noted, the software may be
transmitted over a network using a transmission medium. The term
"transmission medium" shall be taken to include any medium that is
capable of storing, encoding or carrying instructions for
transmission to and execution by the machine, and includes digital
or analog communications signal or other intangible medium to
facilitate transmission and communication of such software.
[0078] The illustrations of embodiments described herein are
intended to provide a general understanding of the structure of
various embodiments, and they are not intended to serve as a
complete description of all the elements and features of apparatus
and systems that might make use of the structures described herein.
Many other embodiments will be apparent to those of ordinary skill
in the art upon reviewing the above description. Other embodiments
may be utilized and derived therefrom, such that structural and
logical substitutions and changes may be made without departing
from the scope of this disclosure. The figures provided herein are
merely representational and may not be drawn to scale. Certain
proportions thereof may be exaggerated, while others may be
minimized. Accordingly, the specification and drawings are to be
regarded in an illustrative rather than a restrictive sense.
[0079] The description herein may include terms, such as "up",
"down", "upper", "lower", "first", "second", etc. that are used for
descriptive purposes only and are not to be construed as limiting.
The elements, materials, geometries, dimensions, and sequence of
operations may all be varied to suit particular applications. Parts
of some embodiments may be included in, or substituted for, those
of other embodiments. While the foregoing examples of dimensions
and ranges are considered typical, the various embodiments are not
limited to such dimensions or ranges.
[0080] The Abstract is provided to comply with 37 C.F.R.
.sctn.1.74(b) to allow the reader to quickly ascertain the nature
and gist of the technical disclosure. The Abstract is submitted
with the understanding that it will not be used to interpret or
limit the scope or meaning of the claims.
[0081] In the foregoing Detailed Description, various features are
grouped together in a single embodiment for the purpose of
streamlining the disclosure. This method of disclosure is not to be
interpreted as reflecting an intention that the claimed embodiments
have more features than are expressly recited in each claim. Thus,
the following claims are hereby incorporated into the Detailed
Description, with each claim standing on its own as a separate
embodiment.
[0082] The system of an example embodiment may include software,
information processing hardware, and various processing steps,
which are described herein. The features and process steps of
example embodiments may be embodied in articles of manufacture as
machine or computer executable instructions. The instructions can
be used to cause a general purpose or special purpose processor,
which is programmed with the instructions to perform the steps of
art example embodiment. Alternatively, the features or steps may be
performed by specific hardware components that contain hard-wired
logic for performing the steps, or by any combination of programmed
computer components and custom hardware components. While
embodiments are described with reference to the Internet, the
method and apparatus described hereto is equally applicable to
other network infrastructures or other data communications
systems.
[0083] Various embodiments are described herein. In particular, the
use of embodiments with various types and formats of user interface
presentations and/or application programming interfaces may be
described. It can be apparent to those of ordinary skill in the art
that alternative embodiments of the implementations described
herein can be employed and still fall within the scope of the
claimed invention. In the detail herein, various embodiments are
described as implemented in computer-implemented processing logic
denoted sometimes herein as the "Software". As described above,
however, the claimed invention is not limited to a purely software
implementation.
[0084] Thus, a computer-implemented system and methods for
buffering of real-time data streams are disclosed. While the
present invention has been described in terms of several example
embodiments, those of ordinary skill in the art can recognize that
the present invention is not limited to the embodiments described,
but can be practiced with modification and alteration within the
spirit and scope of the appended claims. The description herein is
thus to be regarded as illustrative instead of limiting.
* * * * *