Abstract:
A method of seeking within a time shift buffer includes receiving a media stream from a remotely located media source over a network, and generating a time shift buffer associated with the media stream. The time shift buffer includes a number of frames with keyframes provided at a certain intervals. When a seek request associated with a desired time within the media stream is received, the system determines a nearest keyframe within the set of keyframes that is previous to and closest in time to the desired time, displays the nearest keyframe, then considers in turn each of the frames subsequent to the nearest keyframe until a desired frame corresponding to the desired time is reached displayed. The system cancels the previous examining step and determines a new nearest keyframe in the event a second seek request is received.

Description:
TECHNICAL FIELD 
       [0001]    The present disclosure generally relates to user interfaces used in connection with streamed media, and more particularly relates to methods for seeking within a time buffer associated with streamed media. 
       BACKGROUND 
       [0002]    Recently, consumers have expressed significant interest in “place shifting” devices that allow viewing of television or other media content at locations other than their primary television set. Place shifting devices typically packetize media content that can be transmitted over a local or wide area network to a portable computer, mobile phone, personal digital assistant, remote television or other remote device capable of playing back the packetized media stream for the viewer. Placeshifting therefore allows consumers to view their media content from remote locations such as other rooms, hotels, offices, and/or any other locations where portable media player devices can gain access to a wireless or other communications network. 
         [0003]    In the context of media streaming, including for example conventional general purpose computers running software for streaming placeshifted media, it is desirable to allow a user to seek within the media time buffer to find a particular scene or time slot, and then continue viewing the media from that point. The user interface for such a seeking operation typically allows a user to move (or “scrub”) an icon such as a play-head icon across a visual representation of a timeline associated with the media. In response, the software then goes to the nearest keyframe, decodes and drops all frames until it reaches the desired position (i.e., time), then displays the correct frame. 
         [0004]    Such a system is undesirable in that the process of decoding and dropping frames can take a significant amount of time from the user&#39;s point of view, particularly when keyframes are widely spaced (e.g., on the order of five seconds apart). As a result, the user is not given active feedback when scrubbing the icon along the timeline, and the resulting user interface lacks responsiveness. 
         [0005]    It is therefore desirable to create systems and methods for seeking a media stream buffer in a way that is responsive, intuitive, and provides useful real-time information to the user. These and other desirable features and characteristics will become apparent from the subsequent detailed description and the appended claims, taken in conjunction with the accompanying drawings and this background section. 
       BRIEF SUMMARY 
       [0006]    According to various exemplary embodiments, systems and methods are described for seeking for a desired frame within a time shift buffer by decoupling the display of keyframes from the decoding and dropping of subsequent frames. A method in accordance with one embodiment includes receiving the media stream from a remotely located media source over a network; generating a time shift buffer associated with the media stream, the time shift buffer including a plurality of frames, the plurality of frames including a set of keyframes; receiving a seek request associated with a desired time within the media stream; determining a nearest keyframe within the set of keyframes that is previous to and closest in time to the desired time; displaying the nearest keyframe; examining each of the frames subsequent to the nearest keyframe until a desired frame corresponding to the desired time is reached; and cancelling the previous examining step and determining a new nearest keyframe in the event a second seek request is received. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWING FIGURES 
         [0007]    Exemplary embodiments will hereinafter be described in conjunction with the following drawing figures, wherein like numerals denote like elements, and 
           [0008]      FIG. 1  is a block diagram of an exemplary media encoding system; 
           [0009]      FIG. 2  is a block diagram of an exemplary media encoding device; 
           [0010]      FIG. 3  is a conceptual overview of a typical time line user interface used in connection with a media buffer; 
           [0011]      FIG. 4  is a flowchart depicting a method in accordance with an exemplary embodiment; 
           [0012]      FIG. 5  depicts, conceptually, a buffer seek process in accordance with the present invention. 
       
    
    
     DETAILED DESCRIPTION 
       [0013]    The following detailed description of the invention is merely exemplary in nature and is not intended to limit the invention or the application and uses of the invention. Furthermore, there is no intention to be bound by any theory presented in the preceding background or the following detailed description. 
         [0014]    Turning now to the drawing figures and with initial reference to  FIG. 1 , an exemplary placeshifting system  100  suitably includes a placeshifting encoder system  102  that receives media content  122  from a content source  106 , encodes the received content into a streaming format, and then transmits the encoded media stream  120  to a media player  104  over network  110 . The media player  104  suitably receives the encoded stream  120 , decodes the stream, and presents the decoded content to a viewer on a television or other display  108 . In various embodiments, a server  112  may also be provided to communicate with encoder system  102  and/or player  104  via network  110  to assist these devices in locating each other, maintaining security, providing or receiving content or information, and/or any other features as desired. This feature is not required in all embodiments, however, and the concepts described herein may be deployed in any data streaming application or environment, including placeshifting but also any other media or other data streaming situation. 
         [0015]    Placeshifting encoder system  102  is any component, hardware, software logic and/or the like capable of transmitting a packetized stream of media content over network  110 . In various embodiments, placeshifting device  102  incorporates suitable encoder and/or transcoder (collectively “encoder”) logic to convert audio/video or other media data  122  into a packetized format that can be transmitted over network  110 . The media data  122  may be received in any format, and may be received from any internal or external source  106  such as any sort of broadcast, cable or satellite television programming source, a “video-on-demand” or similar source, a digital video disk (DVD) or other removable media, a video camera, and/or the like. Encoder system  102  encodes media data  122  to create media stream  120  in any manner. In various embodiments, encoder system  102  contains a transmit buffer  105  that temporarily stores encoded data prior to transmission on network  110 . As buffer  105  fills or empties, one or more parameters of the encoding (e.g., the bit rate of media stream  120 ) may be adjusted to maintain desirable picture quality and data throughput in view of the then-current network performance. As described more fully below, various embodiments are able to calculate a current encoding rate and a current network transfer rate, and are able to adjust the encoding rate as the network transfer rate changes. Changes in the network transfer rate may be identified from, for example, changes in the utilization of the outgoing buffer  105 . 
         [0016]    Several examples of encoding systems  102  may be implemented using any of the various SLINGBOX products available from Sling Media of Foster City, Calif., although other products could be used in other embodiments. Many different types of encoder systems  102  are generally capable of receiving media content  122  from an external source  106  such as any sort of digital video recorder (DVR), set top box (STB), cable or satellite programming source, DVD player, and/or the like. In such embodiments, encoder system  102  may additionally provide commands  124  to the source  106  to produce desired signals  122 . Such commands  124  may be provided over any sort of wired or wireless interface, such as an infrared or other wireless transmitter that emulates remote control commands receivable by the source  106 . Other embodiments, however, particularly those that do not involve placeshifting, may modify or omit this feature entirely. 
         [0017]    In other embodiments, encoder system  102  may be integrated with any sort of content receiving or other capabilities typically affiliated with source  106 . Encoder system  102  may be a hybrid STB or other receiver, for example, that also provides transcoding and placeshifting features. Such a device may receive satellite, cable, broadcast and/or other signals that encode television programming or other content received from an antenna, modem, server and/or other source. The receiver may further demodulate or otherwise decode the received signals to extract programming that can be locally viewed and/or place shifted to a remote player  104  as appropriate. Such devices  102  may also include a content database stored on a hard disk drive, memory, or other storage medium to support a personal or digital video recorder (DVR) feature or other content library as appropriate. Hence, in some embodiments, source  106  and encoder system  102  may be physically and/or logically contained within a common component, housing or chassis. 
         [0018]    In still other embodiments, encoder system  102  is a software program, applet or the like executing on a conventional computing system (e.g., a personal computer). In such embodiments, encoder system  102  may encode, for example, some or all of a screen display typically provided to a user of the computing system for placeshifting to a remote location. One device capable of providing such functionality is the SlingProjector product available from Sling Media of Foster City, Calif., which executes on a conventional personal computer, although other products could be used as well. 
         [0019]    Media player  104  is any device, component, module, hardware, software and/or the like capable of receiving a media stream  120  from one or more encoder systems  102 . In various embodiments, remote player  104  is personal computer (e.g., a “laptop” or similarly portable computer, although desktop-type computers could also be used), a mobile phone, a personal digital assistant, a personal media player (such as the ARCHOS products available from the Archos company of Igny, France) or the like. In many embodiments, remote player  104  is a general purpose computing device that includes a media player application in software or firmware that is capable of securely connecting to placeshifting encoder system  102 , as described more fully below, and of receiving and presenting media content to the user of the device as appropriate. In other embodiments, however, media player  104  is a standalone or other separate hardware device capable of receiving the media stream  120  via any portion of network  110  and decoding the media stream  120  to provide an output signal  126  that is presented on a television or other display  108 . One example of a standalone media receiver  104  is the SLINGCATCHER product available from Sling Media of Foster City, Calif., although other products could be equivalently used. 
         [0020]    Network  110  is any digital or other communications network capable of transmitting messages between senders (e.g., encoder system  102 ) and receivers (e.g., receiver  104 ). In various embodiments, network  110  includes any number of public or private data connections, links or networks supporting any number of communications protocols. Network  110  may include the Internet, for example, or any other network based upon TCP/IP or other conventional protocols. In various embodiments, network  110  also incorporates a wireless and/or wired telephone network, such as a cellular communications network for communicating with mobile phones, personal digital assistants, and/or the like. Network  110  may also incorporate any sort of wireless or wired local area networks, such as one or more IEEE 802.3 and/or IEEE 802.11 networks. 
         [0021]    Encoder system  102  and/or player  104  are therefore able to communicate with player  104  in any manner (e.g., using any sort of data connections  128  and/or  125 , respectively). Such communication may take place over a wide area link that includes the Internet and/or a telephone network, for example; in other embodiments, communications between devices  102  and  104  may take place over one or more wired or wireless local area links that are conceptually incorporated within network  110 . In various equivalent embodiments, encoder system  102  and receiver  104  may be directly connected via any sort of cable (e.g., an Ethernet cable or the like) with little or no other network functionality provided. 
         [0022]    Many different placeshifting scenarios could be formulated based upon available computing and communications resources, consumer demand and/or any other factors. In various embodiments, consumers may wish to placeshift content within a home, office or other structure, such as from a placeshifting encoder system  102  to a desktop or portable computer located in another room. In such embodiments, the content stream will typically be provided over a wired or wireless local area network operating within the structure. In other embodiments, consumers may wish to placeshift content over a broadband or similar network connection from a primary location to a computer or other remote player  104  located in a second home, office, hotel or other remote location. In still other embodiments, consumers may wish to placeshift content to a mobile phone, personal digital assistant, media player, video game player, automotive or other vehicle media player, and/or other device via a mobile link (e.g., a GSM/EDGE or CDMA/EVDO connection, any sort of 3G or subsequent telephone link, an IEEE 802.11 “Wi-fi” link, and/or the like). Several examples of placeshifting applications available for various platforms are provided by Sling Media of Foster City, Calif., although the concepts described herein could be used in conjunction with products and services available from any source. 
         [0023]    Encoder system  102 , then, generally creates a media stream  120  that is routable on network  110  based upon content  122  received from media source  106 . To that end, and with reference now to  FIG. 2 , encoder system  102  typically includes an encoder module  202 , a buffer  105  and a network interface  206  in conjunction with appropriate control logic  205 . In operation, encoder module  202  typically receives media content  122  from an internal or external source  106 , encodes the data into the desired format for media stream  120 , and stores the encoded data in buffer  105 . Network interface  206  then retrieves the formatted data from buffer  105  for transmission on network  110 . Control module  205  suitably monitors and controls the encoding and network transmit processes carried out by encoding module  202  and network interface  206 , respectively, and may perform other features as well. Encoder system  102  may also have a module  208  or other feature capable of generating and providing commands  124  to an external media source  106 , as described above. 
         [0024]    In the exemplary embodiment shown in  FIG. 2 , modules  202 ,  105 ,  205 ,  206  and  208  may be implemented in software or firmware residing in any memory, mass storage or other storage medium within encoder system  102  in source code, object code and/or any other format. Such features may be executed on any sort of processor or microcontroller executing within encoder system  102 . In various embodiments, encoder system  102  is implemented as a system on a chip (SoC) type system with integrated processing, storage and input/output features. Various SoC hardware implementations are available from Texas Instruments, Conexant Systems, Broadcom Inc., and other suppliers as appropriate. Other embodiments may use any number of discrete and/or integrated processing components, memories, input/output features and/or other features as desired. 
         [0025]    As noted above, creating a media stream  120  typically involves encoding and/or transcoding an input media stream  122  received from an internal or external media source  106  into a suitable digital format that can be transmitted on network  110 . Generally, the media stream  120  is placed into a standard or other known format (e.g., the WINDOWS MEDIA format available from the Microsoft Corporation of Redmond, Wash. although other formats such as the QUICKTIME format, REALPLAYER format, MPEG format, and/or the like could be used in any other embodiments) that can be transmitted on network  110 . This encoding may take place, for example, in any sort of encoding module  202  as appropriate. Encoding module  202  may be any sort of hardware (e.g., a digital signal processor or other integrated circuit used for media encoding), software (e.g., software or firmware programming used for media encoding that executes on the SoC or other processor described above), or the like. Encoding module  202  is therefore any feature that receives media data  122  from the internal or external source  106  (e.g., via any sort of hardware and/or software interface) and encodes or transcodes the received data into the desired format for transmission on network  110 . Although  FIG. 2  shows a single encoding module  202 , in practice system  102  may include any number of encoding modules  202 . Different encoding modules  202  may be selected based upon preference of player  104 , network conditions, and/or the like. 
         [0026]    In various embodiments, encoder  202  may also apply other modifications, transforms and/or filters to the received content before or during the transcoding process. Video signals, for example, may be resized, cropped and/or skewed. Similarly, the color, hue and/or saturation of the signal may be altered, and/or noise reduction or other filtering may be applied. Audio signals may be modified by adjusting volume, sampling rate, mono/stereo parameters, noise reduction, multi-channel sound parameters and/or the like. Digital rights management encoding and/or decoding may also be applied in some embodiments, and/or other features may be applied as desired. 
         [0027]    In various embodiment, including those in which media is streamed to media player  104  that comprises a general purpose computer running a media application, media player  104  produces and stores a time shift buffer that includes a buffer of the streamed media received over network  110 , and includes a buffer seek module (comprising any combination of hardware and software) that allows a user to search within the buffer to find a particular scene or time and then continue viewing the media from that point. 
         [0028]    In that regard,  FIG. 3  shows a simplified view of a typical user interface used to seek within a time shift buffer. In general, a timeline  304  is presented to the user such that its geometry corresponds to the extent of the media being viewed, while the buffer will typically include a subset of the total media that will ultimately be streamed. 
         [0029]    In this embodiment, for example, timeline  304  is literally a line segment whose endpoints correspond to the beginning and end of the media. To visualize the current location within the stream, an icon  306  (e.g., a rectangular icon as shown) is displayed along timeline  304  at the location that proportionally corresponds to the position of viewed media within window  302 . By moving icon  306  back and forth along timeline  304  (to the extent allowed by the buffered information, the user is able to select a particular scene or time within the buffer and begin watching the displayed media  302  at that point. It will be appreciated that the various geometries and iconography illustrated in  FIG. 3  are merely presented as an example, and that timeline  304 , icon  306 , and viewed media  302  may be provided to the user in any number of alternate configurations and may include any number of additional user interface elements. 
         [0030]    Referring now to  FIGS. 4 and 5 , an exemplary seek method in accordance with one embodiment of the present invention will now be described. The various steps may be implemented in any combination of hardware and software (collectively referred to as the “system”) within media player  104  ( FIG. 1 ). 
         [0031]    First, in step  402 , the system receives a seek request. This request may take the form of an interrupt or other software message produced, for example, via the user interface shown in  FIG. 3 . In general, the request will include an indication of a desired time within the buffered media stream. 
         [0032]    That is, referring to  FIG. 5 , a media stream  500  conceptually includes a set of time-sequential frames  502  ( 502   a,    502   b,  etc.), including key frames included within certain intervals (such as frames  502   a  and  502   d ) as well as standard frames ( 502   b,    502   c,    502   e,    502   f,    502   g,  etc.). A typical seek request then might include a request to view the media starting from a time at marker  512 . 
         [0033]    Accordingly, in step  404 , the system displays the nearest previous keyframe (e.g., within the displayed media window  302  of  FIG. 3 ). In the current example, the nearest keyframe corresponds to frame  502   d.    
         [0034]    Next, a series of steps are performed in a manner that is cancellable by the receipt of a new seek request or interrupt (e.g., a software or hardware interrupt), thereby decoupling the display of the keyframe from the consideration (e.g., the decoding and/or dropping) of subsequent frames. That is, in step  406 , the next frame is decoded using the appropriate decoding method (step  406 ), and then dropped (i.e., not further considered) (step  408 ). In the present example, for example, the system would decode and drop frame  502 ( e ). The phrase “consideration” as it is used in connection with the buffered stream of frames refers to any set of operations applied to the frames, decoding and dropping being just two such operations. 
         [0035]    Next, in step  410 , the system checks whether a new seek request has been made by the user (e.g., using the interface depicted in  FIG. 3 ). This may also be implemented as an interrupt, as is known in the art. If a new seek request has been made (‘yes’ branch from block  410 ), the system returns to step  404  and displays the nearest keyframe, then continues as before, effectively cancelling the previous decode/drop operation. 
         [0036]    That is, if the user requests to view the buffer at time marker  510 , the previous decode/drop operation would be cancelled, and the system would display key frame  502   a  in place of previously displayed keyframe  502   d.    
         [0037]    Next, in step  412 , the system determines whether the desired time ( 512 ) has been reached. If not, the system continues to decode and drop frames (e.g., frame  502   f ), or cancels the current request to address a new seek request (step  410 ). In this way, the process continues until the desired frame ( 502   g,  or  502   c ) is reached. 
         [0038]    It will be apparent that the asynchronous nature of the display of keyframes and subsequent searching through the buffer is highly advantageous from a user interface standpoint. The user is presented with real-time visual feedback that is responsive to his input, and which avoids the delay inherent in decoding and dropping frames between keyframes. While this invention is particularly advantageous in the context of media streams with relatively high keyframe intervals (e.g., greater than about 4 seconds), the systems and methods described may be used in connection with any suitable media stream. 
         [0039]    The term “exemplary” is used herein to represent one example, instance or illustration that may have any number of alternates. Any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations. While several exemplary embodiments have been presented in the foregoing detailed description, it should be appreciated that a vast number of alternate but equivalent variations exist, and the examples presented herein are not intended to limit the scope, applicability, or configuration of the invention in any way. To the contrary, various changes may be made in the function and arrangement of elements described without departing from the scope of the claims and their legal equivalents.