Abstract:
Embodiments of the invention are directed towards methods and systems for playback of a content item by a media player. The method according to one embodiment comprises loading a content item into the media player, checking user preferences to retrieve a user value function and determining if available bandwidth exceeds a threshold. If the available bandwidth exceeds the threshold, the method initiates playback of the content item by the media player. If the available bandwidth is below the threshold, the method initiates playback of the content item by the media player on the basis of the available bandwidth and the user value function. If the media player is unable to retrieve the user value function, the method presents a calibration interface at the media player, the calibration interface operative to receive a user value function from a user and optimize playback of the content item.

Description:
COPYRIGHT NOTICE 
       [0001]    A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. 
       FIELD OF THE INVENTION 
       [0002]    The invention disclosed herein relates generally to media players and rendering of content items through use of the same. More specifically, the present invention relates to the methods and software for allowing users to balance between load time and quality in rendering or otherwise playing back content items delivered electronically to a media player. 
       BACKGROUND OF THE INVENTION 
       [0003]    The amount of online video content has exploded recently with the development of various web sites that allow users to share content items online for playback by other users. There are many formats for the playback of professional or amateur videos, such as Yahoo Video Player, Real Player, QuickTime player, Windows Media Player, Flash players, etc. These players have the option of playing online streaming content within an Internet browser. Many players may also run as stand-alone programs that play content stored locally or from a remote server. 
         [0004]    One problem associated with the playback of content items over a computer network is that bandwidth available over a given network connection may be limited. When attempting to playback large content items over a limited bandwidth network connection, playback may be choppy due to latency in receiving data packets that the player requires for playback of the content item. Alternatively, or in conjunction with the foregoing problem, there may be unacceptable delays when receiving large content items over a limed bandwidth connection. User&#39;s often have limited or no choice in their preference between the quality of content and delay in playback of a desired content item. 
         [0005]    Different media players implement various methodologies for the playback of content items that a media player receives through a network. Some media players are operative to playback a content item as the player receives the content item, playback of a content stream without buffering the stream prior to playback. Other players, however, buffer content at full quality before initiating playback the content item. Still other players stream content items, on the basis on the bandwidth available to the media player, which does not necessarily include playback of a given content item at full quality. 
         [0006]    Various media players heretofore know to those of skill in the art, however, fail to account for the dual preference of a user to balance immediacy and quality with respect to deliver of a content item, e.g., the desire of a user for playback of a content item on demand often conflicts with his or her wish to a high-quality content item. Thus, embodiments of the present invention provide systems and methods that allow for the optimization of the delivery and playback of a content item in a manner that is suitable for a given user or class or users. 
       SUMMARY OF THE INVENTION 
       [0007]    The present invention provides systems, method and computer readable media comprising program code to facilitate users in choosing between desired latency and quality of video content delivered electronically over a network and to be played in a media player. A method according to one embodiment of the invention comprises loading a content item into the media player, checking user preferences to retrieve a user value function and determining if available bandwidth exceeds a threshold. According to embodiments of the invention, the user value function may be a collection of one or more preferences, or may be an extrapolation based on a collection of one or more preferences. If the available bandwidth exceeds the threshold, the method comprises initiating playback of the content item by the media player. If the available bandwidth is below the threshold, the method comprises initiating a playback of the content item by the media player on the basis of the available bandwidth and the user value function. If the media player is unable to retrieve the user value function, the method comprises presenting a calibration interface at the media player, the calibration interface operative to receive a user value function from a user and optimize playback of the content item. 
         [0008]    Where the available bandwidth exceeds the threshold, the method comprises streaming the content item to the media player at a high quality. The step of checking user preferences comprises checking the user value function associated with a specific type content item loaded into the media player if the bandwidth is below the threshold. According to one embodiment, a user value function is associated with a duration of the content item loaded into the media player if the bandwidth is below the threshold, e.g., multiple user value functions may be set, a given user value function associated with a content items of a given duration or duration range. A video session may be buffered in accordance with the user value function. 
         [0009]    The method player may present a calibration interface comprising one or more controls. According to on embodiment, presenting the calibration interface comprises presenting a quality latency interactive user-interface element operative to set a user value function indicating a balance between quality and latency. Presenting the calibration interface may also comprise presenting a start-delay indicator operative to display an amount of time until initiation of playback of the content at the currently selected user value function. Finally, presenting the calibration interface may comprise presenting a visual control operative to display the expected content item playback quality on the basis of the currently selected user value function. 
         [0010]    The user value function for quality and latency may be stored for a selected content type. Storing the user value function may also comprise storing the user value function in association with a given class of content items. The method may display or otherwise present the calibration interface in response to a number of events. For example, the calibration interface may be presented if retrieving the user value function fails. Alternatively, or in conjunction with the foregoing, the calibration interface may be presented in response to user interaction with the media player. The media content may be played with sufficient buffering to achieve the quality and latency requirements according to the user value function. Playback of the content item may be initiated by the media player on the basis of the available bandwidth and the user value function comprising playback on the basis of one or more user preferences. 
         [0011]    The media player may be executed in a number of modes of operative. According to one embodiment, the media player executes embedded in another application. The another application may be, for example, a web browser. Alternatively, or additionally, the media player may be executed as a stand-alone application. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0012]    The invention is illustrated in the figures of the accompanying drawings, which are meant to be exemplary and not limiting, in which like references are intended to refer to like or corresponding parts, and in which: 
           [0013]      FIG. 1A  is a block diagram illustrating a system for optimizing the playback of a content item by a media player application in a manner that is suitable for a given user or class or users according to one embodiment of the present invention; 
           [0014]      FIG. 1B  is a block diagram illustrating the components of a media player according to one embodiment of the present invention; 
           [0015]      FIG. 2  is flow diagram illustrating the operation of a media player application to optimize playback of a content item in a manner that is suitable for a given user or class or users according to one embodiment of the present invention; 
           [0016]      FIG. 3  is flow diagram illustrating the operation of a media player application to modify playback of a content item in a manner that is suitable for a given user or class or users according to one embodiment of the present invention; 
           [0017]      FIG. 4  illustrates a screen diagram of a media player and calibration interface according to one embodiment of the present invention; and 
           [0018]      FIGS. 5A and 5B  illustrate two screen diagrams comparing video content being played in the media player at high quality with high latency and at low quality with low latency, respectively, in accordance with an embodiment of the invention. 
       
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
       [0019]    In the following description of embodiments of the invention, reference is made to the accompanying drawings that form a part hereof and in which is shown by way of illustration a number of specific embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention. 
         [0020]      FIG. 1A  presents a block diagram illustrating an environment in which various embodiments of the invention may be implemented. The system of  FIG. 1A  includes one or more client devices  100 ,  108 ,  112  and  118 . Exemplary client devices include personal computers  100  and  108 , mobile devices  112  (such as smartphones and PDAs), and a set-top boxes  118 . A given client device  100 ,  108 ,  112  and  118  comprises a microprocessor, persistent storage and transient storage devices (not pictured), which are operative to maintain program code and data for execution by the microprocessor. Exemplary program code at the client device  100 ,  108 ,  112  and  118  includes a media player  102 ,  110 ,  114 ,  116 , respectively, which may execute within an Internet browser  104  or as a stand-alone application. A client device may download a media player application from an application server  130  over the network  120 . 
         [0021]    A given client device, as well as a media player executing thereon, are in communication with a content provider through a network  120 . The network  120  may comprise various combinations of wired and wireless local and wide area networks, e.g., the Internet, an intranet or combinations thereof. Through communication over the network  120 , a media player  102 ,  110 ,  114 ,  116  is operative to receive one or more content items from a content web server  140 . Similarly, a media player  102 ,  110 ,  114 ,  116  may communicate over the network to connect to a multimedia library server  160 . A multimedia library server  160  may provide one or more content items to a media player  102 ,  110 ,  114 ,  116  through a multimedia interface  150 . 
         [0022]    There are many systems and platforms in which this invention may be distributed and used, which are generally well known to those of skill in the art. In one embodiment a given client device  100 ,  108 ,  112  and  118  may initially download the media player installation files from an application server  130  and install the media player application  102 ,  110 ,  114  and  116 . The media player  102 ,  110 ,  114  and  116  may be installed as plug-in or to otherwise run within a browser  104 , such as Internet Explorer or Firefox. In accordance with another embodiment, the media player  102 ,  110 ,  114  and  116  may be run outside the browser  104 . Accordingly, it is possible for the media player  102 ,  110 ,  114  and  116  to work both as plug-in and as stand-alone program. 
         [0023]    One embodiment of a media player in accordance with the present invention is illustrated in  FIG. 1B . The media player  170  of  FIG. 1B  comprises a compressor/decompressor (“codec”)  180 , a bandwidth meter control module  182  and a calibration interface  184 . The media player  170  utilizes the codec  180  to decompress and render the content item that the media player  180  receives, which the media player  180  may receive from a local source or a remote source, e.g., over the network. 
         [0024]    The bandwidth meter control module  182  comprises business logic that controls the playback of a given content item, which may include control of the codec  170 . The bandwidth meter control module  182  may make a determination that if available bandwidth is sufficient to stream the content item at high quality or at a high enough quality for the user then the media player  170  initiates playback of the content item. Otherwise, the bandwidth meter control module  182  checks to determine if the user has set a user value function to indicate his or her preference of playback quality versus delivery time. Where the bandwidth meter control module  182  identifies a user value function, the media player  170  initiates a buffered video session at the quality indicated by the user value function. 
         [0025]    Where insufficient bandwidth is available for high quality playback of a content item that the user selects with low latency, and the bandwidth meter control module  182  is unable to identify or retrieve a user value function (which is described herein in greater detail) the media player  170  may present the user with a calibration interface  184 . According to one embodiment, the calibration interface  184  records a preference for a given user with regard to quality versus latency. The preference may be made for the target content type. The media player  170  stores the user preference (user value function) and initiates playback of the content item that the user selects with sufficient buffer to achieve the target quality and latency requirements or preferences of the user. 
         [0026]    After the media player program in installed on an application device, a client user may use select one or more content items for playback that are located on a server that is remote to the client device. In one embodiment a user may select a content item for playback through interaction with a web browser. The content item be video, audio, images, as well as combinations thereof.  FIG. 2  is flow diagram illustrating the operation of a media player application to optimize playback of a content item in a manner that is suitable for a given user or class or users according to one embodiment of the present invention. According to the embodiment of  FIG. 2 , the internet browser at a client device loads the media player in response to a selection of a content item, step  200 . Alternatively, the media player may initialize and execute as a stand-alone application program for the playback of content items. In other embodiments, the media player may initialize and execute to allow the user to select one or more content items from a remote server for playback. 
         [0027]    After the media player begins execution, the media player may attempt to identify the user of the client device or media player, step  205 . Identification of a user that is utilizing the client device or media player may be used to retrieve or otherwise obtain settings, preferences, user value function and other information associated with a particular user, step  210 . This process may consist of reading cookies or other similar files stored locally on the client device. The user&#39;s identity may be stored locally with one or more user preferences and other information. Alternatively, these data may be stored remotely and downloaded through the network. 
         [0028]    The user value function is used to indicate the manner in which the media player is operative to playback a given content item continuously while client retrieves the content item from a remote source. The user value function may comprise one or more parameters that represent user preferences for the optimization of the playback of a content item as a function of quality against latency. In low bandwidth or other high latency network configurations, quality and latency may be in opposition to each other. Video content, as one exemplary type of content item, typically requires more bandwidth than audio, which may be a function of the quality at which the media player is to playback the video. To play at a high quality in a bandwidth constrained network environment, playback latency would usually increase as the media player would have to create a sufficient buffer for the video before playing begins. The user value function is captures a preference of a given user for quality versus wait time in the playback of a content item. The user value function may be an actual linear or non-linear function, or other instructions that use for example, quality and latency parameters among others, to determine an amount of buffering to be use when streaming media content to the media player. 
         [0029]    After retrieving and loading the user value function (which may include loading user preferences), the media player may perform a test of the bandwidth available to the client device, step  215 . The result of the bandwidth test is provided as input to a check to determine if the bandwidth is sufficient for the playback of a selected content item at a high quality, step  220 , which may be a highest quality available for the content item. If the bandwidth is sufficient to stream the content item at full quality, the media player initiates a high quality playback session, step  230 . If the media player cannot play at full quality, the media player may check preferences for the user to and confirm if media play may playback the content item at a highest available quality without sacrificing or otherwise incurring unacceptable latency, step  225 . If the check at step  225  evaluates to true, the media player may initiate playback of the content item at a highest available quality without sacrificing or otherwise incurring unacceptable latency, step  230 . 
         [0030]    Where bandwidth constraints prevent the streaming at a sufficient quality, step  225 , the media player perform a check to determine if a user value function is available, step  235 . The user value function may be defined generically, or may be defined for certain media types, duration times, media categories, etc. Accordingly, the media player may check to determine if a user value function is defined or available for the specific content type, length, etc. According to one embodiment, the user value function is applicable to certain video types or files, or video clips of certain lengths, such as only video clips under 1 minute. For example, it is possible that user value function is configured such as to instruct the media player that a user prefers content items to be played at a low quality if they are less than a minute, but at a much higher quality (and disregard concerns regarding latency that buffering incurs) if the content item is longer than a minute (or other time based threshold). 
         [0031]    If the user value function is defined or otherwise available for content items selected for streaming, the media player is operative to use the user value function to set buffering for the playback of the content item to include buffering that ensures the proper tradeoff between quality and latency, step  240 . If the user value function is not defined or otherwise available, however, the media player according to one embodiment of the invention presents a calibration interface to visually record playback preferences for a given user, step  245 . As is described in greater detail herein, the calibration interface is operative to display or otherwise provide controls that allow a user to visually and intuitively set their streaming or playback preferences. The calibration interface may also allow the media player to learn the preferences and then update or adjust the user value function accordingly. These preferences may be stored and applied when initiating a session to implement the proper buffering and playback quality, step  250 . 
         [0032]      FIG. 3  presents a flow diagram illustrating one embodiment of a method for operating a media player application to modify playback of a content item in a manner that is suitable for a given user or class or users. According to the embodiment of  FIG. 3 , the media player is operating after the initiation of a playback session for a selected content item, step  300 . The media player retrieves and loads one or more first packets of the content item that the stream comprises, step  310 . The media player buffers the content item, step  320 . Buffering may be performed in accordance with user preferences, with the user value function, available bandwidth, and various combinations thereof. 
         [0033]    Before the media player loads a second one or more packets of the content item, the media player may reexamine the available bandwidth to determine if the available bandwidth is sufficient to meet playback quality and latency requirements as reflected by the current user value function, step  330 . As those of skill in the art recognize, available bandwidth depends on many factors and may fluctuate as a function of time, sometimes drastically. If sufficient bandwidth is available for playback of the content item without comprising the current latency and quality requirements, the calibration interface may appear in response to some enumerated user interaction, such as a click on button, to indicate a desire to modify the existing user value function, steps  340  and  350 . Alternatively, available bandwidth at the time the check is performed (step  330 ) may be insufficient to support playback quality and latency requirements. If the bandwidth can no longer sustain the latency and quality requirements, a calibration interface may be presented, step  350 . If there is no desire or no need to change the user value function parameters, program flow returns to step  310  where the media player continues to load the content item, with the process looping until completion of the playback of the content item or manual termination of the process by the user. 
         [0034]      FIG. 4  illustrates a screen diagram of a media player and calibration interface according to one embodiment of the present invention. The media player  400  is shown with standard play  402 , pause  404 , stop  406 , fast forward  408 , rewind controls  410 . The media player  400  comprises a “Q” button  412 . Selection of the “Q” button  412  is operative to active a calibration interface  420  as indicated by the dashed lines  414 . This calibration interface  420  comprises two elements, a Start-delay Indicator  430  and a Quality-Latency Selector  440 . The Start-Delay Indicator  430  is an indication of an amount of time to delay prior to beginning playback of the video at a currently selected quality level. The Quality-Latency Selector  440  is an interactive element, such as a slider or other graphical element, which allows a user to choose between quality and latency in the playback of a content item or class or category of content item. 
         [0035]      FIGS. 5A and 5B  illustrate two screen diagrams comparing video content being played in the media player at high quality with high latency and at low quality with low latency, respectively, in accordance with an embodiment of the invention. FIGS. SA and  5 B illustrate the effect of adjusting the Quality-Latency Selector  502  and  504 . FIG  5 A illustrates a video clip where the user configures the media player to playback the content item at a high quality. As a result, the latency or delay in the initiation of the playback of the content item is high.  FIG. 5B  illustrates the converse scenario where the user configures the media player to playback the content item with low latency, but as a result the video frame quality suffers. 
         [0036]    The figures and examples above are not meant to limit the scope of the present invention to a single embodiment, as other embodiments are possible by way of interchange of some or all of the described or illustrated elements. Moreover, where certain elements of the present invention can be partially or fully implemented using known components, only those portions of such known components that are necessary for an understanding of the present invention are described, and detailed descriptions of other portions of such known components are omitted so as not to obscure the invention. In the present specification, an embodiment showing a singular component should not necessarily be limited to other embodiments including a plurality of the same component, and vice-versa, unless explicitly stated otherwise herein. Moreover, applicants do not intend for any term in the specification or claims to be ascribed an uncommon or special meaning unless explicitly set forth as such. Further, the present invention encompasses present and future known equivalents to the known components referred to herein by way of illustration. 
         [0037]    The foregoing description of the specific embodiments will so fully reveal the general nature of the invention that others can, by applying knowledge within the skill of the relevant art(s) (including the contents of the documents cited and incorporated by reference herein), readily modify and/or adapt for various applications such specific embodiments, without undue experimentation, without departing from the general concept of the present invention. Such adaptations and modifications are therefore intended to be within the meaning and range of equivalents of the disclosed embodiments, based on the teaching and guidance presented herein. It is to be understood that the phraseology or terminology herein is for the purpose of description and not of limitation, such that the terminology or phraseology of the present specification is to be interpreted by the skilled artisan in light of the teachings and guidance presented herein, in combination with the knowledge of one skilled in the relevant art(s). 
         [0038]    While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example, and not limitation. It would be apparent to one skilled in the relevant art(s) that various changes in form and detail could be made therein without departing from the spirit and scope of the invention. Thus, the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.