US20020194608A1 - Method and apparatus for a playback enhancement system implementing a "Say Again" feature - Google Patents
Method and apparatus for a playback enhancement system implementing a "Say Again" feature Download PDFInfo
- Publication number
- US20020194608A1 US20020194608A1 US10/133,201 US13320102A US2002194608A1 US 20020194608 A1 US20020194608 A1 US 20020194608A1 US 13320102 A US13320102 A US 13320102A US 2002194608 A1 US2002194608 A1 US 2002194608A1
- Authority
- US
- United States
- Prior art keywords
- playback
- media
- frame
- user
- sac
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 239000000872 buffer Substances 0.000 description 35
- 230000003542 behavioural effect Effects 0.000 description 29
- 230000006870 function Effects 0.000 description 21
- 238000009877 rendering Methods 0.000 description 21
- 230000007246 mechanism Effects 0.000 description 18
- 230000006399 behavior Effects 0.000 description 13
- 238000011084 recovery Methods 0.000 description 12
- 230000009471 action Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 11
- 230000014759 maintenance of location Effects 0.000 description 11
- 230000001965 increasing effect Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 9
- 230000007704 transition Effects 0.000 description 9
- 230000004048 modification Effects 0.000 description 8
- 238000012986 modification Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000000977 initiatory effect Effects 0.000 description 3
- 230000015654 memory Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 208000032041 Hearing impaired Diseases 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000003908 quality control method Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003319 supportive effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000013518 transcription Methods 0.000 description 1
- 230000035897 transcription Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0484—Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/414—Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
- H04N21/4147—PVR [Personal Video Recorder]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/422—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
- H04N21/42203—Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS] sound input device, e.g. microphone
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/439—Processing of audio elementary streams
- H04N21/4392—Processing of audio elementary streams involving audio buffer management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440281—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by altering the temporal resolution, e.g. by frame skipping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/443—OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
- H04N21/4438—Window management, e.g. event handling following interaction with the user interface
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/78—Television signal recording using magnetic recording
- H04N5/782—Television signal recording using magnetic recording on tape
- H04N5/783—Adaptations for reproducing at a rate different from the recording rate
Definitions
- One or more embodiments of the present invention pertain to improving the accuracy and usability of a media work.
- Audio and audio-visual works are stored as data on hard-drives, CD-ROMS, Digital Video Disks (“DVD”), magnetic tape, and servers (such as, for example, and without limitation, file servers or streaming media servers) that are accessible via the Internet for users to download.
- Such audio or audio-visual works may be distributed over a communications channel such as, for example, and without limitation, a computer bus, a local area network (“LAN”), an intranet, and the Internet.
- Digitally encoded audio and audio-visual works may also be distributed over broadcast channels such as cable television channels or radio channels, or over a telephone channel as part of a telephony or other communication system.
- digitally encoded audio and audio-visual works may be captured or synthetically generated and distributed over a communications channel, as described above, without being stored as data in any central location.
- data representing a media work comprises: (a) audio; (b) video, (c) a pictorial representation (cartoon or animation); (d) text; (e) an audio-visual work; (f) a multimedia work; and (g) meta data including, without limitation, transcripts and close captioning) resides in storage, and is transferred to a playback device.
- streaming entails downloading data that represents the audio or audio-visual work, and initiating playback before the entire work has been received.
- One disadvantage of streaming is that from time to time noticeable gaps in audio content and/or defects in visual content occur due to interruptions in the flow of data resulting from network traffic, congestion, transmission errors, and the like.
- this disadvantage can be reduced by utilizing a data buffer within a media player that caches a number of seconds of content. In a typical implementation that provides buffering, media data flows into the buffer before it is consumed by the player.
- the buffer must be kept reasonably full, and thus must be filled before playback commences.
- a re-buffering interruption occurs while buffered portions of the media work are discarded, and the buffer is refilled from the media storage device.
- These re-buffering interruptions can be tedious and annoying since they may occur at the precise moment the user is trying to back up and replay a portion of interest.
- the viewer/listener waits for playback to be resumed, he/she may lose or forget the context of the passage or the previous utterance.
- One prior art method for handling a back up and review request from a user is to require the user to perform a “seek” operation.
- the seek operation may initiate a re-broadcast of an audio or audio-visual work each time a user requests a different location, i.e., a location that is ahead of, or behind, the current playback location in the audio or audio-visual work.
- This prior art method has a disadvantage in that the user must wait before playback of the work begins.
- Another disadvantage of this prior art method in the case of back up and replay for streaming media occurs because a media server must fulfill a request to reposition, and then retransmit data that has already been sent.
- the server is taxed to retransmit information that the playback device or software has recently received. This causes an increase in server load during heavy use since multiple requests may arrive simultaneously, and storage access patterns and broadcast load can vary widely. As a result, the media server's capacity to serve a number of clients in a reasonable time may be limited, and network resources for such retransmission may be limited.
- one embodiment of the present invention is a method for playing a portion of a media work which comprises steps of: (a) playing the media work; (b) receiving input from a user; and (c) analyzing parameters to determine the portion of the media work to play.
- the method further includes a step of altering at least a part of the portion.
- FIG. 1 shows a block diagram of one embodiment of the present invention
- FIG. 2 shows one embodiment of a graphics user interface that is used to present information to, and receive information from, a user to enable the user to trigger a “Say Again” function;
- FIG. 3 shows one embodiment of a graphics user interface that is used to present information to, and receive information from, a user to enable the user to set and/or modify Say Again Behavioral Parameters;
- FIG. 4 shows a block diagram of another embodiment of the present invention.
- FIG. 5 shows a diagram of a buffering scheme utilized to fabricate one embodiment of the present invention.
- One or more embodiments of the present invention entail receiving input from a user providing an indication of a desire for replay of a portion of a media work.
- media work is used in the broadest sense possible, and includes, without limitation, information used to represent, encode, or reconstruct any one or any combination of any one or more of: (a) audio; (b) video, (c) a pictorial representation (cartoon or animation); (d) text; (e) an audio-visual work; (f) a multimedia work; and (g) meta data including, without limitation, transcripts and close captioning.
- further embodiments of the present invention entail receiving input from the user that is used to alter at least a part of the portion of the content to be replayed, or that is used to alter playback control parameters, in an effort to increase the intelligibility of the content being replayed.
- a “Say Again” System is used in the context of a multimedia content store, a plurality of multimedia content servers, a multimedia player, a plurality of multimedia transformation and rendering components, and a plurality of multimedia output devices.
- the storage for the multimedia content may be local to the multimedia player, or the content store and server may be remote from the multimedia player, with the multimedia content delivered as streaming media over a local or wide area network such as the Internet.
- the multimedia player and renderers may be any electronically controllable media processing components, and the output devices may be any of a plurality of digital storage or display devices.
- a user can activate a “Say Again” Trigger Mechanism during playback of multimedia content by a multimedia player program (such as, for example, a RealNetworks® RealPlayer® Media Player or a Microsoft WindowsTM Media Player) by, for example, pressing a button labeled, for example, “Say Again” on a graphics user interface.
- a multimedia player program such as, for example, a RealNetworks® RealPlayer® Media Player or a Microsoft WindowsTM Media Player
- playback is momentarily paused; the current playback location is set back by an amount specified by a Backup Time parameter (for example, five seconds); the playback rate may be reduced from whatever playback rate was in effect when the Say Again button was pressed to a fraction of that playback rate specified by a Repeat Speed parameter (for example, 50 percent); and playback is resumed. Playback continues at the new playback rate until a playback location is reached where the Say Again button was pressed. Playback continues beyond that point at a steadily increasing playback rate, until, after a number of seconds specified by a Recovery Time parameter, the playback rate is once again what it was at the moment that the Say Again button was pressed.
- a Backup Time parameter for example, five seconds
- a Repeat Speed parameter for example, 50 percent
- FIG. 1 shows a block diagram of “Say Again” System 1000 which is fabricated in accordance with one embodiment of the present invention and which provides, among other things, backup and replay of multimedia content (including, without limitation, audio in a wide variety of digital voice platforms and devices).
- User Interface 100 comprises Say Again Trigger Mechanism 110 , and Say Again Parameter Display and Modification Mechanism 120 (“SAPDMM 120 ”) used to set parameters that affect behavior of Say Again System 1000 .
- SAPDMM 120 Say Again Parameter Display and Modification Mechanism
- Say Again Trigger Mechanism 110 provides information to a user (for example, by means of a graphics display), and receives input from the user indicating the user's desire to back-up and repeat a specified segment of a media work being rendered. In response to user input, Say Again Trigger Mechanism 110 produces, as output, Trigger Messages that are applied as input to Say Again Controller 200 from User Interface 100 . Trigger Messages may take any one of a number of forms that are well known to those of ordinary skill in the art for passing information (including, for example, and without limitation, the form of: an electrical signal in the case of a circuit, a software message, an interrupt, a datagram, a packet, or a flag) indicating a trigger has been activated by the user.
- Trigger Mechanism 110 may include the use of the following to receive user input (by way of example but not limitation): a keyboard which is activated by a key press, a keypad having multiple buttons, each with a label, wherein when any of the buttons are pressed, a Trigger Message is constructed with that button's label; a foot pedal which is activated by a foot pedal press; a button on a screen controlled by a software program which is activated by a mouse click; a microphone which is activated by a spoken command; speech recognition; or any other type of input device or mechanism capable of receiving user input.
- the user input may also include input of trigger parameter values. These parameters can be integers, strings, or other variable types, and are encoded into the Trigger Messages.
- FIG. 2 shows one embodiment of a graphics user interface generated by Say Again Trigger Mechanism 110 that is used to present information to, and receive information from, a user to enable the user to trigger a “Say Again” function.
- “Say Again” button 2000 is used to activate the “Say Again” function by mouse click.
- speed control slider 2010 on SpeedBar 2015 is used to control playback speed manually.
- SpeedBar 2015 can be implemented in accordance with one embodiment of the present invention that runs under Microsoft's WindowsTM operating system using commonly-understood techniques for implementing WindowsTM applications dialog boxes.
- FIG. 3 shows one embodiment of a graphics user interface generated by SAPDMM 120 that is used to present information to, and receive information from, a user to enable the user to set and/or modify Say Again Behavioral Parameters.
- FIG. 3 shows Property Sheet dialog box 3000 that can be implemented in accordance with one embodiment of the present invention that runs under Microsoft's WindowsTM operating system using commonly-understood techniques for implementing WindowsTM applications dialog boxes.
- the Say Again Behavioral Parameters are software parameters or variables that the user can set to control the behavior of the Say Again function. As will be described in detail below, their range and scope are chosen so that, in conjunction with user input and the state of Say Again Controller 200 , changing their values will change the behavior and utility of the Say Again function.
- Useful Say Again Behavioral Parameters include, but are not limited to, an amount of time that a playback location should be moved back, a change in playback speed that should be effected during a repetition period, a change in audio volume during a repetition period, and a duration of a recovery period following a repetition.
- that modifiable code constitutes a subset of the Say Again Behavioral Parameters.
- the Say Again Behavioral Parameters that affect actions of Say Again System 1000 include:
- a. Backup Time The number of seconds that a playback location should be pushed back when Say Again button 2000 is pressed. In accordance with one embodiment the default is 5 seconds.
- this parameter is a percentage, i.e., the playback speed will begin at this fraction of the playback rate in effect just before Say Again button 2000 was pressed. In accordance with one embodiment the default is 50%.
- the Say Again Behavioral Parameters are initialized to predetermined “reasonable” values before Say Again System 1000 is brought online. Then, for example, mouse clicking over button 2020 labeled “Properties” enables the user to display and modify the Say Again Behavioral Parameters.
- One advantage of making the Say Again Behavioral Parameters user modifiable is that the user can tune the behavior of the Say Again action to best suit the user's purpose in triggering that Say Again action.
- SAPDMM 120 receives as input: (a) Current Behavioral Parameters from Behavioral Parameter Memory 300 (“BPM 300 ”); (b) and user input (using, by way of example but not limitation: a keyboard which is activated by a key press, a foot pedal which is activated by a foot pedal press; a button on a screen controlled by a software program which is activated by a mouse click; a microphone which is activated by a spoken command; or any other type of input device or mechanism capable of receiving user input) to manipulate the value of a Behavioral Parameter.
- SAPDMM 120 produces as output: Updated Behavioral Parameters that are sent from User Interface 100 to BPM 300 .
- SAPDMM 120 displays the values of the parameters numerically or by pictorial representation and enables the user to manipulate the values.
- BPM 300 (a) receives, as input, values for the Say Again Behavioral Parameters from SAPDMM 120 ; and (b) produces, as output, stored values of the Say Again Behavioral Parameters, which values, in turn, are applied as input to SAPDMM 120 and Say Again Controller 200 .
- the user's preferred parameter values for the Say Again Behavioral Parameters can be stored (or “persisted”) from invocation to invocation of the Say Again mechanism by storing the values in a file, in a database, or in a system repository such as the WindowsTM Registry.
- SAC 200 receives as input: (a) Trigger Messages from Say Again Trigger Mechanism 110 through User Interface 100 ; (b) Current Behavioral Parameters from BPM 300 ; (c) Playback State Messages from Multimedia Player 500 ; and (d) Playback Progress Messages from Multimedia Player 500 .
- SAC 200 produces as output: (a) Player Control Messages that are applied as input to Multimedia Player 500 ; and (b) Playback Mode and Characteristics Messages that are applied as input to Media Rendering Components 600 .
- the Playback Progress Messages are data structures that are created by a sender module, sent to a messaging library for handling, and then delivered to any number of software modules that have registered a method to be invoked by which such message structures are to be delivered to the registering module.
- the message structures actually transmitted, queued, delivered, and processed using such a scheme include so-called Time-Scale Modification (“TSM”) Messages that contain requests for changes in playback speed, and notifications that such changes have been accomplished.
- TSM Time-Scale Modification
- Output Messages in which notifications are broadcast that Multimedia Player 500 has started, paused, or stopped playback, and notifications are broadcast of playback progress, including information as to current playback location in the multimedia content, and the amount of time elapsed since playback last resumed.
- Multimedia Player 500 controls Multimedia Player 500 , including such functions as pausing, seeking backward and forward, resuming play, stopping play, starting up or shutting down any of a plurality of streams within the multimedia content, providing a new stream or locator information identifying a new stream to be played, and any other useful functions of Multimedia Player 500 that can be programmatically controlled.
- the control is carried out using a Component Object Model (“COM”) C++ pure abstract class interface specifying methods for pausing, stopping, and resuming playback, and for seeking to some location within the playback media, beginning either with the beginning or end of the media, or offset from the current location.
- COM Component Object Model
- Say Again Controller 200 controls the mode and perceptual characteristics of playback. Examples include changing playback speed, changing playback volume, and changing the mode or quality of a decoding process used to render multimedia content. If various quality decoding algorithms are available, this enables Say Again Controller 200 to switch from one quality to another. If the source of the player input stream (Multimedia Content Server 400 ) can supply input of various bandwidths, this enables Say Again Controller 200 to switch from one bandwidth to another.
- Multimedia Content Server 400 Multimedia Content Server 400
- the Playback Mode and Characteristics Control Messages are TSM messages discussed above.
- TSM REQUEST messages by generating and broadcasting so-called TSM REQUEST messages, Say Again Controller 200 can request a TSM engine to modify the playback rate, or speed.
- Such messages can also modify the quality of the Time-Scale Modification calculations used, the Time-Scale Modification algorithm used, and/or the amplitude of the audio output.
- SAC 200 comprises a state machine, and techniques for implementing a state machine in software are well known to those of ordinary skill in the art.
- SAC 200 begins in one of a plurality of quiescent states that makes it available for executing the “Say Again” function.
- SAC 200 receives a “Say Again” Trigger Message from Say Again Trigger Mechanism 110 , it executes the Say Again function by effecting a transition to one of a plurality of initial action states.
- SAC 200 transitions from one action state to another in response to various inputs it receives. It may remain in, or transition between, various action states indefinitely, or such transitions may be designed to bring SAC 200 back to some quiescent state after a fixed period of time.
- SAC 200 may send Player Control and Playback Mode and Characteristics Control Messages to effect changes in various playback modes and characteristics. For instance, SAC 200 may raise the volume of the output signal by a certain amount when it enters one of its action states, and then gradually lower the volume over time until the volume has returned to its original level. Other parameters, including but not limited to, playback speed and decoding quality, can also be varied as the result of entry into a particular state, amount of time that SAC 200 has been in a state, upon exit from a particular state, as a function of the amount of content played back while in a particular state, or any combination of these or other system parameters. The time course of such changes may eventually bring the playback modes and characteristics back to their pre-Say Again values, or they may continue changed indefinitely.
- SAC 200 states and their general meaning are as follows:
- SAC 200 effects changes in the playback of multimedia content as SAC 200 enters a particular state, receives playback, temporal, or other information while SAC 200 is in a state, or exits a state. SAC 200 effects these changes by executing program code that invokes Player Control and Playback Mode and Characteristics Control Messages.
- the changes that SAC 200 can effect include, but are not limited to, causing Multimedia Player 500 to jump to a different location in the content (such as backward 4 seconds), playing the material at another speed (such as 50 percent slower), changing the volume (such as play the material 4 dB louder), eliminating one or more streams of content (such as muting a sound track), inducing Multimedia Content Server 400 to switch between an input stream of one bandwidth to another or from one stream to another, or changing the mode of playback (such as switching to a frame-by-frame mode in which each frame of a sequence of images is displayed until the user presses a key, whereupon the next frame is displayed).
- the underlying properties of the media work may be examined, and such information from the analysis of the signal used to determine the type of modification, if any, that may be applied in an effort to increase intelligibility.
- the amplitude of the audio portion of the media relative to the amplitude of the audio portion of previously presented portions of the media work could be examined, and if the amplitude (i.e., volume) were lower than other passages, the replayed portion of the media work may be modified to increase the volume and thereby increase the intelligibility.
- the word rate in the audio portion of the media work can be examined, and used to determine an alternative playback speed which increases intelligibility or transcribability.
- the number of objects, for example faces, in the video portion of a media work can be computed, and used to determine if the video portion of the signal should be replayed with increased clarity by image enhancement techniques, or by requesting a higher quality encoding of the portion of the media work.
- SAC 200 can respond to additional Trigger Messages while it is in any state, including action states, and can handle such “multiple” signals in a meaningful manner.
- the particular Say Again function effected can be dependent on the state that SAC 200 is in when a Trigger Message is detected, and the behavior of SAC 200 may be advantageously different when the user generates a trigger while a previous Say Again action is still underway.
- SAC 200 operates as follows:
- Playback is paused momentarily, the player is instructed to seek backward a number of seconds specified by the Backup Time parameter;
- the program code associated with each state will be fixed. However, it would be advantageous in some embodiments for that program code to be variable so that a user could modify it.
- the program code associated with each state may be one considered to be a subset of the Say Again Behavioral Parameters, and as such, may be displayed to and modified by the user.
- the code could be represented in the form of scripting language text, such as Java, Basic, JavaScript, Perl, Scheme, LISP, etc.
- SAC 200 will comprise a scripting language interpreter, and as each Say Again state is entered, a new set of scripts will be installed for interpretation by SAC 200 .
- the effect of the Say Again function can be completely general, i.e., encompassing changes to the playback characteristics of the multimedia stream as well as other, completely unrelated, effects such as, for example and without limitation, generating and sending text and/or logging information to a file, creating and sending email messages, triggering the launching of other applications, carrying out mathematical computations, creating, altering, deleting, enhancing, storing, and transmitting media content and associated information, creating and inserting bookmarks, tags, and other such information into the media content or an index file for use in future playback of the media work, and so forth.
- Multimedia Content Server 400 provides, as output, media works to Multimedia Player 500 , for example, as streaming media content that is delivered over the Internet, a local-area network (LAN), or from files stored in the computer that is executing Multimedia Player 500 .
- Multimedia Content Server 400 receives, as input, messages or other information conveying requests for: (a) a particular media work; (b) a particular data rate, bit-rate, and/or encoding quality of said media work; (c) a location offset into the media work from which transmission should begin, and (d) various parameters such as buffer fill rate, maximum data delivery rate, and duration of work to send.
- Multimedia Content Server 400 may take the form of a database, local disk cache, local hard drive, or server located in any geographical location connected to a network. For ease of understanding the current invention the numerous possible forms of multimedia server have been omitted.
- Multimedia Player 500 receives, as input: (a) Multimedia Content from Multimedia Content Server 400 ; and produces, as output: (a) Media Data for Rendering that is applied as input to Media Rendering Components 600 .
- Multimedia Player 500 should be understood to be interpreted in the broadest possible sense, and includes without limitation, software programs such as, for example, the RealNetworks® RealPlayer® (D Media Player, WindowsTM Media Player, QuickTimeTM Player, and all manner of software capable of presenting audio, text, video, visual representations, meta-data and any combination of the foregoing running on a computer, for example, under some version of the Microsoft WindowsTM operating system.
- Embodiments of the present invention may be implemented on, in, or as a general purpose computer, a so-called Personal Digital Assistant (PDA), a set-top box, and Internet appliance, a consumer or professional entertainment device, an electronic game, a telephone, a communication device, a television set, a radio, or a player of some other sort.
- PDA Personal Digital Assistant
- Media Rendering Components 600 receives, as input, Media Data for Rendering, and produces, as output, raw media samples to be rendered such as PCM-coded audio signals or image bitmap values.
- Media Rendering Components 600 controls the appearance, timing, and quality of the media renditions—that is, the final presentations of the audio, video, or other contents of the media. It also may be responsible for decoding Media Data that has been encoded for reasons having to do with efficiency of transmission, robustness of representation, security and privacy of the information transmitted, or for many other reasons.
- Execution of Media Rendering Components 600 is controlled by various control parameters, including but not limited to a) a volume control parameter; b) a playback rate control parameter; c) a decoding quality control parameter; d) a stereo balance control parameter; and e) a color temperature control parameter.
- SAC 200 can control the behavior and performance of Media Rendering Components 600 by sending, from time to time, updated values of these and other control parameters to Media Rendering Components 600 in Playback Mode and Characteristics Control Messages.
- Media Output Devices 700 receive, as input, Media Data for Output.
- Media Output Devices 700 are well known to those of ordinary skill in the art, and a variety of commercially available components are available to render Media Data for Output including without limitation: (a) sound cards for audio, and (b) computer graphics cards, frame-buffers, monitors, televisions, and the like for video and text.
- the Say Again button can be pressed multiple times in rapid succession. The first time the button is pressed, the behavior is as described above. After that, the behavior is as follows:
- the effective Backup Time is increased (for example, doubled)
- the current location is again set back (for example, twice as far as the last time)
- the effective Recovery Time is increased (for example, doubled). The location at which recovery begins remains unchanged. This increase (for example, doubling) of Backup Time and Recovery Time continues each time that the button is pressed during a particular Backup Period.
- SAC 200 interprets this action to mean, “I want to listen to the same material again, and don't be so quick to speed up.” Accordingly, playback is momentarily paused, the current location is set once again to the location where the just-completed repetition began, and playback begins again. The speed is the usual Say Again speed. However, the effective Recovery Period is increased (for example, to be twice as long as the original setting).
- FIG. 1 shows embodiment 1000 to be comprised of separate modules
- User Interface 100 Say Again Trigger Mechanism 110 , Say Again Parameter Display and Modification Mechanism 120 , Behavioral Parameter Memory 300 , Say Again Controller 200 , Controller Finite State Machine 210 , Multimedia Content Server 400 , Multimedia Player 500 , and Media Rendering Components 600 are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. It should be well known to one of ordinary skill in the art, in light of the detailed description above, how to implement these programs or modules in software.
- components of embodiment 1000 may exist in separate locations connected to one another via a network or any other communication means (where the use of the term means is used in the broadest sense possible).
- embodiments of the present invention include the use of any one of a number of algorithms for determining the behavior of the overall system. Parameters such as duration, playback speeds, and rewind intervals can all be determined by heuristics, adaptive algorithms, neural networks and the like.
- any Say Again processing is automatically cancelled.
- Say Again processing is also cancelled when the user stops the player, and whenever playback reaches the end of a media file or stream.
- the Say Again button is disabled, and may not be pressed; however, the Say Again properties may be displayed and modified.
- playback rate and TSM rate and the terms playback and playback apparatus
- these terms should be understood to include any type of presentation rate (i.e., a rate of presentation of information) and any type of presentation apparatus. As such, these terms are to be understood as being used in the broadest sense.
- media, media work, media data, media broadcast, audio or audio-visual work, and information these terms should be understood to refer to any type of information or data. As such, these terms are to be understood as being used in the broadest sense.
- Clarifying an address quickly with a “Say Again” feature can provide an important reduction in response times.
- repeating targeting information such as longitude and latitude coordinates quickly may be vital to achieving a quick and accurate response.
- a public service announcement regarding emergency information, safety information, emergency response, and the like may be missed if a user is listening at a very fast rate (learning impaired and hearing impaired individuals may wish to have important public service or emergency broadcasts played at playback rates below the normal playback rate to aid in comprehension).
- One or more embodiments of another aspect of the present invention enable “instantaneous” replaying of Multimedia Content that has been streamed from Multimedia Content Server 400 (for example, a remote server).
- Multimedia Player 500 Normally, in order for Multimedia Player 500 to replay recently played media content, Multimedia Player 500 must send a message to Multimedia Server 400 , asking it to retransmit the data for the desired Multimedia Content to be replayed. This may be necessary even though a local copy of the desired data recently resided in the player, because in a typical embodiment of Multimedia Player 500 , Multimedia Content is discarded by Multimedia Player 500 as soon as a segment it describes has been rendered.
- Such artifacts are undesirable, and many such artifacts can be avoided by retaining a certain amount of Multimedia Content in Media Input Buffer 510 for some period of time even after it has been played.
- FIG. 5 shows a diagram of a buffering scheme utilized to fabricate one embodiment of the present invention.
- Multimedia Content is stored in Media Input Buffer 510 in the form of a plurality of Media Frames 511 wherein each Media Frame holds information necessary to render a moment or interval of Multimedia Content.
- Frame Timestamp 512 Associated with each frame is Frame Timestamp 512 which specifies the time within the presentation of the moment or interval described by the contents of Media Frame 511 .
- a set of pointers to individual frames in Media Input Buffer 510 is maintained, which pointers are:
- pointer 516 points to a frame holding the most advanced (latest in time) Multimedia Data in Media Input Buffer 510 that has been played so far.
- media frames arrive from Multimedia Content Server 400 in time-sequential order, with frames having earlier timestamps generally arriving before frames having later timestamps.
- the frame occupancy of Media Input Buffer 510 is then managed, and “Rapid Replay” made possible, using methods similar to the following.
- Media Input Buffer 510 If Media Input Buffer 510 is empty, the first frame to arrive from Multimedia Content Server 400 is stored in Media Input Buffer 510 . Oldest Frame pointer 514 and Youngest Frame pointer 517 are set to point to that frame. Current Frame pointer 515 and Furthest Frame Played pointer 516 are set to a null value.
- Media Input Buffer 510 is not empty when a frame arrives from Multimedia Content Server 400 , the newly arrived frame is stored in Media Input Buffer 510 . If its timestamp is earlier than the timestamp of the frame pointed to by Oldest Frame pointer 514 , that pointer is modified to point to the newly arrived frame. If the timestamp associated with the newly arrived frame is later than the timestamp associated with the frame pointed to by Youngest Frame pointer 517 , that pointer is modified to point to the newly arrived frame.
- Multimedia Player 500 begins to process the first frame.
- Current Frame pointer 515 and Furthest Frame Played pointer 516 are set to point to the first frame being processed, which is the frame pointed to by Oldest Frame pointer 514 .
- Multimedia Player 500 is ready to process another frame. Each time this occurs, Current Frame pointer 515 is compared to Youngest Frame pointer 517 . If pointer 515 and pointer 517 are equal, playback pauses until another frame arrives from Multimedia Content Server 400 , is stored in Media Input Buffer 510 , and Youngest Frame pointer 517 has advanced to point to the newly acquired frame. When pointer 517 points to a frame with a later timestamp than pointer 515 , pointer 515 is advanced to the next temporally sequential frame in Media Input Buffer 510 .
- Multimedia Player 500 Whenever Multimedia Player 500 receives a Player Control Message requesting a repositioning of its playback location to a media position corresponding to any Media Frame 511 that is stored in Media Input Buffer 510 , it can accomplish that repositioning in Rapid Playback Mode.
- the necessary Multimedia Content information is stored in Media Input Buffer 510 , and Multimedia Player 500 can reposition its current location and begin playback immediately.
- the largest jump back in time that Multimedia Player 500 can accomplish in Rapid Replay mode is the difference between the timestamp of the Current Frame, and the timestamp of the Youngest Frame. This is called the Current Retention Time.
- the maximum possible jump back in time is possible when Multimedia Player 500 is not currently replaying content—that is, when Furthest Frame Played pointer 516 is equal to Current Frame pointer 515 .
- Desired Retention Time is maintained.
- Desired Retention Time value is calculated from a Behavioral Parameter Backup Time.
- Desired Retention Time may be calculated as:
- the decision rule to determine whether the Youngest Frame should be discarded may take into account the current playback speed.
- One possible decision rule is to discard the Youngest Frame if Maximum Retention Time is greater than the product of Desired Retention Time and the current playback speed. Thus, twice the usual media content would be kept on hand if the current playback speed was twice the normal playback speed.
- Other suitable such decision rules will occur to those of ordinary skill in the art.
- all or some of the Say Again functionality described above, for example but not limited to the Rapid Replay functionality, is implemented by maintaining a Rendering Data Input Buffer (RDIB) in association with each Media Rendering Component 600 .
- RTIB Rendering Data Input Buffer
- the RDIB for each Component holds the media-specific rendering data sent to that Component by Multimedia Player 500 .
- each of these RDIBs hold some data which has not yet been processed by its corresponding Media Rendering Component, and some data which recently has been processed by that Component.
- Associated with each RDIB is a set of pointers parallel in function to the Frame pointers 514 , 515 , 516 , and 517 .
- SAC 200 when a Say Again function is triggered, SAC 200 sends appropriate Playback Mode Control Messages to each Media Rendering Component 600 . These Messages instruct each Component to move its RDIB current position pointer to the desired playback location for its corresponding media stream. SAC 200 then restarts each Media Rendering Component 600 .
- Multimedia Player 500 may continue to run without any changed.
- SAC 200 may temporarily pause the Player so as to prevent data overrun in the Rendering Data Input Buffers, or may instruct the Player to perform some other supportive function, such as generating rendering data with some altered characteristics.
- embodiments of the preset invention include the use of any number of behavioral parameters, or code behaviors that affect playback and are not limited to the specific behavioral parameters discussed or described above.
- behavioral parameters may further include parameters such as: playback location, playback speed; encoding quality; rendered quality, and durations for such parameters to take effect.
- playback speed should resume to a playback speed in effect at the point in the media work when the “Say Again” trigger was invoked, the present invention is not thusly limited.
- embodiments of the present invention exist in which the playback rate is increased, decreased, or moved toward a target playback rate (in accordance with any method of interpreting the behavioral parameters), which playback rate changes can occur at locations which are prior to, or after the location in the media work at which point the trigger was activated.
- the distance from the trigger invocation location can be specified as an offset, a percentage, or means for calculating an amount from the trigger invocation location, etc.
- a behavioral parameter may indicate that, upon activation of a trigger mechanism, the encoding quality, and possibly the data rate of the media work, should be decreased while playback speed is increased.
- this may serve to accommodate limited network bandwidth.
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Human Computer Interaction (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
One embodiment of the present invention is a method for playing a portion of a media work which includes steps of: (a) playing the media work; (b) receiving input from a user; and (c) analyzing parameters to determine the portion of the media work to play; (d) altering at least a part of the portion; and (e) playing the portion.
Description
- This application claims the benefit under 35 U.S.C. 119(e) of U.S. Provisional Application No. 60/286,881, filed on Apr. 26, 2001.
- One or more embodiments of the present invention pertain to improving the accuracy and usability of a media work.
- Many digitally encoded audio and audio-visual works are stored as data on hard-drives, CD-ROMS, Digital Video Disks (“DVD”), magnetic tape, and servers (such as, for example, and without limitation, file servers or streaming media servers) that are accessible via the Internet for users to download. Such audio or audio-visual works may be distributed over a communications channel such as, for example, and without limitation, a computer bus, a local area network (“LAN”), an intranet, and the Internet. Digitally encoded audio and audio-visual works may also be distributed over broadcast channels such as cable television channels or radio channels, or over a telephone channel as part of a telephony or other communication system. In addition, digitally encoded audio and audio-visual works may be captured or synthetically generated and distributed over a communications channel, as described above, without being stored as data in any central location. In accordance with any such distribution, data representing a media work (i.e., any one or any combination of any one or more of) comprises: (a) audio; (b) video, (c) a pictorial representation (cartoon or animation); (d) text; (e) an audio-visual work; (f) a multimedia work; and (g) meta data including, without limitation, transcripts and close captioning) resides in storage, and is transferred to a playback device.
- Often when listening to a media work that is being played back, a listener will realize that he/she did not hear, or see, or understand something that was just presented. For example, if the media work is a recorded telephone message, a speaker may have spoken a telephone number too rapidly to be copied down or memorized. Or, if the media work is a lecture, the lecturer may have said something that was difficult to understand; or the lecturer may have presented a complex diagram momentarily, and immediately moved on to something else. This problem may occur when the media work is played back at a normal rate. However, if the media work is played back at a playback rate that is faster than normal (using for example, but not exclusively, Time-Scale Modification technology available from Enounce Incorporated of Palo Alto, Calif.) this problem may occur more frequently. In these situations, a listener or viewer will attempt to back up and replay a portion of the work.
- One well-known technique for providing playback of an audio or audio-visual work is referred to as “streaming.” As is well known, streaming entails downloading data that represents the audio or audio-visual work, and initiating playback before the entire work has been received. One disadvantage of streaming is that from time to time noticeable gaps in audio content and/or defects in visual content occur due to interruptions in the flow of data resulting from network traffic, congestion, transmission errors, and the like. However, this disadvantage can be reduced by utilizing a data buffer within a media player that caches a number of seconds of content. In a typical implementation that provides buffering, media data flows into the buffer before it is consumed by the player.
- To minimize the gaps or defects described above, the buffer must be kept reasonably full, and thus must be filled before playback commences. As a result, whenever a user skips to a new location in the media stream, including a location already played, a re-buffering interruption occurs while buffered portions of the media work are discarded, and the buffer is refilled from the media storage device. These re-buffering interruptions can be tedious and annoying since they may occur at the precise moment the user is trying to back up and replay a portion of interest. In addition, as the viewer/listener waits for playback to be resumed, he/she may lose or forget the context of the passage or the previous utterance.
- One prior art method for handling a back up and review request from a user is to require the user to perform a “seek” operation. For streaming media, for example, and without limitation, the seek operation may initiate a re-broadcast of an audio or audio-visual work each time a user requests a different location, i.e., a location that is ahead of, or behind, the current playback location in the audio or audio-visual work. This prior art method has a disadvantage in that the user must wait before playback of the work begins. Another disadvantage of this prior art method in the case of back up and replay for streaming media occurs because a media server must fulfill a request to reposition, and then retransmit data that has already been sent. As a result, the server is taxed to retransmit information that the playback device or software has recently received. This causes an increase in server load during heavy use since multiple requests may arrive simultaneously, and storage access patterns and broadcast load can vary widely. As a result, the media server's capacity to serve a number of clients in a reasonable time may be limited, and network resources for such retransmission may be limited.
- As one can readily appreciate from the above, a need exists in the art for a method and apparatus for solving one or more of the above-described problems.
- One or more embodiments of the present invention advantageously satisfy one or more of the above-described problems. In particular, one embodiment of the present invention is a method for playing a portion of a media work which comprises steps of: (a) playing the media work; (b) receiving input from a user; and (c) analyzing parameters to determine the portion of the media work to play. In accordance with another embodiment of the present invention, the method further includes a step of altering at least a part of the portion.
- FIG. 1 shows a block diagram of one embodiment of the present invention;
- FIG. 2 shows one embodiment of a graphics user interface that is used to present information to, and receive information from, a user to enable the user to trigger a “Say Again” function;
- FIG. 3 shows one embodiment of a graphics user interface that is used to present information to, and receive information from, a user to enable the user to set and/or modify Say Again Behavioral Parameters;
- FIG. 4 shows a block diagram of another embodiment of the present invention; and
- FIG. 5 shows a diagram of a buffering scheme utilized to fabricate one embodiment of the present invention.
- One or more embodiments of the present invention entail receiving input from a user providing an indication of a desire for replay of a portion of a media work. As used herein, the term media work is used in the broadest sense possible, and includes, without limitation, information used to represent, encode, or reconstruct any one or any combination of any one or more of: (a) audio; (b) video, (c) a pictorial representation (cartoon or animation); (d) text; (e) an audio-visual work; (f) a multimedia work; and (g) meta data including, without limitation, transcripts and close captioning. In addition, further embodiments of the present invention entail receiving input from the user that is used to alter at least a part of the portion of the content to be replayed, or that is used to alter playback control parameters, in an effort to increase the intelligibility of the content being replayed.
- In accordance with one embodiment of the present invention, a “Say Again” System is used in the context of a multimedia content store, a plurality of multimedia content servers, a multimedia player, a plurality of multimedia transformation and rendering components, and a plurality of multimedia output devices. The storage for the multimedia content may be local to the multimedia player, or the content store and server may be remote from the multimedia player, with the multimedia content delivered as streaming media over a local or wide area network such as the Internet. The multimedia player and renderers may be any electronically controllable media processing components, and the output devices may be any of a plurality of digital storage or display devices.
- In accordance with one such embodiment, a user can activate a “Say Again” Trigger Mechanism during playback of multimedia content by a multimedia player program (such as, for example, a RealNetworks® RealPlayer® Media Player or a Microsoft Windows™ Media Player) by, for example, pressing a button labeled, for example, “Say Again” on a graphics user interface. When the Say Again button is pressed, the Say Again Trigger Mechanism is activated. In response, playback is momentarily paused; the current playback location is set back by an amount specified by a Backup Time parameter (for example, five seconds); the playback rate may be reduced from whatever playback rate was in effect when the Say Again button was pressed to a fraction of that playback rate specified by a Repeat Speed parameter (for example, 50 percent); and playback is resumed. Playback continues at the new playback rate until a playback location is reached where the Say Again button was pressed. Playback continues beyond that point at a steadily increasing playback rate, until, after a number of seconds specified by a Recovery Time parameter, the playback rate is once again what it was at the moment that the Say Again button was pressed.
- FIG. 1 shows a block diagram of “Say Again”
System 1000 which is fabricated in accordance with one embodiment of the present invention and which provides, among other things, backup and replay of multimedia content (including, without limitation, audio in a wide variety of digital voice platforms and devices). As shown in FIG. 1,User Interface 100 comprises SayAgain Trigger Mechanism 110, and Say Again Parameter Display and Modification Mechanism 120 (“SAPDMM 120”) used to set parameters that affect behavior ofSay Again System 1000. - Say Again Trigger
Mechanism 110 provides information to a user (for example, by means of a graphics display), and receives input from the user indicating the user's desire to back-up and repeat a specified segment of a media work being rendered. In response to user input, SayAgain Trigger Mechanism 110 produces, as output, Trigger Messages that are applied as input to SayAgain Controller 200 fromUser Interface 100. Trigger Messages may take any one of a number of forms that are well known to those of ordinary skill in the art for passing information (including, for example, and without limitation, the form of: an electrical signal in the case of a circuit, a software message, an interrupt, a datagram, a packet, or a flag) indicating a trigger has been activated by the user. - Say Again Trigger
Mechanism 110 may include the use of the following to receive user input (by way of example but not limitation): a keyboard which is activated by a key press, a keypad having multiple buttons, each with a label, wherein when any of the buttons are pressed, a Trigger Message is constructed with that button's label; a foot pedal which is activated by a foot pedal press; a button on a screen controlled by a software program which is activated by a mouse click; a microphone which is activated by a spoken command; speech recognition; or any other type of input device or mechanism capable of receiving user input. The user input may also include input of trigger parameter values. These parameters can be integers, strings, or other variable types, and are encoded into the Trigger Messages. - FIG. 2 shows one embodiment of a graphics user interface generated by Say
Again Trigger Mechanism 110 that is used to present information to, and receive information from, a user to enable the user to trigger a “Say Again” function. As shown in FIG. 2, “Say Again” button 2000 is used to activate the “Say Again” function by mouse click. As further shown in FIG. 2, speed control slider 2010 on SpeedBar 2015 is used to control playback speed manually. SpeedBar 2015 can be implemented in accordance with one embodiment of the present invention that runs under Microsoft's Windows™ operating system using commonly-understood techniques for implementing Windows™ applications dialog boxes. - In accordance with this embodiment, whenever a mouse click is made over button2000 labeled “Say Again,” Say
Again Trigger Mechanism 110 generates a Say Again Message that is sent fromUser Interface 100 to SayAgain Controller 200. Whenever a mouse click is made over button 2020 labeled “Properties,”SAPDMM 120 displays Say Again Property Sheet shown in FIG. 3. - FIG. 3 shows one embodiment of a graphics user interface generated by
SAPDMM 120 that is used to present information to, and receive information from, a user to enable the user to set and/or modify Say Again Behavioral Parameters. In particular, FIG. 3 shows Property Sheet dialog box 3000 that can be implemented in accordance with one embodiment of the present invention that runs under Microsoft's Windows™ operating system using commonly-understood techniques for implementing Windows™ applications dialog boxes. - In accordance with one embodiment of the present invention, the Say Again Behavioral Parameters are software parameters or variables that the user can set to control the behavior of the Say Again function. As will be described in detail below, their range and scope are chosen so that, in conjunction with user input and the state of
Say Again Controller 200, changing their values will change the behavior and utility of the Say Again function. - Useful Say Again Behavioral Parameters include, but are not limited to, an amount of time that a playback location should be moved back, a change in playback speed that should be effected during a repetition period, a change in audio volume during a repetition period, and a duration of a recovery period following a repetition. In addition, as will be described below, for embodiments in which a user can modify code that is executed by
Say Again Controller 200, that modifiable code constitutes a subset of the Say Again Behavioral Parameters. - In accordance with one embodiment of the present invention, the Say Again Behavioral Parameters that affect actions of
Say Again System 1000 include: - a. Backup Time: The number of seconds that a playback location should be pushed back when Say Again button2000 is pressed. In accordance with one embodiment the default is 5 seconds.
- b. Repeat Speed: In accordance with one embodiment, this parameter is a percentage, i.e., the playback speed will begin at this fraction of the playback rate in effect just before Say Again button2000 was pressed. In accordance with one embodiment the default is 50%.
- c. Recovery Time: The number of seconds over which the playback rate should climb from a “Say Again” playback rate to the original playback rate when playback once again reaches the point at which Say Again button2000 was pressed. In accordance with one embodiment the default is 5 seconds.
- In accordance with one embodiment of the present invention, the Say Again Behavioral Parameters are initialized to predetermined “reasonable” values before
Say Again System 1000 is brought online. Then, for example, mouse clicking over button 2020 labeled “Properties” enables the user to display and modify the Say Again Behavioral Parameters. One advantage of making the Say Again Behavioral Parameters user modifiable is that the user can tune the behavior of the Say Again action to best suit the user's purpose in triggering that Say Again action. - As shown in FIG. 1,
SAPDMM 120 receives as input: (a) Current Behavioral Parameters from Behavioral Parameter Memory 300 (“BPM 300”); (b) and user input (using, by way of example but not limitation: a keyboard which is activated by a key press, a foot pedal which is activated by a foot pedal press; a button on a screen controlled by a software program which is activated by a mouse click; a microphone which is activated by a spoken command; or any other type of input device or mechanism capable of receiving user input) to manipulate the value of a Behavioral Parameter.SAPDMM 120 produces as output: Updated Behavioral Parameters that are sent fromUser Interface 100 toBPM 300.SAPDMM 120 displays the values of the parameters numerically or by pictorial representation and enables the user to manipulate the values. - As further shown in FIG. 1, BPM300: (a) receives, as input, values for the Say Again Behavioral Parameters from
SAPDMM 120; and (b) produces, as output, stored values of the Say Again Behavioral Parameters, which values, in turn, are applied as input to SAPDMM 120 andSay Again Controller 200. The user's preferred parameter values for the Say Again Behavioral Parameters can be stored (or “persisted”) from invocation to invocation of the Say Again mechanism by storing the values in a file, in a database, or in a system repository such as the Windows™ Registry. There are many techniques that are well known to those of ordinary skill in the art for receiving, storing, retrieving and outputting digital values, for example using random access memories, hard disks, registry settings, local files, and the like. - As further shown in FIG. 1, Say Again Controller200 (“
SAC 200”) receives as input: (a) Trigger Messages from SayAgain Trigger Mechanism 110 throughUser Interface 100; (b) Current Behavioral Parameters fromBPM 300; (c) Playback State Messages fromMultimedia Player 500; and (d) Playback Progress Messages fromMultimedia Player 500.SAC 200 produces as output: (a) Player Control Messages that are applied as input toMultimedia Player 500; and (b) Playback Mode and Characteristics Messages that are applied as input toMedia Rendering Components 600. - In accordance with one embodiment of the present invention, the Playback Progress Messages are data structures that are created by a sender module, sent to a messaging library for handling, and then delivered to any number of software modules that have registered a method to be invoked by which such message structures are to be delivered to the registering module. The message structures actually transmitted, queued, delivered, and processed using such a scheme include so-called Time-Scale Modification (“TSM”) Messages that contain requests for changes in playback speed, and notifications that such changes have been accomplished. They also include Output Messages, in which notifications are broadcast that
Multimedia Player 500 has started, paused, or stopped playback, and notifications are broadcast of playback progress, including information as to current playback location in the multimedia content, and the amount of time elapsed since playback last resumed. - In accordance with one embodiment of the present invention,
Say Again Controller 200 controlsMultimedia Player 500, including such functions as pausing, seeking backward and forward, resuming play, stopping play, starting up or shutting down any of a plurality of streams within the multimedia content, providing a new stream or locator information identifying a new stream to be played, and any other useful functions ofMultimedia Player 500 that can be programmatically controlled. In accordance with one embodiment of the present invention, the control is carried out using a Component Object Model (“COM”) C++ pure abstract class interface specifying methods for pausing, stopping, and resuming playback, and for seeking to some location within the playback media, beginning either with the beginning or end of the media, or offset from the current location. Both the RealNetworks® RealPlayer® Media Player and Microsoft Windows™ Media Player support such COM interfaces, and both RealNetworks and Microsoft offer Software Development Kits (SDKs) which document how their player products can be controlled using those interfaces. - In accordance with one embodiment of the present invention,
Say Again Controller 200 controls the mode and perceptual characteristics of playback. Examples include changing playback speed, changing playback volume, and changing the mode or quality of a decoding process used to render multimedia content. If various quality decoding algorithms are available, this enablesSay Again Controller 200 to switch from one quality to another. If the source of the player input stream (Multimedia Content Server 400) can supply input of various bandwidths, this enablesSay Again Controller 200 to switch from one bandwidth to another. - In accordance with one embodiment of the present invention, the Playback Mode and Characteristics Control Messages are TSM messages discussed above. For example, by generating and broadcasting so-called TSM REQUEST messages,
Say Again Controller 200 can request a TSM engine to modify the playback rate, or speed. Such messages can also modify the quality of the Time-Scale Modification calculations used, the Time-Scale Modification algorithm used, and/or the amplitude of the audio output. -
SAC 200 comprises a state machine, and techniques for implementing a state machine in software are well known to those of ordinary skill in the art. During playback,SAC 200 begins in one of a plurality of quiescent states that makes it available for executing the “Say Again” function. WheneverSAC 200 receives a “Say Again” Trigger Message from SayAgain Trigger Mechanism 110, it executes the Say Again function by effecting a transition to one of a plurality of initial action states. Overtime SAC 200 transitions from one action state to another in response to various inputs it receives. It may remain in, or transition between, various action states indefinitely, or such transitions may be designed to bringSAC 200 back to some quiescent state after a fixed period of time. - As a consequence of the transition between one state to another, and as a consequence of remaining in a state without transition,
SAC 200 may send Player Control and Playback Mode and Characteristics Control Messages to effect changes in various playback modes and characteristics. For instance,SAC 200 may raise the volume of the output signal by a certain amount when it enters one of its action states, and then gradually lower the volume over time until the volume has returned to its original level. Other parameters, including but not limited to, playback speed and decoding quality, can also be varied as the result of entry into a particular state, amount of time thatSAC 200 has been in a state, upon exit from a particular state, as a function of the amount of content played back while in a particular state, or any combination of these or other system parameters. The time course of such changes may eventually bring the playback modes and characteristics back to their pre-Say Again values, or they may continue changed indefinitely. - In accordance with one embodiment of the present invention,
SAC 200 states and their general meaning are as follows: - a. INVALID:
State SAC 200 is in before initialization; - b. DISABLED:
State SAC 200 is in when playback is not underway; - c. AVAILABLE:
Quiescent state SAC 200 is in during playback when the Say Again function is not underway; - d. SAYINGAGAIN: Initial action state:
SAC 200 transitions to this state whenever a Trigger Message is received, and remains in that state until the Say Again function is cancelled, or playback returns to the point that it was at when the Trigger Message was received; - e. RECOVERING: Final action state:
SAC 200 transitions from the SAYINGAGAIN state to the RECOVERING state, and remains there until it transitions to any of the other states. - In accordance with one or more embodiments of the present invention,
SAC 200 effects changes in the playback of multimedia content asSAC 200 enters a particular state, receives playback, temporal, or other information whileSAC 200 is in a state, or exits a state.SAC 200 effects these changes by executing program code that invokes Player Control and Playback Mode and Characteristics Control Messages. The changes thatSAC 200 can effect include, but are not limited to, causingMultimedia Player 500 to jump to a different location in the content (such as backward 4 seconds), playing the material at another speed (such as 50 percent slower), changing the volume (such as play the material 4 dB louder), eliminating one or more streams of content (such as muting a sound track), inducingMultimedia Content Server 400 to switch between an input stream of one bandwidth to another or from one stream to another, or changing the mode of playback (such as switching to a frame-by-frame mode in which each frame of a sequence of images is displayed until the user presses a key, whereupon the next frame is displayed). Many other effects could be devised which might be advantageous to the listener's or viewer's understanding, or serve other purposes of the user. For example, the underlying properties of the media work may be examined, and such information from the analysis of the signal used to determine the type of modification, if any, that may be applied in an effort to increase intelligibility. As an example, the amplitude of the audio portion of the media relative to the amplitude of the audio portion of previously presented portions of the media work could be examined, and if the amplitude (i.e., volume) were lower than other passages, the replayed portion of the media work may be modified to increase the volume and thereby increase the intelligibility. In still another example, the word rate in the audio portion of the media work can be examined, and used to determine an alternative playback speed which increases intelligibility or transcribability. In yet another example the number of objects, for example faces, in the video portion of a media work can be computed, and used to determine if the video portion of the signal should be replayed with increased clarity by image enhancement techniques, or by requesting a higher quality encoding of the portion of the media work. - In general,
SAC 200 can respond to additional Trigger Messages while it is in any state, including action states, and can handle such “multiple” signals in a meaningful manner. In other words, the particular Say Again function effected can be dependent on the state thatSAC 200 is in when a Trigger Message is detected, and the behavior ofSAC 200 may be advantageously different when the user generates a trigger while a previous Say Again action is still underway. - In accordance with one embodiment of the present invention,
SAC 200 operates as follows: - Until the Say Again Controller is initialized, the state is INVALID.
- When the Say Again Controller is initialized, the state is set to DISABLED.
- When the Say Again Controller receives an Output Message indicating that playback has begun, the state is set to AVAILABLE.
- When a Say Again Trigger Message is received during playback (with
SAC 200 in any state), the following events are effected: - 1) Playback is paused momentarily, the player is instructed to seek backward a number of seconds specified by the Backup Time parameter;
- 2) The current playback speed is stored for later use;
- 3) The current playback speed is reduced by a fractions specified by the Repeat Speed parameter;
- 4) Playback is resumed;
- 5) The
SAC 200 state is transitioned to SAYINGAGAIN. - When the current state is SAYINGAGAIN, and an Output message is received indicating that Backup Time seconds of content have been output, the
SAC 200 state is transitioned to RECOVERING. - When the current state is RECOVERING, as periodic Output messages are received, the following events take place:
- 1) the current playback speed is smoothly increased until after Recovery Time seconds it is back to its original value.
- 2) The
SAC 200 state is transitioned to AVAILABLE. - This behavior is summarized in Table1 below.
TABLE 1 Current Comment New Say Again regarding Message Say Again State Current State Received State INVALID initial state Say Again Con- DISABLED troller initialized DISABLED Say Again Output Message: AVAILABLE function isn't playback has legal begun AVAILABLE Say Again Say Again SAYINGAGAIN function is Trigger Message legal SAYINGAGAIN Say Again Output Message: RECOVERING function is Content duration being executed played while in SAYINGAGAIN mode is greater than or equal to Backup Time Behavioral Parameter Say Again SAYINGAGAIN Trigger Message RECOVERING recovery from Output Message: AVAILABLE Say Again Content duration function is played while in underway RECOVERING mode is greater than or equal to Recovery Time Behavioral Parameter Say Again SAYINGAGAIN Trigger Message - In accordance with one or more embodiments of the present invention, for
SAC 200, the program code associated with each state will be fixed. However, it would be advantageous in some embodiments for that program code to be variable so that a user could modify it. In accordance with such embodiments, the program code associated with each state may be one considered to be a subset of the Say Again Behavioral Parameters, and as such, may be displayed to and modified by the user. The code could be represented in the form of scripting language text, such as Java, Basic, JavaScript, Perl, Scheme, LISP, etc. In such embodiments,SAC 200 will comprise a scripting language interpreter, and as each Say Again state is entered, a new set of scripts will be installed for interpretation bySAC 200. Further, it would be advantageous in some embodiments if the components ofSay Again System 1000 took the form of “object oriented” programming constructs such as Java, CORBA, or COM objects, whose properties could be accessed and modified, and whose control methods could be invoked, by such general scripting commands. In such embodiments it would be further advantageous if those scripting commands could define, display, control, and monitor user interface elements such as buttons, sliders, selectors, text fields, and so forth, and if the procedures defined in those general scripting commands could vary according to the detected value of user input as presented through such controls. - Given that the program code executed by
SAC 200 when it is in a particular state can be general scripting commands, it should be clear that the effect of the Say Again function can be completely general, i.e., encompassing changes to the playback characteristics of the multimedia stream as well as other, completely unrelated, effects such as, for example and without limitation, generating and sending text and/or logging information to a file, creating and sending email messages, triggering the launching of other applications, carrying out mathematical computations, creating, altering, deleting, enhancing, storing, and transmitting media content and associated information, creating and inserting bookmarks, tags, and other such information into the media content or an index file for use in future playback of the media work, and so forth. - As further shown in FIG. 1,
Multimedia Content Server 400 provides, as output, media works toMultimedia Player 500, for example, as streaming media content that is delivered over the Internet, a local-area network (LAN), or from files stored in the computer that is executingMultimedia Player 500. Using techniques that are well known to those of ordinary skill in the art,Multimedia Content Server 400 receives, as input, messages or other information conveying requests for: (a) a particular media work; (b) a particular data rate, bit-rate, and/or encoding quality of said media work; (c) a location offset into the media work from which transmission should begin, and (d) various parameters such as buffer fill rate, maximum data delivery rate, and duration of work to send. It should be understood thatMultimedia Content Server 400 may take the form of a database, local disk cache, local hard drive, or server located in any geographical location connected to a network. For ease of understanding the current invention the numerous possible forms of multimedia server have been omitted. - As further shown in FIG. 1,
Multimedia Player 500 receives, as input: (a) Multimedia Content fromMultimedia Content Server 400; and produces, as output: (a) Media Data for Rendering that is applied as input toMedia Rendering Components 600.Multimedia Player 500 should be understood to be interpreted in the broadest possible sense, and includes without limitation, software programs such as, for example, the RealNetworks® RealPlayer® (D Media Player, Windows™ Media Player, QuickTime™ Player, and all manner of software capable of presenting audio, text, video, visual representations, meta-data and any combination of the foregoing running on a computer, for example, under some version of the Microsoft Windows™ operating system. Embodiments of the present invention may be implemented on, in, or as a general purpose computer, a so-called Personal Digital Assistant (PDA), a set-top box, and Internet appliance, a consumer or professional entertainment device, an electronic game, a telephone, a communication device, a television set, a radio, or a player of some other sort. - As further shown in FIG. 1,
Media Rendering Components 600 receives, as input, Media Data for Rendering, and produces, as output, raw media samples to be rendered such as PCM-coded audio signals or image bitmap values.Media Rendering Components 600 controls the appearance, timing, and quality of the media renditions—that is, the final presentations of the audio, video, or other contents of the media. It also may be responsible for decoding Media Data that has been encoded for reasons having to do with efficiency of transmission, robustness of representation, security and privacy of the information transmitted, or for many other reasons. - Execution of
Media Rendering Components 600 is controlled by various control parameters, including but not limited to a) a volume control parameter; b) a playback rate control parameter; c) a decoding quality control parameter; d) a stereo balance control parameter; and e) a color temperature control parameter. In turn,SAC 200, or other components, can control the behavior and performance ofMedia Rendering Components 600 by sending, from time to time, updated values of these and other control parameters toMedia Rendering Components 600 in Playback Mode and Characteristics Control Messages. - As further shown in FIG. 1,
Media Output Devices 700 receive, as input, Media Data for Output.Media Output Devices 700 are well known to those of ordinary skill in the art, and a variety of commercially available components are available to render Media Data for Output including without limitation: (a) sound cards for audio, and (b) computer graphics cards, frame-buffers, monitors, televisions, and the like for video and text. - In accordance with another aspect of the current invention, the Say Again button can be pressed multiple times in rapid succession. The first time the button is pressed, the behavior is as described above. After that, the behavior is as follows:
- If the button is pressed before the playback location is reached at which the button was first pressed (during the “Backup Period”),
SAC 200 interprets this action to mean, “you didn't go back far enough.” Accordingly, the effective Backup Time is increased (for example, doubled), the current location is again set back (for example, twice as far as the last time), and playback resumes at the same speed as after the first button press. Also, the effective Recovery Time is increased (for example, doubled). The location at which recovery begins remains unchanged. This increase (for example, doubling) of Backup Time and Recovery Time continues each time that the button is pressed during a particular Backup Period. - If the button is pressed during a Recovery Period,
SAC 200 interprets this action to mean, “I want to listen to the same material again, and don't be so quick to speed up.” Accordingly, playback is momentarily paused, the current location is set once again to the location where the just-completed repetition began, and playback begins again. The speed is the usual Say Again speed. However, the effective Recovery Period is increased (for example, to be twice as long as the original setting). - All Say Again parameter settings are returned to their original values whenever the Recovery Period is completed, or playback is halted, or the end of the media is reached. In general, the current state of
SAC 200 can affect its response to any trigger mechanism, and result in an alternative behavior and response different from the default behavior described above. - Thus, clicking on the “thumb” of speed control slider2010 on SpeedBar 2015 is a very quick way to reset all Say Again parameters to their property sheet values, and simultaneously cancel any ongoing Say Again playback effects.
- Although FIG. 1 shows
embodiment 1000 to be comprised of separate modules, in a preferred embodiment,User Interface 100, SayAgain Trigger Mechanism 110, Say Again Parameter Display andModification Mechanism 120,Behavioral Parameter Memory 300,Say Again Controller 200, ControllerFinite State Machine 210,Multimedia Content Server 400,Multimedia Player 500, andMedia Rendering Components 600 are embodied as software programs or modules which run on a general purpose computer such as, for example, a personal computer. It should be well known to one of ordinary skill in the art, in light of the detailed description above, how to implement these programs or modules in software. - Conversely, components of
embodiment 1000 may exist in separate locations connected to one another via a network or any other communication means (where the use of the term means is used in the broadest sense possible). - In addition, it should be clear to those of ordinary skill in the art that one or more embodiments of the present invention may be combined with any number of apparatus which provide time-scale modification, and may be combined with or share components with such systems.
- 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 behavior of the overall system. Parameters such as duration, playback speeds, and rewind intervals can all be determined by heuristics, adaptive algorithms, neural networks and the like.
- In accordance with one embodiment of the present invention, whenever a user manually changes playback speed, any Say Again processing is automatically cancelled. In accordance with a further embodiment of the present invention, Say Again processing is also cancelled when the user stops the player, and whenever playback reaches the end of a media file or stream. In accordance with a still further embodiment of the present invention, before and after playback (that is, when no playback is taking place), the Say Again button is disabled, and may not be pressed; however, the Say Again properties may be displayed and modified.
- Although the detailed description above used the terms playback rate and TSM rate, and the terms playback and playback apparatus, these terms should be understood to include any type of presentation rate (i.e., a rate of presentation of information) and any type of presentation apparatus. As such, these terms are to be understood as being used in the broadest sense. In addition, although the detailed description used the terms media, media work, media data, media broadcast, audio or audio-visual work, and information, these terms should be understood to refer to any type of information or data. As such, these terms are to be understood as being used in the broadest sense.
- It should also be understood that lack of comprehension is not the only reason that a user might want to replay a portion of content. For example, the user may have recognized the beginning of an important sequence, and want to begin recording the content in a different format as it was played back. Or the user might want to begin rendering the media using a higher-quality, but more resource-intensive, rendering technique. As another example, there may be a need to control presentation rates of online media, and quickly repeat information for the purposes of clarifying an utterance. In particular, calls to a 911 emergency response service may have more incoming calls than personnel to listen to them. In that case, speeding up audio can help with transcribing and dispatching appropriate information over a computer network. Clarifying an address quickly with a “Say Again” feature can provide an important reduction in response times. Similarly, in military and other rescue operations, repeating targeting information such as longitude and latitude coordinates quickly may be vital to achieving a quick and accurate response. In addition, a public service announcement regarding emergency information, safety information, emergency response, and the like may be missed if a user is listening at a very fast rate (learning impaired and hearing impaired individuals may wish to have important public service or emergency broadcasts played at playback rates below the normal playback rate to aid in comprehension).
- One or more embodiments of another aspect of the present invention (referred to as a “Rapid Replay Feature”) enable “instantaneous” replaying of Multimedia Content that has been streamed from Multimedia Content Server400 (for example, a remote server). Normally, in order for
Multimedia Player 500 to replay recently played media content,Multimedia Player 500 must send a message toMultimedia Server 400, asking it to retransmit the data for the desired Multimedia Content to be replayed. This may be necessary even though a local copy of the desired data recently resided in the player, because in a typical embodiment ofMultimedia Player 500, Multimedia Content is discarded byMultimedia Player 500 as soon as a segment it describes has been rendered. - However, this raises an issue in that a pause, gap, distortion, or other perceptible defect may occur whenever
Multimedia Server 400 must retransmit the desired Multimedia Content. Such an artifact occurs not only because of the time required for the first elements of the desired data to arrive atMultimedia Player 500, but because, typically, a buffer such asMedia Input Buffer 510 shown in FIG. 4, is employed byMultimedia Player 500, and playback is constrained from starting until that buffer has accumulated a certain minimum amount of data, corresponding to a minimum accumulated Multimedia Content in hand. - Such artifacts are undesirable, and many such artifacts can be avoided by retaining a certain amount of Multimedia Content in
Media Input Buffer 510 for some period of time even after it has been played. - FIG. 5 shows a diagram of a buffering scheme utilized to fabricate one embodiment of the present invention. As shown in FIG. 5, Multimedia Content is stored in
Media Input Buffer 510 in the form of a plurality ofMedia Frames 511 wherein each Media Frame holds information necessary to render a moment or interval of Multimedia Content. Associated with each frame isFrame Timestamp 512 which specifies the time within the presentation of the moment or interval described by the contents ofMedia Frame 511. As shown in FIG. 5, a set of pointers to individual frames inMedia Input Buffer 510 is maintained, which pointers are: -
pointer 514 points to a frame holding the oldest (earliest) Multimedia Data inMedia Input Buffer 510. - 2) Current Frame:
pointer 515 points to a frame holding the Multimedia Data currently being played. - 3) Furthest Frame Played:
pointer 516 points to a frame holding the most advanced (latest in time) Multimedia Data inMedia Input Buffer 510 that has been played so far. - 4) Youngest Frame:
pointer 517 points to a frame holding the most recent (latest in time) Multimedia Data inMedia Input Buffer 510. This is the frame for the latest media moment stored inMedia Input Buffer 500. - In accordance with one embodiment, media frames arrive from
Multimedia Content Server 400 in time-sequential order, with frames having earlier timestamps generally arriving before frames having later timestamps. The frame occupancy ofMedia Input Buffer 510 is then managed, and “Rapid Replay” made possible, using methods similar to the following. - If
Media Input Buffer 510 is empty, the first frame to arrive fromMultimedia Content Server 400 is stored inMedia Input Buffer 510.Oldest Frame pointer 514 andYoungest Frame pointer 517 are set to point to that frame.Current Frame pointer 515 and Furthest Frame Playedpointer 516 are set to a null value. - If
Media Input Buffer 510 is not empty when a frame arrives fromMultimedia Content Server 400, the newly arrived frame is stored inMedia Input Buffer 510. If its timestamp is earlier than the timestamp of the frame pointed to byOldest Frame pointer 514, that pointer is modified to point to the newly arrived frame. If the timestamp associated with the newly arrived frame is later than the timestamp associated with the frame pointed to byYoungest Frame pointer 517, that pointer is modified to point to the newly arrived frame. - When sufficient media frames are in hand in
Media Input Buffer 510, or some other condition or event ensues that initiates playback,Multimedia Player 500 begins to process the first frame. At this point,Current Frame pointer 515 and Furthest Frame Playedpointer 516 are set to point to the first frame being processed, which is the frame pointed to byOldest Frame pointer 514. - From time to time,
Multimedia Player 500 is ready to process another frame. Each time this occurs,Current Frame pointer 515 is compared toYoungest Frame pointer 517. Ifpointer 515 andpointer 517 are equal, playback pauses until another frame arrives fromMultimedia Content Server 400, is stored inMedia Input Buffer 510, andYoungest Frame pointer 517 has advanced to point to the newly acquired frame. Whenpointer 517 points to a frame with a later timestamp thanpointer 515,pointer 515 is advanced to the next temporally sequential frame inMedia Input Buffer 510. - Whenever
Current Frame pointer 515 is advanced, it is compared to Furthest Frame Playedpointer 516. Ifpointer 515 points to a frame with a later timestamp thanpointer 516,pointer 516 is set equal topointer 515. - Whenever
pointer 516 is advanced, the difference between the timestamp of the frame it points to and the timestamp of the frame that is pointed to byOldest Frame pointer 514 is calculated. The difference between these two timestamps is the Maximum Retention Time. If the Maximum Retention Time is larger than a Behavioral Parameter entitled Desired Retention Time (the number of seconds of previously-played content that is to be retained inMedia Input Buffer 510 during playback), the frame that is pointed to byYoungest Frame pointer 514 is discarded fromMedia Input Buffer 510, andpointer 514 is advanced to point to the next frame—that is, the frame inMedia Input Buffer 510 with the earliest timestamp. - Whenever
Multimedia Player 500 receives a Player Control Message requesting a repositioning of its playback location to a media position corresponding to anyMedia Frame 511 that is stored inMedia Input Buffer 510, it can accomplish that repositioning in Rapid Playback Mode. The necessary Multimedia Content information is stored inMedia Input Buffer 510, andMultimedia Player 500 can reposition its current location and begin playback immediately. - At any moment during playback, the largest jump back in time that
Multimedia Player 500 can accomplish in Rapid Replay mode is the difference between the timestamp of the Current Frame, and the timestamp of the Youngest Frame. This is called the Current Retention Time. The maximum possible jump back in time is possible whenMultimedia Player 500 is not currently replaying content—that is, when Furthest Frame Playedpointer 516 is equal toCurrent Frame pointer 515. - In accordance with one embodiment of the present invention, a separate Behavioral Parameter called Desired Retention Time is maintained. In accordance with another embodiment, the Desired Retention Time value is calculated from a Behavioral Parameter Backup Time. For example, Desired Retention Time may be calculated as:
- Desired Retention Time=×*Backup Time
- where x is a number equal to or greater than 1.
- In accordance with another embodiment, the decision rule to determine whether the Youngest Frame should be discarded may take into account the current playback speed. One possible decision rule is to discard the Youngest Frame if Maximum Retention Time is greater than the product of Desired Retention Time and the current playback speed. Thus, twice the usual media content would be kept on hand if the current playback speed was twice the normal playback speed. Other suitable such decision rules will occur to those of ordinary skill in the art.
- Although the examples discussed above focus on modifying the current playback location so as to replay content that has already been played, it will be clear to those of ordinary skill in the art that the new desired playback location could be ahead of the current playback location. The advantages of Rapid Replay would still hold completely or partially if the desired location were already contained in
Media Input Buffer 510, or indeed if any of the buffers earlier than the desired new location, but within the specified Desired Retention Time of the desired new location, were contain inMedia Input Buffer 510. - In accordance with another embodiment, all or some of the Say Again functionality described above, for example but not limited to the Rapid Replay functionality, is implemented by maintaining a Rendering Data Input Buffer (RDIB) in association with each
Media Rendering Component 600. The RDIB for each Component holds the media-specific rendering data sent to that Component byMultimedia Player 500. - In a manner similar to functionality of
Media Input Buffer 510 as described above, each of these RDIBs hold some data which has not yet been processed by its corresponding Media Rendering Component, and some data which recently has been processed by that Component. Associated with each RDIB is a set of pointers parallel in function to theFrame pointers - In such an implementation, when a Say Again function is triggered,
SAC 200 sends appropriate Playback Mode Control Messages to eachMedia Rendering Component 600. These Messages instruct each Component to move its RDIB current position pointer to the desired playback location for its corresponding media stream.SAC 200 then restarts eachMedia Rendering Component 600. - Throughout this process,
Multimedia Player 500 may continue to run without any changed. Alternatively,SAC 200 may temporarily pause the Player so as to prevent data overrun in the Rendering Data Input Buffers, or may instruct the Player to perform some other supportive function, such as generating rendering data with some altered characteristics. - It should be understood that embodiments of the preset invention include the use of any number of behavioral parameters, or code behaviors that affect playback and are not limited to the specific behavioral parameters discussed or described above. For example, and without limitation, behavioral parameters may further include parameters such as: playback location, playback speed; encoding quality; rendered quality, and durations for such parameters to take effect. In addition, it should be further understood that, although one or more of the above-described embodiments indicated that the playback speed should resume to a playback speed in effect at the point in the media work when the “Say Again” trigger was invoked, the present invention is not thusly limited. In fact, embodiments of the present invention exist in which the playback rate is increased, decreased, or moved toward a target playback rate (in accordance with any method of interpreting the behavioral parameters), which playback rate changes can occur at locations which are prior to, or after the location in the media work at which point the trigger was activated. In still further example, the distance from the trigger invocation location can be specified as an offset, a percentage, or means for calculating an amount from the trigger invocation location, etc.
- In addition, still further embodiments exist which, instead of backing up and replaying portions at a reduced playback rate, the playback rate during replay is increased. This embodiment advantageously provides a useful review of the previous portions of the media work played for the purpose of verifying transcription, understanding, and the like.
- In addition, still further embodiments exist which, instead of backing up and replaying portions of a media work during playback as described above, advance or skim through material by increasing playback speed of a portion, skip over a portion, or any combination thereof. In fact in accordance with one such embodiment, a behavioral parameter may indicate that, upon activation of a trigger mechanism, the encoding quality, and possibly the data rate of the media work, should be decreased while playback speed is increased. Advantageously this may serve to accommodate limited network bandwidth.
- 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.
Claims (1)
1. A method for replaying a portion of a media work which comprises steps of:
playing the media work;
receiving input from a user to replay;
analyzing parameters to determine the portion of the media work to replay;
altering at least a part of the portion; and
replaying the portion.
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/133,201 US20020194608A1 (en) | 2001-04-26 | 2002-04-25 | Method and apparatus for a playback enhancement system implementing a "Say Again" feature |
US11/695,821 US8874436B2 (en) | 2001-04-26 | 2007-04-03 | Digital media player behavioral parameter modification |
US14/522,810 US9760259B2 (en) | 2001-04-26 | 2014-10-24 | Digital media player behavioral parameter modification |
US15/701,066 US20180129386A1 (en) | 2001-04-26 | 2017-09-11 | Digital Media Player Behavioral Parameter Modification |
US16/581,106 US20200019290A1 (en) | 2001-04-26 | 2019-09-24 | Digital Media Player Behavioral Parameter Modification |
US17/243,396 US20210247883A1 (en) | 2001-04-26 | 2021-04-28 | Digital Media Player Behavioral Parameter Modification |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US28688101P | 2001-04-26 | 2001-04-26 | |
US10/133,201 US20020194608A1 (en) | 2001-04-26 | 2002-04-25 | Method and apparatus for a playback enhancement system implementing a "Say Again" feature |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/695,821 Continuation US8874436B2 (en) | 2001-04-26 | 2007-04-03 | Digital media player behavioral parameter modification |
Publications (1)
Publication Number | Publication Date |
---|---|
US20020194608A1 true US20020194608A1 (en) | 2002-12-19 |
Family
ID=26831162
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/133,201 Abandoned US20020194608A1 (en) | 2001-04-26 | 2002-04-25 | Method and apparatus for a playback enhancement system implementing a "Say Again" feature |
US11/695,821 Expired - Lifetime US8874436B2 (en) | 2001-04-26 | 2007-04-03 | Digital media player behavioral parameter modification |
US14/522,810 Expired - Lifetime US9760259B2 (en) | 2001-04-26 | 2014-10-24 | Digital media player behavioral parameter modification |
US15/701,066 Abandoned US20180129386A1 (en) | 2001-04-26 | 2017-09-11 | Digital Media Player Behavioral Parameter Modification |
US16/581,106 Abandoned US20200019290A1 (en) | 2001-04-26 | 2019-09-24 | Digital Media Player Behavioral Parameter Modification |
US17/243,396 Abandoned US20210247883A1 (en) | 2001-04-26 | 2021-04-28 | Digital Media Player Behavioral Parameter Modification |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/695,821 Expired - Lifetime US8874436B2 (en) | 2001-04-26 | 2007-04-03 | Digital media player behavioral parameter modification |
US14/522,810 Expired - Lifetime US9760259B2 (en) | 2001-04-26 | 2014-10-24 | Digital media player behavioral parameter modification |
US15/701,066 Abandoned US20180129386A1 (en) | 2001-04-26 | 2017-09-11 | Digital Media Player Behavioral Parameter Modification |
US16/581,106 Abandoned US20200019290A1 (en) | 2001-04-26 | 2019-09-24 | Digital Media Player Behavioral Parameter Modification |
US17/243,396 Abandoned US20210247883A1 (en) | 2001-04-26 | 2021-04-28 | Digital Media Player Behavioral Parameter Modification |
Country Status (1)
Country | Link |
---|---|
US (6) | US20020194608A1 (en) |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030236906A1 (en) * | 2002-06-24 | 2003-12-25 | Klemets Anders E. | Client-side caching of streaming media content |
WO2005036884A1 (en) * | 2003-10-07 | 2005-04-21 | Ucentric Holdings, Inc. | Digital video recording and playback system with quality of service playback from multiple locations via a home area network |
US20050100014A1 (en) * | 2000-08-09 | 2005-05-12 | Microsoft Corporation | Fast dynamic measurement of bandwidth in a TCP network environment |
EP1597917A2 (en) * | 2003-02-26 | 2005-11-23 | Thomson Licensing S.A. | User-specified time values for time-based navigation functions of video recorder systems |
US20050262257A1 (en) * | 2004-04-30 | 2005-11-24 | Major R D | Apparatus, system, and method for adaptive-rate shifting of streaming content |
US20060015580A1 (en) * | 2004-07-01 | 2006-01-19 | Home Box Office, A Delaware Corporation | Multimedia content distribution |
US20060168295A1 (en) * | 2003-06-27 | 2006-07-27 | Microsoft Corporation | Midstream Determination of Varying Bandwidth Availability |
US20070094376A1 (en) * | 2004-05-03 | 2007-04-26 | Ahn Sung J | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20070106675A1 (en) * | 2005-10-25 | 2007-05-10 | Sony Corporation | Electronic apparatus, playback management method, display control apparatus, and display control method |
US20070112932A1 (en) * | 2003-09-23 | 2007-05-17 | Ku-Bong Min | Upnp-based media contents reproducing system and method thereof |
US20070174488A1 (en) * | 2006-01-25 | 2007-07-26 | Valentyn Kamyshenko | Methods and apparatus for web content transformation and delivery |
US7391717B2 (en) | 2003-06-30 | 2008-06-24 | Microsoft Corporation | Streaming of variable bit rate multimedia content |
US20080163330A1 (en) * | 2006-12-28 | 2008-07-03 | General Instrument Corporation | On Screen Alert to Indicate Status of Remote Recording |
US20080282292A1 (en) * | 2002-11-29 | 2008-11-13 | Canon Kabushiki Kaisha | Receiving apparatus and method |
US20080282295A1 (en) * | 2005-04-18 | 2008-11-13 | Home Box Office, Inc. | Pausing and Resuming Content Streaming On Wireless Devices |
US7594025B2 (en) | 2001-06-28 | 2009-09-22 | Microsoft Corporation | Startup methods and apparatuses for use in streaming content |
US7650421B2 (en) | 2002-12-30 | 2010-01-19 | Microsoft Corporation | Adaptable accelerated content streaming |
US20100199295A1 (en) * | 2009-02-02 | 2010-08-05 | Napo Enterprises | Dynamic video segment recommendation based on video playback location |
US20100195975A1 (en) * | 2009-02-02 | 2010-08-05 | Porto Technology, Llc | System and method for semantic trick play |
US7783772B2 (en) | 2004-04-30 | 2010-08-24 | Microsoft Corporation | Session description message extensions |
US7925774B2 (en) | 2008-05-30 | 2011-04-12 | Microsoft Corporation | Media streaming using an index file |
US8265140B2 (en) | 2008-09-30 | 2012-09-11 | Microsoft Corporation | Fine-grained client-side control of scalable media delivery |
US8325800B2 (en) | 2008-05-07 | 2012-12-04 | Microsoft Corporation | Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers |
US8379851B2 (en) * | 2008-05-12 | 2013-02-19 | Microsoft Corporation | Optimized client side rate control and indexed file layout for streaming media |
US20130216210A1 (en) * | 2007-03-12 | 2013-08-22 | At&T Intellectual Property I, L.P. | Systems and Methods of Providing Modified Media Content |
US8949718B2 (en) | 2008-09-05 | 2015-02-03 | Lemi Technology, Llc | Visual audio links for digital audio content |
US20160283191A1 (en) * | 2009-05-27 | 2016-09-29 | Hon Hai Precision Industry Co., Ltd. | Voice command processing method and electronic device utilizing the same |
US10719546B2 (en) * | 2014-12-16 | 2020-07-21 | Virtuous Circle Sa | Method for managing multimedia files |
US11212593B2 (en) | 2016-09-27 | 2021-12-28 | Time Warner Cable Enterprises Llc | Apparatus and methods for automated secondary content management in a digital network |
US11403849B2 (en) | 2019-09-25 | 2022-08-02 | Charter Communications Operating, Llc | Methods and apparatus for characterization of digital content |
US11616992B2 (en) | 2010-04-23 | 2023-03-28 | Time Warner Cable Enterprises Llc | Apparatus and methods for dynamic secondary content and data insertion and delivery |
US11991234B2 (en) | 2004-04-30 | 2024-05-21 | DISH Technologies L.L.C. | Apparatus, system, and method for multi-bitrate content streaming |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020194608A1 (en) * | 2001-04-26 | 2002-12-19 | Goldhor Richard S. | Method and apparatus for a playback enhancement system implementing a "Say Again" feature |
US20230032115A1 (en) * | 2005-02-14 | 2023-02-02 | Thomas M. Majchrowski & Associates, Inc. | Multipurpose media players |
TWI257213B (en) * | 2005-04-12 | 2006-06-21 | Culture Com Technology Macau Ltd | Medium transmission method and system |
JP2009509387A (en) * | 2005-09-19 | 2009-03-05 | エヌエックスピー ビー ヴィ | A method for synchronizing playback of audio broadcasts on a plurality of network output devices |
CN100531344C (en) * | 2006-02-14 | 2009-08-19 | 华为技术有限公司 | Method and system for realizing multimedia recording via II.248 protocol |
US9380096B2 (en) | 2006-06-09 | 2016-06-28 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US9432433B2 (en) | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9209934B2 (en) | 2006-06-09 | 2015-12-08 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9386064B2 (en) | 2006-06-09 | 2016-07-05 | Qualcomm Incorporated | Enhanced block-request streaming using URL templates and construction rules |
US7661121B2 (en) * | 2006-06-22 | 2010-02-09 | Tivo, Inc. | In-band data recognition and synchronization system |
US7844723B2 (en) * | 2007-02-13 | 2010-11-30 | Microsoft Corporation | Live content streaming using file-centric media protocols |
US10997531B2 (en) | 2007-09-11 | 2021-05-04 | Ciambella Ltd. | System, method and graphical user interface for workflow generation, deployment and/or execution |
US9917874B2 (en) | 2009-09-22 | 2018-03-13 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US9456015B2 (en) | 2010-08-10 | 2016-09-27 | Qualcomm Incorporated | Representation groups for network streaming of coded multimedia data |
US8898723B2 (en) | 2010-08-20 | 2014-11-25 | Sony Corporation | Virtual channel declarative script binding |
CN105849691B (en) | 2013-06-18 | 2019-09-13 | 西安姆贝拉有限公司 | The method and apparatus generated for code virtualization and remote process call |
WO2015006599A1 (en) | 2013-07-12 | 2015-01-15 | Ciambella Ltd. | Method and apparatus for firmware virtualization |
US10224056B1 (en) * | 2013-12-17 | 2019-03-05 | Amazon Technologies, Inc. | Contingent device actions during loss of network connectivity |
US10067490B2 (en) | 2015-05-08 | 2018-09-04 | Ciambella Ltd. | Method and apparatus for modifying behavior of code for a controller-based device |
CA2984106C (en) | 2015-05-08 | 2021-12-21 | Ciambella Ltd. | Method and apparatus for automatic software development for a group of controller-based devices |
JP6626956B2 (en) * | 2015-07-09 | 2019-12-25 | チャンベッラ・リミテッド | Method and apparatus for modifying code behavior for a controller-based device |
WO2017112735A2 (en) | 2015-12-21 | 2017-06-29 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
US11087249B2 (en) | 2016-05-24 | 2021-08-10 | Ciambella Ltd. | Method and apparatus for triggering execution of a workflow over a network |
US10798780B2 (en) | 2016-08-22 | 2020-10-06 | Ciambella Ltd. | Method and apparatus for creating and managing controller based remote solutions |
WO2018170079A1 (en) | 2017-03-14 | 2018-09-20 | Ciambella Ltd. | Method and apparatus for automatically generating and incorporating code in development environments |
US10872240B2 (en) * | 2018-09-28 | 2020-12-22 | Opentv, Inc. | Systems and methods for generating media content |
CN111683272A (en) * | 2020-05-22 | 2020-09-18 | 海信视像科技股份有限公司 | Streaming media playing method and display equipment |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4975894A (en) * | 1985-08-30 | 1990-12-04 | Jachmann Emil F | Method and apparatus for controlling dictation on or transcription from recording units in a dictation system |
US5585583A (en) * | 1993-10-14 | 1996-12-17 | Maestromedia, Inc. | Interactive musical instrument instruction system |
US5779548A (en) * | 1994-06-28 | 1998-07-14 | Sega Enterprises, Ltd. | Game apparatus and method of replaying game |
US5822405A (en) * | 1996-09-16 | 1998-10-13 | Toshiba America Information Systems, Inc. | Automated retrieval of voice mail using speech recognition |
US5953487A (en) * | 1995-07-11 | 1999-09-14 | Thomson Consumer Electronics | Video recording and playback apparatus |
US5953431A (en) * | 1994-05-06 | 1999-09-14 | Mitsubishi Denki Kabushiki Kaisha | Acoustic replay device |
US6133946A (en) * | 1998-01-06 | 2000-10-17 | Sportvision, Inc. | System for determining the position of an object |
US6259441B1 (en) * | 1996-12-05 | 2001-07-10 | Interval Research Corporation | Display pause with elastic playback |
US6529584B1 (en) * | 1999-10-13 | 2003-03-04 | Rahsaan, Inc. | Audio program delivery system |
US7043433B2 (en) * | 1998-10-09 | 2006-05-09 | Enounce, Inc. | Method and apparatus to determine and use audience affinity and aptitude |
Family Cites Families (9)
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 |
JPH07219970A (en) | 1993-12-20 | 1995-08-18 | Xerox Corp | Method and apparatus for reproduction in acceleration format |
US7359619B1 (en) * | 1997-12-23 | 2008-04-15 | Intel Corporation | Transmitting signals to cause replays to be recorded at a plurality of receivers |
US6622171B2 (en) * | 1998-09-15 | 2003-09-16 | Microsoft Corporation | Multimedia timeline modification in networked client/server systems |
US6408128B1 (en) * | 1998-11-12 | 2002-06-18 | Max Abecassis | Replaying with supplementary information a segment of a video |
US6802041B1 (en) * | 1999-01-20 | 2004-10-05 | Perfectnotes Corporation | Multimedia word processor |
US6762797B1 (en) * | 1999-04-14 | 2004-07-13 | Koninklijke Philips Electronics N.V. | Method and apparatus for catch-up video viewing |
US6870887B2 (en) * | 2001-04-09 | 2005-03-22 | International Business Machines Corporation | Method and system for synchronization between different content encoding formats |
US20020194608A1 (en) * | 2001-04-26 | 2002-12-19 | Goldhor Richard S. | Method and apparatus for a playback enhancement system implementing a "Say Again" feature |
-
2002
- 2002-04-25 US US10/133,201 patent/US20020194608A1/en not_active Abandoned
-
2007
- 2007-04-03 US US11/695,821 patent/US8874436B2/en not_active Expired - Lifetime
-
2014
- 2014-10-24 US US14/522,810 patent/US9760259B2/en not_active Expired - Lifetime
-
2017
- 2017-09-11 US US15/701,066 patent/US20180129386A1/en not_active Abandoned
-
2019
- 2019-09-24 US US16/581,106 patent/US20200019290A1/en not_active Abandoned
-
2021
- 2021-04-28 US US17/243,396 patent/US20210247883A1/en not_active Abandoned
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4975894A (en) * | 1985-08-30 | 1990-12-04 | Jachmann Emil F | Method and apparatus for controlling dictation on or transcription from recording units in a dictation system |
US5585583A (en) * | 1993-10-14 | 1996-12-17 | Maestromedia, Inc. | Interactive musical instrument instruction system |
US5953431A (en) * | 1994-05-06 | 1999-09-14 | Mitsubishi Denki Kabushiki Kaisha | Acoustic replay device |
US5779548A (en) * | 1994-06-28 | 1998-07-14 | Sega Enterprises, Ltd. | Game apparatus and method of replaying game |
US5953487A (en) * | 1995-07-11 | 1999-09-14 | Thomson Consumer Electronics | Video recording and playback apparatus |
US5822405A (en) * | 1996-09-16 | 1998-10-13 | Toshiba America Information Systems, Inc. | Automated retrieval of voice mail using speech recognition |
US6259441B1 (en) * | 1996-12-05 | 2001-07-10 | Interval Research Corporation | Display pause with elastic playback |
US6133946A (en) * | 1998-01-06 | 2000-10-17 | Sportvision, Inc. | System for determining the position of an object |
US7043433B2 (en) * | 1998-10-09 | 2006-05-09 | Enounce, Inc. | Method and apparatus to determine and use audience affinity and aptitude |
US6529584B1 (en) * | 1999-10-13 | 2003-03-04 | Rahsaan, Inc. | Audio program delivery system |
Cited By (101)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050100014A1 (en) * | 2000-08-09 | 2005-05-12 | Microsoft Corporation | Fast dynamic measurement of bandwidth in a TCP network environment |
US20050108420A1 (en) * | 2000-08-09 | 2005-05-19 | Microsoft Corporation | Fast dynamic measurement of bandwidth in a TCP network environment |
US7353286B2 (en) | 2000-08-09 | 2008-04-01 | Microsoft Corporation | Fast dynamic measurement of bandwidth in a TCP network environment |
US7349977B2 (en) | 2000-08-09 | 2008-03-25 | Microsoft Corporation | Fast dynamic measurement of bandwidth in a TCP network environment |
US7594025B2 (en) | 2001-06-28 | 2009-09-22 | Microsoft Corporation | Startup methods and apparatuses for use in streaming content |
US20030236906A1 (en) * | 2002-06-24 | 2003-12-25 | Klemets Anders E. | Client-side caching of streaming media content |
US7725557B2 (en) | 2002-06-24 | 2010-05-25 | Microsoft Corporation | Client-side caching of streaming media content |
US7548948B2 (en) * | 2002-06-24 | 2009-06-16 | Microsoft Corporation | Client-side caching of streaming media content |
US20060059223A1 (en) * | 2002-06-24 | 2006-03-16 | Microsoft Corporation | Client-side caching of streaming media content |
US8074244B2 (en) * | 2002-11-29 | 2011-12-06 | Canon Kabushiki Kaisha | Receiving apparatus and method |
US20080282292A1 (en) * | 2002-11-29 | 2008-11-13 | Canon Kabushiki Kaisha | Receiving apparatus and method |
US7650421B2 (en) | 2002-12-30 | 2010-01-19 | Microsoft Corporation | Adaptable accelerated content streaming |
EP1597917A4 (en) * | 2003-02-26 | 2009-05-27 | Thomson Licensing | User-specified time values for time-based navigation functions of video recorder systems |
KR101020520B1 (en) | 2003-02-26 | 2011-03-09 | 톰슨 라이센싱 | User-specified time values for time-based navigation functions of video recorder systems |
EP1597917A2 (en) * | 2003-02-26 | 2005-11-23 | Thomson Licensing S.A. | User-specified time values for time-based navigation functions of video recorder systems |
US20060168295A1 (en) * | 2003-06-27 | 2006-07-27 | Microsoft Corporation | Midstream Determination of Varying Bandwidth Availability |
US7634373B2 (en) | 2003-06-27 | 2009-12-15 | Microsoft Corporation | Midstream determination of varying bandwidth availability |
US7391717B2 (en) | 2003-06-30 | 2008-06-24 | Microsoft Corporation | Streaming of variable bit rate multimedia content |
US20110055417A1 (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 |
US20100235534A1 (en) * | 2003-09-23 | 2010-09-16 | Ku-Bong Min | 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 |
US20080005272A1 (en) * | 2003-09-23 | 2008-01-03 | Ku-Bong Kim | 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 |
US20050155072A1 (en) * | 2003-10-07 | 2005-07-14 | Ucentric Holdings, Inc. | Digital video recording and playback system with quality of service playback from multiple locations via a home area network |
WO2005036884A1 (en) * | 2003-10-07 | 2005-04-21 | Ucentric Holdings, Inc. | Digital video recording and playback system with quality of service playback from multiple locations via a home area network |
US7809851B2 (en) | 2004-04-30 | 2010-10-05 | Microsoft Corporation | Session description message extensions |
US20050262257A1 (en) * | 2004-04-30 | 2005-11-24 | Major R D | Apparatus, system, and method for adaptive-rate shifting of streaming content |
US11991234B2 (en) | 2004-04-30 | 2024-05-21 | DISH Technologies L.L.C. | Apparatus, system, and method for multi-bitrate content streaming |
US10225304B2 (en) | 2004-04-30 | 2019-03-05 | Dish Technologies Llc | Apparatus, system, and method for adaptive-rate shifting of streaming content |
US9407564B2 (en) | 2004-04-30 | 2016-08-02 | Echostar Technologies L.L.C. | Apparatus, system, and method for adaptive-rate shifting of streaming content |
US7783772B2 (en) | 2004-04-30 | 2010-08-24 | Microsoft Corporation | Session description message extensions |
US8868772B2 (en) | 2004-04-30 | 2014-10-21 | Echostar Technologies L.L.C. | Apparatus, system, and method for adaptive-rate shifting of streaming content |
US8977674B2 (en) * | 2004-05-03 | 2015-03-10 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217833A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100218079A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217830A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100223316A1 (en) * | 2004-05-03 | 2010-09-02 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217832A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217828A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217829A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US9237031B2 (en) | 2004-05-03 | 2016-01-12 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100241706A1 (en) * | 2004-05-03 | 2010-09-23 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100241735A1 (en) * | 2004-05-03 | 2010-09-23 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100241703A1 (en) * | 2004-05-03 | 2010-09-23 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100241702A1 (en) * | 2004-05-03 | 2010-09-23 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8364779B2 (en) | 2004-05-03 | 2013-01-29 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100250667A1 (en) * | 2004-05-03 | 2010-09-30 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217827A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8949314B2 (en) | 2004-05-03 | 2015-02-03 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20070094376A1 (en) * | 2004-05-03 | 2007-04-26 | Ahn Sung J | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217754A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8819165B2 (en) * | 2004-05-03 | 2014-08-26 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8819166B2 (en) * | 2004-05-03 | 2014-08-26 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored a networked media server |
US8549102B2 (en) | 2004-05-03 | 2013-10-01 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100217831A1 (en) * | 2004-05-03 | 2010-08-26 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8458288B2 (en) | 2004-05-03 | 2013-06-04 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8209397B2 (en) | 2004-05-03 | 2012-06-26 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8214519B2 (en) * | 2004-05-03 | 2012-07-03 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8214463B2 (en) | 2004-05-03 | 2012-07-03 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8224925B2 (en) | 2004-05-03 | 2012-07-17 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8266244B2 (en) | 2004-05-03 | 2012-09-11 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8352583B2 (en) | 2004-05-03 | 2013-01-08 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8381109B2 (en) | 2004-05-03 | 2013-02-19 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8275854B2 (en) * | 2004-05-03 | 2012-09-25 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US8380811B2 (en) | 2004-05-03 | 2013-02-19 | Lg Electronics Inc. | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20100241704A1 (en) * | 2004-05-03 | 2010-09-23 | Sung Joon Ahn | Method and apparatus for managing bookmark information for content stored in a networked media server |
US20060015580A1 (en) * | 2004-07-01 | 2006-01-19 | Home Box Office, A Delaware Corporation | Multimedia content distribution |
US20080282295A1 (en) * | 2005-04-18 | 2008-11-13 | Home Box Office, Inc. | Pausing and Resuming Content Streaming On Wireless Devices |
US8009961B2 (en) * | 2005-10-25 | 2011-08-30 | Sony Corporation | Electronic apparatus, playback management method, display control apparatus, and display control method |
US20070106675A1 (en) * | 2005-10-25 | 2007-05-10 | Sony Corporation | Electronic apparatus, playback management method, display control apparatus, and display control method |
US8086756B2 (en) * | 2006-01-25 | 2011-12-27 | Cisco Technology, Inc. | Methods and apparatus for web content transformation and delivery |
US20070174488A1 (en) * | 2006-01-25 | 2007-07-26 | Valentyn Kamyshenko | Methods and apparatus for web content transformation and delivery |
US20080163330A1 (en) * | 2006-12-28 | 2008-07-03 | General Instrument Corporation | On Screen Alert to Indicate Status of Remote Recording |
US8601515B2 (en) | 2006-12-28 | 2013-12-03 | Motorola Mobility Llc | On screen alert to indicate status of remote recording |
US20130216210A1 (en) * | 2007-03-12 | 2013-08-22 | At&T Intellectual Property I, L.P. | Systems and Methods of Providing Modified Media Content |
US8325800B2 (en) | 2008-05-07 | 2012-12-04 | Microsoft Corporation | Encoding streaming media as a high bit rate layer, a low bit rate layer, and one or more intermediate bit rate layers |
US9571550B2 (en) | 2008-05-12 | 2017-02-14 | Microsoft Technology Licensing, Llc | Optimized client side rate control and indexed file layout for streaming media |
US8379851B2 (en) * | 2008-05-12 | 2013-02-19 | Microsoft Corporation | Optimized client side rate control and indexed file layout for streaming media |
US8819754B2 (en) | 2008-05-30 | 2014-08-26 | Microsoft Corporation | Media streaming with enhanced seek operation |
US8370887B2 (en) | 2008-05-30 | 2013-02-05 | Microsoft Corporation | Media streaming with enhanced seek operation |
US7925774B2 (en) | 2008-05-30 | 2011-04-12 | Microsoft Corporation | Media streaming using an index file |
US7949775B2 (en) | 2008-05-30 | 2011-05-24 | Microsoft Corporation | Stream selection for enhanced media streaming |
US8949718B2 (en) | 2008-09-05 | 2015-02-03 | Lemi Technology, Llc | Visual audio links for digital audio content |
US8265140B2 (en) | 2008-09-30 | 2012-09-11 | Microsoft Corporation | Fine-grained client-side control of scalable media delivery |
US8811805B2 (en) | 2009-02-02 | 2014-08-19 | Porto Technology, Llc | System and method for distributed trick play resolution using user preferences |
US9424882B2 (en) | 2009-02-02 | 2016-08-23 | Porto Technology, Llc | System and method for semantic trick play |
US9159361B2 (en) | 2009-02-02 | 2015-10-13 | Porto Technology, Llc | System and method for distributed trick play resolution using user preferences |
US20100199295A1 (en) * | 2009-02-02 | 2010-08-05 | Napo Enterprises | Dynamic video segment recommendation based on video playback location |
US9183881B2 (en) | 2009-02-02 | 2015-11-10 | Porto Technology, Llc | System and method for semantic trick play |
US20100195975A1 (en) * | 2009-02-02 | 2010-08-05 | Porto Technology, Llc | System and method for semantic trick play |
US20160283191A1 (en) * | 2009-05-27 | 2016-09-29 | Hon Hai Precision Industry Co., Ltd. | Voice command processing method and electronic device utilizing the same |
US9836276B2 (en) * | 2009-05-27 | 2017-12-05 | Hon Hai Precision Industry Co., Ltd. | Voice command processing method and electronic device utilizing the same |
US11616992B2 (en) | 2010-04-23 | 2023-03-28 | Time Warner Cable Enterprises Llc | Apparatus and methods for dynamic secondary content and data insertion and delivery |
US10719546B2 (en) * | 2014-12-16 | 2020-07-21 | Virtuous Circle Sa | Method for managing multimedia files |
US11334616B2 (en) | 2014-12-16 | 2022-05-17 | Virtuous Circle Sa | Method for managing multimedia files |
US11921772B2 (en) | 2014-12-16 | 2024-03-05 | Virtuous Circle Sa | Method for managing multimedia files |
US11212593B2 (en) | 2016-09-27 | 2021-12-28 | Time Warner Cable Enterprises Llc | Apparatus and methods for automated secondary content management in a digital network |
US11403849B2 (en) | 2019-09-25 | 2022-08-02 | Charter Communications Operating, Llc | Methods and apparatus for characterization of digital content |
Also Published As
Publication number | Publication date |
---|---|
US8874436B2 (en) | 2014-10-28 |
US20180129386A1 (en) | 2018-05-10 |
US20070186246A1 (en) | 2007-08-09 |
US9760259B2 (en) | 2017-09-12 |
US20150046813A1 (en) | 2015-02-12 |
US20210247883A1 (en) | 2021-08-12 |
US20200019290A1 (en) | 2020-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210247883A1 (en) | Digital Media Player Behavioral Parameter Modification | |
US20230169991A1 (en) | Systems and methods for improving audio conferencing services | |
US10950270B2 (en) | Audio modification for adjustable playback rate | |
US10291966B2 (en) | Systems and methods of providing modified media content | |
US7047201B2 (en) | Real-time control of playback rates in presentations | |
EP3357253B1 (en) | Gapless video looping | |
US20090060458A1 (en) | Method for synchronizing data flows | |
US8144837B2 (en) | Method and system for enhanced user experience of audio | |
US12010161B1 (en) | Browser-based video production | |
US12075115B2 (en) | Supplemental audio generation system in an audio-only mode | |
WO2001024530A2 (en) | Streaming media encoding agent for temporal modifications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ENOUNCE, INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GOLDHOR, RICHARD S.;REEL/FRAME:013164/0119 Effective date: 20020730 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |