STREAMING MEDIA ENCODING AGENT FOR TEMPORAL MODIFICATIONS

Abstract: A method and apparatus for playing digital content at a client is disclosed. In one aspect, a plurality of versions of the digital content is generated. Each version of the plurality of versions is generated with the same amplitude but a different wavelength relative to the other plurality of versions. During playback of thedigital content at said client, a selected version of the plurality of versions is used for playing back the content. In response to user input received at said client, a change is made as to which of the plurality of versions to be used as the selected version.

Description: STREAMING MEDIA ENCODING AGENT FOR TEMPORAL MODIFICATIONS CLAIM OF PRIORITY This patent application claims priority from, U.S. Provisional Patent Application No. 60/156,817, filed on September 29, 1999, entitled STREAMING MEDIA ENCODING AGENT FOR TEMPORAL MODIFICATIONS, the content of which is hereby incorporated by reference in its entirety. FIELD OF THE INVENTION The present invention relates to the encoding of streaming media files and more specifically to a mechanism that provides for the speeding up and slowing down of streaming media files. BACKGROUND OF THE INVENTION In recent years, the media industry has expanded its horizons beyond traditional analog technologies. Numerous systems have been developed for transmitting video information digitally from one location to be viewed in real time at another location. As would be expected, the viewers of digital video desire the same functionality from the providers of digital video as they now enjoy while watching analog video tapes on video cassette recorders. For example, viewers want to be able to make the video jump ahead, jump back, fast forward, fast rewind, slow forward, slow rewind and freeze frame. Conventionally, digital video delivered to a particular destination (the "client") is encoded to allow for playback at a specific rate. Thus, the user is typically required to play the entire video at one static rate as they generally have no mechanism for altering the playback speed of the video. In addition, with today's technology, even if a mechanism is provided for changing the playback speed of the digital video, the amplitude of the video signal is altered such that the video sound will be undesirably distorted. Based upon the foregoing, there is a clear need for an improved method for providing media content that allows for multiple playback speed control at a client. SUMMARY OF THE INVENTION According to one aspect of the invention, a method is provided for playing digital content at a client is disclosed. In one aspect, a plurality of versions of the digital content is generated. Each version of the plurality of versions is generated with the same amplitude but a different wavelength relative to the other plurality of versions. During playback of the digital content at said client, a selected version of the plurality of versions is used for playing back the content. In response to user input received at said client, a change is made as to which of the plurality of versions to be used as the selected version. According to another feature, a method for incorporating temporal modifications in streaming media content is performed by generating one or more temporal media files by applying a temporal encoding process to media content. Streaming media data based on the one or more temporal media files is then generated. The streaming media data is delivered to a client and can be played at the client at multiple play rates. The invention also encompasses a computer-readable medium, a computer data signal embodied in a carrier wave, and an apparatus configured to carry out the foregoing steps. Other features and aspects will become apparent from the following description and the appended claims. BRIEF DESCRIPTION OF THE DRAWINGS Embodiments are illustrated by way of example, and not by way of limitation, in the figures of the accompanying drawings in which like reference numerals refer to similar elements and in which: FIG. 1A is a block diagram of a temporal media encoding system in which certain embodiments of the invention may be used; FIG. IB is another block diagram of a temporal media encoding system in which certain embodiments of the invention may be used; FIG. 2 illustrates example of how applying the temporal encoding process allows streaming media data to be sent from the server side at one rate and played on the client side at a dynamically changing second rate; FIG. 3 is a flow diagram that illustrates a method for incorporating temporal modifications in streaming media content in accordance with certain embodiments of the invention; FIG. 4 is a block diagram of a computer system on which embodiments may be implemented; and FIG. 5 is a block diagram that illustrates an example of another temporal media encoding system configuration in which certain embodiments of the invention may be used. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT A method and apparatus for incorporating temporal modifications in streaming media content is described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention. TERMS AND TERMINOLOGY Various terms are used herein to describe embodiments of the invention. In following description: The term "live feed information" refers to information that may be received from analog or digital cameras, satellite or cable feeds or any other mechanism that is capable of providing live feed information. The term "media content" includes one or more of a variety of different types of pre-recorded information, and/or live feed information. The "wavelength" of a media content signal refers to the horizontal length of one cycle of the wave and can be calculated by measuring the distance between any two successive equivalent points on the wave. The "amplitude" of a media content signal refers to the distance between a crest or a trough on the wave and its undisturbed position. The "period" of a media content signal refers to the time required to complete one full cycle of motion. The "frequency" of a wave is merely the reciprocal of the period, or the number of cycles completed in one second. Both the period and the frequency are dependent on the wavelength of the wave. If the media content signal has a long wavelength then its frequency would be lower than if had a short wavelength. The "speed" of a media content signal refers to the rate of presentation of audio or video in the media file, based on changes in frequency of the wave for audio, or number of frames presented for video. A "temporal" modification refers to a change in the frequency of a wave without a corresponding change in the amplitude of a wave. A "temporal media file" refers to a media file which, using temporal modification, the speed of the audio and video is changed through modification of the frequency of the waveform and frame rate of the video. A "variable speed media file" refers to a media file that contains data from multiple temporal media files, where the data from the multiple temporal media files within the variable speed media file can be played selectively based on the user's preferences for presentation of the file. FUNCTIONAL OVERVIEW Techniques are disclosed for enabling a user to increase or decrease the speed in viewing a streaming media file during playback. In one embodiment, the techniques involve encoding streaming media files with wave frequency ("temporal") modifications. Specifically, a streaming media encoding mechanism is configured as a modular collection of methods or processes to manipulate the temporal nature of time-based media, and to encode streaming media data for Internet and broadband playback. The process of manipulating the temporal nature of time-based media involves modifying the frequency of the wave by reducing the wavelength of the wave without modifying the amplitude of the wave. If necessary, the process also involves dropping corresponding frames in the media signal to synchronize audio and video. In certain embodiments, the streaming media encoding mechanism employs a temporal encoding process that alters the frequency of the media content signal independent of the amplitude, and removes frames, to generate one or more temporal media files. In one embodiment, the one or more temporal media files are then bound together and encoded into streaming media packets to emulate variable speed streaming media data. Each packet includes a portion of each of the one or more temporal media files. Header information is attached to each of the packets describing the packets contents. Using a streaming media player, a user may dynamically adjust the playback speed of the streaming media data to emulate different playback rates, such as the "fast- forward" or "slow" functions of a media player. SYSTEM OVERVIEW FIG. 1A is a block diagram of a temporal media encoding system 100 in which certain embodiments of the invention may be used. Generally, temporal media encoding system 100 includes a server 102, a client 110, and one or more network systems 118. As is depicted in FIG. 1A, server 102 and client 110 are connected through one or more network systems 118. These one or more network systems may include, but are not limited to, Local Area Networks (LAN), and Wide Area Networks (WAN), including the Internet and/or other wireless communication mechanisms and/or communication mediums. Thus, embodiments of the invention are not limited to any particular type of communication mechanism, medium or protocol. Server 102 is a combination of hardware and/or software components that are configured for encoding media content with temporal modifications to create one or more temporal media files. The one or more temporal media files are combined and encoded in streaming media format to produce variable speed streaming media data. In this example, server 102 includes a phase encoding unit 104, a streaming encoding unit 106 and a delivery unit 108. The phase encoding unit 104 is configured for generating temporal media files by applying a temporal encoding process to media content. In one embodiment, phase encoding unit 104 is used to manipulate the temporal nature of time-based content media to generate a set of temporal media files. The streaming encoding unit 106 is configured to encode the one or more temporal media files into streaming media format ("streaming media data"). Streaming encoding unit 106 may represent a variety of different types of encoders that are capable of encoding data in a particular encoding format. For example, streaming encoding unit 106 may be configured as a Real, Windows Media, Liquid Audio, MPEG, A2B, Audiobase, MP3, Blade, Xing, QuickTime or any other similar type of encoder. In addition, streaming encoding unit 106 may be either an "off-the-self ' encoding unit or a proprietary encoding unit, as embodiments of the invention are not limited to any particular type of encoder. In one embodiment, streaming encoding unit 106 stores the streaming media data as one or more media files in a storage unit 120. Storage unit 120 may represent a nonvolatile storage device that is part of server 102 or instead may be a separate storage unit that is accessible to server 102, for example over a network with delivery unit 108 to provide the streaming media data, thus potentially reducing the overhead of storing and retrieving the media data from storage unit 120. Delivery unit 108 is configured for delivering streaming media data to client 110 over network 1 18. In one embodiment, in response to a user request from client 1 10, delivery unit 108 retrieves streaming media data from storage unit 120 and delivers the streaming media data to client 1 10 via network system 118. Alternatively, delivery unit 108 may communicate directly with streaming encoding unit 106 to obtain streaming media data for delivery to client 1 10. Client 110 represents a device, such as a personal computer, workstation, or other like device that is capable of communicating with server 104. Client 110 may include a browser application, such as Microsoft Internet Explorer® or Netscape Navigator®, that can request, receive and display electronic documents over a network connect. In one embodiment, client 110 includes a display unit 112 and a media player 122, such as a Real, or Windows Media player. In certain embodiments, media player 122 includes a phase decoder unit 114 and a streaming decoding unit 116. In one embodiment, phase decoder unit 114 is configured as a plug- in component that can be dynamically linked into media player 122. Streaming decoding unit 116 is configured to receive streaming media from server 102 and to communicate the streaming media data to the phase decoder unit 114. The streaming media data is then decoded by the phase decoder unit 114 and played on client 110. Because the media data includes the temporal media information, a user may dynamically select the desired playback speed for playing the streaming media data on client 110. For example, in one embodiment the streaming media data (which includes the variable speed media file information) contains a number of temporal media file portions that each contain the same section of the media content for playback at a different speed (i.e., playback at the original speed, 2x the original, playback at 3x the original etc.) FIG. 2 illustrates an example of a section of a streaming media file 200 that includes multiple packets 202, 204, 206 which each contain a particular portion of the media content (214, 216, 218). As depicted, packets 202, 204, 206 each respectively include a header 208, 210, 212 that describes the information contained in media content portions 214, 216, 218. In one embodiment, the playback speed of the media content can be dynamically changed by switching between the different media content portions 214, 216, 218 that are present within each packet. For example, by switching from content portion 214 of packet 202 to content portion 216 of packet 202, the playback speed of the media content can be increased from IX (original speed) to 2X (twice the speed of normal). In one embodiment, phase decoder unit 1 14 maintains indexes into the content portions 214, 216, 218 of each packet as it is played to allow for dynamically switching between the content portions 214, 216, 218 of a particular packet. In another embodiment, phase decoder unit 114 is configured to switch between the content portions 214, 216, 218 between the playing of two packets. For example, if phase decoder unit 114 receives a request to increase the playback speed (for example to 2X) while in the middle of processing the content portion 214 in packet 202, phase decoder unit 1 14 may wait for the processing of content portion 214 complete and initiate the playback speed change by selecting content portion 216 in packet 204. In certain embodiments, the media player 122 includes a player control component, for example a plug-in component, that provides a set of selectable VCR-like controls on display unit 112. By interacting with the controls, a user can select different options for dynamically controlling the speed at which the streaming media data is played. For example, the player control component may cause two speed control buttons to be displayed on display unit 112; a speed up button and a slow down button. In response to selecting the speed up button, phase decoder 114 automatically switches to a different ("faster playing") temporal media file in the variable speed media file. In switching to the different ("faster playing") temporal media file, the media content begins to play at a faster speed on display unit 112. In one embodiment, phase decoder 122 is configured to automatically switch between the different temporal media files based on a set of playback conditions. For example, if it is determined that a commercial is currently being played on display unit 112, phase decoder 122 may automatically switch to a different ("faster playing") temporal media file to "fast- forward" through the commercial. In addition, server 112 may include additional information in the streaming media content that signals phase decoder unit 1 14 to switch to a different temporal media file to either "fast-forward" or "slow-down" the playing of the media content. OPERATIONAL OVERVIEW As depicted, the temporal encoding process allows the playback speed of the encoded streaming media data to dynamically alter the audio and/or image frame rate independent of the streaming media data amplitude. FIG. 3 is a flow diagram 300 that illustrates a method for incorporating temporal modifications in streaming media content in accordance with certain embodiments of the invention. For explanation purposes, the blocks of FIG. 3 are described in reference to the components of FIG. 1 A and FIG. 2. However, embodiments of the methods disclosed herein are not limited to the example embodiments that are shown in FIG. 1A and FIG. 2. At block 302, the temporal encoding process is applied to media content to generate one or more temporal media files. The media content may take a variety of forms, including but not limited to movies, music, and television shows. For example, the temporal encoding may be applied to a movie to generate one or more temporal media files based on the particular movie. At block 304, the one or more temporal media files are encoded to generate streaming media data. In certain embodiments, the one or more temporal media files may be encoded in multiple media formats using a variety of different encoders. For example, the one or more temporal media files may be encoded to generate streaming media data in both Real and Windows Media format. At block 306, the streaming media data is delivered to a client. For example, using delivery unit 108, the streaming media data may be transmitted from server 102 to client 110 over network 118. At block 308, the streaming media data is received by client 110 and played at a rate that may be dynamically altered, either by the client automatically or in response to the user interacting with the client interface controls. CREATING TEMPORAL MEDIA FILES As previously indicated, a mechanism for incorporating temporal modifications in streaming media content is provided. The temporal encoding process can be applied to a raw media content waveform, before the streaming encoding process, thus allowing multiple output streaming media formats to be supported. Various techniques may be used to generate temporal media files. For example, to generate one or more temporal media files, a "Phase Vocoding" algorithm, generally referred to as a phase vocoder process, may be used to alter the frequency of an audio waveform independent of the amplitude. This "stretching" and "squashing" of the audio signal can also be applied in conjunction with image frame rate modifications, for example the dropping or duplicating frames, to keep the audio and video information synchronized to change the playback speed of encoded streaming media video files. In one embodiment, temporal encoding process uses a Fast Fourier Transform (FFT) to represent a signal as a set of sinusoids. These sinusoids can be manipulated independently to produce different results. In certain embodiments, the Discrete Time Fourier Transform (DTFT) is used to transform a function of the independent variable n (a function of time in this case) to a function of the independent variable omega (digital frequency). The Discrete Fourier Transform (DFT) is then the DTFT evaluated at a number of equally spaced digital frequency values from 0 to pi. The FFT is a tool used to evaluate numerous DFTs with fewer steps than are required by the defining equation. DECODING VARIABLE SPEED STREAMING MEDIA As previously indicated, each "variable speed" media file packet is wrapped with a header that describes the contents of the file. In one embodiment, the header of each file contains metadata that includes information about the temporal media data that is contained in each packet. In response to the user interacting with the speed control buttons at client 110, phase decoder 114 uses the metadata to switch between the different media content portions to dynamically change the playback speed of media content. In one embodiment, server 102 is configured to switch between the temporal media files that are contained within a variable speed media file. For example FIG. IB is a block diagram of a temporal media encoding system 150 in which certain embodiments of the invention may be used. FIG. IB includes many of the same components as shown in FIG. 1 A, and as such like components have been numbered alike. As depicted in FIG. IB, delivery unit 152 includes a selection unit 154 that receives user playback requests from client 1 10. In one embodiment, delivery unit 152 maintains index information into each of the temporal media files that allows the delivery unit to dynamically switch between the temporal media files in a consistent manner. For example, in response to receiving a user playback request to increase the playback speed from 2X to 5X, selection unit 154 identifies a location in the 5X temporal media file that corresponds to the portion currently being played in the 2X temporal media file. Delivery unit 152 then begins streaming the media data from the identified location in the 5X temporal media file to client 116. In response to receiving the streaming media data, streaming decoding unit 116 continues to play the media data, generally unaware that the playback speed of the media data has changed. Still, in certain other embodiments, media player 122 depicted in FIG 1 A is itself configured to modify the frequency of the waveform of the streaming media content and to drop image frames as necessary to keep the images synchronized with the audio portion. For example, in one embodiment, media player 122 includes a phase encoding unit 104, possibly as a plug-in component, which dynamically generates multiple temporal media files and corresponding metadata based on conventional streaming media content. These files are then used by phase decoder unit 114 to dynamically provide variable speed media content for display on display unit 112. HARDWARE OVERVIEW Figure 4 is a block diagram that illustrates a computer system 400 upon which an embodiment of the invention may be implemented. Computer system 400 includes a bus 402 or other communication mechanism for communicating information, and a processor 404 coupled with bus 402 for processing information. Computer system 400 also includes a main memory 406, such as a random access memory (RAM) or other dynamic storage device, coupled to bus 402 for storing information and instructions to be executed by processor 404. Main memory 406 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 404. Computer system 400 further includes a read only memory (ROM) 408 or other static storage device coupled to bus 402 for storing static information and instructions for processor 404. A storage device 410, such as a magnetic disk or optical disk, is provided and coupled to bus 402 for storing information and instructions. Computer system 400 may be coupled via bus 402 to a display 412, such as a cathode ray tube (CRT), for displaying information to a computer user. An input device 414, including alphanumeric and other keys, is coupled to bus 402 for communicating information and command selections to processor 404. Another type of user input device is cursor control 416, such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor 404 and for controlling cursor movement on display 412. This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. The invention is related to the use of computer system 400 for incorporating temporal modifications in streaming media. According to one embodiment of the invention, the insertion of temporal modifications in streaming media is provided by computer system 400 in response to processor 404 executing one or more sequences of one or more instructions contained in main memory 406. Such instructions may be read into main memory 406 from another computer-readable medium, such as storage device 410. Execution of the sequences of instructions contained in main memory 406 causes processor 404 to perform the process steps described herein. One or more processors in a multi-processing arrangement may also be employed to execute the sequences of instructions contained in main memory 406. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software. The term "computer-readable medium" as used herein refers to any medium that participates in providing instructions to processor 404 for execution. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 410. Volatile media includes dynamic memory, such as main memory 406. Transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 402. Transmission media can also take the form of acoustic or light waves, such as those generated during radio wave and infrared data communications. Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or cartridge, a carrier wave as described hereinafter, or any other medium from which a computer can read. Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to processor 404 for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system 400 can receive the data on the telephone line and use an infrared transmitter to convert the data to an infrared signal. An infrared detector coupled to bus 402 can receive the data carried in the infrared signal and place the data on bus 402. Bus 402 carries the data to main memory 406, from which processor 404 retrieves and executes the instructions. The instructions received by main memory 406 may optionally be stored on storage device 410 either before or after execution by processor 404. Computer system 400 also includes a communication interface 418 coupled to bus 402. Communication interface 418 provides a two-way data communication coupling to a network link 420 that is connected to a local network 422. For example, communication interface 418 may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface 418 may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface 418 sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. Network link 420 typically provides data communication through one or more networks to other data devices. For example, network link 420 may provide a connection through local network 422 to a host computer 424 or to data equipment operated by an Internet Service Provider (ISP) 426. ISP 426 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the "Internet" 428. Local network 422 and Internet 428 both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link 420 and through communication interface 418, which carry the digital data to and from computer system 400, are exemplary forms of carrier waves transporting the information. Computer system 400 can send messages and receive data, including program code, through the network(s), network link 420 and communication interface 418. In the Internet example, a server 430 might transmit a requested code for an application program through Internet 428, ISP 426, local network 422 and communication interface 418. In accordance with the invention, one such downloaded application provides for the insertion of temporal modifications in streaming media as described herein. The received code may be executed by processor 404 as it is received, and/or stored in storage device 410, or other non- volatile storage for later execution. In this manner, computer system 400 may obtain application code in the form of a carrier wave. ALTERNATIVES, EXTENSIONS The mechanism described herein provides several advantages over prior approaches for providing streaming media content. In particular, the described techniques provide an improved method for delivering streaming media data that allows the playback speed of the media data to be dynamically changed as it is played at a client without affecting the amplitude of the data. By allowing the speed of the media data to be dynamically altered, adjustments to the playback rate may be made based on the current bandwidth that is available between a server and a client. Thus, if a user is having trouble understanding the voice-over at a particular video speed, they can slow down the playing of the media in an attempt to better understand the content. In addition, if a user wishes to speed through a speech yet still understand the contents of the speech, they can increase the playing speed of the media content. In describing certain embodiments of the invention, several drawing figures have been used for explanation purposes. However, the invention is not limited to any particular context as shown in drawing figures, and the spirit and scope of the invention include other contexts and applications. For example, although embodiments of the invention have illustrated a server delivering streaming media data to a single client, in certain embodiments, as depicted in FIG. 5, a server 502 may be configured with a plurality of phase encoding units 510,512, streaming encoding unit 516, 518 and delivery units 520, 522, 524 and which may be configured to communicate streaming media data to a plurality of clients 504, 506, 508. Additional configurations for encoding media data are described in co-pending U.S. Patent Application No. 09/499,961, filed on February 8, 2000, entitled DISTRIBUTED PRODUCTION SYSTEM FOR DIGITALLY ENCODING INFORMATION, the content of which is hereby incorporated by reference in its entirety. Thus, the specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. In addition, in this disclosure, including in the claims, certain process steps are set forth in a particular order, and alphabetic and alphanumeric labels are used to identify certain steps. Unless specifically stated in the disclosure, embodiments of the invention are not limited to any particular order of carrying out such steps. In particular, the labels are used merely for convenient identification of steps, and are not intended to imply, specify or require a particular order of carrying out such steps.

Claims: CLAIMS What is claimed is: 1. A method for incorporating temporal modifications in streaming media content, the method comprising the computer-implemented steps of: generating one or more temporal media files by applying a temporal encoding process to media content; generate streaming media data based on the one or more temporal media files; and delivering the streaming media data to a client, wherein the streaming media data can be played at the client at multiple play rates. 2. The method as recited in Claim 1 , further comprising the steps of: combining the one or more temporal media files to generate a variable speed media file; generating media content packets based on the variable speed media file, wherein each packet includes media content portions for playing the media content at multiple playback speeds; and wherein the step of delivering the streaming media data comprises the step of delivering media content packets to said client to provide for variable speed playback rates of the media content. 3. The method as recited in Claim 1 , wherein the step of generating one or more temporal media files includes the step of applying a phase vocoder process to the media content to generate the one or more temporal media files. 4. The method as recited in Claim 1, further comprising the steps of: playing the streaming media data at a first playback speed at the client; receiving user input at the client that requests that the streaming media data be played at a second playback speed at the client; and in response to receiving the user input at the client, playing the streaming media data at said second playback speed at said client. 5. A computer-readable medium carrying one or more sequences of instructions for incorporating temporal modifications in streaming media content, wherein execution of the one or more sequences of instructions by one or more processors causes the one or more processors to perform the steps of: generating one or more temporal media files by applying a temporal encoding process to media content; encoding the one or more temporal media files to generate streaming media data; and delivering the streaming media data to a client, wherein the streaming media data can be played at the client at multiple play rates. 6. The computer-readable medium as recited in Claim 5, further comprising instructions for performing the steps of: combining the one or more temporal media files to generate a variable speed media file; generating media content packets based on the variable speed media file, wherein each packet includes media content portions for playing the media content at multiple playback speeds; and wherein the step of delivering the streaming media data comprises the step of delivering media content packets to said client to provide for variable speed playback rates of the media content. 7. The computer-readable medium as recited in Claim 5, wherein the step of generating one or more temporal media files includes the step of applying a phase vocoder process to the media content to generate the one or more temporal media files. 8. The computer-readable medium as recited in Claim 5, further comprising instructions for performing the steps of: playing the streaming media data at a first playback speed at the client; receiving user input at the client that requests that the streaming media data be played at a second playback speed at the client; and in response to receiving the user input at the client, playing the streaming media data at said second playback speed at said client. 9. A server apparatus configured for incorporating temporal modifications in streaming media content, comprising: means for generating one or more temporal media files by applying a temporal encoding process to media content; means for encoding the one or more temporal media files to generate streaming media data; and means for delivering the streaming media data to a client, wherein the streaming media data can be played at the client at multiple play rates. 10. The server apparatus as recited in Claim 9, further comprising: means for combining the one or more temporal media files to generate a variable speed media file; means for generating media content packets based on the variable speed media file, wherein each packet includes media content portions for playing the media content at multiple playback speeds; and wherein the means for delivering the streaming media data comprises means for delivering media content packets to said client to provide for variable speed playback rates of the media content. 11. The server apparatus as recited in Claim 9, wherein the means for generating the one or more temporal media files includes means for applying a phase vocoder process to the media content to generate the one or more temporal media files. 12. A method playing digital content at a client, the method comprising the computer- implemented steps of: generating a plurality of versions of said digital content, wherein each version of said plurality of versions has a same amplitude and a different wavelength relative to the other versions of said plurality of versions; and during playback of said digital content at said client, performing the steps of using a selected version of said plurality of versions for the playback of said content; and changing which version of said plurality of versions to use as said selected version based on user input received at said client.

Inventors: KITE BEVERLY, MATHEWS MAT, TOBIAS MARTIN, KITE, BEVERLY, MATHEWS, MAT, TOBIAS, MARTIN
Applicants: LOUDEYE TECHNOLOGIES INC, LOUDEYE TECHNOLOGIES, INC.
Application year: 2000
Main classification: H04N7
IPC codes: H04L29, H04M3, H04N7