US20040064576A1 - Method and apparatus for continuous playback of media - Google Patents

Method and apparatus for continuous playback of media Download PDF

Info

Publication number
US20040064576A1
US20040064576A1 US10/664,616 US66461603A US2004064576A1 US 20040064576 A1 US20040064576 A1 US 20040064576A1 US 66461603 A US66461603 A US 66461603A US 2004064576 A1 US2004064576 A1 US 2004064576A1
Authority
US
United States
Prior art keywords
rate
playback
data
time
measure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US10/664,616
Inventor
Richard Goldhor
Donald Hejna
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
VIRENTEM VENTURES LLC
Enounce Inc
Original Assignee
Enounce Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/304,761 external-priority patent/US6625655B2/en
Application filed by Enounce Inc filed Critical Enounce Inc
Priority to US10/664,616 priority Critical patent/US20040064576A1/en
Publication of US20040064576A1 publication Critical patent/US20040064576A1/en
Assigned to VIRENTEM VENTURES, LLC reassignment VIRENTEM VENTURES, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EPL HOLDINGS, LLC
Assigned to VIRENTEM VENTURES, LLC reassignment VIRENTEM VENTURES, LLC CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT 8874436 PREVIOUSLY RECORDED ON REEL 035590 FRAME 0665. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Assignors: EPL HOLDINGS, LLC
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L21/00Processing of the speech or voice signal to produce another audible or non-audible signal, e.g. visual or tactile, in order to modify its quality or its intelligibility
    • G10L21/04Time compression or expansion

Definitions

  • the present invention pertains to the field of playback of media such as audio and audio-visual works which are retrieved from sources having non-deterministic delays such as, for example, a server such as a file server or a streaming media server, broadcasting data via the Internet.
  • sources having non-deterministic delays such as, for example, a server such as a file server or a streaming media server, broadcasting data via the Internet.
  • the present invention pertains to method and apparatus for providing playback of an audio or audio-visual work received from sources having non-deterministic delays.
  • the present invention pertains to method and apparatus for providing continuous playback of media from sources having non-deterministic delays such as, for example, a server such as a file server or a streaming media server, broadcasting data via the Internet, an Intranet, or the like.
  • FIG. 1 shows, in schematic form, how such audio or audio-visual works are distributed over the Internet.
  • media broadcast server 2000 accesses data representing the audio or audio-visual work from storage medium 2100 and broadcasts the data to multiple recipients 2300 1 to 2300 n across non-deterministic delay network 2200 .
  • delays can also arise from decoders, multicasting CPU time-slices, and other concurrently operating software components.
  • Batch playback entails downloading an entire work and initiating playback after the entire work has been received.
  • streaming Another well known technique for providing playback of the audio or audio-visual work is referred to as “streaming.” Streaming entails downloading data which represents the audio or audio-visual work and initiating playback before the entire work has been received.
  • a prime disadvantage of batch playback is that the viewer/listener must wait for the entire work to be downloaded before any portion of the work may be played. This can be tedious since the viewer/listener may wait a long time for the transmission to occur, only to discover that the work is of little or no interest soon after playback is initiated.
  • the streaming technique alleviates this disadvantage of batch playback by initiating playback before the entire work has been received.
  • a disadvantage of streaming is that playback is often interrupted when the flow of data is interrupted due to network traffic, congestion, transmission errors, and the like. These interruptions are tedious and annoying since they occur randomly and have a random duration. In addition, intermittent interruptions often cause the context of the playback stream to be lost as a user waits for playback to be resumed when new data is received.
  • one embodiment of the present invention is a client apparatus for preparing streaming media received over a non-deterministic delay network for playback or distribution which comprises: (a) a buffer which stores data corresponding to the streaming media; (b) a time-scale modification system that time-scale modifies data output from the buffer at a time-scale modification playback rate; (c) a rate determiner that determines the time-scale modification playback rate over an interval to control an amount of data in the buffer; and (d) a user interface which receives a user requested time-scale modification playback rate.
  • FIG. 1 shows, in schematic form, how audio or audio-visual works are broadcast from a server, for example, a file server or a streaming media server, to recipients over a communication medium, such as, for example, a network such as the Internet;
  • a server for example, a file server or a streaming media server
  • a communication medium such as, for example, a network such as the Internet
  • FIG. 2 shows a block diagram of an embodiment of the present invention which provides substantially continuous playback of an audio or audio-visual work received from a source having non-deterministic delays such as a server, for example, a file server or a streaming media server, broadcasting data via a communication medium, such as, for example, a network such as the Internet;
  • a source having non-deterministic delays such as a server, for example, a file server or a streaming media server, broadcasting data via a communication medium, such as, for example, a network such as the Internet;
  • FIG. 3 shows, in pictorial form, low and high thresholds used in one embodiment of Capture Buffer 400 in the embodiment of the present invention shown in FIG. 2;
  • FIG. 4. shows a graph of playback rate versus the amount of data in Capture Buffer 400 in the embodiment of the present invention shown in FIG. 2;
  • FIG. 5. shows, in graphical form, relative amounts of data at an input and an output of TSM Subsystem 800 in the embodiment of the present invention shown in FIG. 2 during time-scale expansion, i.e., slow down of the playback-rate of the streaming media;
  • FIG. 6. shows, in graphical form, relative amounts of data at an input and an output of TSM Subsystem 800 in the embodiment of the present invention shown in FIG. 2 during time-scale compression, i.e., speed up of the playback rate of the streaming media;
  • FIGS. 7 - 13 show block diagrams of alternative embodiments of the present invention.
  • FIGS. 14 - 18 show displays produced by various embodiments of a graphical interface used to fabricate at least some embodiments of the present invention.
  • FIG. 2 shows a block diagram of embodiment 1000 of the present invention which provides substantially continuous playback of an audio or audio-visual work received from a source having non-deterministic delays such as a server, for example, a file server or a streaming media server, broadcasting via the Internet.
  • Streaming Data Source 100 provides media data representing an audio or audio-visual work through network 200 to User System 300 (US 300 ), which media data is received at a non-deterministic rate by US 300 .
  • Capture Buffer 400 in US 300 receives the media data as input.
  • Capture Buffer 400 is a FIFO (First In First Out) buffer existing, for example, in a general purpose memory store. It should be understood that Capture Buffer 400 may also be implemented using pointers and conventional system memory, circular buffers, and any one of a number of apparatus and methods that are well known to those of ordinary skill in the art.
  • FIFO First In First Out
  • Capture Buffer 400 In the absence of delays in data arrival at US 300 from network 200 , the amount of data in Capture Buffer 400 ought to remain substantially constant as the data transfer rate is typically chosen to be substantially equal to the playback rate. However, as is well known to those of ordinary skill in the art, pauses and delays in transmission of the media data through network 200 to Capture Buffer 400 cause data depletion therein since data is simultaneously being output (for example, at a constant rate) from Capture Buffer 400 to satisfy data requirements of Playback System 500 . As is well known, if the media data transmitted to US 300 is delayed long enough, a sufficient amount of data in Capture Buffer 400 will be consumed so that Playback System 500 must pause until enough media data has arrived to enable resumption of playback. Thus, a typical playback system must constantly check for arrival of new data while the playback system is paused, and it must initiate playback once new data is received.
  • Time-Scale Modification methods are used to slow the playback rate of the audio or audio-visual work to substantially match a data drain rate required by Playback System 500 with a streaming data rate of the arriving data representing the audio or audio-visual work.
  • TSM Time-Scale Modification
  • presently known methods for Time-Scale Modification (“TSM”) enable digitally recorded audio to be modified so that a perceived articulation rate of spoken passages, i.e., a speaking rate, can be modified dynamically during playback.
  • TSM Subsystem 800 requires less input data to generate a fixed interval of output data.
  • a delay occurs during transmission of the audio or audio-visual work from network 200 to US 300 (of course, it should be clear that such delays may result from any number of causes such as delays in accessing data from a storage device, delays in transmission of the data from a media server, delays in transmission through network 200 , delays waiting for CPU resources on software implementations, and so forth)
  • the playback rate is automatically slowed to reduce the amount of data drained from Capture Buffer 400 per unit time.
  • more time is provided for data to arrive at US 300 before the data in Capture Buffer 400 is exhausted.
  • Capture Buffer 400 receives the following as input: (a) media data input from network 200 ; (b) requests for information about the amount of data stored therein from Capture Buffer Monitor 600 ; and (c) media stream data requests from TSM Subsystem 800 .
  • Capture Buffer 400 produces the following as output: (a) a stream of data representing portions of an audio or audio-visual work (this is output to TSM Subsystem 800 ); (b) a stream of location information used to identify the position in the stream of data (this is output to TSM Subsystem 800 ); and (c) the amount of data stored therein (this is output to Capture Buffer Monitor 600 ).
  • Capture Buffer 400 may include a digital storage device.
  • digital storage devices There are many methods well known to those of ordinary skill in the art for utilizing digital storage devices, for example a “hard disk drive,” to store and retrieve general purpose data.
  • a digital storage device such as, for example, a CD-ROM, a digital tape, a magnetic disc.
  • the data in Capture Buffer 400 may be comprised of samples of a signal which are usable by TSM SubSystem 800 , or alternatively, the data in Capture Buffer 400 may be comprised of an encoded representation which, when decoded, provides samples of a signal that are usable by TSM SubSystem 800 .
  • a decoder utilized to decode encoded representations of signals can be disposed within Capture Buffer 400 , or it can be disposed in any logical location between Capture Buffer 400 and TSM SubSystem 800 .
  • Capture Buffer Monitor 600 receives, as input, information representing (or that can be used to determine) the amount of data in Capture Buffer 400 .
  • Capture Buffer Monitor 600 produces, as output: (a) data requests to Capture Buffer 400 ; and (b) information representing (or that can be used to determine) the amount of data in Capture Buffer 400 , which information is output to TSM Rate Determiner 700 .
  • Capture Buffer Monitor 600 utilizes any one of a number of methods that are well known to those of ordinary skill in the art to obtain the information representing (or that can be used to determine) the amount of data in Capture Buffer 400 .
  • Capture Buffer Monitor 600 may periodically poll Capture Buffer 400 to determine the amount of data in the buffer; Capture Buffer Monitor 600 may monitor the arrival and departure of data from Capture Buffer 400 ; and Capture Buffer Monitor 600 may compute data arrival and departure rates from Capture Buffer 400 .
  • TSM Rate Determiner 700 receives the following as input: (a) a signal (from Capture Buffer Monitor 600 ) that represents the amount of data present in Capture Buffer 400 and possibly a data arrival rate for Capture Buffer 400 ; (b) a signal (output, for example, from Playback System 500 or from another module of US 300 such as TSM SubSystem 800 ) that represents a current data consumption rate of Playback System 500 ; and (c) a number of parameters (to be described below), which parameters may optionally be supplied by User Interface 900 .
  • the signal that represents the current data consumption rate may not be necessary since TSM Rate Determiner 700 can calculate the data consumption rate because it is generating the playback rate used by TSM SubSystem 800 .
  • One or more of the following parameters are input to TSM Rate Determiner 700 : (a) a low threshold value parameter (T L which is described in detail below) for the amount of data in Capture Buffer 400 ; (b) a high threshold value parameter (T H which is described in detail below) for the amount of data in Capture Buffer 400 ; (c) a scale parameter (Scale which is described in detail below) which is used to adjust the playback rate; (d) a parameter designated Interval_Size; and (d) a parameter designated Speed_Change_Resolution.
  • parameters may be input in any one of a number of methods that are well known to those of ordinary skill in the art. For example, they may be set as predetermined parameters for embodiment 1000 in accordance with methods which are well known to those of ordinary skill in the art, i.e., system constants which are loaded when the system is initialized, they can be entered and/or viewed and varied by receiving user input through a user interface, for example User Interface 900 , in accordance with methods which are well known to those of ordinary skill in the art, and so forth. However, the manner in which these parameters are set and/or varied are not shown for ease of understanding the present invention.
  • TSM Rate Determiner 700 produces, as output, a rate signal representing a TSM rate, or playback rate, which can help better balance the data consumption rate of Playback System 500 with an arrival rate of data at Capture Buffer 400 .
  • one embodiment of the present invention may operate in a mode that attempts to balance a data consumption rate with a data arrival rate.
  • the embodiment utilizes changes in playback rate to alter the data consumption rate, and as a result, the playback rate of material presented by the embodiment is determined by the data delivery rate of information from the source, for example, a media server.
  • this mode is referred to as “Rate Determined by Data Arrival” mode.
  • an embodiment of the present invention (a) monitors various system conditions and user input playback presentation rate requests; (b) computes or infers data arrival and departure rates; and (c) intervenes whenever a user request would cause data underflow or overflow in Capture Buffer 400 or a disruption in playback.
  • this mode is referred to as “Rate Restricted by Data Arrival” mode.
  • the playback rate will be altered in a continuous, for example, slowly varying, fashion.
  • buffers of time-scale modified output may be queued for playback in Playback System 500 .
  • the queued data may not be modified when a user requests a change in playback rate.
  • time-scale modification may begin immediately for data sent to Playback System 500 after the request for a change in playback rate was received, there may be a delay until data processed with the previous rate (and buffered for output) has been played back. For this reason, such embodiments may appear to be a bit sluggish.
  • feedback is provided to the user to indicate a Current Playback Rate (CPR) and a Requested Playback Rate (RPR).
  • CPR and RPR show the user that a newly requested playback rate has been received and that the embodiment is initiating a response.
  • the playback rate of each buffer of data available to Playback System 500 is associated with the buffer (this can be done by TSM SubSystem 800 or by other components of User System 300 ).
  • User Interface 900 is provided an indication of the event of presentation of the buffer to the user (or expected event of presentation of the buffer to the user).
  • User Interface 900 is presented the playback rate for the associated buffer or information that can be used to obtain the playback rate.
  • Playback System 500 may report the playback rate associated with each buffer as the buffer is played back.
  • Playback System 500 may report the event of presentation of each buffer, and User Interface 900 or TSM Rate Determiner 700 may access a table which contains playback rates for each buffer that was dispatched to Playback System 500 .
  • This playback rate information is used to determine CPR and report it to the user, if desired.
  • CPR is determined to be the playback rate of the most recent buffer played back.
  • CPR may be computed using any of several mathematical functions, for example, a mathematical average, of multiple values of playback rates of a predetermined number of the buffers played.
  • the user receives confirmation of his/her request and is able to observe the embodiment's response.
  • CPR will follow or chase RPR as the embodiment responds to user playback rate requests.
  • feedback may be useful to avoid overcorrections by users when the embodiment's response to user requests appears sluggish.
  • TSM Rate Determiner 700 uses the parameter Interval_Size to segment the input digital data stream in Capture Buffer 400 and to determine a single TSM rate for each segment of the input digital stream. Note the length of each segment is given by the value of the Interval_Size parameter. Further, TSM Rate Determiner 700 uses the parameter Speed_Change_Resolution to determine appropriate TSM rates to pass to TSM SubSystem 800 . A desired TSM rate is converted to one of the quantized levels in a manner which is well known to those of ordinary skill in the art.
  • TSM rate or playback rate
  • Speed_Change_Resolution filters small changes in TSM rate, or playback rate.
  • TSM Rate Determiner 700 determines a maximum playback rate that can be used (over a given reporting time interval (rti)) without draining Capture Buffer 400 so much that playback would have to pause to wait for more data to arrive.
  • This maximum playback rate is referred to as the current maximum sustainable playback rate (CmaxSR), and its value represents a scale factor applied to a normal playback rate, i.e., a playback rate with no time-scale modification.
  • R sampling rate or consumption rate during playback at normal rate.
  • rti time interval over which a playback rate is to be sustained
  • CmaxSR over a 4-second interval would be:
  • CmaxSR over a 1-second interval would be:
  • CmaxSR is a function of: (a) the arrival rate of incoming data; (b) the sampling rate or consumption rate during playback at normal rate; (c) the amount of data in the Capture Buffer; and (d) the time interval over which a playback rate is to be sustained. It should be understood that for ease of understanding this aspect of the present invention, the description above used samples per second to represent I and R. However, the present invention is not limited to such a representation, for example, embodiments of the present invention include the use of any representation of data per unit time, for example, data packets containing a compressed representation of a specific duration of audio or audio/video signals.
  • I arrival rate of incoming data (samples/sec)
  • R sampling rate or consumption rate during playback at normal rate
  • C capacity present in Capture Buffer (amount of free space)
  • rti time interval over which a playback rate must be sustained
  • CminSR indicates the minimum playback speed that can be maintained without causing Capture Buffer 400 to overflow, or sending a message to the data server, requesting that the data server cease sending data.
  • CmaxSR and CminSR are functions of the data arrival rate. Further, the data arrival rate may vary over time due to factors such as, without limitation, network latency, transmission errors, and congestion. Thus, CmaxSR(t) and CminSR(t) will vary over time for a given value of t as network delays, data delivery rates, data consumption rates, and consequently the amount of data in the Capture Buffer, change.
  • the input arrival rate may be estimated in any number of ways including, without limitation, comparing time-stamps between arriving data, monitoring of arrival times and data packet sizes, and other methods described below.
  • TSM SubSystem 800 receives as input: (a) a stream of data representing portions of the audio or audio-visual work (output from Capture Buffer 400 ); (b) a stream of location information (output from Capture Buffer 400 ) used to identify the position in the stream of data being sent, for example, a sample count or time value; and (c) the rate signal specifying the desired TSM rate, or playback rate (output from TSM Rate Determiner 700 ).
  • TSM SubSystem 800 modifies the input stream of data in accordance with well known TSM methods to produce, as output, a stream of samples that represents a Time-Scale Modified signal.
  • the Time-Scale modified output signal contains more samples per block of input data if Time-Scale Expansion is applied, as shown in FIG. 5.
  • the output from TSM SubSystem 800 contains fewer samples per block of input data, as shown in FIG. 6.
  • TSM SubSystem 800 can create more samples than it is given by creating an output stream with a slower playback rate (Time-Scale Expanded).
  • TSM SubSystem 800 can create fewer samples than it is given by creating an output stream with a faster playback rate (Time-Scale Compressed).
  • the TSM method used is a method disclosed in U.S. Pat. No. 5,175,769 (the '769 patent), which '769 patent is incorporated by reference herein, one of the inventors of the present invention also being a joint inventor of the '769 patent.
  • the output from TSM SubSystem 800 is a stream of samples representing portions of the audio or audio-visual work, which output is applied as input to Playback System 500 .
  • Playback System 500 plays back the data output from TSM SubSystem 800 .
  • There are many methods of implementing Playback System 500 that are well known to those of ordinary skill in the art, for example, as a playback engine.
  • the stream of digital samples output from TSM SubSystem 800 has a playback rate, supplied from TSM Rate Determiner 700 , that provides a balance of the data consumption rate of TSM SubSystem 800 with the arrival rate of data input to US 300 .
  • the data consumption rate of Playback System 500 is fixed to be identical to the data output rate of TSM SubSystem 800 .
  • a playback rate representing Time-Scale Expansion is output from TSM Rate Determiner 700 and applied as input to TSM SubSystem 800 , the number of data samples required per unit time by TSM SubSystem 800 is reduced in proportion to the amount of Time-Scale Expansion.
  • a reduction in the number of data signals sent to TSM SubSystem 800 slows the data drain-rate from Capture Buffer 400 and, as a result, less data from Capture Buffer 400 is consumed per unit time. This, in turn, increases the amount of playback time before a pause is required due to emptying of Capture Buffer 400 .
  • the present invention has been described in terms of slowing down playback, the present invention is not thusly limited and includes embodiments where the playback rate is increased in situations where data arrives in Capture Buffer 400 at a rate which is faster than the rate at which it would be consumed during playback at a normal rate. In this situation the playback rate is increased and the data is consumed by TSM SubSystem 800 at a faster rate to avoid having Capture Buffer 400 overflow.
  • TSM SubSystem 800 speeds up or slows down visual information to match the audio in the audio-visual work.
  • the video signal is “Frame-subsampled”, “Frame-replicated”, or displayed with an altered frame-rate in accordance with any one of the many methods known to those of ordinary skill in the prior art to maintain synchronism between the audio and visual portions of the audio-visual work.
  • the frame stream is subsampled, i.e.
  • frames are skipped, discarded or merged to maintain a fixed number of frames displayed per unit time, or the frame-rate may be increased, i.e. frames may be rendered to a visual display more frequently.
  • the frame stream may be replicated or interpolated to maintain a fixed frame-rate, or the frame-rate may be decreased, i.e. frames may be rendered to a visual display less frequently.
  • embodiment 1000 optionally comprises User Interface 900 for operating in “Rate Restricted by Data Arrival” mode in which User Interface 900 receives user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art.
  • the user generated rate requests are applied as input to TSM Rate Determiner 700 .
  • These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • the term “folded” means that requests from User Interface 900 may be overridden to prevent overflow or underflow of Capture Buffer 400 .
  • a requested playback rate (RPR) received from User Interface 900 exceeds CmaxSR
  • the request may be acknowledged by updating a position of RPR displayed in User Interface 900 (to be described in detail below), but the rate output by TSM Rate Determiner 700 to TSM SubSystem 800 : (a) may be limited to CmaxSR; or (b) may be determined by using any one of a number of algorithms that give precedence to rates which prevent underflow and overflow of Capture Buffer 400 .
  • CmaxSR and equations (2), (3), and (4) set forth below may be used as follows.
  • FIG. 2 shows Capture Buffer 400 , Playback System 500 , Capture Buffer Monitor 600 , TSM Rate Determiner 700 , TSM SubSystem 800 , and User Interface 900 of embodiment 1000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined.
  • some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • embodiments of the present invention include the use of any one of a number of algorithms for determining the playback rate to help balance the rate of data consumption for playing back the audio or audio-visual works with the rate of data input from network 200 having non-deterministic delays.
  • the playback rate is determined to vary with the fraction of Capture Buffer 400 that is filled with data. For example, for each 10% decrement of data depletion, the playback rate is reduced by 10% except when the input data contains an “end” signal. It should be clear to those of ordinary skill in the art how to modify this algorithm to achieve any of a number of desired balance conditions. For example, in situations where the duration of a delay can vary drastically, a non-linear relationship may be used to determine the playback rate.
  • One non-linear function that may be used is the inverse tangent function. In this case,
  • Playback Control Parameter (2*#samples_in_buffer/elements_in_buffer)) ⁇ 1
  • Playback Rate tanh ⁇ 1 (Playback Control Parameter) (1)
  • #samples_in_buffer is the number of samples of data in Capture Buffer 400 ;
  • elements_in_buffer is the total number of samples of data that can be stored in Capture Buffer 400 ; and
  • Playback Control Parameter is a parameter that is always greater than or equal to ⁇ 1 and less than or equal to +1.
  • a low threshold (T L ) value and a high threshold (T H ) value are be used to construct a piece-wise graph of playback rate versus amount of data in Capture Buffer 400 .
  • FIG. 3 shows, in pictorial form, how T L and T H relate to the amount of data in Capture Buffer 400 .
  • Scale is an arbitrary scale factor
  • FIG. 4. shows a graph of playback rate versus amount of data in Capture Buffer 400 using eqns. (2)-(4). From FIG. 4, one can readily appreciate that for small deviations from an ideal amount of data in Capture Buffer 400 (origin 0 in FIG. 4), changes in the playback rate are linear; however, larger deviations generate a more pronounced non-linear response. Further, changes in the amount of data in Capture Buffer 400 which remain between low threshold level T L and high threshold level T H do not cause any change in playback rate.
  • FIG. 7 shows a block diagram of embodiment 3000 of the present invention.
  • embodiment 3000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding: (a) Data Arrival Time-Stamp System (DATSS) 5400 ; (b) Data Departure Time-Stamp Apparatus 5500 (DDTSS); (c) Time-Stamp Comparator (TSC) 5600 ; and (d) System Clock 5300 .
  • DATSS Data Arrival Time-Stamp System
  • DTSS Data Departure Time-Stamp Apparatus 5500
  • TSC Time-Stamp Comparator
  • System Clock 5300 System Clock
  • DATSS 5400 receives, as input: (a) media data (from network 200 ) and (b) information representing a clock time value (from System Clock 5300 ). DATSS 5400 produces, as output: (a) information representing a particular portion of media data received from network 200 (this is applied as input to Capture Buffer 400 ) and (b) the clock time value of System Clock 5300 at the arrival time of the particular portion of the media data (this is applied as input to Capture Buffer 400 ). DATSS 5400 uses any one of many methods that are well known to those of ordinary skill in the art for appending or associating the arrival time obtained from System Clock 5300 to or with, respectively, each portion of the media data arriving from network 200 .
  • Capture Buffer 400 receives, as input, the information representing a particular portion of media data and its appended or associated time value of arrival. Capture Buffer 400 produces, as output: (a) media data (this is output to TSM SubSystem 800 ) and (b) information identifying the particular portion of media data and its associated clock value, including without limitation the media data itself and its associated clock time (this is output to DDTSS 5500 ).
  • DDTSS 5500 receives, as input: (a) media data with the arrival time appended thereto or associated therewith by DATSS 5400 (from Capture Buffer 400 ) and (b) information representing a clock time value (from System Clock 5300 ).
  • DDTSS 5500 produces, as output: (a) information representing the arrival time of the particular portion of the media data appended thereto, or associated therewith, by DATSS 5400 (applied as input to TSC 5600 ) and (b) the clock time of System Clock 5300 at the departure time of the particular portion of media data from Capture Buffer 400 , i.e., the time it arrived at DDTSS 5500 (applied as input to TSC 5600 ).
  • DDTSS 5500 uses any one of many methods that are well known to those of ordinary skill in the art for extracting or associating the arrival time from or with each portion of media data transferred from Capture Buffer 400 .
  • TSC 5600 receives, as input: (a) the arrival time, i.e., date stamp, of a portion of media data (from DDTSS 5500 ) and (b) the departure time of the portion of media data (from DDTSS 5500 ).
  • TSC 5600 produces, as output, a Playback Control Parameter value corresponding to an amount of time between the arrival and departure times of the portion of media data (applied as input to TSM Rate Determiner 700 ).
  • TSC 5600 computes the Playback Control Parameter by subtracting the arrival time from the departure time value, and normalizing the result as follows:
  • Delay Time Departure Time ⁇ Arrival Time (5)
  • Playback Control Parameter Normalize ((Delay Time ⁇ T S )/ A ) (6)
  • T S and A are constants that are chosen to optimize system performance and are input in the same manner discussed above with respect to other system parameters.
  • Normalize is any function that converts Delay Time values to normalized values that are greater than or equal to ⁇ 1 (i.e., a maximum data underflow) and less than or equal to +1 (a maximum data overflow).
  • ⁇ 1 i.e., a maximum data underflow
  • +1 a maximum data overflow
  • the normalized value of 0 indicates a balance in the arrival and departure rates for data.
  • the following function could be used to determine a normalized Delay Time:
  • the normalized values are used to indicate an amount of time-scale modification that is required, or desired, to avoid data overflow or data underflow situations. It should be clear that other Normalize (Delay Time) functions can be employed using criteria that should be well known to those of ordinary skill in the art.
  • TSC 5600 The output of TSC 5600 is then applied as input to TSM Rate Determiner 700 .
  • TSM Rate Determiner 700 may utilize the Playback Control Parameter and eqn. (1) to determine a Playback Rate, or any of a number of methods for combining inputs rates to determine an output rate (for example, any of the techniques described above).
  • embodiment 3000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art.
  • the user generated rate requests are applied as input to TSM Rate Determiner 700 .
  • These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • FIG. 7 shows Capture Buffer 400 , Playback System 500 , TSM Rate Determiner 700 , TSM SubSystem 800 , User Interface 900 , System Clock 5300 , DATSS 5400 , DDTSS 5500 , and TSC 5600 of embodiment 3000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 8 shows a block diagram of embodiment 4000 of the present invention. As shown in FIG. 8, embodiment 4000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding Data Underflow Detector (DUD) 6100 and System Clock 5300 .
  • DMD Data Underflow Detector
  • DUD 6100 receives, as input, control signals from Playback System 500 .
  • DUD 6100 processes the control signals in a manner to be described in detail below and outputs Playback Control Parameter values that are applied as input to TSM Rate Determiner 700 .
  • DUD 6100 monitors control signals output from Playback System 500 to indicate “data underflow conditions.” It is well known to those of ordinary skill in the art that a typical embodiment of Playback System 500 outputs control signals to indicate data underflow conditions. For example, typical data underflow conditions exist whenever: (a) Playback System 500 is attempting to playback media data, and has no data available to output; or (b) Playback System 500 is attempting to playback media data, and has less than a predetermined minimum amount of data available to output.
  • Playback System 500 may indicate a data underflow condition in different ways, including but not limited to, by: (a) setting a flag in the control signals it sends to DUD 6100 and (b) quantifying the amount of data available to it (for example, in bytes) and reporting that quantity. DUD 6100 can compare the reported quantity with a predetermined minimum quantity to detect a data underflow condition.
  • Other techniques for detecting a data underflow condition may be based on: (a) monitoring the amount of data Playback System 500 requests from TSM SubSystem 800 ; (b) the frequency with which Playback System 500 requests additional data (in this case, TSM SubSystem 800 could send a signal to DUD 6100 for analysis); or (c) other aspects of the behavior of Playback System 500 .
  • DUD 6100 collects and calculates information about the existence of a data underflow condition, timing information specifying when the data underflow condition occurred, the number of data underflow events detected, and the duration of the data underflow conditions. In accordance with the present invention, DUD 6100 uses this information to calculate a Playback Control Parameter, which it applies as input to TSM Rate Determiner 700 . In embodiments using timing information, embodiment 4000 would include a system clock 5300 which would be interrogated by DUD 6100 .
  • DUD 6100 may calculate the Playback Control Parameter based on the length of time since a data underflow condition was detected:
  • DUD 6100 uses other statistical measures associated with the data underflow condition. Examples of such other statistical measures and their utility are well known to those of ordinary skill in the art. For example, values could be sampled over a time interval and averaged.
  • embodiment 4000 operates in the manner described for the corresponding portions of embodiment 1000 shown in FIG. 2.
  • embodiment 4000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art.
  • the user generated rate requests are applied as input to TSM Rate Determiner 700 .
  • These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • FIG. 8 shows Capture Buffer 400 , Playback System 500 , Capture TSM Rate Determiner 700 , TSM SubSystem 800 , User Interface 900 , and DUD 6100 of embodiment 4000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined.
  • some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 9 shows a block diagram of embodiment 5000 of the present invention.
  • embodiment 5000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding: (a) Input Rate Monitor (IRM) 6200 ; (b) Output Rate Monitor (ORM) 6300 ; (c) Rate Comparator (RC) 6400 ; and (d) System Clock 5300 .
  • IRM Input Rate Monitor
  • ORM Output Rate Monitor
  • RC Rate Comparator
  • IRM 6200 receives, as input: (a) media data (from network 200 ) and (b) information representing a clock time value (from System Clock 5300 ). IRM 6200 produces, as output: (a) media data (this is applied as input to Capture Buffer 400 ); (b) information representing a short-term arrival rate at which media data is being received from network 200 (this is applied as input to Rate Comparator 6400 ); and (c) the clock time value of System Clock 5300 associated with the short-time arrival rate (this is applied as input to RC 6400 ).
  • IRM 6200 uses any one of many methods that are well known to those of ordinary skill in the art to calculate the data arrival rate over small time-intervals (“short-term arrival rate”).
  • short-term arrival rate includes counting the number or amount of arriving media data, for example, in the previous 700 microseconds, or previous 3 seconds.
  • ORM 6300 receives, as input: (a) media data emptied from Capture Buffer 400 ; and (b) information representing a clock time value (from System Clock 5300 ). ORM 6300 produces, as output: (a) media data emptied from Capture Buffer 400 (this is applied as input to TSM SubSystem 800 ); and (b) information representing a short-term emptying rate at of media data as it is being delivered to ORM 6300 (this is applied as input to RC 6400 ). ORM 6300 uses any one of many methods that are well known to those of ordinary skill in the art to calculate the short-term emptying rate. For example, ORM 6300 may monitor the number of data units, buffers, frames, or digital samples, and the like fetched from Capture Buffer 400 over a small time-interval to determine a short-term emptying rate.
  • RC 6400 receives, as input: (a) the short-time arrival rate (from IRM 6200 ) and (b) the short-term emptying rate (from ORM 6300 ). In response, RC 6400 calculates two values representing an absolute and a fractional difference between these two short-time rates. RC 6400 computes the absolute difference by subtracting the short-time arrival rate from the short-time emptying rate, and computes the fractional difference by dividing the absolute difference by the short-time emptying rate.
  • Alternative embodiments of RC 6400 may employ other statistical comparisons of the short-time arrival and emptying rates. Examples of such other statistical measures and their utility are well known to those of ordinary skill in the art. For example, without limitation, an average of the five (5) most recent short-term values, or the arithmetic mean of the high and low values over a specific interval.
  • RC 6400 calculates the Playback Control Parameter values from the fractional difference in rate using the following formula:
  • RC 6400 applies the Playback Control Parameter values as input to TSM Rate Determiner 700 .
  • embodiment 5000 operates in the manner described for the corresponding portions of embodiment 1000 shown in FIG. 2.
  • embodiment 5000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art.
  • the user generated rate requests are applied as input to TSM Rate Determiner 700 .
  • These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • FIG. 9 shows Capture Buffer 400 , Playback System 500 , TSM Rate Determiner 700 , TSM SubSystem 800 , User Interface 900 , System Clock 5300 , Input Rate Monitor 6200 , Output Rate Monitor 6300 , and Rate Comparator 6400 of embodiment 5000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 9A shows a block diagram of embodiment 5001 of the present invention.
  • embodiment 5001 is obtained from embodiment 5000 shown in FIG. 9 by: (a) having Capture Buffer 400 output data to TSM SubSytem 800 ; (b) TSM SubSytem 800 output time-scale modified data to ORM 6300 ; and having ORM 6300 output data to Playback System 500 .
  • ORM 6300 produces, as output: (a) media data emptied from TSM SubSystem 800 (this is applied as input to Playback System 500 ); and (b) information representing a short-term data consumption rate of media data (this is applied as input to RC 6400 ).
  • ORM 6300 uses any one of many methods that are well known to those of ordinary skill in the art to calculate the short-term data consumption rate. For example, ORM 6300 may monitor the number of data units, buffers, frames, or digital samples, and the like fetched from TSM Subsystem 800 over a small time-interval to determine a short-term data consumption rate. The remainder of embodiment 5001 operates in the manner described for the corresponding portions of embodiment 5000 shown in FIG. 9.
  • FIG. 10 shows a block diagram of embodiment 6000 of the present invention.
  • embodiment 6000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding: (a) Streaming Data Information Source (SDIS) 150 ; (b) Streaming Media Information Monitor (SMIM) 6600 ; (c) Short-Term Network Bandwidth Estimator (STNBE) 6700 ; and (d) System Clock 5300 .
  • SDIS Streaming Data Information Source
  • SMIM Streaming Media Information Monitor
  • STNBE Short-Term Network Bandwidth Estimator
  • SDIS 150 receives, as input, media data packets generated by Streaming Data Source 100 .
  • SDIS 150 produces, as output: (a) media data packets (this is applied as input to network 200 ) and (b) information data packets which describe these media data packets (this is applied as input to network 200 ).
  • information contained in the information data packets describes the amount, nature, and timing of media data being transmitted by Streaming Data Source 100 .
  • the nature of media data refers to information such as, without limitation, encoding format, number of channels (mono/stereo), bit depth and sampling rate.
  • the timing of media data refers to the time that a media data packet was received by SDIS 150 and/or delivered to network 200 .
  • the information data packets and the media data packets are transmitted to User System 300 using any one of a number of methods which are well known to those of ordinary skill in the art so that arrival of the information data packets are independent of, and generally more reliable and prompt than, the delivery of the media data packets to Capture Buffer 400 .
  • the notion of a delivery method for the information data packets being “more reliable” means delivery over channels and/or using protocols that are more likely to ensure timely and error-free delivery than the channels used to deliver the media data packets. For example, without limitation, using transport protocols or transmission priorities that differ from those used for media data packets.
  • the information and the data are sent separately. This is referred to below as out-of-band media transmission.
  • the information data is appended to the media data packets. This is referred to below as in-band media transmission.
  • SDIS 150 may reside on the same physical server as Streaming Data Source 100 (or on a server which is otherwise associated with Streaming Data Source 100 ), or on an intermediate node in network 200 through which the media data packets pass on their way from Streaming Data Source 100 to User System 300 .
  • SMIM 6600 receives, as input: (a) the information data packets generated by SDIS 150 (from network 200 ) and (b) the media data packets transmitted by SDIS 150 (from network 200 ). SMIM 6600 produces, as output: (a) the media data packets (this is applied as input to Capture Buffer 400 ) and (b) the information data packets (this is applied as input to Short-Term Network Bandwidth Estimator (STNBE 6700 ). For the in-band case, SMIM 6600 separates the media and the information and transfers them as indicated above for the out-of-band case.
  • STNBE 6700 Short-Term Network Bandwidth Estimator
  • STNBE 6700 receives, as input, (a) the information data packets and (b) a time clock value from System Clock 5300 .
  • STNBE 6700 uses the inputs in accordance with any one of the many methods which are well known to those of ordinary skill in the art to calculate an arrival rate for information over short time intervals, and to estimate the transmission delay variations.
  • This arrival rate provides an effective estimate of the short-term network bandwidth of network 200 .
  • the effective short-term network bandwidth is the rate at which packets are arriving over network 200 , and is measured, for example, by counting the number of packets received over a period of time like 10 msecs or 300 msecs or 3 seconds and then dividing the number by that time period.
  • STNBE 6700 uses the short-term network bandwidth to generate Playback Control Parameter values and produces, as output, the Playback Control Parameter values (this is applied as input to TSM Rate Determiner 700 ).
  • Alternative embodiments of SDIM 600 may employ other statistical comparisons of the network transmission characteristics. For example, another statistical measure might be the variance of the transmission rate, which provides a measure of how unreliable the channel is.
  • SDIM 600 calculates the Playback Control Parameter values from the short-term network bandwidth using the following formula:
  • embodiment 6000 operates in the manner described for the corresponding portions of embodiment 1000 shown in FIG. 2.
  • embodiment 1000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art.
  • the user generated rate requests are applied as input to TSM Rate Determiner 700 .
  • These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • FIG. 10 shows Capture Buffer 400 , Playback System 500 , TSM Rate Determiner 700 , TSM SubSystem 800 , User Interface 900 , System Clock 5300 , SMIM 6600 , and STNBE 6700 of embodiment 6000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 11 shows a block diagram of embodiment 7000 of the present invention.
  • Intermediate Server Node (ISN) 250 comprises Capture Buffer 400 , Capture Buffer Monitor 600 , TSM Rate Determiner 700 , and TSM SubSystem 800 that operate in the same manner described above for embodiment 1000 shown in FIG. 2.
  • ISN 250 receives media data packets from Stream Data Source 100 over network 200 .
  • After processing, in accordance with embodiment 7000 shown in FIG. 11 (instead of forwarding the TSM signal output from TSM SubSystem 800 to Playback System 500 as occurs in embodiment 1000 shown in FIG.
  • TSM signal output from TSM SubSystem 800 i.e., the media data packets
  • TSM SubSystem 800 may process the encoded format, or decoding may be performed before such data is sent to TSM SubSystem 800 .
  • the output of TSM SubSystem 800 may then be re-encoded before being sent to User System 317 .
  • ISN 250 acts as an intermediate cache, or store, for the media data packets.
  • the media data packets are cached in Capture Buffer 400 of FIG. 11.
  • User System 317 acts, in effect, as Playback System 500 .
  • embodiment 7000 may be implemented in such a manner that network 200 is populated with a plurality of caches (for example, as ISN 250 nodes).
  • ISN 250 shown in FIG. 11 may also be embodied by the analogous portions of embodiments disclosed herein. For example, without limitation, embodiment 3000 shown in FIG.
  • Capture Buffer 400 TSM Rate Determiner 700 , TSM SubSystem 800 , System Clock 5300 , DATSS 5400 , and DDTSS 5500
  • embodiment 5000 shown in FIG. 9 comprising Capture Buffer 400 , TSM Rate Determiner 700 , TSM SubSystem 800 , Input Rate Monitor 6200 , Output Rate Monitor 6300 , and Rate Comparator 6400
  • embodiment 6000 shown in FIG. 10 comprising Capture Buffer 400 , TSM Rate Determiner 700 , TSM SubSystem 800 , System Clock 5300 , SMIM 6600 , and STNBE 6700 ).
  • FIG. 11 shows Capture Buffer 400 , Capture Buffer Monitor 600 , TSM Rate Determiner 700 , and TSM SubSystem 800 of embodiment 7000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined.
  • some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 12 shows a block diagram of embodiment 9000 of the present invention.
  • embodiment 9000 is obtained from embodiment 1000 shown in FIG. 2 by deleting TSM SubSystem 800 from US 300 and replacing Streaming Data Source 100 with Streaming Data Source 110 (Streaming Data Source 110 comprises Streaming Data Generator 120 and TSM SubSystem 810 ).
  • Streaming Data Generator 120 produces, as output, media data representing an audio or audio-visual work in the form of: (a) a stream of data representing portions of an audio or audio-visual work (this is applied as input to TSM SubSystem 810 ) and (b) a stream of location information used to identify the position in the stream of data (this is applied as input to TSM SubSystem 810 ).
  • TSM SubSystem 810 receives, as input: (a) a stream of data representing portions of the audio or audio-visual work (output from Streaming Data Generator 120 ); (b) a stream of location information (output from Streaming Data Generator 120 ) used to identify the position in the stream of data being sent, for example, a sample count or time value; and (c) a rate signal specifying a desired TSM rate, or playback rate (output from TSM Rate Determiner 700 ).
  • the TSM rate output from TSM Rate Determiner 700 in US 310 is transmitted over network 200 , and is applied as input to TSM SubSystem 810 .
  • TSM SubSystem 810 modifies the input stream of data in accordance with well known TSM methods to produce, as output, a stream of data that represents a Time-Scale Modified signal, and transmits the data to US 310 over network 200 . It should be understood that if the data received by TSM SubSystem 810 is encoded, the data may be processed in encoded format, or may be decoded before processing and then re-encoded after processing. The remainder of embodiment 9000 operates in the same manner described above for embodiment 1000 except that Capture Buffer 400 outputs the data and position directly to Playback System 500 .
  • US 310 shown in FIG. 12 may also be embodied by the analogous portions of embodiments disclosed herein.
  • embodiment 3000 shown in FIG. 7 comprising: Capture Buffer 400 , TSM Rate Determiner 700 , System Clock 5300 , DATSS 5400 , and DDTSS 5500
  • embodiment 5000 shown in FIG. 9 comprising Capture Buffer 400 , TSM Rate Determiner 700 , Input Rate Monitor 6200 , Output Rate Monitor 6300 , and Rate Comparator 6400
  • embodiment 6000 shown in FIG. 10 comprising Capture Buffer 400 , TSM Rate Determiner 700 , System Clock 5300 , SMIM 6600 , and STNBE 6700 ).
  • embodiment 9000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art.
  • the user generated rate requests are applied as input to TSM Rate Determiner 700 .
  • These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • FIG. 12 shows Capture Buffer 400 , Playback System 500 , Capture Buffer Monitor 600 , TSM Rate Determiner 700 , and User Interface 900 of User System 310 of embodiment 9000 as being embodied as separate modules, and Streaming Data Generator 120 and TSM SubSystem 810 of Streaming Data Source 110 of embodiment 9000 as being separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 13 shows a block diagram of embodiment 10000 of the present invention.
  • embodiment 10000 is obtained from embodiment 1000 shown in FIG. 2 by: (a) replacing Streaming Data Source 100 with Streaming Data Source 180 (Streaming Data Source 180 comprises Streaming Data Generator 170 and TSM “Encoder” SubSystem (TES) 175 ) and (b) replacing TSM SubSystem 800 with TSM “Decoder” SubSystem (TDS) 835 .
  • Streaming Data Source 180 comprises Streaming Data Generator 170 and TSM “Encoder” SubSystem (TES) 175
  • TSM SubSystem 800 TSM “Decoder” SubSystem
  • Streaming Data Generator 170 produces, as output, media data representing an audio or audio-visual work in the form of: (a) a stream of data representing portions of an audio or audio-visual work (this is applied as input to TES 175 ) and (b) a stream of location information used to identify the position in the stream of data (this is applied as input to TES 175 ).
  • TES 175 receives, as input: (a) a stream of data representing portions of the audio or audio-visual work (output from Streaming Data Generator 170 ); (b) a stream of location information (output from Streaming Data Generator 170 ) used to identify the position in the stream of data being sent, for example, a sample count or time value; and (c) a rate signal specifying the desired TSM rate, or playback rate (output from TSM Rate Determiner 700 ).
  • TSM Rate Determiner 700 in US 300 produces rate information, as output.
  • TSM Rate Determiner 700 transmits: (a) first playback rate information to TES 175 over network 200 and (b) second playback rate information to TDS 835 .
  • TES 175 modifies the input stream in accordance with well known TSM methods to produce, as output, a stream of data that represents a Time-Scale Modified signal, and transmits the data to US 300 over network 200 .
  • Capture Buffer 400 operates in the same manner as in embodiment 1000 in FIG. 2.
  • TDS 835 receives, as input: (a) a stream of data representing portions of an audio or audio-visual work (from Capture Buffer 400 ); (b) a stream of location information used to identify the position in the stream of data (from Capture Buffer 400 ); and (c) rate information (from TSM Rate Determiner 700 ).
  • TES 175 and TDS 835 differ from TSM SubSystem 800 of embodiment 1000 described above only in the playback rates input thereto from TSM Rate Determiner 700 .
  • TSM Rate Determiner 700 determines that a faster-than-real-time playback rate is needed to deplete data in Capture Buffer 400 (i.e., rate>1.0), it sends that playback rate to TES 175 and sends a playback rate of 1.0 to TDS 835 . Consequently, whenever TSM Rate Determiner 700 determines that a slower-than-real-time playback rate is needed to slow down data depletion in Capture Buffer 400 (i.e., rate ⁇ 1.0), it sends a playback rate of 1.0 to TES 175 , and sends the desired playback rate to TDS 835 .
  • TSM Rate Determiner 700 sends rate information to TES 175 instructing it to speed up playback of a media signal whenever that media signal is to be played faster than its original recording rate.
  • TSM Rate Determiner 700 sends rate information to TDS 835 instructing it to slow down playback of a media signal whenever that media signal is to be played back slower than its original recording rate.
  • embodiment 10000 has the advantage of conserving network bandwidth.
  • embodiment 10000 effectively implements a variable-rate data encoding system which utilizes different rates for TES 175 and TDS 835 .
  • embodiment 10000 can compensate for the reduced bandwidth by setting appropriate values for R TES and R TDS .
  • the short-term bandwidth of network 200 can be determined using, for example, Input Rate Monitor 6200 described above in junction with the description of embodiment 5000 shown in FIG. 9.
  • values for R TES and R TDS are chosen algorithmically, typically based on a “rules based” system. For example, a simple rule might be to chose R TES to be the lowest rate that network 200 will support, but not less that 1.0, and to choose R TDS such that eqn. (14) is satisfied.
  • embodiment 10000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art.
  • the user generated rate requests are applied as input to TSM Rate Determiner 700 .
  • These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • FIG. 13 shows Capture Buffer 400 , Playback System 500 , Capture Buffer Monitor 600 , TSM Rate Determiner 700 , TSM Decoder SubSystem 835 , and User Interface 900 of embodiment 10000 as being embodied as separate modules, and Streaming Data Generator 170 and TSM “Encoder” SubSystem 175 of Streaming Data Source 180 of embodiment 10000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • inventive technique for providing substantially continuous playback may be combined with any number of apparatus which provide time-scale modification and may be combined with or share components with such systems.
  • the present invention may also be advantageously employed to compensate for delays, either random or deterministic, arising from any other cause, including without limitation attempts by network 2200 or media broadcast server 2100 to limit or regulate the short-term or long-term bandwidth or rate of delivery of data to recipients 2300 .
  • attempts by network 2200 or media broadcast server 2100 to limit or regulate the short-term or long-term bandwidth or rate of delivery of data to recipients 2300 .
  • one situation in which such attempts to regulate the rate of delivery of data may arise is when recipient 2300 incorporates a User Interface 900 , a TSM SubSystem 800 , and a TSM Rate Determiner 700 , and the user has requested that media data be played back at a rate faster than real time.
  • the alternative embodiment shown in FIG. 13 may be particularly advantageous in such circumstances, in that it is capable of maintaining a data transmission bit-rate which corresponds to real-time playback, even for actual media playback rates that are faster than real-time.
  • Embodiments of the present invention are advantageous in enabling a single-broadcast system utilizing a broadcast server to provide a single broadcast across one or more non-deterministic delay networks to multiple recipients, for example across the Internet and/or other networks such as Local Area Networks (LANs) and Wide Area Networks (WANs).
  • LANs Local Area Networks
  • WANs Wide Area Networks
  • the path to each recipient varies.
  • the path to each recipient may dynamically change based on loading, congestion and other factors. Therefore, the amount of delay associated with the transmission of each data packet that has been sent by the broadcast server varies.
  • each recipient has to notify the broadcast server of its readiness to receive more data, thereby forcing the broadcast server to serve multiple requests to provide a steady stream of data at the recipients' data ports.
  • embodiments of the present invention enable the broadcast server to send out a steady stream of information, and the recipients of the intermittently arriving data to adjust the playback rate of the data to accommodate the non-uniform arrival rates.
  • each of the recipients can accommodate the arrival rates independently.
  • the playback system determines that there is a data mismatch because it determines a diminution in the arrival of data for playback or subsequent distribution.
  • the playback system sends this information to the TSM Rate Determiner to develop an acceptable playback rate.
  • the playback rate may be reduced by a predetermined amount based on an input parameter or in accordance with any one of a number of algorithms that may be developed by those of ordinary skill in the art.
  • the media source for example, a server
  • This mode was referred to above as the “Rate Determined by Data Arrival” mode.
  • the data arrival rate is not the only metric which can be utilized to determine presentation or playback rate. As described above other system metrics, such as CPU availability, may also be used.
  • some embodiments of the present invention described above relate to presentation systems wherein a determination is made of maximum and minimum presentation rates that are allowable to provide continuous and uninterrupted playback of media existing locally on a storage device or transmitted from a remote storage device via a communication medium.
  • the maximum and minimum presentation rates may be used with other information to prevent users of a variable rate presentation system from specifying presentation rates (playback rates) that are outside ranges of rates for continuous and uninterrupted playback.
  • This mode was referred to above as the “Rate Restricted by Data Arrival” mode. It should be understood that the data arrival rate is not the only metric which can be utilized to determine presentation or playback rate. As described above other system metrics, such as CPU availability, may also be used to prevent interruptions in playback.
  • User Interface 900 may comprise a graphical interface which provides a graphical presentation of Current Playback Rate (CPR), Requested Playback Rate (RPR), Current Maximum Sustainable Rate (CmaxSR), Current Minimum Sustainable Rate (CminSR). These are displayed graphically to the user in FIG. 14 as CPR 910 , RPR 920 , CminSR 930 , and CmaxSR 940 . It should be understood that the graphical interface described may also be presented to users operating in the “Rate Determined by Data Arrival” mode.
  • CPR Current Playback Rate
  • RPR Requested Playback Rate
  • CmaxSR Current Maximum Sustainable Rate
  • CminSR Current Minimum Sustainable Rate
  • User Interface 900 may also provide various indicators which enable the user to specify: (a) whether a “Rate Restricted by Data Arrival” mode is to be utilized; and (b) whether to display CPR; (c) whether to display RPR; (d) whether to display CmaxSR; and (e) whether to display CminSR.
  • FIG. 15 One example of a graphical interface that enables users to make these specifications is shown in FIG. 15. As shown in FIG. 15.
  • Speed LimitTM Enable check-box 906 is used to specify whether a “Rate Restricted by Data Arrival” mode is to be utilized; CPR Display Enable check-box 911 is used to specify whether to display CPR 910 ; RPR Display Enable check-box 921 is used to specify whether to display RPR 920 ; CmaxSR Display Enable check-box 931 is used to specify whether to display CmaxSR 930 ; and CminSR Display Enable check-box 941 is used to specify whether to display CminSR 940 .
  • FIGS. 15 - 18 show graphical interfaces wherein the display functionality is set using “check boxes,” the present invention is not thusly limited, and any manner of enabling or disabling such features which are well known to those of ordinary skill in the art may be employed.
  • the user can understand the limits of the system because the graphical interface displays CmaxSR which is the fastest playback rate that can be maintained for data obtained from a given source (whether the source is local or remote); and CminSR which is the slowest playback rate that can be maintained, for data obtained from a given source (whether the source is local or remote).
  • CmaxSR and CminSR may vary with time, and, as a result, they provide a dynamic metric which indicates presentation or playback rates that can be used at any particular time without draining or overflowing Capture Buffer 400 of input data in the various embodiments set forth in detail above.
  • the graphical interface indicates the most recently user-requested presentation rate, RPR 920 , and the current presentation rate, CPR 910 .
  • RPR 920 and CPR 910 are both indicated by a location on a single slider. When the user can see distinguishable indications of CPR 910 and RPR 920 on the single slider, CPR 910 and RPR 920 are not equal.
  • the current playback speed (CPR 910 ) will transition to the requested playback rate (RPR 920 ) over a time interval unless RPR is outside a range defined by CminSR to CmaxSR.
  • CPR 910 and RPR 920 are differentiated from one another by using different icons, or identical icons with different transparency, or color intensity, for example, see FIG. 14.
  • the graphical interface could use a cursor or a position indicator on a slider to indicate CPR 910 and RPR 920
  • the present invention is not thusly limited, and any number of methods that are well known to those of ordinary skill in the art may be used to provide a graphical interface to display and distinguish CPR and RPR.
  • the values of CPR 910 and RPR 920 may be indicated by numbers or an indication, for example, in the form of an icon, that appears on an axis.
  • the user requests a new playback, or presentation, rate by moving RPR to a new value using, for example, a mouse positioned over RPR 920 on the slider shown, for example, in the displays produced by various embodiments shown in FIGS. 14 - 18 .
  • the user receives feedback regarding the request via a change, for example, in appearance and/or location, of RPR 920 .
  • the graphical interface will update the display so that as CPR moves toward RPR, CPR 910 moves toward RPR 920 until both CPR 910 and RPR 920 are at substantially the same value, if this is possible.
  • This display will be seen, providing CPR Display Enable check-box 911 and RPR Display Enable check-box 921 are checked, see the displays produced by various embodiments shown in FIGS. 15 and 17- 18 .
  • CPR 910 will remain within bounds set by the value of CmaxSR 930 . If, however, the value of CmaxSR 930 changes, either higher or lower, then CPR 910 will adjust accordingly so that it remains just slightly below the value of CmaxSR 930 , but does not exceed CmaxSR 930 or RPR 920 .
  • this causes the presentation system to perform the maximum playback rate increase allowable without draining Capture Buffer 400 , and to respond to the user's request with rate changes that prevent underflow in Capture Buffer 400 .
  • the user requests a playback rate that is slower than CminSR 940 : (a) the graphical interface will place RPR 920 at the user-requested rate on the slider, and (b) the graphical interface will indicate changes in CPR by moving CPR 910 as the values of CPR change.
  • CPR 910 will remain within bounds set by the value of CminSR 940 . If, however, the value of CminSR 940 changes, either higher or lower, then CPR 910 will adjust accordingly so that it remains just slightly above the value of CminSR 940 , but does not fall below CminSR 940 or RPR 920 .
  • the graphical interface displays CmaxSR 930 and CminSR 940 as a boundary between colored regions within the range of the slider.
  • the boundaries between the red and yellow regions and the yellow and red regions, respectively, indicate values of CminSR 940 and CmaxSR 930 , respectively.
  • CPR 910 is displayed using a solid “sliding indicator” while RPR 920 is displayed using a hollow “sliding indicator”.
  • inventive graphical interface is not limited to this particular choice for displaying the values of CPR, RPR, CminSR, and CmaxSR, and that any one of a number of display choices are considered to be within the scope of the present invention, for example, and without limitation, using a solid “sliding indicator” for RPR and a hollow “sliding indicator” for CPR.
  • Other examples include using a “diamond” or other icon to display CPR and a solid “sliding indicator” to display RPR.
  • RPR is displayed using a solid “sliding indicator” and a colored line that fills in the “slider track” from the left side to the value of CPR 910 (in the same manner that the mercury of a thermometer indicates temperature) is used to display CPR 910 .
  • a green line is used to display playback rates that can be sustained without draining or overflowing Capture Buffer 400
  • a yellow line is used to display playback rates that may not be able to be thusly sustained under all circumstances
  • a red line is used to display playback rates that will cause underflow or overflow conditions in Capture Buffer 400 .
  • CPR is displayed using a “thermometer-like” display and RPR is displayed using an indicator on a slider.
  • FIGS. 15 - 18 show displays which indicate that a user has requested that all information be displayed by having checked all check-boxes to the “on” position.
  • FIG. 16 shows a display which indicates that the user has opted not to display CPR, CmaxSR, and CminSR.
  • FIG. 17 shows a display which indicates that the user has opted not to display CmaxSR and CminSR.
  • the keys “s” and “f” may be used to request slower and faster playback rates respectively, and in response to these keys being pressed the system may employ text to speech or pre-recorded utterances to announce the values of RPR, CPR, CmaxSR, and CminSR.
  • text to speech or pre-recorded utterances to announce the values of RPR, CPR, CmaxSR, and CminSR.
  • Internet any non-deterministic delay network.
  • embodiments of the present invention include and relate to the world wide web, the Internet, intranets, local area networks (“LANs”), wide area networks (“WANs”), combinations of these transmission media, equivalents of these transmission media, and so forth.
  • LANs local area networks
  • WANs wide area networks
  • embodiments of the present invention may be included as parts of search engines used to access streaming media such as, for example, audio or audio-visual works over the Internet.
  • embodiments of the present invention were described wherein the audio or audio-visual works were applied as input to playback systems, the present invention is not limited to the use of a playback system. It is within the spirit of the present invention that embodiments of the present invention include embodiments wherein the playback system is replaced by a distribution system, which distribution system is any device that can receive digital audio or audio-visual works and re-distribute them to one or more other systems that replay or re-distribute audio or audio-visual works. In such embodiments, the playback system is replaced by any one of a number of distribution applications and systems which are well known to those of ordinary skill in the art that further distribute the audio or audio-visual work. It should be understood that the devices that ultimately receive the re-distributed data can be “dumb” devices that lack the ability to perform Time-Scale modification or “smart” devices that can perform Time-Scale modification.
  • embodiments of the present invention have been described using data input from a streaming media source, the present invention is not limited to such embodiments.
  • embodiments of the present invention may be used for data arriving from any source, local or remote, streamed or delivered in bulk. Further it should be understood that embodiments of the present invention relate to management of the flow of data from any source.
  • embodiments of the present invention have been described as relating to presentation or playback systems, the present invention is not limited to such embodiments.
  • embodiments of the present invention relate to methods and apparatus for preparing media or data representing audio and audio/visual media for presentation or playback.

Abstract

One embodiment of the present invention is a client apparatus for preparing streaming media received over a non-deterministic delay network for playback or distribution which includes: (a) a buffer which stores data corresponding to the streaming media; (b) a time-scale modification system that time-scale modifies data output from the buffer at a time-scale modification playback rate; (c) a rate determiner that determines the time-scale modification playback rate over an interval to control an amount of data in the buffer; and (d) a user interface which receives a user requested time-scale modification playback rate.

Description

  • This is a continuation of a patent application entitled “Method and Apparatus for Continuous Playback of Media” having Ser. No. 09/519,487 which was filed on Mar. 6, 2000, which patent application was a continuation-in-part of a patent application entitled “Method and Apparatus for Continuous Playback of Streaming Media” having Ser. No. 09/304,761 which was filed on May 4, 1999.[0001]
  • TECHNICAL FIELD OF THE INVENTION
  • The present invention pertains to the field of playback of media such as audio and audio-visual works which are retrieved from sources having non-deterministic delays such as, for example, a server such as a file server or a streaming media server, broadcasting data via the Internet. In particular, the present invention pertains to method and apparatus for providing playback of an audio or audio-visual work received from sources having non-deterministic delays. In further particular, the present invention pertains to method and apparatus for providing continuous playback of media from sources having non-deterministic delays such as, for example, a server such as a file server or a streaming media server, broadcasting data via the Internet, an Intranet, or the like. [0002]
  • BACKGROUND OF THE INVENTION
  • Many digitally encoded audio and audio-visual works are stored as data on servers such as file servers or streaming media servers that are accessible via the Internet for users to download. FIG. 1 shows, in schematic form, how such audio or audio-visual works are distributed over the Internet. As shown in FIG. 1, [0003] media broadcast server 2000 accesses data representing the audio or audio-visual work from storage medium 2100 and broadcasts the data to multiple recipients 2300 1 to 2300 n across non-deterministic delay network 2200. In the system shown in FIG. 1, there are two main sources of random delay: (a) delay due to the broadcast server's accessing storage medium 2100 and (b) delay due to the congestion, interference, and other delay mechanisms within network 2200. In more complex systems, delays can also arise from decoders, multicasting CPU time-slices, and other concurrently operating software components.
  • One well known technique for providing playback of the audio or audio-visual work is referred to as batch playback. Batch playback entails downloading an entire work and initiating playback after the entire work has been received. Another well known technique for providing playback of the audio or audio-visual work is referred to as “streaming.” Streaming entails downloading data which represents the audio or audio-visual work and initiating playback before the entire work has been received. [0004]
  • There are several disadvantages inherent in both of these techniques. A prime disadvantage of batch playback is that the viewer/listener must wait for the entire work to be downloaded before any portion of the work may be played. This can be tedious since the viewer/listener may wait a long time for the transmission to occur, only to discover that the work is of little or no interest soon after playback is initiated. The streaming technique alleviates this disadvantage of batch playback by initiating playback before the entire work has been received. However, a disadvantage of streaming is that playback is often interrupted when the flow of data is interrupted due to network traffic, congestion, transmission errors, and the like. These interruptions are tedious and annoying since they occur randomly and have a random duration. In addition, intermittent interruptions often cause the context of the playback stream to be lost as a user waits for playback to be resumed when new data is received. [0005]
  • As one can readily appreciate from the above, a need exists in the art for a method and apparatus for providing substantially continuous playback of media such as audio and audio-visual works received from sources having non-deterministic delays such as a server, for example, a file server or a streaming media server, broadcasting data via the Internet. [0006]
  • SUMMARY OF THE INVENTION
  • One or more embodiments of the present invention advantageously satisfy one or more of the above-identified needs in the art. In particular, one embodiment of the present invention is a client apparatus for preparing streaming media received over a non-deterministic delay network for playback or distribution which comprises: (a) a buffer which stores data corresponding to the streaming media; (b) a time-scale modification system that time-scale modifies data output from the buffer at a time-scale modification playback rate; (c) a rate determiner that determines the time-scale modification playback rate over an interval to control an amount of data in the buffer; and (d) a user interface which receives a user requested time-scale modification playback rate. [0007]
  • BRIEF DESCRIPTION OF THE DRAWING
  • FIG. 1 shows, in schematic form, how audio or audio-visual works are broadcast from a server, for example, a file server or a streaming media server, to recipients over a communication medium, such as, for example, a network such as the Internet; [0008]
  • FIG. 2 shows a block diagram of an embodiment of the present invention which provides substantially continuous playback of an audio or audio-visual work received from a source having non-deterministic delays such as a server, for example, a file server or a streaming media server, broadcasting data via a communication medium, such as, for example, a network such as the Internet; [0009]
  • FIG. 3 shows, in pictorial form, low and high thresholds used in one embodiment of [0010] Capture Buffer 400 in the embodiment of the present invention shown in FIG. 2;
  • FIG. 4. shows a graph of playback rate versus the amount of data in [0011] Capture Buffer 400 in the embodiment of the present invention shown in FIG. 2;
  • FIG. 5. shows, in graphical form, relative amounts of data at an input and an output of [0012] TSM Subsystem 800 in the embodiment of the present invention shown in FIG. 2 during time-scale expansion, i.e., slow down of the playback-rate of the streaming media;
  • FIG. 6. shows, in graphical form, relative amounts of data at an input and an output of [0013] TSM Subsystem 800 in the embodiment of the present invention shown in FIG. 2 during time-scale compression, i.e., speed up of the playback rate of the streaming media;
  • FIGS. [0014] 7-13 show block diagrams of alternative embodiments of the present invention; and
  • FIGS. [0015] 14-18 show displays produced by various embodiments of a graphical interface used to fabricate at least some embodiments of the present invention.
  • DETAILED DESCRIPTION
  • FIG. 2 shows a block diagram of [0016] embodiment 1000 of the present invention which provides substantially continuous playback of an audio or audio-visual work received from a source having non-deterministic delays such as a server, for example, a file server or a streaming media server, broadcasting via the Internet. As shown in FIG. 2, Streaming Data Source 100 provides media data representing an audio or audio-visual work through network 200 to User System 300 (US 300), which media data is received at a non-deterministic rate by US 300. Capture Buffer 400 in US 300 receives the media data as input. In a preferred embodiment of the present invention, Capture Buffer 400 is a FIFO (First In First Out) buffer existing, for example, in a general purpose memory store. It should be understood that Capture Buffer 400 may also be implemented using pointers and conventional system memory, circular buffers, and any one of a number of apparatus and methods that are well known to those of ordinary skill in the art.
  • In the absence of delays in data arrival at US [0017] 300 from network 200, the amount of data in Capture Buffer 400 ought to remain substantially constant as the data transfer rate is typically chosen to be substantially equal to the playback rate. However, as is well known to those of ordinary skill in the art, pauses and delays in transmission of the media data through network 200 to Capture Buffer 400 cause data depletion therein since data is simultaneously being output (for example, at a constant rate) from Capture Buffer 400 to satisfy data requirements of Playback System 500. As is well known, if the media data transmitted to US 300 is delayed long enough, a sufficient amount of data in Capture Buffer 400 will be consumed so that Playback System 500 must pause until enough media data has arrived to enable resumption of playback. Thus, a typical playback system must constantly check for arrival of new data while the playback system is paused, and it must initiate playback once new data is received.
  • In accordance with the present invention, data input to [0018] Capture Buffer 400 of US 300 is buffered for a predetermined amount of time which typically varies, for example, from one (1) second to several seconds. Then, Time-Scale Modification (TSM) methods are used to slow the playback rate of the audio or audio-visual work to substantially match a data drain rate required by Playback System 500 with a streaming data rate of the arriving data representing the audio or audio-visual work. As is well known to those of ordinary skill in the art, presently known methods for Time-Scale Modification (“TSM”) enable digitally recorded audio to be modified so that a perceived articulation rate of spoken passages, i.e., a speaking rate, can be modified dynamically during playback. During Time-Scale expansion, TSM Subsystem 800 requires less input data to generate a fixed interval of output data. Thus, in accordance with the present invention, if a delay occurs during transmission of the audio or audio-visual work from network 200 to US 300 (of course, it should be clear that such delays may result from any number of causes such as delays in accessing data from a storage device, delays in transmission of the data from a media server, delays in transmission through network 200, delays waiting for CPU resources on software implementations, and so forth), the playback rate is automatically slowed to reduce the amount of data drained from Capture Buffer 400 per unit time. As a result, and in accordance with the present invention, more time is provided for data to arrive at US 300 before the data in Capture Buffer 400 is exhausted. Advantageously, this delays the onset of data depletion in Capture Buffer 400 which would cause Playback System 500 to pause.
  • As shown in FIG. 2, [0019] Capture Buffer 400 receives the following as input: (a) media data input from network 200; (b) requests for information about the amount of data stored therein from Capture Buffer Monitor 600; and (c) media stream data requests from TSM Subsystem 800. In response, Capture Buffer 400 produces the following as output: (a) a stream of data representing portions of an audio or audio-visual work (this is output to TSM Subsystem 800); (b) a stream of location information used to identify the position in the stream of data (this is output to TSM Subsystem 800); and (c) the amount of data stored therein (this is output to Capture Buffer Monitor 600). It should be well known to those of ordinary skill in the art that Capture Buffer 400 may include a digital storage device. There are many methods well known to those of ordinary skill in the art for utilizing digital storage devices, for example a “hard disk drive,” to store and retrieve general purpose data. There exist many commercially available apparatus which are well known to those of ordinary skill in the art for use as a digital storage device such as, for example, a CD-ROM, a digital tape, a magnetic disc.
  • It should be understood that the data in [0020] Capture Buffer 400 may be comprised of samples of a signal which are usable by TSM SubSystem 800, or alternatively, the data in Capture Buffer 400 may be comprised of an encoded representation which, when decoded, provides samples of a signal that are usable by TSM SubSystem 800. As one can readily appreciate, a decoder utilized to decode encoded representations of signals can be disposed within Capture Buffer 400, or it can be disposed in any logical location between Capture Buffer 400 and TSM SubSystem 800. There are numerous apparatus and methods that are well-known to those of ordinary skill in the art for implementing such a decoder, which decoder is not shown in the figures for ease of understanding the present invention.
  • Capture [0021] Buffer Monitor 600 receives, as input, information representing (or that can be used to determine) the amount of data in Capture Buffer 400. Capture Buffer Monitor 600 produces, as output: (a) data requests to Capture Buffer 400; and (b) information representing (or that can be used to determine) the amount of data in Capture Buffer 400, which information is output to TSM Rate Determiner 700. Capture Buffer Monitor 600 utilizes any one of a number of methods that are well known to those of ordinary skill in the art to obtain the information representing (or that can be used to determine) the amount of data in Capture Buffer 400. For example, and without limitation, Capture Buffer Monitor 600 may periodically poll Capture Buffer 400 to determine the amount of data in the buffer; Capture Buffer Monitor 600 may monitor the arrival and departure of data from Capture Buffer 400; and Capture Buffer Monitor 600 may compute data arrival and departure rates from Capture Buffer 400.
  • As further shown in FIG. 2, and in accordance with the present invention, [0022] TSM Rate Determiner 700 receives the following as input: (a) a signal (from Capture Buffer Monitor 600) that represents the amount of data present in Capture Buffer 400 and possibly a data arrival rate for Capture Buffer 400; (b) a signal (output, for example, from Playback System 500 or from another module of US 300 such as TSM SubSystem 800) that represents a current data consumption rate of Playback System 500; and (c) a number of parameters (to be described below), which parameters may optionally be supplied by User Interface 900. In some embodiments of the present invention, the signal that represents the current data consumption rate may not be necessary since TSM Rate Determiner 700 can calculate the data consumption rate because it is generating the playback rate used by TSM SubSystem 800. One or more of the following parameters are input to TSM Rate Determiner 700: (a) a low threshold value parameter (TL which is described in detail below) for the amount of data in Capture Buffer 400; (b) a high threshold value parameter (TH which is described in detail below) for the amount of data in Capture Buffer 400; (c) a scale parameter (Scale which is described in detail below) which is used to adjust the playback rate; (d) a parameter designated Interval_Size; and (d) a parameter designated Speed_Change_Resolution. These parameters may be input in any one of a number of methods that are well known to those of ordinary skill in the art. For example, they may be set as predetermined parameters for embodiment 1000 in accordance with methods which are well known to those of ordinary skill in the art, i.e., system constants which are loaded when the system is initialized, they can be entered and/or viewed and varied by receiving user input through a user interface, for example User Interface 900, in accordance with methods which are well known to those of ordinary skill in the art, and so forth. However, the manner in which these parameters are set and/or varied are not shown for ease of understanding the present invention.
  • In response to the input, [0023] TSM Rate Determiner 700 produces, as output, a rate signal representing a TSM rate, or playback rate, which can help better balance the data consumption rate of Playback System 500 with an arrival rate of data at Capture Buffer 400.
  • It should be understood that some embodiments of the present invention can operate in numerous modes. For example, one embodiment of the present invention may operate in a mode that attempts to balance a data consumption rate with a data arrival rate. In this mode, the embodiment utilizes changes in playback rate to alter the data consumption rate, and as a result, the playback rate of material presented by the embodiment is determined by the data delivery rate of information from the source, for example, a media server. For convenience, this mode is referred to as “Rate Determined by Data Arrival” mode. In another mode, an embodiment of the present invention: (a) monitors various system conditions and user input playback presentation rate requests; (b) computes or infers data arrival and departure rates; and (c) intervenes whenever a user request would cause data underflow or overflow in [0024] Capture Buffer 400 or a disruption in playback. For convenience, this mode is referred to as “Rate Restricted by Data Arrival” mode.
  • In some embodiments, the playback rate will be altered in a continuous, for example, slowly varying, fashion. For example, in some embodiments, buffers of time-scale modified output may be queued for playback in [0025] Playback System 500. In this case, the queued data may not be modified when a user requests a change in playback rate. As a result, whenever a user requests a change in playback rate, there may be a delay between the time the request is made and the time the change in playback rate is effected. This is because, in these embodiments, although time-scale modification may begin immediately for data sent to Playback System 500 after the request for a change in playback rate was received, there may be a delay until data processed with the previous rate (and buffered for output) has been played back. For this reason, such embodiments may appear to be a bit sluggish. To mitigate this perception, in accordance with one aspect of such embodiments, feedback is provided to the user to indicate a Current Playback Rate (CPR) and a Requested Playback Rate (RPR). CPR and RPR show the user that a newly requested playback rate has been received and that the embodiment is initiating a response. Advantageously, such feedback mitigates a tendency the user might have to “overcorrect” in an effort to elicit a salient response from any embodiment in which it is utilized. In a preferred embodiment of this aspect of the present invention, the playback rate of each buffer of data available to Playback System 500 is associated with the buffer (this can be done by TSM SubSystem 800 or by other components of User System 300). Thus, when such buffers are presented (or are expected to be presented), User Interface 900 is provided an indication of the event of presentation of the buffer to the user (or expected event of presentation of the buffer to the user). In addition, User Interface 900 is presented the playback rate for the associated buffer or information that can be used to obtain the playback rate. For example, Playback System 500 may report the playback rate associated with each buffer as the buffer is played back. Alternatively, Playback System 500 may report the event of presentation of each buffer, and User Interface 900 or TSM Rate Determiner 700 may access a table which contains playback rates for each buffer that was dispatched to Playback System 500. This playback rate information is used to determine CPR and report it to the user, if desired. For example, in one embodiment, CPR is determined to be the playback rate of the most recent buffer played back. In other embodiments, CPR may be computed using any of several mathematical functions, for example, a mathematical average, of multiple values of playback rates of a predetermined number of the buffers played. Furthermore, in accordance with some embodiments that display RPR and CPR, the user receives confirmation of his/her request and is able to observe the embodiment's response. In operation, CPR will follow or chase RPR as the embodiment responds to user playback rate requests. As discussed above, such feedback may be useful to avoid overcorrections by users when the embodiment's response to user requests appears sluggish.
  • In a preferred embodiment of the present invention, [0026] TSM Rate Determiner 700 uses the parameter Interval_Size to segment the input digital data stream in Capture Buffer 400 and to determine a single TSM rate for each segment of the input digital stream. Note the length of each segment is given by the value of the Interval_Size parameter. Further, TSM Rate Determiner 700 uses the parameter Speed_Change_Resolution to determine appropriate TSM rates to pass to TSM SubSystem 800. A desired TSM rate is converted to one of the quantized levels in a manner which is well known to those of ordinary skill in the art. This means that the TSM rate, or playback rate, can change only if the desired TSM rate changes by an amount that exceeds the difference between quantized levels, i.e., Speed_Change_Resolution. As a practical matter then, parameter Speed_Change_Resolution filters small changes in TSM rate, or playback rate.
  • In another embodiment of [0027] TSM Rate Determiner 700, it determines a maximum playback rate that can be used (over a given reporting time interval (rti)) without draining Capture Buffer 400 so much that playback would have to pause to wait for more data to arrive. This maximum playback rate is referred to as the current maximum sustainable playback rate (CmaxSR), and its value represents a scale factor applied to a normal playback rate, i.e., a playback rate with no time-scale modification. In accordance with the present invention, CmaxSR is given as follows: C max S R r t i = ( I R ) + ( D R * r t i )
    Figure US20040064576A1-20040401-M00001
  • where: [0028]
  • I=arrival rate of incoming data (samples/sec) [0029]
  • R=sampling rate or consumption rate during playback at normal rate. [0030]
  • D=amount of data present in Capture Buffer [0031]
  • rti=time interval over which a playback rate is to be sustained [0032]
  • For example, if [0033] Capture Buffer 400 contains 32,000 data samples of a signal sampled at a rate of 8,000 data samples per second, and one wishes to compute the maximum sustainable playback rate over a 2 second interval when data is arriving at 8,800 samples per second, then we have: C max S R 2 seconds = ( I R ) + ( D R * r t i ) = ( 8800 8000 ) + ( 32 , 000 8000 * 2 ) = 3.1
    Figure US20040064576A1-20040401-M00002
  • Note that for the same initial conditions and input arrival rate, CmaxSR over a 4-second interval would be: [0034] C max S R 4 seconds = ( I R ) + ( D R * r t i ) = ( 8800 8000 ) + ( 32 , 000 8000 * 4 ) = 2.1
    Figure US20040064576A1-20040401-M00003
  • Note further that for the same initial conditions and input arrival rate, CmaxSR over a 1-second interval would be: [0035] C max S R 1 second = ( I R ) + ( D R * r t i ) = ( 8800 8000 ) + ( 32 , 000 8000 * 1 ) = 5.1
    Figure US20040064576A1-20040401-M00004
  • This means that the maximum sustainable playback rate over one, two, and four second intervals are 5.1, 3.1, and 2.1 respectively. As a result, one can readily appreciate that CmaxSR is a function of: (a) the arrival rate of incoming data; (b) the sampling rate or consumption rate during playback at normal rate; (c) the amount of data in the Capture Buffer; and (d) the time interval over which a playback rate is to be sustained. It should be understood that for ease of understanding this aspect of the present invention, the description above used samples per second to represent I and R. However, the present invention is not limited to such a representation, for example, embodiments of the present invention include the use of any representation of data per unit time, for example, data packets containing a compressed representation of a specific duration of audio or audio/video signals. [0036]
  • In a manner similar that described above with respect to a maximum sustainable playback rate, some embodiments of the present invention determine a minimum sustainable playback rate that can be used (over a given reporting time interval (rti)) without causing [0037] Capture Buffer 400 to overflow with arriving data. CminSR is given as follows: C min S R r t i = ( I R ) - ( D R * r t i )
    Figure US20040064576A1-20040401-M00005
  • where: [0038]
  • I=arrival rate of incoming data (samples/sec) [0039]
  • R=sampling rate or consumption rate during playback at normal rate [0040]
  • C=capacity present in Capture Buffer (amount of free space) [0041]
  • rti=time interval over which a playback rate must be sustained [0042]
  • Thus if [0043] Capture Buffer 400 is capable of holding 64,000 samples of data, and there are 16,000 samples currently in Capture Buffer 400, the normal data consumption rate is 8,000 samples per second, and the reporting time interval is 2 seconds, then: C min S R 2 seconds = ( I R ) - ( C R * c t i ) = ( 7200 8000 ) + ( ( 64 , 000 - 16 , 000 ) 8000 * 2 ) = - 2.1
    Figure US20040064576A1-20040401-M00006
  • It should be noted that CminSR values below zero indicate that playback can be stopped for a duration of rti without overflowing the Capture Buffer. Note that for the same initial conditions and input arrival rate, CminSR over a 10-second interval would be: [0044] C min S R 2 seconds = ( I R ) - ( D R * c t i ) = ( 7200 8000 ) + ( ( 64 , 000 - 16 , 000 ) 8000 * 10 ) = 0.3
    Figure US20040064576A1-20040401-M00007
  • It should be noted that CminSR indicates the minimum playback speed that can be maintained without causing [0045] Capture Buffer 400 to overflow, or sending a message to the data server, requesting that the data server cease sending data.
  • As shown above, CmaxSR and CminSR are functions of the data arrival rate. Further, the data arrival rate may vary over time due to factors such as, without limitation, network latency, transmission errors, and congestion. Thus, CmaxSR(t) and CminSR(t) will vary over time for a given value of t as network delays, data delivery rates, data consumption rates, and consequently the amount of data in the Capture Buffer, change. [0046]
  • It should be noted that I, the input arrival rate may be estimated in any number of ways including, without limitation, comparing time-stamps between arriving data, monitoring of arrival times and data packet sizes, and other methods described below. [0047]
  • As still further shown in FIG. 2, [0048] TSM SubSystem 800 receives as input: (a) a stream of data representing portions of the audio or audio-visual work (output from Capture Buffer 400); (b) a stream of location information (output from Capture Buffer 400) used to identify the position in the stream of data being sent, for example, a sample count or time value; and (c) the rate signal specifying the desired TSM rate, or playback rate (output from TSM Rate Determiner 700).
  • In accordance with the present invention, [0049] TSM SubSystem 800 modifies the input stream of data in accordance with well known TSM methods to produce, as output, a stream of samples that represents a Time-Scale Modified signal. The Time-Scale modified output signal contains more samples per block of input data if Time-Scale Expansion is applied, as shown in FIG. 5. Similarly, if Time-Scale Compression is applied, the output from TSM SubSystem 800 contains fewer samples per block of input data, as shown in FIG. 6. Thus, TSM SubSystem 800 can create more samples than it is given by creating an output stream with a slower playback rate (Time-Scale Expanded). Similarly, TSM SubSystem 800 can create fewer samples than it is given by creating an output stream with a faster playback rate (Time-Scale Compressed). In a preferred embodiment of the present invention, the TSM method used is a method disclosed in U.S. Pat. No. 5,175,769 (the '769 patent), which '769 patent is incorporated by reference herein, one of the inventors of the present invention also being a joint inventor of the '769 patent. Thus, the output from TSM SubSystem 800 is a stream of samples representing portions of the audio or audio-visual work, which output is applied as input to Playback System 500. Playback System 500 plays back the data output from TSM SubSystem 800. There are many methods of implementing Playback System 500 that are well known to those of ordinary skill in the art, for example, as a playback engine.
  • In accordance with the present invention, the stream of digital samples output from [0050] TSM SubSystem 800 has a playback rate, supplied from TSM Rate Determiner 700, that provides a balance of the data consumption rate of TSM SubSystem 800 with the arrival rate of data input to US 300. Note that, in accordance with this embodiment of the present invention, the data consumption rate of Playback System 500 is fixed to be identical to the data output rate of TSM SubSystem 800. Thus, when a playback rate representing Time-Scale Expansion is output from TSM Rate Determiner 700 and applied as input to TSM SubSystem 800, the number of data samples required per unit time by TSM SubSystem 800 is reduced in proportion to the amount of Time-Scale Expansion. A reduction in the number of data signals sent to TSM SubSystem 800 slows the data drain-rate from Capture Buffer 400 and, as a result, less data from Capture Buffer 400 is consumed per unit time. This, in turn, increases the amount of playback time before a pause is required due to emptying of Capture Buffer 400.
  • As one of ordinary skill in the art should readily appreciate, although the present invention has been described in terms of slowing down playback, the present invention is not thusly limited and includes embodiments where the playback rate is increased in situations where data arrives in [0051] Capture Buffer 400 at a rate which is faster than the rate at which it would be consumed during playback at a normal rate. In this situation the playback rate is increased and the data is consumed by TSM SubSystem 800 at a faster rate to avoid having Capture Buffer 400 overflow.
  • As one of ordinary skill in the art can readily appreciate, whenever [0052] embodiment 1000 provides playback rate adjustments for an audio-visual work, TSM SubSystem 800 speeds up or slows down visual information to match the audio in the audio-visual work. To do this in a preferred embodiment, the video signal is “Frame-subsampled”, “Frame-replicated”, or displayed with an altered frame-rate in accordance with any one of the many methods known to those of ordinary skill in the prior art to maintain synchronism between the audio and visual portions of the audio-visual work. Thus, if one speeds up the audio and samples are requested at a faster rate, the frame stream is subsampled, i.e. frames are skipped, discarded or merged to maintain a fixed number of frames displayed per unit time, or the frame-rate may be increased, i.e. frames may be rendered to a visual display more frequently. In a similar manner, if one slows down the audio and samples are utilized at a slower rate, the frame stream may be replicated or interpolated to maintain a fixed frame-rate, or the frame-rate may be decreased, i.e. frames may be rendered to a visual display less frequently.
  • As shown in FIG. 2, [0053] embodiment 1000 optionally comprises User Interface 900 for operating in “Rate Restricted by Data Arrival” mode in which User Interface 900 receives user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art. The user generated rate requests are applied as input to TSM Rate Determiner 700. These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback. The term “folded” means that requests from User Interface 900 may be overridden to prevent overflow or underflow of Capture Buffer 400.
  • In accordance with an embodiment of this mode, if a requested playback rate (RPR) received from [0054] User Interface 900 exceeds CmaxSR, the request may be acknowledged by updating a position of RPR displayed in User Interface 900 (to be described in detail below), but the rate output by TSM Rate Determiner 700 to TSM SubSystem 800: (a) may be limited to CmaxSR; or (b) may be determined by using any one of a number of algorithms that give precedence to rates which prevent underflow and overflow of Capture Buffer 400. For example, CmaxSR and equations (2), (3), and (4) set forth below may be used as follows. Whenever a user inputs a new RPR: (a) the new RPR value is compared with CmaxSR; and (b) a playback rate is determined using equations 2, 3, and 4 below. If RPR exceeds the lesser of CmaxSR and the playback rate from these equations, the lesser value is used. Similarly: (a) the new RPR value is compared with CminSR; and (b) a playback rate is determined using equations 2, 3, and 4 below. If RPR is below the higher of CmaxSR and the playback rate from these equations, the higher value is used. Thus, in accordance with this embodiment, the rate output to TSM SubSystem 800 will stay within a range of values designed to prevent overflow and underflow of Capture Buffer 400.
  • Although FIG. 2 shows [0055] Capture Buffer 400, Playback System 500, Capture Buffer Monitor 600, TSM Rate Determiner 700, TSM SubSystem 800, and User Interface 900 of embodiment 1000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • As should be clear to those of ordinary skill in the art, embodiments of the present invention include the use of any one of a number of algorithms for determining the playback rate to help balance the rate of data consumption for playing back the audio or audio-visual works with the rate of data input from [0056] network 200 having non-deterministic delays. In one embodiment of the present invention, the playback rate is determined to vary with the fraction of Capture Buffer 400 that is filled with data. For example, for each 10% decrement of data depletion, the playback rate is reduced by 10% except when the input data contains an “end” signal. It should be clear to those of ordinary skill in the art how to modify this algorithm to achieve any of a number of desired balance conditions. For example, in situations where the duration of a delay can vary drastically, a non-linear relationship may be used to determine the playback rate. One non-linear function that may be used is the inverse tangent function. In this case,
  • Playback Control Parameter=(2*#samples_in_buffer/elements_in_buffer))−1
  • Playback Rate=tanh−1 (Playback Control Parameter)   (1)
  • where: (a) #samples_in_buffer is the number of samples of data in [0057] Capture Buffer 400; (b) elements_in_buffer is the total number of samples of data that can be stored in Capture Buffer 400; and (c) Playback Control Parameter is a parameter that is always greater than or equal to −1 and less than or equal to +1.
  • In a preferred embodiment of the present invention, a low threshold (T[0058] L) value and a high threshold (TH) value are be used to construct a piece-wise graph of playback rate versus amount of data in Capture Buffer 400. FIG. 3 shows, in pictorial form, how TL and TH relate to the amount of data in Capture Buffer 400. These thresholds are used in accordance with to the following set of equations:
  • For 0<=X<=T L Playback Rate=Scale tanh−1((X−T L)/T L)   (2)
  • For T L <X<T H Playback Rate=1.0 (default playback rate)   (3)
  • For T H <=X<=Max Playback Rate=Scale tanh−1((X−T H)/(Max−T H))   (4)
  • where Scale is an arbitrary scale factor. [0059]
  • FIG. 4. shows a graph of playback rate versus amount of data in [0060] Capture Buffer 400 using eqns. (2)-(4). From FIG. 4, one can readily appreciate that for small deviations from an ideal amount of data in Capture Buffer 400 (origin 0 in FIG. 4), changes in the playback rate are linear; however, larger deviations generate a more pronounced non-linear response. Further, changes in the amount of data in Capture Buffer 400 which remain between low threshold level TL and high threshold level TH do not cause any change in playback rate.
  • FIG. 7 shows a block diagram of [0061] embodiment 3000 of the present invention. As shown in FIG. 7, embodiment 3000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding: (a) Data Arrival Time-Stamp System (DATSS) 5400; (b) Data Departure Time-Stamp Apparatus 5500 (DDTSS); (c) Time-Stamp Comparator (TSC) 5600; and (d) System Clock 5300.
  • As shown in FIG. 7, [0062] DATSS 5400 receives, as input: (a) media data (from network 200) and (b) information representing a clock time value (from System Clock 5300). DATSS 5400 produces, as output: (a) information representing a particular portion of media data received from network 200 (this is applied as input to Capture Buffer 400) and (b) the clock time value of System Clock 5300 at the arrival time of the particular portion of the media data (this is applied as input to Capture Buffer 400). DATSS 5400 uses any one of many methods that are well known to those of ordinary skill in the art for appending or associating the arrival time obtained from System Clock 5300 to or with, respectively, each portion of the media data arriving from network 200.
  • As further shown in FIG. 7, [0063] Capture Buffer 400 receives, as input, the information representing a particular portion of media data and its appended or associated time value of arrival. Capture Buffer 400 produces, as output: (a) media data (this is output to TSM SubSystem 800) and (b) information identifying the particular portion of media data and its associated clock value, including without limitation the media data itself and its associated clock time (this is output to DDTSS 5500).
  • As still further shown in FIG. 7, [0064] DDTSS 5500 receives, as input: (a) media data with the arrival time appended thereto or associated therewith by DATSS 5400 (from Capture Buffer 400) and (b) information representing a clock time value (from System Clock 5300). DDTSS 5500 produces, as output: (a) information representing the arrival time of the particular portion of the media data appended thereto, or associated therewith, by DATSS 5400 (applied as input to TSC 5600) and (b) the clock time of System Clock 5300 at the departure time of the particular portion of media data from Capture Buffer 400, i.e., the time it arrived at DDTSS 5500 (applied as input to TSC 5600). DDTSS 5500 uses any one of many methods that are well known to those of ordinary skill in the art for extracting or associating the arrival time from or with each portion of media data transferred from Capture Buffer 400.
  • As yet still further shown in FIG. 7, [0065] TSC 5600 receives, as input: (a) the arrival time, i.e., date stamp, of a portion of media data (from DDTSS 5500) and (b) the departure time of the portion of media data (from DDTSS 5500). TSC 5600 produces, as output, a Playback Control Parameter value corresponding to an amount of time between the arrival and departure times of the portion of media data (applied as input to TSM Rate Determiner 700). TSC 5600 computes the Playback Control Parameter by subtracting the arrival time from the departure time value, and normalizing the result as follows:
  • Delay Time=Departure Time−Arrival Time   (5)
  • Playback Control Parameter=Normalize ((Delay Time−T S)/A)   (6)
  • where T[0066] S and A are constants that are chosen to optimize system performance and are input in the same manner discussed above with respect to other system parameters.
  • In accordance with the present invention, Normalize (Delay Time) is any function that converts Delay Time values to normalized values that are greater than or equal to −1 (i.e., a maximum data underflow) and less than or equal to +1 (a maximum data overflow). The normalized value of 0 indicates a balance in the arrival and departure rates for data. For example, the following function could be used to determine a normalized Delay Time: [0067]
  • Normalize (Delay Time)=−1+(2*min(Delay Time/Unit Delay, Max. Units)/Max. Units)   (7)
  • The normalized values are used to indicate an amount of time-scale modification that is required, or desired, to avoid data overflow or data underflow situations. It should be clear that other Normalize (Delay Time) functions can be employed using criteria that should be well known to those of ordinary skill in the art. [0068]
  • The output of [0069] TSC 5600 is then applied as input to TSM Rate Determiner 700.
  • The remainder of [0070] embodiment 3000 operates in the manner described for the corresponding portions of embodiment 1000 shown in FIG. 2. In particular, in accordance with the present invention, TSM Rate Determiner 700 may utilize the Playback Control Parameter and eqn. (1) to determine a Playback Rate, or any of a number of methods for combining inputs rates to determine an output rate (for example, any of the techniques described above).
  • As shown in FIG. 7, [0071] embodiment 3000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art. The user generated rate requests are applied as input to TSM Rate Determiner 700. These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • Although FIG. 7 shows [0072] Capture Buffer 400, Playback System 500, TSM Rate Determiner 700, TSM SubSystem 800, User Interface 900, System Clock 5300, DATSS 5400, DDTSS 5500, and TSC 5600 of embodiment 3000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 8 shows a block diagram of [0073] embodiment 4000 of the present invention. As shown in FIG. 8, embodiment 4000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding Data Underflow Detector (DUD) 6100 and System Clock 5300.
  • As shown in FIG. 8, [0074] DUD 6100 receives, as input, control signals from Playback System 500. In response, DUD 6100 processes the control signals in a manner to be described in detail below and outputs Playback Control Parameter values that are applied as input to TSM Rate Determiner 700.
  • In accordance with the present invention, and using methods that are well known to those of ordinary skill in the art, [0075] DUD 6100 monitors control signals output from Playback System 500 to indicate “data underflow conditions.” It is well known to those of ordinary skill in the art that a typical embodiment of Playback System 500 outputs control signals to indicate data underflow conditions. For example, typical data underflow conditions exist whenever: (a) Playback System 500 is attempting to playback media data, and has no data available to output; or (b) Playback System 500 is attempting to playback media data, and has less than a predetermined minimum amount of data available to output. As is well known to those of ordinary skill in the art, particular embodiments of Playback System 500 may indicate a data underflow condition in different ways, including but not limited to, by: (a) setting a flag in the control signals it sends to DUD 6100 and (b) quantifying the amount of data available to it (for example, in bytes) and reporting that quantity. DUD 6100 can compare the reported quantity with a predetermined minimum quantity to detect a data underflow condition. Other techniques for detecting a data underflow condition may be based on: (a) monitoring the amount of data Playback System 500 requests from TSM SubSystem 800; (b) the frequency with which Playback System 500 requests additional data (in this case, TSM SubSystem 800 could send a signal to DUD 6100 for analysis); or (c) other aspects of the behavior of Playback System 500.
  • In general, in accordance with the present invention, [0076] DUD 6100 collects and calculates information about the existence of a data underflow condition, timing information specifying when the data underflow condition occurred, the number of data underflow events detected, and the duration of the data underflow conditions. In accordance with the present invention, DUD 6100 uses this information to calculate a Playback Control Parameter, which it applies as input to TSM Rate Determiner 700. In embodiments using timing information, embodiment 4000 would include a system clock 5300 which would be interrogated by DUD 6100.
  • For example, [0077] DUD 6100 may calculate the Playback Control Parameter based on the length of time since a data underflow condition was detected:
  • Elapsed Time=Current Time−Most Recent Underflow Time   (8)
  • where the relevant times are generated by interrogating [0078] System Clock 5300.
  • Normalize (Elapsed Time)=−1+(2*min(Elapsed Time/Unit Elapsed, Max. Units)/Max.)   (9)
  • It should be clear that other Normalize (Elapsed Time) functions can be employed using criteria that should be well known to those of ordinary skill in the art. In fact, alternative embodiments of [0079] DUD 6100 use other statistical measures associated with the data underflow condition. Examples of such other statistical measures and their utility are well known to those of ordinary skill in the art. For example, values could be sampled over a time interval and averaged. In an alternative embodiment, the underflow condition indicated by Playback System 500 is sampled at fixed intervals, and the number of underflow indications in the last N sample, for example, 5 samples, are then set to Normalize (Underflow Count)=Underflow count −2.
  • The remainder of [0080] embodiment 4000 operates in the manner described for the corresponding portions of embodiment 1000 shown in FIG. 2.
  • As shown in FIG. 8, [0081] embodiment 4000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art. The user generated rate requests are applied as input to TSM Rate Determiner 700. These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • Although FIG. 8 shows [0082] Capture Buffer 400, Playback System 500, Capture TSM Rate Determiner 700, TSM SubSystem 800, User Interface 900, and DUD 6100 of embodiment 4000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 9 shows a block diagram of [0083] embodiment 5000 of the present invention. As shown in FIG. 9, embodiment 5000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding: (a) Input Rate Monitor (IRM) 6200; (b) Output Rate Monitor (ORM) 6300; (c) Rate Comparator (RC) 6400; and (d) System Clock 5300.
  • As shown in FIG. 9, [0084] IRM 6200 receives, as input: (a) media data (from network 200) and (b) information representing a clock time value (from System Clock 5300). IRM 6200 produces, as output: (a) media data (this is applied as input to Capture Buffer 400); (b) information representing a short-term arrival rate at which media data is being received from network 200 (this is applied as input to Rate Comparator 6400); and (c) the clock time value of System Clock 5300 associated with the short-time arrival rate (this is applied as input to RC 6400). IRM 6200 uses any one of many methods that are well known to those of ordinary skill in the art to calculate the data arrival rate over small time-intervals (“short-term arrival rate”). For example, one method for calculating the short-term arrival rate includes counting the number or amount of arriving media data, for example, in the previous 700 microseconds, or previous 3 seconds.
  • As further shown in FIG. 9, [0085] ORM 6300 receives, as input: (a) media data emptied from Capture Buffer 400; and (b) information representing a clock time value (from System Clock 5300). ORM 6300 produces, as output: (a) media data emptied from Capture Buffer 400 (this is applied as input to TSM SubSystem 800); and (b) information representing a short-term emptying rate at of media data as it is being delivered to ORM 6300 (this is applied as input to RC 6400). ORM 6300 uses any one of many methods that are well known to those of ordinary skill in the art to calculate the short-term emptying rate. For example, ORM 6300 may monitor the number of data units, buffers, frames, or digital samples, and the like fetched from Capture Buffer 400 over a small time-interval to determine a short-term emptying rate.
  • As still further shown in FIG. 9, [0086] RC 6400 receives, as input: (a) the short-time arrival rate (from IRM 6200) and (b) the short-term emptying rate (from ORM 6300). In response, RC 6400 calculates two values representing an absolute and a fractional difference between these two short-time rates. RC 6400 computes the absolute difference by subtracting the short-time arrival rate from the short-time emptying rate, and computes the fractional difference by dividing the absolute difference by the short-time emptying rate. Alternative embodiments of RC 6400 may employ other statistical comparisons of the short-time arrival and emptying rates. Examples of such other statistical measures and their utility are well known to those of ordinary skill in the art. For example, without limitation, an average of the five (5) most recent short-term values, or the arithmetic mean of the high and low values over a specific interval.
  • In accordance with this embodiment of the present invention, [0087] RC 6400 calculates the Playback Control Parameter values from the fractional difference in rate using the following formula:
  • Drift Rate=short-time emptying rate/short-time arrival rate   (10)
  • Normalize(Drift Rate)=−1+(2*min(Drift Rate/Unit Drift, Max. Units)/Max. Units)   (11)
  • Finally, [0088] RC 6400 applies the Playback Control Parameter values as input to TSM Rate Determiner 700.
  • The remainder of [0089] embodiment 5000 operates in the manner described for the corresponding portions of embodiment 1000 shown in FIG. 2.
  • As shown in FIG. 9, [0090] embodiment 5000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art. The user generated rate requests are applied as input to TSM Rate Determiner 700. These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • Although FIG. 9 shows [0091] Capture Buffer 400, Playback System 500, TSM Rate Determiner 700, TSM SubSystem 800, User Interface 900, System Clock 5300, Input Rate Monitor 6200, Output Rate Monitor 6300, and Rate Comparator 6400 of embodiment 5000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 9A shows a block diagram of embodiment [0092] 5001 of the present invention. As shown in FIG. 9A, embodiment 5001 is obtained from embodiment 5000 shown in FIG. 9 by: (a) having Capture Buffer 400 output data to TSM SubSytem 800; (b) TSM SubSytem 800 output time-scale modified data to ORM 6300; and having ORM 6300 output data to Playback System 500. ORM 6300 produces, as output: (a) media data emptied from TSM SubSystem 800 (this is applied as input to Playback System 500); and (b) information representing a short-term data consumption rate of media data (this is applied as input to RC 6400). ORM 6300 uses any one of many methods that are well known to those of ordinary skill in the art to calculate the short-term data consumption rate. For example, ORM 6300 may monitor the number of data units, buffers, frames, or digital samples, and the like fetched from TSM Subsystem 800 over a small time-interval to determine a short-term data consumption rate. The remainder of embodiment 5001 operates in the manner described for the corresponding portions of embodiment 5000 shown in FIG. 9.
  • FIG. 10 shows a block diagram of [0093] embodiment 6000 of the present invention. As shown in FIG. 10, embodiment 6000 is obtained from embodiment 1000 shown in FIG. 2 by deleting Capture Buffer Monitor 600 and adding: (a) Streaming Data Information Source (SDIS) 150; (b) Streaming Media Information Monitor (SMIM) 6600; (c) Short-Term Network Bandwidth Estimator (STNBE) 6700; and (d) System Clock 5300.
  • As shown in FIG. 10, [0094] SDIS 150 receives, as input, media data packets generated by Streaming Data Source 100. SDIS 150 produces, as output: (a) media data packets (this is applied as input to network 200) and (b) information data packets which describe these media data packets (this is applied as input to network 200). In accordance with the present invention, information contained in the information data packets describes the amount, nature, and timing of media data being transmitted by Streaming Data Source 100. For example, the nature of media data refers to information such as, without limitation, encoding format, number of channels (mono/stereo), bit depth and sampling rate. As a further example, the timing of media data refers to the time that a media data packet was received by SDIS 150 and/or delivered to network 200. The information data packets and the media data packets are transmitted to User System 300 using any one of a number of methods which are well known to those of ordinary skill in the art so that arrival of the information data packets are independent of, and generally more reliable and prompt than, the delivery of the media data packets to Capture Buffer 400. The notion of a delivery method for the information data packets being “more reliable” means delivery over channels and/or using protocols that are more likely to ensure timely and error-free delivery than the channels used to deliver the media data packets. For example, without limitation, using transport protocols or transmission priorities that differ from those used for media data packets. Thus, the information and the data are sent separately. This is referred to below as out-of-band media transmission. In a further embodiment, the information data is appended to the media data packets. This is referred to below as in-band media transmission.
  • In accordance with the present invention, [0095] SDIS 150 may reside on the same physical server as Streaming Data Source 100 (or on a server which is otherwise associated with Streaming Data Source 100), or on an intermediate node in network 200 through which the media data packets pass on their way from Streaming Data Source 100 to User System 300.
  • As shown in FIG. 10, for the out-of-band case, [0096] SMIM 6600 receives, as input: (a) the information data packets generated by SDIS 150 (from network 200) and (b) the media data packets transmitted by SDIS 150 (from network 200). SMIM 6600 produces, as output: (a) the media data packets (this is applied as input to Capture Buffer 400) and (b) the information data packets (this is applied as input to Short-Term Network Bandwidth Estimator (STNBE 6700). For the in-band case, SMIM 6600 separates the media and the information and transfers them as indicated above for the out-of-band case.
  • As shown in FIG. 10, [0097] STNBE 6700 receives, as input, (a) the information data packets and (b) a time clock value from System Clock 5300. STNBE 6700 uses the inputs in accordance with any one of the many methods which are well known to those of ordinary skill in the art to calculate an arrival rate for information over short time intervals, and to estimate the transmission delay variations. This arrival rate provides an effective estimate of the short-term network bandwidth of network 200. The effective short-term network bandwidth is the rate at which packets are arriving over network 200, and is measured, for example, by counting the number of packets received over a period of time like 10 msecs or 300 msecs or 3 seconds and then dividing the number by that time period. Then, STNBE 6700 uses the short-term network bandwidth to generate Playback Control Parameter values and produces, as output, the Playback Control Parameter values (this is applied as input to TSM Rate Determiner 700). Alternative embodiments of SDIM 600 may employ other statistical comparisons of the network transmission characteristics. For example, another statistical measure might be the variance of the transmission rate, which provides a measure of how unreliable the channel is.
  • In accordance with this embodiment of the present invention, [0098] SDIM 600 calculates the Playback Control Parameter values from the short-term network bandwidth using the following formula:
  • Drift Rate=short-term network bandwidth/Nominal bandwidth   (12)
  • Normalize (Drift Rate)=−1+(2*min(Drift Rate/Unit Drift, Max. Units)/Max. Units)   (13)
  • The remainder of [0099] embodiment 6000 operates in the manner described for the corresponding portions of embodiment 1000 shown in FIG. 2.
  • As shown in FIG. 10, [0100] embodiment 1000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art. The user generated rate requests are applied as input to TSM Rate Determiner 700. These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • Although FIG. 10 shows Capture [0101] Buffer 400, Playback System 500, TSM Rate Determiner 700, TSM SubSystem 800, User Interface 900, System Clock 5300, SMIM 6600, and STNBE 6700 of embodiment 6000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 11 shows a block diagram of [0102] embodiment 7000 of the present invention. As shown in FIG. 11, Intermediate Server Node (ISN) 250 comprises Capture Buffer 400, Capture Buffer Monitor 600, TSM Rate Determiner 700, and TSM SubSystem 800 that operate in the same manner described above for embodiment 1000 shown in FIG. 2. As shown, in FIG. 11, ISN 250 receives media data packets from Stream Data Source 100 over network 200. After processing, in accordance with embodiment 7000 shown in FIG. 11 (instead of forwarding the TSM signal output from TSM SubSystem 800 to Playback System 500 as occurs in embodiment 1000 shown in FIG. 2), or TSM signal output from TSM SubSystem 800, i.e., the media data packets, is forwarded (transmitted) to User System 317 over network 200. It should be understood that if media data packets are encoded forms of a signal, TSM SubSystem 800 may process the encoded format, or decoding may be performed before such data is sent to TSM SubSystem 800. The output of TSM SubSystem 800 may then be re-encoded before being sent to User System 317.
  • As those of ordinary skill in the art can appreciate from this, [0103] ISN 250 acts as an intermediate cache, or store, for the media data packets. In effect, the media data packets are cached in Capture Buffer 400 of FIG. 11. Further, for embodiment 7000, User System 317 acts, in effect, as Playback System 500. Still further, embodiment 7000 may be implemented in such a manner that network 200 is populated with a plurality of caches (for example, as ISN 250 nodes). It should further be understood that ISN 250 shown in FIG. 11 may also be embodied by the analogous portions of embodiments disclosed herein. For example, without limitation, embodiment 3000 shown in FIG. 7 (comprising: Capture Buffer 400, TSM Rate Determiner 700, TSM SubSystem 800, System Clock 5300, DATSS 5400, and DDTSS 5500); embodiment 5000 shown in FIG. 9 (comprising Capture Buffer 400, TSM Rate Determiner 700, TSM SubSystem 800, Input Rate Monitor 6200, Output Rate Monitor 6300, and Rate Comparator 6400); and embodiment 6000 shown in FIG. 10 (comprising Capture Buffer 400, TSM Rate Determiner 700, TSM SubSystem 800, System Clock 5300, SMIM 6600, and STNBE 6700).
  • Although FIG. 11 shows Capture [0104] Buffer 400, Capture Buffer Monitor 600, TSM Rate Determiner 700, and TSM SubSystem 800 of embodiment 7000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 12 shows a block diagram of [0105] embodiment 9000 of the present invention. As shown in FIG. 12, embodiment 9000 is obtained from embodiment 1000 shown in FIG. 2 by deleting TSM SubSystem 800 from US 300 and replacing Streaming Data Source 100 with Streaming Data Source 110 (Streaming Data Source 110 comprises Streaming Data Generator 120 and TSM SubSystem 810). Streaming Data Generator 120 produces, as output, media data representing an audio or audio-visual work in the form of: (a) a stream of data representing portions of an audio or audio-visual work (this is applied as input to TSM SubSystem 810) and (b) a stream of location information used to identify the position in the stream of data (this is applied as input to TSM SubSystem 810). TSM SubSystem 810 receives, as input: (a) a stream of data representing portions of the audio or audio-visual work (output from Streaming Data Generator 120); (b) a stream of location information (output from Streaming Data Generator 120) used to identify the position in the stream of data being sent, for example, a sample count or time value; and (c) a rate signal specifying a desired TSM rate, or playback rate (output from TSM Rate Determiner 700). In accordance with this embodiment of the present invention, the TSM rate output from TSM Rate Determiner 700 in US 310 is transmitted over network 200, and is applied as input to TSM SubSystem 810. TSM SubSystem 810 modifies the input stream of data in accordance with well known TSM methods to produce, as output, a stream of data that represents a Time-Scale Modified signal, and transmits the data to US 310 over network 200. It should be understood that if the data received by TSM SubSystem 810 is encoded, the data may be processed in encoded format, or may be decoded before processing and then re-encoded after processing. The remainder of embodiment 9000 operates in the same manner described above for embodiment 1000 except that Capture Buffer 400 outputs the data and position directly to Playback System 500.
  • It should further be understood that [0106] US 310 shown in FIG. 12 may also be embodied by the analogous portions of embodiments disclosed herein. For example, without limitation, embodiment 3000 shown in FIG. 7 (comprising: Capture Buffer 400, TSM Rate Determiner 700, System Clock 5300, DATSS 5400, and DDTSS 5500); embodiment 5000 shown in FIG. 9 (comprising Capture Buffer 400, TSM Rate Determiner 700, Input Rate Monitor 6200, Output Rate Monitor 6300, and Rate Comparator 6400); and embodiment 6000 shown in FIG. 10 (comprising Capture Buffer 400, TSM Rate Determiner 700, System Clock 5300, SMIM 6600, and STNBE 6700).
  • As shown in FIG. 12, [0107] embodiment 9000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art. The user generated rate requests are applied as input to TSM Rate Determiner 700. These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • Although FIG. 12 shows Capture [0108] Buffer 400, Playback System 500, Capture Buffer Monitor 600, TSM Rate Determiner 700, and User Interface 900 of User System 310 of embodiment 9000 as being embodied as separate modules, and Streaming Data Generator 120 and TSM SubSystem 810 of Streaming Data Source 110 of embodiment 9000 as being separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • FIG. 13 shows a block diagram of [0109] embodiment 10000 of the present invention. As shown in FIG. 13, embodiment 10000 is obtained from embodiment 1000 shown in FIG. 2 by: (a) replacing Streaming Data Source 100 with Streaming Data Source 180 (Streaming Data Source 180 comprises Streaming Data Generator 170 and TSM “Encoder” SubSystem (TES) 175) and (b) replacing TSM SubSystem 800 with TSM “Decoder” SubSystem (TDS) 835.
  • In accordance with the present invention, [0110] Streaming Data Generator 170 produces, as output, media data representing an audio or audio-visual work in the form of: (a) a stream of data representing portions of an audio or audio-visual work (this is applied as input to TES 175) and (b) a stream of location information used to identify the position in the stream of data (this is applied as input to TES 175). TES 175 receives, as input: (a) a stream of data representing portions of the audio or audio-visual work (output from Streaming Data Generator 170); (b) a stream of location information (output from Streaming Data Generator 170) used to identify the position in the stream of data being sent, for example, a sample count or time value; and (c) a rate signal specifying the desired TSM rate, or playback rate (output from TSM Rate Determiner 700). In accordance with this embodiment of the present invention, TSM Rate Determiner 700 in US 300 produces rate information, as output. TSM Rate Determiner 700 transmits: (a) first playback rate information to TES 175 over network 200 and (b) second playback rate information to TDS 835.
  • In accordance with this embodiment of the present invention, [0111] TES 175 modifies the input stream in accordance with well known TSM methods to produce, as output, a stream of data that represents a Time-Scale Modified signal, and transmits the data to US 300 over network 200. Capture Buffer 400 operates in the same manner as in embodiment 1000 in FIG. 2. As a result, TDS 835 receives, as input: (a) a stream of data representing portions of an audio or audio-visual work (from Capture Buffer 400); (b) a stream of location information used to identify the position in the stream of data (from Capture Buffer 400); and (c) rate information (from TSM Rate Determiner 700). TES 175 and TDS 835 differ from TSM SubSystem 800 of embodiment 1000 described above only in the playback rates input thereto from TSM Rate Determiner 700.
  • In accordance with [0112] embodiment 10000 of the present invention, whenever TSM Rate Determiner 700 determines that a faster-than-real-time playback rate is needed to deplete data in Capture Buffer 400 (i.e., rate>1.0), it sends that playback rate to TES 175 and sends a playback rate of 1.0 to TDS 835. Consequently, whenever TSM Rate Determiner 700 determines that a slower-than-real-time playback rate is needed to slow down data depletion in Capture Buffer 400 (i.e., rate<1.0), it sends a playback rate of 1.0 to TES 175, and sends the desired playback rate to TDS 835. Thus, TSM Rate Determiner 700 sends rate information to TES 175 instructing it to speed up playback of a media signal whenever that media signal is to be played faster than its original recording rate. Correspondingly, TSM Rate Determiner 700 sends rate information to TDS 835 instructing it to slow down playback of a media signal whenever that media signal is to be played back slower than its original recording rate. As a result, embodiment 10000 has the advantage of conserving network bandwidth.
  • More generally, use of a separate playback rate for TES [0113] 175 (RTES) and a separate playback rate for TDS 835 (RTDS) results in an equivalent playback rate given by the following:
  • Requiv=RTES*RTDS.   (14)
  • In a preferred embodiment, [0114] embodiment 10000 effectively implements a variable-rate data encoding system which utilizes different rates for TES 175 and TDS 835. For example, if the effective short-term bandwidth of network 200 drops, embodiment 10000 can compensate for the reduced bandwidth by setting appropriate values for RTES and RTDS. For example, if the effective bandwidth of network 200 drops to 90% of its nominal capacity, embodiment 10000 can compensate for the reduced bandwidth by setting: (a) RTES=1.11 and (b) RTDS=0.9. This advantageously reduces the effective transmission rate over network 200 to 90% of its nominal value, and results in an overall system playback rate of Requiv=RTES*RTDS=1.11*0.9≅1.0. The short-term bandwidth of network 200 can be determined using, for example, Input Rate Monitor 6200 described above in junction with the description of embodiment 5000 shown in FIG. 9. In accordance with the present invention, values for RTES and RTDS are chosen algorithmically, typically based on a “rules based” system. For example, a simple rule might be to chose RTES to be the lowest rate that network 200 will support, but not less that 1.0, and to choose RTDS such that eqn. (14) is satisfied.
  • As shown in FIG. 13, [0115] embodiment 10000 optionally comprises User Interface 900 for receiving user generated rate requests in accordance with any one of a number of methods which are well known to those of ordinary skill in the art. The user generated rate requests are applied as input to TSM Rate Determiner 700. These user generated rate requests may be “folded” into the playback rates determined by TSM Rate Determiner 700 to provide continuous playback of streaming media. This means that these requests may be ignored or modified when they would interfere with the objective of providing continuous playback.
  • Although FIG. 13 shows Capture [0116] Buffer 400, Playback System 500, Capture Buffer Monitor 600, TSM Rate Determiner 700, TSM Decoder SubSystem 835, and User Interface 900 of embodiment 10000 as being embodied as separate modules, and Streaming Data Generator 170 and TSM “Encoder” SubSystem 175 of Streaming Data Source 180 of embodiment 10000 as being embodied as separate modules, it will be understood by those of ordinary skill in the art that the functions they perform can be performed by one or more modules in which some or all of the functions are combined. In a preferred embodiment, some or all of the modules are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. Further, in light of the detailed discussion above, it should be well known to one of ordinary skill in the art, to implement these programs or modules in software.
  • As should be clear to those of ordinary skill in the art, the inventive technique for providing substantially continuous playback may be combined with any number of apparatus which provide time-scale modification and may be combined with or share components with such systems. [0117]
  • Although the cause of delays in providing media content to [0118] recipients 2300 have been attributed in the foregoing description to random delays in network 2200 or media broadcast server 2100, the present invention may also be advantageously employed to compensate for delays, either random or deterministic, arising from any other cause, including without limitation attempts by network 2200 or media broadcast server 2100 to limit or regulate the short-term or long-term bandwidth or rate of delivery of data to recipients 2300. Without limitation, one situation in which such attempts to regulate the rate of delivery of data may arise is when recipient 2300 incorporates a User Interface 900, a TSM SubSystem 800, and a TSM Rate Determiner 700, and the user has requested that media data be played back at a rate faster than real time. The alternative embodiment shown in FIG. 13 may be particularly advantageous in such circumstances, in that it is capable of maintaining a data transmission bit-rate which corresponds to real-time playback, even for actual media playback rates that are faster than real-time.
  • Embodiments of the present invention are advantageous in enabling a single-broadcast system utilizing a broadcast server to provide a single broadcast across one or more non-deterministic delay networks to multiple recipients, for example across the Internet and/or other networks such as Local Area Networks (LANs) and Wide Area Networks (WANs). In such a single-broadcast system, the path to each recipient varies. In fact, the path to each recipient may dynamically change based on loading, congestion and other factors. Therefore, the amount of delay associated with the transmission of each data packet that has been sent by the broadcast server varies. In prior art client-server schemes, each recipient has to notify the broadcast server of its readiness to receive more data, thereby forcing the broadcast server to serve multiple requests to provide a steady stream of data at the recipients' data ports. Advantageously, embodiments of the present invention enable the broadcast server to send out a steady stream of information, and the recipients of the intermittently arriving data to adjust the playback rate of the data to accommodate the non-uniform arrival rates. In addition, in accordance with the present invention, each of the recipients can accommodate the arrival rates independently. [0119]
  • It should be clear to those of ordinary skill in the art, in light of the detailed description set forth above, that in some embodiments of the present invention (a) determine a measure of a mismatch between a data arrival rate and a data consumption rate and (b) utilize time-scale modification to adjust these rates. Various of such embodiments of the invention utilize various methods (a) for determining information which indicates the measure of the mismatch and (b) for determining a playback rate which enables time-scale modification to adjust for the mismatch in a predetermined amount. [0120]
  • In light of this, in another embodiment of the present invention, the playback system determines that there is a data mismatch because it determines a diminution in the arrival of data for playback or subsequent distribution. In response, the playback system sends this information to the TSM Rate Determiner to develop an acceptable playback rate. For example, the playback rate may be reduced by a predetermined amount based on an input parameter or in accordance with any one of a number of algorithms that may be developed by those of ordinary skill in the art. [0121]
  • It should be understood that some embodiments of the present invention described above relate to presentation systems whose playback rates are determined by the media source transmitting data. Specifically, the media source, for example, a server, can elect to send data faster or slower than normal; to cause a faster or slower playback rate provided by these embodiments of [0122] User System 300. This mode was referred to above as the “Rate Determined by Data Arrival” mode. It should be understood that the data arrival rate is not the only metric which can be utilized to determine presentation or playback rate. As described above other system metrics, such as CPU availability, may also be used.
  • The following describes various embodiments of a graphical interface used to fabricate some embodiments of the present invention in conjunction with FIGS. [0123] 14-18.
  • Additionally, some embodiments of the present invention described above relate to presentation systems wherein a determination is made of maximum and minimum presentation rates that are allowable to provide continuous and uninterrupted playback of media existing locally on a storage device or transmitted from a remote storage device via a communication medium. In accordance with these embodiments, the maximum and minimum presentation rates may be used with other information to prevent users of a variable rate presentation system from specifying presentation rates (playback rates) that are outside ranges of rates for continuous and uninterrupted playback. This mode was referred to above as the “Rate Restricted by Data Arrival” mode. It should be understood that the data arrival rate is not the only metric which can be utilized to determine presentation or playback rate. As described above other system metrics, such as CPU availability, may also be used to prevent interruptions in playback. [0124]
  • In one embodiment of the “Rate Restricted by Data Arrival” mode of the present invention, [0125] User Interface 900 may comprise a graphical interface which provides a graphical presentation of Current Playback Rate (CPR), Requested Playback Rate (RPR), Current Maximum Sustainable Rate (CmaxSR), Current Minimum Sustainable Rate (CminSR). These are displayed graphically to the user in FIG. 14 as CPR 910, RPR 920, CminSR 930, and CmaxSR 940. It should be understood that the graphical interface described may also be presented to users operating in the “Rate Determined by Data Arrival” mode.
  • [0126] User Interface 900 may also provide various indicators which enable the user to specify: (a) whether a “Rate Restricted by Data Arrival” mode is to be utilized; and (b) whether to display CPR; (c) whether to display RPR; (d) whether to display CmaxSR; and (e) whether to display CminSR. One example of a graphical interface that enables users to make these specifications is shown in FIG. 15. As shown in FIG. 15, Speed Limit™ Enable check-box 906 is used to specify whether a “Rate Restricted by Data Arrival” mode is to be utilized; CPR Display Enable check-box 911 is used to specify whether to display CPR 910; RPR Display Enable check-box 921 is used to specify whether to display RPR 920; CmaxSR Display Enable check-box 931 is used to specify whether to display CmaxSR 930; and CminSR Display Enable check-box 941 is used to specify whether to display CminSR 940. Although FIGS. 15-18 show graphical interfaces wherein the display functionality is set using “check boxes,” the present invention is not thusly limited, and any manner of enabling or disabling such features which are well known to those of ordinary skill in the art may be employed.
  • Advantageously, in accordance with this embodiment, the user can understand the limits of the system because the graphical interface displays CmaxSR which is the fastest playback rate that can be maintained for data obtained from a given source (whether the source is local or remote); and CminSR which is the slowest playback rate that can be maintained, for data obtained from a given source (whether the source is local or remote). CmaxSR and CminSR may vary with time, and, as a result, they provide a dynamic metric which indicates presentation or playback rates that can be used at any particular time without draining or overflowing [0127] Capture Buffer 400 of input data in the various embodiments set forth in detail above.
  • Further, in accordance with this embodiment, the graphical interface indicates the most recently user-requested presentation rate, [0128] RPR 920, and the current presentation rate, CPR 910. In a preferred embodiment, RPR 920 and CPR 910 are both indicated by a location on a single slider. When the user can see distinguishable indications of CPR 910 and RPR 920 on the single slider, CPR 910 and RPR 920 are not equal. As was described in detail above, in accordance with this embodiment, the current playback speed (CPR 910) will transition to the requested playback rate (RPR 920) over a time interval unless RPR is outside a range defined by CminSR to CmaxSR.
  • In accordance with this embodiment of the graphical interface, [0129] CPR 910 and RPR 920 are differentiated from one another by using different icons, or identical icons with different transparency, or color intensity, for example, see FIG. 14. Although the graphical interface could use a cursor or a position indicator on a slider to indicate CPR 910 and RPR 920, the present invention is not thusly limited, and any number of methods that are well known to those of ordinary skill in the art may be used to provide a graphical interface to display and distinguish CPR and RPR. For example, and without limitation, the values of CPR 910 and RPR 920 may be indicated by numbers or an indication, for example, in the form of an icon, that appears on an axis.
  • In accordance with some embodiments of the “Rate Restricted by Data Arrival” mode (this mode will be utilized whenever SpeedLimit Enable check-[0130] box 906 is checked, see the displays produced by various embodiments shown in FIGS. 15-18), the user requests a new playback, or presentation, rate by moving RPR to a new value using, for example, a mouse positioned over RPR 920 on the slider shown, for example, in the displays produced by various embodiments shown in FIGS. 14-18. In accordance with one embodiment, the user receives feedback regarding the request via a change, for example, in appearance and/or location, of RPR 920. Next, as the system responds to the user's request, the graphical interface will update the display so that as CPR moves toward RPR, CPR 910 moves toward RPR 920 until both CPR 910 and RPR 920 are at substantially the same value, if this is possible. This display will be seen, providing CPR Display Enable check-box 911 and RPR Display Enable check-box 921 are checked, see the displays produced by various embodiments shown in FIGS. 15 and 17-18. In accordance with this embodiment, whenever the user requests a playback rate that is higher than CmaxSR 930: (a) the graphical interface will place RPR 920 at the user-requested rate on the slider, and (b) the graphical interface will indicate changes in CPR by moving CPR 910 as the values of CPR change. Of course, in accordance with this embodiment, CPR 910 will remain within bounds set by the value of CmaxSR 930. If, however, the value of CmaxSR 930 changes, either higher or lower, then CPR 910 will adjust accordingly so that it remains just slightly below the value of CmaxSR 930, but does not exceed CmaxSR 930 or RPR 920. As one can readily appreciate, this causes the presentation system to perform the maximum playback rate increase allowable without draining Capture Buffer 400, and to respond to the user's request with rate changes that prevent underflow in Capture Buffer 400. Similarly, if the user requests a playback rate that is slower than CminSR 940: (a) the graphical interface will place RPR 920 at the user-requested rate on the slider, and (b) the graphical interface will indicate changes in CPR by moving CPR 910 as the values of CPR change. Of course in accordance with this embodiment, CPR 910 will remain within bounds set by the value of CminSR 940. If, however, the value of CminSR 940 changes, either higher or lower, then CPR 910 will adjust accordingly so that it remains just slightly above the value of CminSR 940, but does not fall below CminSR 940 or RPR 920.
  • As shown in FIG. 14, the graphical interface displays [0131] CmaxSR 930 and CminSR 940 as a boundary between colored regions within the range of the slider. In particular, as shown in FIG. 14, the boundaries between the red and yellow regions and the yellow and red regions, respectively, indicate values of CminSR 940 and CmaxSR 930, respectively. As further shown in FIG. 14, CPR 910 is displayed using a solid “sliding indicator” while RPR 920 is displayed using a hollow “sliding indicator”. It should be understood that the inventive graphical interface is not limited to this particular choice for displaying the values of CPR, RPR, CminSR, and CmaxSR, and that any one of a number of display choices are considered to be within the scope of the present invention, for example, and without limitation, using a solid “sliding indicator” for RPR and a hollow “sliding indicator” for CPR. Other examples include using a “diamond” or other icon to display CPR and a solid “sliding indicator” to display RPR. In another example, shown in FIG. 18 (produced by an alternative embodiment), RPR is displayed using a solid “sliding indicator” and a colored line that fills in the “slider track” from the left side to the value of CPR 910 (in the same manner that the mercury of a thermometer indicates temperature) is used to display CPR 910. In another example, shown in FIG. 14, a green line is used to display playback rates that can be sustained without draining or overflowing Capture Buffer 400, a yellow line is used to display playback rates that may not be able to be thusly sustained under all circumstances, and a red line is used to display playback rates that will cause underflow or overflow conditions in Capture Buffer 400. Although FIG. 14 shows a graphical display using three colors to display boundaries within CmaxSR 930 and CminSR 940, it should be understood that this does not limit the present invention and that many other implementations can be made that are within the scope of the present invention, for example, implementations using only two colors to display the above-described information. Further, the choice of colors or shadings used to display the information may be varied according to design style. In another example, shown in FIG. 17 (produced by an alternative embodiment), CPR is displayed using a “thermometer-like” display and RPR is displayed using an indicator on a slider.
  • As shown in the displays of FIGS. [0132] 15-18, the “Rate Restricted by Data Arrival” mode will be utilized since SpeedLimit™ Enable check-box 906 is checked. Further, FIGS. 15 and 18 show displays which indicate that a user has requested that all information be displayed by having checked all check-boxes to the “on” position. Still further, FIG. 16 shows a display which indicates that the user has opted not to display CPR, CmaxSR, and CminSR. Yet still further, FIG. 17 shows a display which indicates that the user has opted not to display CmaxSR and CminSR.
  • Lastly, one can use any one of a number of methods that are well known to those of ordinary skill in art to create the graphical interface displays described above and shown in FIGS. [0133] 14-18. In addition it should be understood that variations in orientation of the sliders and indicators discussed above are considered to be within the scope of the present invention, for example, vertically oriented sliders and indicators may be used. Furthermore, it should be understood that although a graphical interface has been described above, alternative interfaces may be used, such as, an interface comprised of keypresses that map to specific requests for a playback rate and audio tones, or spoken numbers to indicate values. For example, the keys “s” and “f” may be used to request slower and faster playback rates respectively, and in response to these keys being pressed the system may employ text to speech or pre-recorded utterances to announce the values of RPR, CPR, CmaxSR, and CminSR. There are numerous methods well known to those of ordinary skill in the art for combining the playback of utterances, text-to-speech systems, and keyboard only interfaces to software programs.
  • Those skilled in the art will recognize that the foregoing description has been presented for the sake of illustration and description only. As such, it is not intended to be exhaustive or to limit the invention to the precise form disclosed. [0134]
  • For example, those of ordinary skill in the art should readily understand that whenever the term “Internet” is used, the present invention also includes use with any non-deterministic delay network. As such, embodiments of the present invention include and relate to the world wide web, the Internet, intranets, local area networks (“LANs”), wide area networks (“WANs”), combinations of these transmission media, equivalents of these transmission media, and so forth. [0135]
  • In addition, it should be clear that embodiments of the present invention may be included as parts of search engines used to access streaming media such as, for example, audio or audio-visual works over the Internet. [0136]
  • In further addition, it should be understood that although embodiments of the present invention were described wherein the audio or audio-visual works were applied as input to playback systems, the present invention is not limited to the use of a playback system. It is within the spirit of the present invention that embodiments of the present invention include embodiments wherein the playback system is replaced by a distribution system, which distribution system is any device that can receive digital audio or audio-visual works and re-distribute them to one or more other systems that replay or re-distribute audio or audio-visual works. In such embodiments, the playback system is replaced by any one of a number of distribution applications and systems which are well known to those of ordinary skill in the art that further distribute the audio or audio-visual work. It should be understood that the devices that ultimately receive the re-distributed data can be “dumb” devices that lack the ability to perform Time-Scale modification or “smart” devices that can perform Time-Scale modification. [0137]
  • Although embodiments of the present invention have been described using data input from a streaming media source, the present invention is not limited to such embodiments. In particular, embodiments of the present invention may be used for data arriving from any source, local or remote, streamed or delivered in bulk. Further it should be understood that embodiments of the present invention relate to management of the flow of data from any source. [0138]
  • Although embodiments of the present invention have been described as relating to presentation or playback systems, the present invention is not limited to such embodiments. In particular, embodiments of the present invention relate to methods and apparatus for preparing media or data representing audio and audio/visual media for presentation or playback. [0139]

Claims (18)

What is claimed is:
1. A client apparatus for preparing streaming media received over a non-deterministic delay network for playback or distribution which comprises:
a buffer which stores data corresponding to the streaming media;
a time-scale modification system that time-scale modifies data output from the buffer at a time-scale modification playback rate;
a rate determiner that determines the time-scale modification playback rate over an interval to control an amount of data in the buffer; and
a user interface which receives a user requested time-scale modification playback rate.
2. The client apparatus of claim 1 wherein the rate determiner determines the time-scale modification playback rate utilizing the user requested time-scale modification playback rate.
3. The client apparatus of claim 2 wherein the user interface further comprises a graphical interface.
4. The client apparatus of claim 3 wherein the graphical interface further displays one or more of the user requested time-scale modification playback rate, and the time-scale modification playback rate.
5. The client apparatus of claim 5 wherein the graphical interface further displays a range of time-scale modification playback rates which are determined to provide uninterrupted playback.
6. The client apparatus of claim 1 wherein the rate determiner determines the time-scale modification playback rate as a non-linear function of the amount of data.
7. A method for preparing streaming media received over a non-deterministic delay network at a client device for playback or distribution which comprises the steps of:
receiving the streaming media at the client device;
determining a measure of an arrival rate and a measure of a data consumption rate of the received streaming media;
determining a measure of mismatch between the arrival measure and the consumption measure; and
utilizing time-scale modification to mitigate the effects of the mismatch;
wherein:
the arrival measure is determined as a function of an arrival rate of data in a buffer; and
the consumption measure is determined as a function of a use rate of data by a playback system or a distribution system.
8. A method for preparing streaming media received over a non-deterministic delay network at a client device for playback or distribution which comprises the steps of:
receiving the streaming media at the client device;
determining a measure of an arrival rate and a measure of a data consumption rate of the received streaming media;
determining a measure of mismatch between the arrival measure and the consumption measure; and
utilizing time-scale modification to mitigate the effects of the mismatch;
wherein the arrival rate is determined using time-stamps for arriving data.
9. A method for preparing streaming media received over a non-deterministic delay network at a client device for playback or distribution which comprises the steps of:
receiving the streaming media at the client device;
determining a measure of an arrival rate and a measure of a data consumption rate of the received streaming media;
determining a measure of mismatch between the arrival measure and the consumption measure; and
utilizing time-scale modification to mitigate the effects of the mismatch;
wherein the arrival rate is determined by monitoring data arrival times and data packet sizes.
10. A method for playback of streaming media received over a non-deterministic delay network at a client device which comprises steps of:
receiving the streaming media at the client device in a buffer;
playing back the streaming media;
determining a measure of an arrival rate and a measure of a data consumption rate of the received streaming media;
determining a time-scale modification playback rate considering one or more of the measure of arrival rate, the measure of a data consumption rate, and user input time-scale modification playback rate requests;
utilizing time-scale modification to mitigate underflow or overflow in the buffer, or disruption in playback; and
providing an indication of a current time-scale modification playback rate to the user.
11. The method of claim 10 which further comprises steps of:
providing an indication of a user requested time-scale modification playback rate.
12. The method of claim 10 wherein the step of playing back comprises associating a time-scale modification playback rate with each entry in a playback buffer queue.
13. The method of claim 10 wherein the indication comprises a function of recent time-scale modification playback rates.
14. The method of claim 10 wherein the step of utilizing comprising ignoring or modifying the user input time-scale modification playback rate when it would interfere with providing continuous playback.
15. A method for preparing streaming media received over a non-deterministic delay network at a client device for playback or distribution which comprises the steps of:
receiving the streaming media at the client device;
determining a measure of an arrival rate and a measure of a data consumption rate of the received streaming media;
determining a measure of mismatch between the arrival measure and the consumption measure; and
utilizing time-scale modification to mitigate the effects of the mismatch;
wherein the step of utilizing comprises determining a maximum time-scale modification playback rate that can be used over a reporting time interval without draining a buffer that receives the streaming media.
16. The method of claim 15 wherein the maximum time-scale modification playback rate is determined as a function of the arrival measure, the consumption measure, an amount of data in the buffer, and the time interval.
17. A method for preparing streaming media received over a non-deterministic delay network at a client device for playback or distribution which comprises the steps of:
receiving the streaming media at the client device;
determining a measure of an arrival rate and a measure of a data consumption rate of the received streaming media;
determining a measure of mismatch between the arrival measure and the consumption measure; and
utilizing time-scale modification to mitigate the effects of the mismatch;
wherein the step of utilizing comprises determining a minimum time-scale modification playback rate that can be used over a reporting time interval without overflowing a buffer that receives the streaming media; wherein the minimum time-scale modification playback rate is determined as a function of the arrival measure, the consumption measure, an amount of data in the buffer, and the time interval.
18. A method for playback of streaming media received over a non-deterministic delay network at a client device which comprises steps of:
receiving the streaming media at the client device, which client device includes a CPU;
playing back the streaming media;
determining a measure of CPU availability;
determining a time-scale modification playback rate as a function of the measure of CPU availability; and
utilizing time-scale modification to prepare the streaming media for playback.
US10/664,616 1999-05-04 2003-09-19 Method and apparatus for continuous playback of media Abandoned US20040064576A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/664,616 US20040064576A1 (en) 1999-05-04 2003-09-19 Method and apparatus for continuous playback of media

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/304,761 US6625655B2 (en) 1999-05-04 1999-05-04 Method and apparatus for providing continuous playback or distribution of audio and audio-visual streamed multimedia reveived over networks having non-deterministic delays
US09/519,487 US6625656B2 (en) 1999-05-04 2000-03-06 Method and apparatus for continuous playback or distribution of information including audio-visual streamed multimedia
US10/664,616 US20040064576A1 (en) 1999-05-04 2003-09-19 Method and apparatus for continuous playback of media

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US09/519,487 Continuation US6625656B2 (en) 1999-05-04 2000-03-06 Method and apparatus for continuous playback or distribution of information including audio-visual streamed multimedia

Publications (1)

Publication Number Publication Date
US20040064576A1 true US20040064576A1 (en) 2004-04-01

Family

ID=26974212

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/519,487 Expired - Fee Related US6625656B2 (en) 1999-05-04 2000-03-06 Method and apparatus for continuous playback or distribution of information including audio-visual streamed multimedia
US10/664,616 Abandoned US20040064576A1 (en) 1999-05-04 2003-09-19 Method and apparatus for continuous playback of media

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US09/519,487 Expired - Fee Related US6625656B2 (en) 1999-05-04 2000-03-06 Method and apparatus for continuous playback or distribution of information including audio-visual streamed multimedia

Country Status (3)

Country Link
US (2) US6625656B2 (en)
AU (1) AU4691200A (en)
WO (1) WO2000067414A2 (en)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019990A1 (en) * 1999-12-08 2002-02-14 Sincaglia Nicolas W. Scheduled retrieval, storage and access of media data
US20020095466A1 (en) * 2001-01-12 2002-07-18 Fujitsu Limited Information distribution apparatus and information distribution method
US20030229901A1 (en) * 2002-06-06 2003-12-11 International Business Machines Corporation Audio/video speedup system and method in a server-client streaming architecture
WO2006074274A2 (en) * 2005-01-05 2006-07-13 Control4 Corporation Method and apparatus for synchronizing playback of streaming media in multiple output devices
US20060184261A1 (en) * 2005-02-16 2006-08-17 Adaptec, Inc. Method and system for reducing audio latency
US20060193608A1 (en) * 2005-02-25 2006-08-31 Kim Kun S Method and apparatus for reproducing data from recording medium using local storage
US20060282774A1 (en) * 2005-06-10 2006-12-14 Michele Covell Method and system for improving interactive media response systems using visual cues
US20070022183A1 (en) * 2005-07-22 2007-01-25 Microsoft Corporation Media recording functions in a streaming media server
US20070112932A1 (en) * 2003-09-23 2007-05-17 Ku-Bong Min Upnp-based media contents reproducing system and method thereof
US20090144064A1 (en) * 2007-11-29 2009-06-04 Atsuhiro Sakurai Local Pitch Control Based on Seamless Time Scale Modification and Synchronized Sampling Rate Conversion
US20090248921A1 (en) * 2008-04-01 2009-10-01 Talguk Kim Data processing method and data processing device
US20100086130A1 (en) * 2007-01-17 2010-04-08 Peking University Founder Group Co., Ltd. Digital Content Rights Management Method and System
US20100168885A1 (en) * 2008-12-25 2010-07-01 Huawei Technologies Co., Ltd. Method and device for sending and playing streaming data
US20100205318A1 (en) * 2009-02-09 2010-08-12 Miguel Melnyk Method for controlling download rate of real-time streaming as needed by media player
US20110164178A1 (en) * 2009-12-31 2011-07-07 Patrick Hardy Precise compensation of video propagation duration
US20110273985A1 (en) * 2009-01-20 2011-11-10 Thomson Licensing Method for controlling a flow in a packet switching network
US20110296045A1 (en) * 2010-05-27 2011-12-01 Todd Marc A Streaming media delivery composite
US20120102184A1 (en) * 2010-10-20 2012-04-26 Sony Corporation Apparatus and method for adaptive streaming of content with user-initiated quality adjustments
US20120246276A1 (en) * 2011-03-22 2012-09-27 Hitachi, Ltd. Data synchronization server, system, and data transfer bandwidth control method
US20140267899A1 (en) * 2013-03-13 2014-09-18 Comcast Cable Communications, Llc Methods And Systems For Intelligent Playback
US20170329797A1 (en) * 2016-05-13 2017-11-16 Electronics And Telecommunications Research Institute High-performance distributed storage apparatus and method
WO2021119488A1 (en) * 2019-12-12 2021-06-17 SquadCast, Inc. Simultaneous recording and uploading of multiple audio files of the same conversation
US20230103596A1 (en) * 2021-10-05 2023-04-06 Rovi Guides, Inc. Systems and methods for customizing media player playback speed
EP4174858A1 (en) * 2021-10-28 2023-05-03 Plantronics, Inc. Software-based audio clock drift detection and correction method

Families Citing this family (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453420B1 (en) 1999-04-21 2002-09-17 Research Investment Network, Inc. System, method and article of manufacture for authorizing the use of electronic content utilizing a laser-centric medium
US6941383B1 (en) * 2000-01-20 2005-09-06 Interactual Technologies, Inc. System, method and article of manufacture for java/javascript component in a multimedia synchronization framework
US6529949B1 (en) 2000-02-07 2003-03-04 Interactual Technologies, Inc. System, method and article of manufacture for remote unlocking of local content located on a client device
SG97830A1 (en) * 2000-01-07 2003-08-20 Matsushita Electric Ind Co Ltd Time based multimedia objects streaming apparatus and method
US6985966B1 (en) * 2000-03-29 2006-01-10 Microsoft Corporation Resynchronizing globally unsynchronized multimedia streams
US7584291B2 (en) * 2000-05-12 2009-09-01 Mosi Media, Llc System and method for limiting dead air time in internet streaming media delivery
US6778961B2 (en) * 2000-05-17 2004-08-17 Wconect, Llc Method and system for delivering text-to-speech in a real time telephony environment
US7047312B1 (en) * 2000-07-26 2006-05-16 Nortel Networks Limited TCP rate control with adaptive thresholds
US6801947B1 (en) * 2000-08-01 2004-10-05 Nortel Networks Ltd Method and apparatus for broadcasting media objects with guaranteed quality of service
JP3668110B2 (en) * 2000-08-31 2005-07-06 株式会社東芝 Image transmission system and image transmission method
US7779097B2 (en) 2000-09-07 2010-08-17 Sonic Solutions Methods and systems for use in network management of content
US7689510B2 (en) 2000-09-07 2010-03-30 Sonic Solutions Methods and system for use in network management of content
JP2004508757A (en) * 2000-09-08 2004-03-18 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ A playback device that provides a color slider bar
US6766376B2 (en) 2000-09-12 2004-07-20 Sn Acquisition, L.L.C Streaming media buffering system
AU2002213693A1 (en) * 2000-11-01 2002-05-15 Eyeball Networks Inc. Method and apparatus for improving real time and/or interactive animation over acomputer network
US7356605B1 (en) * 2000-12-29 2008-04-08 Cisco Technology, Inc. System and method for controlling delivery of streaming media
US7085842B2 (en) * 2001-02-12 2006-08-01 Open Text Corporation Line navigation conferencing system
US20020116521A1 (en) * 2001-02-22 2002-08-22 Denis Paul Soft multi-contract rate policing
US20020120747A1 (en) * 2001-02-23 2002-08-29 Frerichs David J. System and method for maintaining constant buffering time in internet streaming media delivery
US7631088B2 (en) * 2001-02-27 2009-12-08 Jonathan Logan System and method for minimizing perceived dead air time in internet streaming media delivery
JP3785966B2 (en) * 2001-08-23 2006-06-14 株式会社村田製作所 Manufacturing method of multilayer ceramic electronic component and multilayer ceramic electronic component
US7453897B2 (en) * 2001-10-03 2008-11-18 Global Ip Solutions, Inc. Network media playout
US6956541B2 (en) * 2001-10-08 2005-10-18 Imagearray, Ltd. Integrated electronic display
US6956545B2 (en) * 2001-10-08 2005-10-18 Imagearray, Ltd. Digital playback device
US20030097478A1 (en) * 2001-10-08 2003-05-22 Imagearray, Ltd. Method and system for synchronizing a presentation
WO2003032290A1 (en) 2001-10-08 2003-04-17 Imagearray, Ltd. Electronic information display system
JP4039086B2 (en) * 2002-03-05 2008-01-30 ソニー株式会社 Information processing apparatus and information processing method, information processing system, recording medium, and program
JP3689063B2 (en) * 2002-04-19 2005-08-31 松下電器産業株式会社 Data receiving apparatus and data distribution system
CN1685639A (en) * 2002-07-31 2005-10-19 夏普株式会社 Data communication device, its intermittent communication method, program describing its method, and recording medium on which program is recorded
FI20021527A0 (en) * 2002-08-27 2002-08-27 Oplayo Oy A method and system for adjusting bandwidth of a media stream
KR20040020639A (en) * 2002-08-31 2004-03-09 삼성전자주식회사 Dynamic control method of realtime multimedia data generation rate, and apparatus thereof.
US20040088161A1 (en) * 2002-10-30 2004-05-06 Gerald Corrigan Method and apparatus to prevent speech dropout in a low-latency text-to-speech system
US20040143675A1 (en) * 2003-01-16 2004-07-22 Aust Andreas Matthias Resynchronizing drifted data streams with a minimum of noticeable artifacts
US7630612B2 (en) * 2003-02-10 2009-12-08 At&T Intellectual Property, I, L.P. Video stream adaptive frame rate scheme
US7548585B2 (en) * 2003-02-10 2009-06-16 At&T Intellectual Property I, L.P. Audio stream adaptive frequency scheme
US6999922B2 (en) * 2003-06-27 2006-02-14 Motorola, Inc. Synchronization and overlap method and system for single buffer speech compression and expansion
US8340972B2 (en) * 2003-06-27 2012-12-25 Motorola Mobility Llc Psychoacoustic method and system to impose a preferred talking rate through auditory feedback rate adjustment
US7596488B2 (en) * 2003-09-15 2009-09-29 Microsoft Corporation System and method for real-time jitter control and packet-loss concealment in an audio signal
JP4183586B2 (en) * 2003-09-12 2008-11-19 三洋電機株式会社 Video display device
US20050283535A1 (en) * 2004-06-17 2005-12-22 Michele Covell Method and system for interactive control of media over a network
US7711841B2 (en) * 2006-02-28 2010-05-04 Sharp Laboratories Of America, Inc. Systems and methods for reducing the effects of variations on the playback of streaming media
US7542039B2 (en) * 2006-08-21 2009-06-02 Pitney Bowes Software Inc. Method and apparatus of choosing ranges from a scale of values in a user interface
US20080144906A1 (en) * 2006-10-09 2008-06-19 General Electric Company System and method for video capture for fluoroscopy and navigation
US7962637B2 (en) * 2006-11-03 2011-06-14 Apple Computer, Inc. Dynamic adjustments of video streams
US7669070B2 (en) * 2007-02-14 2010-02-23 Microsoft Corporation Efficient communication power usage
US8199641B1 (en) 2007-07-25 2012-06-12 Xangati, Inc. Parallel distributed network monitoring
US8639797B1 (en) 2007-08-03 2014-01-28 Xangati, Inc. Network monitoring of behavior probability density
US8223641B2 (en) * 2008-07-28 2012-07-17 Cellco Partnership Dynamic setting of optimal buffer sizes in IP networks
WO2010101650A1 (en) * 2009-03-06 2010-09-10 Ying Xu Method and system for i/o driven rate adaptation
US10992555B2 (en) 2009-05-29 2021-04-27 Virtual Instruments Worldwide, Inc. Recording, replay, and sharing of live network monitoring views
US9557795B1 (en) * 2009-09-23 2017-01-31 Xilinx, Inc. Multiprocessor system with performance control based on input and output data rates
ES2627521T3 (en) * 2010-01-18 2017-07-28 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement to support content reproduction
US8504713B2 (en) * 2010-05-28 2013-08-06 Allot Communications Ltd. Adaptive progressive download
US8122142B1 (en) 2010-10-12 2012-02-21 Lemi Technology, Llc Obtaining and displaying status updates for presentation during playback of a media content stream based on proximity to the point of capture
US8650289B2 (en) 2011-06-03 2014-02-11 Apple Inc. Estimating bandwidth based on server IP address
US9954788B2 (en) 2011-06-03 2018-04-24 Apple Inc. Bandwidth estimation based on statistical measures
US9137285B2 (en) * 2013-10-21 2015-09-15 Broadcom Corporation Adaptive audio video (AV) stream processing
US10708328B2 (en) * 2014-03-17 2020-07-07 Intel Corporation Hardware assisted media playback and capture synchronization
US10178196B2 (en) * 2015-08-21 2019-01-08 Comcast Cable Communications, Llc Local cache maintenance for media content
CN105812902B (en) * 2016-03-17 2018-09-04 联发科技(新加坡)私人有限公司 Method, equipment and the system of data playback
US10568009B2 (en) 2016-07-14 2020-02-18 Viasat, Inc. Variable playback rate of streaming content for uninterrupted handover in a communication system
US10470091B2 (en) 2016-09-07 2019-11-05 Viasat, Inc. Variable size linear video content buffers for uninterrupted handover in a multi-beam satellite system
US11184665B2 (en) 2018-10-03 2021-11-23 Qualcomm Incorporated Initialization set for network streaming of media data

Citations (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175769A (en) * 1991-07-23 1992-12-29 Rolm Systems Method for time-scale modification of signals
US5544324A (en) * 1992-11-02 1996-08-06 National Semiconductor Corporation Network for transmitting isochronous-source data using a frame structure with variable number of time slots to compensate for timing variance between reference clock and data rate
US5630013A (en) * 1993-01-25 1997-05-13 Matsushita Electric Industrial Co., Ltd. Method of and apparatus for performing time-scale modification of speech signals
US5649050A (en) * 1993-03-15 1997-07-15 Digital Voice Systems, Inc. Apparatus and method for maintaining data rate integrity of a signal despite mismatch of readiness between sequential transmission line components
US5652627A (en) * 1994-09-27 1997-07-29 Lucent Technologies Inc. System and method for reducing jitter in a packet-based transmission network
US5692213A (en) * 1993-12-20 1997-11-25 Xerox Corporation Method for controlling real-time presentation of audio/visual data on a computer system
US5694521A (en) * 1995-01-11 1997-12-02 Rockwell International Corporation Variable speed playback system
US5720037A (en) * 1994-06-16 1998-02-17 Lucent Technologies Inc. Multimedia on-demand server
US5745758A (en) * 1991-09-20 1998-04-28 Shaw; Venson M. System for regulating multicomputer data transfer by allocating time slot to designated processing task according to communication bandwidth capabilities and modifying time slots when bandwidth change
US5749064A (en) * 1996-03-01 1998-05-05 Texas Instruments Incorporated Method and system for time scale modification utilizing feature vectors about zero crossing points
US5758076A (en) * 1995-07-19 1998-05-26 International Business Machines Corporation Multimedia server system having rate adjustable data retrieval based on buffer capacity
US5767863A (en) * 1993-10-22 1998-06-16 Auravision Corporation Video processing technique using multi-buffer video memory
US5793980A (en) * 1994-11-30 1998-08-11 Realnetworks, Inc. Audio-on-demand communication system
US5806023A (en) * 1996-02-23 1998-09-08 Motorola, Inc. Method and apparatus for time-scale modification of a signal
US5808662A (en) * 1995-11-08 1998-09-15 Silicon Graphics, Inc. Synchronized, interactive playback of digital movies across a network
US5818436A (en) * 1993-03-15 1998-10-06 Kabushiki Kaisha Toshiba Apparatus and method for playing back continuous data
US5822537A (en) * 1994-02-24 1998-10-13 At&T Corp. Multimedia networked system detecting congestion by monitoring buffers' threshold and compensating by reducing video transmittal rate then reducing audio playback rate
US5842172A (en) * 1995-04-21 1998-11-24 Tensortech Corporation Method and apparatus for modifying the play time of digital audio tracks
US5864682A (en) * 1995-07-14 1999-01-26 Oracle Corporation Method and apparatus for frame accurate access of digital audio-visual information
US5864678A (en) * 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
US5893062A (en) * 1996-12-05 1999-04-06 Interval Research Corporation Variable rate video playback with synchronized audio
US5953506A (en) * 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
US5974503A (en) * 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US5973255A (en) * 1997-05-22 1999-10-26 Yamaha Corporation Electronic musical instrument utilizing loop read-out of waveform segment
US6018359A (en) * 1998-04-24 2000-01-25 Massachusetts Institute Of Technology System and method for multicast video-on-demand delivery system
US6086537A (en) * 1998-06-24 2000-07-11 Ecton, Inc. System for reducing speckle in full motion ultrasound image data by filtering across physiologic cycles
US6123548A (en) * 1994-12-08 2000-09-26 The Regents Of The University Of California Method and device for enhancing the recognition of speech among speech-impaired individuals
US6124878A (en) * 1996-12-20 2000-09-26 Time Warner Cable, A Division Of Time Warner Enterainment Company, L.P. Optimum bandwidth utilization in a shared cable system data channel
US6169843B1 (en) * 1995-12-01 2001-01-02 Harmonic, Inc. Recording and playback of audio-video transport streams
US6230200B1 (en) * 1997-09-08 2001-05-08 Emc Corporation Dynamic modeling for resource allocation in a file server
US6247072B1 (en) * 1998-01-27 2001-06-12 Cisco Technology, Inc. Real-time data rate matching across a medium
US6262724B1 (en) * 1999-04-15 2001-07-17 Apple Computer, Inc. User interface for presenting media information
US6357047B1 (en) * 1997-06-30 2002-03-12 Avid Technology, Inc. Media pipeline with multichannel video processing and playback
US6381635B1 (en) * 1998-11-19 2002-04-30 Ncr Corporation Method for displaying multiple performance measurements of a web site using a platform independent program
US6397251B1 (en) * 1997-09-02 2002-05-28 International Business Machines Corporation File server for multimedia file distribution
US6415326B1 (en) * 1998-09-15 2002-07-02 Microsoft Corporation Timeline correlation between multiple timeline-altered media streams
US6449653B2 (en) * 1997-03-25 2002-09-10 Microsoft Corporation Interleaved multiple multimedia stream for synchronized transmission over a computer network
US20020154694A1 (en) * 1997-03-21 2002-10-24 Christopher H. Birch Bit stream splicer with variable-rate output
US6622171B2 (en) * 1998-09-15 2003-09-16 Microsoft Corporation Multimedia timeline modification in networked client/server systems
US6778760B1 (en) * 1999-04-26 2004-08-17 Microsoft Corporation Method and apparatus for synchronizing audio recordings with digital still frame images

Patent Citations (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5175769A (en) * 1991-07-23 1992-12-29 Rolm Systems Method for time-scale modification of signals
US5745758A (en) * 1991-09-20 1998-04-28 Shaw; Venson M. System for regulating multicomputer data transfer by allocating time slot to designated processing task according to communication bandwidth capabilities and modifying time slots when bandwidth change
US5544324A (en) * 1992-11-02 1996-08-06 National Semiconductor Corporation Network for transmitting isochronous-source data using a frame structure with variable number of time slots to compensate for timing variance between reference clock and data rate
US5630013A (en) * 1993-01-25 1997-05-13 Matsushita Electric Industrial Co., Ltd. Method of and apparatus for performing time-scale modification of speech signals
US5649050A (en) * 1993-03-15 1997-07-15 Digital Voice Systems, Inc. Apparatus and method for maintaining data rate integrity of a signal despite mismatch of readiness between sequential transmission line components
US5818436A (en) * 1993-03-15 1998-10-06 Kabushiki Kaisha Toshiba Apparatus and method for playing back continuous data
US5767863A (en) * 1993-10-22 1998-06-16 Auravision Corporation Video processing technique using multi-buffer video memory
US5692213A (en) * 1993-12-20 1997-11-25 Xerox Corporation Method for controlling real-time presentation of audio/visual data on a computer system
US5822537A (en) * 1994-02-24 1998-10-13 At&T Corp. Multimedia networked system detecting congestion by monitoring buffers' threshold and compensating by reducing video transmittal rate then reducing audio playback rate
US5720037A (en) * 1994-06-16 1998-02-17 Lucent Technologies Inc. Multimedia on-demand server
US5652627A (en) * 1994-09-27 1997-07-29 Lucent Technologies Inc. System and method for reducing jitter in a packet-based transmission network
US5793980A (en) * 1994-11-30 1998-08-11 Realnetworks, Inc. Audio-on-demand communication system
US6123548A (en) * 1994-12-08 2000-09-26 The Regents Of The University Of California Method and device for enhancing the recognition of speech among speech-impaired individuals
US5694521A (en) * 1995-01-11 1997-12-02 Rockwell International Corporation Variable speed playback system
US5842172A (en) * 1995-04-21 1998-11-24 Tensortech Corporation Method and apparatus for modifying the play time of digital audio tracks
US5864682A (en) * 1995-07-14 1999-01-26 Oracle Corporation Method and apparatus for frame accurate access of digital audio-visual information
US5758076A (en) * 1995-07-19 1998-05-26 International Business Machines Corporation Multimedia server system having rate adjustable data retrieval based on buffer capacity
US5808662A (en) * 1995-11-08 1998-09-15 Silicon Graphics, Inc. Synchronized, interactive playback of digital movies across a network
US6169843B1 (en) * 1995-12-01 2001-01-02 Harmonic, Inc. Recording and playback of audio-video transport streams
US5806023A (en) * 1996-02-23 1998-09-08 Motorola, Inc. Method and apparatus for time-scale modification of a signal
US5749064A (en) * 1996-03-01 1998-05-05 Texas Instruments Incorporated Method and system for time scale modification utilizing feature vectors about zero crossing points
US5864678A (en) * 1996-05-08 1999-01-26 Apple Computer, Inc. System for detecting and reporting data flow imbalance between computers using grab rate outflow rate arrival rate and play rate
US5893062A (en) * 1996-12-05 1999-04-06 Interval Research Corporation Variable rate video playback with synchronized audio
US5953506A (en) * 1996-12-17 1999-09-14 Adaptive Media Technologies Method and apparatus that provides a scalable media delivery system
US6124878A (en) * 1996-12-20 2000-09-26 Time Warner Cable, A Division Of Time Warner Enterainment Company, L.P. Optimum bandwidth utilization in a shared cable system data channel
US20020154694A1 (en) * 1997-03-21 2002-10-24 Christopher H. Birch Bit stream splicer with variable-rate output
US6449653B2 (en) * 1997-03-25 2002-09-10 Microsoft Corporation Interleaved multiple multimedia stream for synchronized transmission over a computer network
US5974503A (en) * 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US5973255A (en) * 1997-05-22 1999-10-26 Yamaha Corporation Electronic musical instrument utilizing loop read-out of waveform segment
US6357047B1 (en) * 1997-06-30 2002-03-12 Avid Technology, Inc. Media pipeline with multichannel video processing and playback
US6397251B1 (en) * 1997-09-02 2002-05-28 International Business Machines Corporation File server for multimedia file distribution
US6230200B1 (en) * 1997-09-08 2001-05-08 Emc Corporation Dynamic modeling for resource allocation in a file server
US6247072B1 (en) * 1998-01-27 2001-06-12 Cisco Technology, Inc. Real-time data rate matching across a medium
US6018359A (en) * 1998-04-24 2000-01-25 Massachusetts Institute Of Technology System and method for multicast video-on-demand delivery system
US6086537A (en) * 1998-06-24 2000-07-11 Ecton, Inc. System for reducing speckle in full motion ultrasound image data by filtering across physiologic cycles
US6415326B1 (en) * 1998-09-15 2002-07-02 Microsoft Corporation Timeline correlation between multiple timeline-altered media streams
US6622171B2 (en) * 1998-09-15 2003-09-16 Microsoft Corporation Multimedia timeline modification in networked client/server systems
US6381635B1 (en) * 1998-11-19 2002-04-30 Ncr Corporation Method for displaying multiple performance measurements of a web site using a platform independent program
US6262724B1 (en) * 1999-04-15 2001-07-17 Apple Computer, Inc. User interface for presenting media information
US6778760B1 (en) * 1999-04-26 2004-08-17 Microsoft Corporation Method and apparatus for synchronizing audio recordings with digital still frame images

Cited By (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020019990A1 (en) * 1999-12-08 2002-02-14 Sincaglia Nicolas W. Scheduled retrieval, storage and access of media data
US7565675B2 (en) * 1999-12-08 2009-07-21 Listen.Com, Inc. Scheduled retrieval, storage and access of media data
US7475121B2 (en) * 2001-01-12 2009-01-06 Fujitsu Limited Information distribution apparatus and information distribution method
US20020095466A1 (en) * 2001-01-12 2002-07-18 Fujitsu Limited Information distribution apparatus and information distribution method
US20030229901A1 (en) * 2002-06-06 2003-12-11 International Business Machines Corporation Audio/video speedup system and method in a server-client streaming architecture
US7921445B2 (en) * 2002-06-06 2011-04-05 International Business Machines Corporation Audio/video speedup system and method in a server-client streaming architecture
US20110125868A1 (en) * 2002-06-06 2011-05-26 International Business Machines Corporation Audio/video speedup system and method in a server-client streaming architecture
US9020042B2 (en) 2002-06-06 2015-04-28 International Business Machines Corporation Audio/video speedup system and method in a server-client streaming architecture
US20080005272A1 (en) * 2003-09-23 2008-01-03 Ku-Bong Kim Upnp-based media contents reproducing system and method thereof
US20110055418A1 (en) * 2003-09-23 2011-03-03 Ku-Bong Min UPnP-based media contents reproducing system and method thereof
US20100235531A1 (en) * 2003-09-23 2010-09-16 Ku-Bong Min Upnp-based media contents reproducing system and method thereof
US20070112932A1 (en) * 2003-09-23 2007-05-17 Ku-Bong Min Upnp-based media contents reproducing system and method thereof
US20100235532A1 (en) * 2003-09-23 2010-09-16 Ku-Bong Min Upnp-based media contents reproducing system and method thereof
US20100235533A1 (en) * 2003-09-23 2010-09-16 Ku-Bong Min Upnp-based media contents reproducing system and method thereof
US20100235534A1 (en) * 2003-09-23 2010-09-16 Ku-Bong Min Upnp-based media contents reproducing system and method thereof
US20110055417A1 (en) * 2003-09-23 2011-03-03 Ku-Bong Min UPNP-based media contents reproducing system and method thereof
WO2006074274A3 (en) * 2005-01-05 2007-11-29 Control4 Corp Method and apparatus for synchronizing playback of streaming media in multiple output devices
WO2006074274A2 (en) * 2005-01-05 2006-07-13 Control4 Corporation Method and apparatus for synchronizing playback of streaming media in multiple output devices
US20060184261A1 (en) * 2005-02-16 2006-08-17 Adaptec, Inc. Method and system for reducing audio latency
US7672742B2 (en) * 2005-02-16 2010-03-02 Adaptec, Inc. Method and system for reducing audio latency
US20060193608A1 (en) * 2005-02-25 2006-08-31 Kim Kun S Method and apparatus for reproducing data from recording medium using local storage
US20060282774A1 (en) * 2005-06-10 2006-12-14 Michele Covell Method and system for improving interactive media response systems using visual cues
US9955205B2 (en) * 2005-06-10 2018-04-24 Hewlett-Packard Development Company, L.P. Method and system for improving interactive media response systems using visual cues
US7587507B2 (en) * 2005-07-22 2009-09-08 Microsoft Corporation Media recording functions in a streaming media server
US20070022183A1 (en) * 2005-07-22 2007-01-25 Microsoft Corporation Media recording functions in a streaming media server
US20150067887A1 (en) * 2007-01-17 2015-03-05 Peking University Founder Group Co., Ltd. Digital content rights management method and system
US20100086130A1 (en) * 2007-01-17 2010-04-08 Peking University Founder Group Co., Ltd. Digital Content Rights Management Method and System
US8887299B2 (en) * 2007-01-17 2014-11-11 Peking University Founder Group Co., Ltd. Digital content rights management method and system
US20090144064A1 (en) * 2007-11-29 2009-06-04 Atsuhiro Sakurai Local Pitch Control Based on Seamless Time Scale Modification and Synchronized Sampling Rate Conversion
US8050934B2 (en) * 2007-11-29 2011-11-01 Texas Instruments Incorporated Local pitch control based on seamless time scale modification and synchronized sampling rate conversion
US20090248921A1 (en) * 2008-04-01 2009-10-01 Talguk Kim Data processing method and data processing device
US8412364B2 (en) * 2008-12-25 2013-04-02 Huawei Technologies Co., Ltd. Method and device for sending and playing streaming data
US20100168885A1 (en) * 2008-12-25 2010-07-01 Huawei Technologies Co., Ltd. Method and device for sending and playing streaming data
US20110273985A1 (en) * 2009-01-20 2011-11-10 Thomson Licensing Method for controlling a flow in a packet switching network
US8995268B2 (en) * 2009-01-20 2015-03-31 Thomson Licensing Method for controlling a flow in a packet switching network
US20100205318A1 (en) * 2009-02-09 2010-08-12 Miguel Melnyk Method for controlling download rate of real-time streaming as needed by media player
US8775665B2 (en) * 2009-02-09 2014-07-08 Citrix Systems, Inc. Method for controlling download rate of real-time streaming as needed by media player
US20110164178A1 (en) * 2009-12-31 2011-07-07 Patrick Hardy Precise compensation of video propagation duration
US8774287B2 (en) * 2009-12-31 2014-07-08 Thomson Licensing Precise compensation of video propagation duration
US9680890B2 (en) 2010-05-27 2017-06-13 Ineoquest Technologies, Inc. Streaming media delivery composite
AU2011258151B2 (en) * 2010-05-27 2015-04-23 Ineoquest Technologies, Inc. Streaming media delivery composite
US9197684B2 (en) * 2010-05-27 2015-11-24 Ineoquest Technologies, Inc. Streaming media delivery composite
US20110296045A1 (en) * 2010-05-27 2011-12-01 Todd Marc A Streaming media delivery composite
US20120102184A1 (en) * 2010-10-20 2012-04-26 Sony Corporation Apparatus and method for adaptive streaming of content with user-initiated quality adjustments
US8862700B2 (en) * 2011-03-22 2014-10-14 Hitachi, Ltd. Data server, system, and data transfer bandwidth control method
US20120246276A1 (en) * 2011-03-22 2012-09-27 Hitachi, Ltd. Data synchronization server, system, and data transfer bandwidth control method
US20140267899A1 (en) * 2013-03-13 2014-09-18 Comcast Cable Communications, Llc Methods And Systems For Intelligent Playback
US10171887B2 (en) * 2013-03-13 2019-01-01 Comcast Cable Communications, Llc Methods and systems for intelligent playback
US20170329797A1 (en) * 2016-05-13 2017-11-16 Electronics And Telecommunications Research Institute High-performance distributed storage apparatus and method
WO2021119488A1 (en) * 2019-12-12 2021-06-17 SquadCast, Inc. Simultaneous recording and uploading of multiple audio files of the same conversation
US20230103596A1 (en) * 2021-10-05 2023-04-06 Rovi Guides, Inc. Systems and methods for customizing media player playback speed
EP4174858A1 (en) * 2021-10-28 2023-05-03 Plantronics, Inc. Software-based audio clock drift detection and correction method

Also Published As

Publication number Publication date
US6625656B2 (en) 2003-09-23
WO2000067414A2 (en) 2000-11-09
US20020052967A1 (en) 2002-05-02
AU4691200A (en) 2000-11-17
WO2000067414A3 (en) 2001-04-05

Similar Documents

Publication Publication Date Title
US6625656B2 (en) Method and apparatus for continuous playback or distribution of information including audio-visual streamed multimedia
US10110650B2 (en) Client side stream switching
US6665751B1 (en) Streaming media player varying a play speed from an original to a maximum allowable slowdown proportionally in accordance with a buffer state
CN108184152B (en) Two-stage client code rate selection method for DASH transmission system
US9167007B2 (en) Stream complexity mapping
US20020040403A1 (en) Method and apparatus for providing continuous playback or distribution of audio and audio-visual streamed multimedia received over networks having non-deterministic delays
EP2820819B1 (en) Improved dash client and receiver with playback rate selection
US8218657B2 (en) System and method for automatic adjustment of streaming video bit rate
KR20060051568A (en) Methods and systems for presentation on media obtained from a media stream
US20080133766A1 (en) Method and apparatus for streaming media to a plurality of adaptive client devices
US11206431B2 (en) Systems and methods for selecting an initial streaming bitrate
US20030165150A1 (en) Multi-threshold smoothing
WO2008108379A1 (en) Medium distribution system, distribution server device, medium distribution method used for them, and program thereof
US7245608B2 (en) Codec aware adaptive playout method and playout device
EP3200423A1 (en) Client side stream switching
US7620137B2 (en) System and method for clock drift correction for broadcast audio/video streaming
EP2200319A1 (en) Multiplexed video streaming
US20140108495A1 (en) Adaptive streaming client
KR101982290B1 (en) Streaming system and method based on contents characteristic for improving perceived quality of adaptive streaming service
WO2020125153A1 (en) Smooth network video playback control method based on streaming media technology
JPH10336626A (en) Transfer method and transfer device for video data
WO2016112641A1 (en) Client, streaming media data receiving method and streaming media data transmission system
JP4289129B2 (en) Audio distribution system
JP2011061533A (en) Content distribution system, sensory quality estimating apparatus, method, and program
JP2004214755A (en) Dynamic coding rate revision method and apparatus thereof

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION

AS Assignment

Owner name: VIRENTEM VENTURES, LLC, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EPL HOLDINGS, LLC;REEL/FRAME:035590/0665

Effective date: 20150306

AS Assignment

Owner name: VIRENTEM VENTURES, LLC, CALIFORNIA

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT 8874436 PREVIOUSLY RECORDED ON REEL 035590 FRAME 0665. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:EPL HOLDINGS, LLC;REEL/FRAME:048176/0020

Effective date: 20180830