Queue to display additional information for entities in captions

In one embodiment, a method receives a video for a media program and a set of captions for a dialog in the video. A media player plays the video. A time associated with playing of the video is determined and then the method determines a set of entities in relation to the time. The set of entities are included in one or more captions in the set of captions. The method displays the set of entities in a queue where the set of entities are associated with additional information for each respective entity in the set of entities.

BACKGROUND

While watching a video, a user may want to know more information about an entity in the video. For example, the user may see a character in the video and want to know the real name of the person who is playing that character. Also, the user may want to know additional information about the character or person, such as other shows or movies the person is in.

A video may be configured with interactive features that allow a user to select entities in the video. For example, a user may maneuver a pointer over the face of one of the characters in the video and be shown more information about the character. To enable the interactivity, a company must process the video to determine relevant entities in the video. For example, the company may use face detection to detect and track faces in the video, which requires analysis of pixels of the video. Then, the characters must be identified by visual inspection. This process is time-consuming and also requires human inspection.

SUMMARY

In one embodiment, a method receives a video for a media program and a set of captions for a dialog in the video. A media player plays the video. A time associated with playing of the video is determined and then the method determines a set of entities in relation to the time. The set of entities are included in one or more captions in the set of captions. The method displays the set of entities in a queue where the set of entities are associated with additional information for each respective entity in the set of entities.

In one embodiment, a method includes: receiving, by a computing device, captions for a video of a media program; analyzing, by the computing device, the captions to determine entities in the captions; determining, by the computing device, additional information for respective entities in the captions; associating, by the computing device, respective additional information with occurrences of the respective entities in the captions; and storing, by the computing device, the additional information and the entities, wherein entities are useable to display a set of entities in a queue in a coordination with a time when the video is being played by a user device.

In one embodiment, a non-transitory computer-readable storage medium contains instructions, that when executed, control a computer system to be configured for: receiving a video for a media program; receiving a set of captions for a dialog in the video; playing the video in a media player; determining a time associated with playing of the video; determining a set of entities in relation to the time, the set of entities being included in one or more captions in the set of captions; and displaying the set of entities in a queue, wherein the set of entities are associated with additional information for each respective entity in the set of entities.

In one embodiment, an apparatus includes: one or more computer processors; and a non-transitory computer-readable storage medium comprising instructions, that when executed, control the one or more computer processors to be configured for: receiving captions for a video of a media program; analyzing the captions to determine entities in the captions; determining additional information for respective entities in the captions; associating respective additional information with occurrences of the respective entities in the captions; and storing the additional information and the entities, wherein entities are useable to display a set of entities in a queue in a coordination with a time when the video is being played by a user device.

DETAILED DESCRIPTION

FIG. 1depicts a simplified system100for providing interactive captions and a queue of entities from the captions according to one embodiment. System100includes a content server102and a user device104. Content server102may send videos to user device104through a network. In one embodiment, content server102is associated with a media program provider, which provides a service in which users can access a library of videos (or other media) through a service. Although one content server102and one user device104are shown, it will be understood that multiple instances of each may be used. Also, a system to deliver videos to user devices104will be described in more detail below.

A content manager106receives a caption file and processes captions in the caption file to identify entities in the captions. Although the caption processing is described as being in the same server that serves content, it will be understood that different devices may perform caption processing and content serving. The caption file may include captions for a spoken dialogue in the video. Although a spoken dialogue is described, some captions may describe information that is not spoken, such as sounds or events that are occurring in the video. The captions may include a variety of entities. For example, the entities may include a character's name, event names, organization names, locations, landmarks, inanimate objects (e.g., purses, hats, clothes, etc.), etc.

Content manager106may recognize the entities name using a caption recognition algorithm that analyzes text of the captions. For example, a natural language recognition algorithm may perform term searches and/or analyze context between terms in the captions. The processing of the text of the captions may be less computationally intensive than processing video. For example, analyzing text is less computationally intensive than analyzing pixels of video. This provides an efficient way to determine entities in a video. Further, the captions include context in that a name of the entity or semantics of the text can be used.

After analyzing the captions, content manager106may then generate entity cards for entities content manager106recognized in the captions. An entity card may include additional information that is associated with the entity. For example, the additional information may be a character's name in the video, the real name of a person playing the character, a brand of an object, additional information on a location, or any other information that can be determined for the entity. Each entity card may be associated with an entity in the captions in the caption file for each occurrence of the entity. For example, if a character's name is mentioned at the one-minute, five-minute, and ten-minute marks of the video, an entity card for that character is linked with the entity at the one-minute, five-minute, and ten-minute marks. Once content manager106processes the captions, content manager106stores the video, the caption file, and the entity card file in storage108, which may be a separate device from content manager106or included within content manager106.

When a user requests the video, content manager106may send the video, caption file, and entity card file to user device104. It will be understood that content manager106may use different techniques in sending the video, caption file, and entity card file to user device104. For example, only portions of the video, caption file, and entity card file may be sent. As will be described below, content server102may use a streaming protocol to stream the video to user device104. Also, in one embodiment, content server102may send the entire caption file and entire entity card file to user device104upon, before, or after starting streaming of the video. For example, before starting the send the video, content manager106sends the entire caption file and entire entity card file to user device104. In other embodiments, content server102may send portions of the caption file and entity card file with portions of video to user device104.

User device104includes a media player manager110and a media player112. Media player manager110receives the video, caption file, and entity card file, and plays the video in media player112. Also, media player manager110may display captions from the caption file in media player112. For example, a caption is shown at114in media player112. As is known, the captions are synchronized to the video, such as when a character speaks, the caption represents what the character spoke.

When media player112plays the video, a first caption may mention a character's name. Then, a second caption may include another character's name. This process continues as multiple entities are included in captions displayed in media player112. In one embodiment, the entity in the caption may be interactive in that a user could select the entity to have an entity card for that entity displayed. However, media player112may only display captions very briefly. For example, media player112displays the caption when a character speaks a line in the dialogue, but then once another character starts speaking, the caption is removed as media player112displays another caption. Because of the short duration media player112displays the caption, a user may not have time to select the entity in the caption. Further, the entity that appears in the caption may not be in the current shot. For example, a character may be mentioned in the caption, but may appear in a previous or future shot in the video. Thus, when the character appears in a future shot, the user may want to know more information about the character at that time. Due to the above reasons, a queue116displays a list of entities that may have appeared in previous (or future) captions. The user may select queue116to display a list of entities. For example, queue116may be hidden until a user hovers a pointer over the area of media player112to display the queue116or selects an area in media player112to display queue116. In other embodiments, media player112may always display queue116, such as in a sidebar area. The user can then view the entities and select one to have a corresponding entity card displayed.

FIG. 2depicts a more detailed example of media player112according to one embodiment. Media player112displays a video in a section201. Additionally, media player112displays a caption of “The propaganda wing of bill and Melinda Gates” at114. The entity in the caption is “Melinda Gates” as shown at204-4. A user may select “Melinda Gates” in the caption to display an entity card202for Melinda Gates. The entity card includes additional information about the character.

Also, in queue116, the entity Melinda Gates is shown at204-1. This corresponds to the entity in the caption at204-4. Additionally, queue116shows other entities of “Jim Halpert” and “Stanley Hudson” at204-2and204-3, respectively. These entities may have been found in previous captions for the video. For example, queue116may hold entities found in captions within a certain time period, such as five minutes before the present time in the video.

In addition to receiving user input selecting the entity in the caption at204-4, user device104may receive a user input from a user selecting one of the entities displayed in queue116. For example, a user may select the entity “Melinda Gates” in shown at204-1in queue116. Media player112then displays entity card202. Further, if a user selects either entity shown at204-2or204-3in queue116, media player112may display a different entity card. For example, media player112may display an entity card for “Jim Halpert” or “Stanley Hudson” if the entities at204-2and204-3are selected, respectively.

Before describing how media player112displays entity cards in more detail, the entity card generation process will now be described. To generate the entity cards, particular embodiments process the caption file to determine the entities in the captions.FIG. 3depicts a more detailed example of content manager106for processing a caption file according to one embodiment. A caption processor302receives the caption file and uses a caption processing algorithm to recognize entities in the captions. For example, a natural language processing (NLP) algorithm may determine entities by comparing words in the captions to recognizable entities. Different NLP techniques that may be used to recognize entities are known in the art.

Additionally, caption processor302may determine relationships between entities in the captions. For example, caption processor302may determine that two entities in the captions may be friends in the video. In another example, caption processor302may determine that two entities are father-son. To determine the relationship, caption processor302may use the semantics of the captions to extract context. In contrast to face detection, which detects the faces of the characters in the video, the captions may give more semantic information thus allowing caption processor302to determine the relationship between entities. For example, the spoken dialogue provides more hints on a relationship than faces in the video as the words of the speech can be analyzed.

Once determining the entities, an entity card generator304generates entity cards for the entities. For example, entity card generator304may receive additional information for each entity. The additional information may include information regarding the character in the video and/or a real-life person associated with the character. Also, additional information for inanimate objects, such as brand names, may also be determined The additional information may be from external sources, such as websites and information services. Also, internal information, such as information from the media player service or video, may be used.

FIG. 4depicts a simplified flowchart400of a method for generating entity cards according to one embodiment. At402, content manager106receives the caption file. The caption file may be received from a company associated with the video. For example, the company may release a caption file with the video that summarizes a spoken dialogue in the video.

At404, content manager106recognizes entities in the caption. As discussed above, content manager106may use natural language processing. Further, content manager106may also use entity name extension, which determines aliases for entity names to recognize the entity. Also, named entity recognition (NER) may be used to recognize names in the captions. For example, content manager106may use a string (alias) match to recognize entities in the captions. Content manager106may have a list of names that may appear in the video and may search for these names. Further, content manager106may use a library of well-known entities, such as objects that may be offered for sale (e.g., purses, clothes, etc.), to recognize when these entities appear in the captions.

At406, content manager106determines relationships between the entities. Content manager106may determine the relationships by analyzing the semantics of the captions. For example, content manager106uses the part of speech, co-reference resolution, and sequence pattern mining to determine the relationship. In one embodiment, content manager106may input the entities and associated captions into an algorithm that may output the relationships, such as Mike and Tom are friends.

At408, content manager106verifies the entities and the relationships. For example, content manager106may recognize some entities or relationships that may not be accurate. Also, in one embodiment, the verification may be manually performed, such as a user may inspect the entities that are recognized and determine whether or not the entities or relationships are appropriate. In this case, content manager106receives user input from a user verifying the entities or relationships. The verification step may or may not be performed.

At410, content manager106collects additional information for the entities. Content manager106may collect external information from web resources or from the video. For example, content manager106may retrieve a description of an entity from a free web resource. Content manager106may also retrieve a name of the product from the video using optical character recognition (OCR). For example, OCR reads the name of a purse being used by a character from the video.

At412, content manager106determines times in which the entities appear in the video. For example, the entity may appear at multiple places in the captions. At each point, content manager106may associate the appropriate entity card with the entity. In one embodiment, the entity card may be linked to the entity when the entity appears in the caption. In another embodiment, the entity card may be linked to a point where the entity appears in the video even though the entity does not appear in the caption. For example, once the entity is mentioned in the caption, the entity may not appear in the video at that point. However, after a minute, the video may show the entity, such as the character may appear in the video. By using queue116, the entity would appear in the queue and a user could select the entity in queue116to display additional information about the entity even though the entity was previously mentioned in a caption that is currently not shown in the video.

The following describes a series of captions and entities cards that content manager106creates for the entities in the captions.FIG. 5Ashows an example of a series of captions andFIG. 5Bshows entity cards that include the links to the captions according to one embodiment. InFIG. 5A, a time in the video is shown in a column502; different captions #1, #2, #3, #4, and #5are shown in a column504; and the text for each respective caption is shown at a column506. At508-1, at the 0:15 second mark of the video, caption #1is “Hi Mike”. At510-1, content manager106recognizes an entity in the caption as “Mike”. At508-2, at the 0:20 second mark of the video, a caption #2is “Hi Tom”. At510-2, content manager106recognizes an entity in the caption as “Tom”. At508-3, at the 0:25 second mark of the video, a caption #3is “How are you?” In this caption, content manager106does not recognize any entities. At508-4, at the0:30second mark, a caption #4is “I'm good, Tom”. At510-3, content manager106recognizes “Tom” as an entity in the caption. At508-5, at the time 0:35 seconds of the video, a caption #5is “Have you seen the movie XX”? At510-4, content manager106recognizes “movie XX” as an entity in the caption. For example, “XX” may be the name of the movie.

FIG. 5Bshows entity cards that content manager106may create from the entities recognized in the captions shown atFIG. 5Ain one embodiment. In one example, content manager106creates entity cards for Mike, Tom, and the movie XX. Captions #2and #4included two occurrences of the entity Tom. Content manager106may analyze various sources of information to determine the relationship between the two occurrences of the entity Tom, such as information regarding the storyline, a list of characters, and the semantics of these captions and other captions around captions #2and #4. For example, in some cases, the two occurrences of Tom may be for two different characters with the same name. However, in this case, content manager106determines that the two occurrences of the entity Tom are associated with the same person due to a conversation occurring between Mike and Tom. Thus, content manager106does not create two different entity cards for the entity of Tom.

An entity card550-1includes the entity Mike. At552-1, the entity card includes additional information, such as a real name of the person playing the character and other shows the person is in. Also, at552-2, the relationship of Mike with other characters is shown. For example, content manager106may determine that Mike is a friend of Tom. Content manager106may determine the relationship based on the current conversation in captions #1-#4. At556-1, entity card550-1includes the time at which the entity appears in the video. For example, the entity of Mike appears at the 0:15 second mark of the video. The time will be used by media player112to determine when to insert entities into queue116and also to determine when entity cards are available for display in media player112.

Entity card550-2includes the entity Tom. At552-2, additional information includes a real name of the person playing the character Tom and other shows the person is in. At554-2, the relationship indicates that Tom is a friend of Mike. Also, at556-2, the times at which the entity appears in the captions in the video are at the 0:20 and 0:30 second marks.

Entity card550-3describes the movie XX. At552-3, the additional information describes theatres nearby at which the movie XX is being offered. At554-3, no relationship information is described due to the movie XX not being related to anything in the video. Finally, at556-3, the time of 0:35 seconds indicates the time at which the movie XX was mentioned in the captions.

Once processing the captions and generating entity cards, media player112can play the video along with the captions.FIG. 6depicts a simplified flowchart600of a method for displaying entities in media player112according to one embodiment. At602, user device104receives the video. For example, user device104may receive portions of the video that are streamed from content server102. Also, at604, user device104receives the caption file. In one embodiment, content server102may send the entire caption file before the video starts playing. Content server102sends the entire caption file because it may be a smaller size and can be sent efficiently through a network. At606, user device104also receives an entity card file that includes entity cards for all the entities in the captions. Content server106may also send the entire entity card file along with the caption file.

At608, media player112displays captions while playing the video. Although displaying captions is described, it will be understood that captions may not be displayed to enable the use of queue116. For example, queue116may always be enabled and a user may either select queue116to display the entities in queue116or media player112may always display queue116. In this case, a user may either hear an entity spoken in the video and select queue116to display the entity or, when queue116is always displayed, the user may see the entity displayed in queue116and decide to select one of the entities to display additional information. By providing queue116without having the captions displayed, the processing of the captions to determine the entities may be more efficient than analyzing the video. Thus, even without the captions being displayed, entities in queue116are still helpful to a user.

At610, media player112receives an input for queue116. For example, the input may cause queue116to be displayed. In this case, media player manager110needs to determine how many entities to display in the queue. For example, media player manager110may determine entities that appeared in captions for the last five minutes of the video. In this case, at612, media player manager110determines a present time in the video, such as when the input was received. Then, at614, media player manager110determines entities in captions within a time period associated with the present time. At616, media player manager110then displays the determined entities in queue116. As described above, queue116is configured to display interactive links for the entities. Thus, when a user selects one of the entities, media player112can display a corresponding entity card in response.

FIG. 7shows an example of a timeline700that illustrates the determination of entities to include in queue116according to one embodiment. Timeline700shows the captions that are displayed at the times in the video as described inFIG. 5A. At702, media player112receives an input requesting display of queue116. The input may be received at the 0:40 second mark. For discussion purposes, the time period in which media player manager110searches for captions may be 20 seconds and is shown at704. In this case, the entities found within captions in time period704are Tom and movie XX. Thus, as shown at706, queue116includes Tom and movie XX as entities.

In one embodiment, media player manager110may continuously determine which entities are included in captions within time period704. For example, as the video plays, entities that are included in the time period are added to a data structure. As the entities fall outside of the time period, media player manager110removes the entities from the data structure. When an input to display queue116is received, media player manager110displays the entities that are found in the data structure. In another embodiment where queue116is always displayed, media player manager110displays entities as entities that newly appear in time period704, and removes entities that drop out of time period704.

Accordingly, particular embodiments process a caption file of captions instead of the video. This provides a robust determination of entities that may be mentioned in the video without expensive computational requirements of processing video. Further, the captions provide additional semantic meaning in which relationships can be determined between entities. Further, unlike face detection, the dialogue of the video may be a trigger to provide additional information rather than the faces of any characters in the video or objects. This may allow for additional information to be displayed for entities that actually are not shown in the video, but just mentioned in the dialogue.

System Overview

Features and aspects as disclosed herein may be implemented in conjunction with a video streaming system800in communication with multiple client devices via one or more communication networks as shown inFIG. 8. Aspects of the video streaming system800are described merely to provide an example of an application for enabling distribution of content prepared according to the present disclosure. It should be appreciated that the present technology is not limited to streaming video applications, and may be adapted for other applications.

Video data may be obtained from one or more sources for example, from a video source810, for use as input to a video content server802. The input video data may comprise raw or edited frame-based video data in any suitable digital format, for example, MPEG-1, MPEG-2, MPEG-4, VC-1, or other format. In an alternative, a video may be provided in a non-digital format and converted to digital format using a scanner and/or transcoder. The input video data may comprise video clips or programs of various types, for example, television episodes, motion pictures, and other content produced as primary content of interest to consumers.

The video streaming system800may include one or more computer servers or modules802,804, and/or807distributed over one or more computers. Each server802,804,807may include, or may be operatively coupled to, one or more data stores809, for example databases, indexes, files, or other data structures. A video content server802may access a data store (not shown) of various video segments. The video content server802may serve the video segments as directed by a user interface controller communicating with a client device. As used herein, a video segment refers to a definite portion of frame-based video data, such as may be used in a streaming video session to view a television episode, motion picture, recorded live performance, or other video content.

In some embodiments, a video advertising server804may access a data store of relatively short videos (e.g., 10 second, 30 second, or 60 second video advertisements) configured as advertising for a particular advertiser or message. The advertising may be provided for an advertiser in exchange for payment of some kind, or may comprise a promotional message for the system800, a public service message, or some other information. The video advertising server804may serve the video advertising segments as directed by a user interface controller (not shown).

The video streaming system800also may include content manager106. Content manager106may store the entity card file in database809. Video content server802may then retrieve the entity card file and send the file to various user devices.

The video streaming system800may further include an integration and streaming component807that integrates video content and video advertising into a streaming video segment. For example, streaming component807may be a content server or streaming media server. A controller (not shown) may determine the selection or configuration of advertising in the streaming video based on any suitable algorithm or process. The video streaming system800may include other modules or units not depicted inFIG. 8, for example administrative servers, commerce servers, network infrastructure, advertising selection engines, and so forth.

The video streaming system800may connect to a data communication network812. A data communication network812may comprise a local area network (LAN), a wide area network (WAN), for example, the Internet, a telephone network, a wireless cellular telecommunications network (WCS)814, or some combination of these or similar networks.

One or more client devices may be in communication with the video streaming system800, via the data communication network812and/or other network814. Such client devices may include, for example, one or more laptop computers822, desktop computers820, “smart” mobile phones827, notepad devices824, network-enabled televisions828, or combinations thereof, via a router818for a LAN, via a base station816for a wireless telephony network814, or via some other connection. In operation, such client devices820,822,824,827, or828may send and receive data or instructions to the system800, in response to user input received from user input devices or other input. In response, the system800may serve video segments and metadata from the data store809responsive to selection of interactive links to the client devices820,822,824,827, or828and customize the additional content based on parameters of the client devices, for example respective geographic locations of the client devices, or demographic information concerning respective users of the client devices. The devices820,822,824,827, or828may output interactive video content from the streaming video segment using a display screen, projector, or other video output device, and receive user input for interacting with the video content.

Distribution of audio-video data may be implemented from streaming component807to remote client devices over computer networks, telecommunications networks, and combinations of such networks, using various methods, for example streaming In streaming, a content server streams audio-video data continuously to a media player component operating at least partly on the client device, which may play the audio-video data concurrently with receiving the streaming data from the server. Although streaming is discussed, other methods of delivery may be used. The media player component may initiate play of the video data immediately after receiving an initial portion of the data from the content provider. Traditional streaming techniques use a single provider delivering a stream of data to a set of end users. High bandwidths and processing power may be required to deliver a single stream to a large audience, and the required bandwidth of the provider may increase as the number of end users increases.

Streaming media can be delivered on-demand or live. Streaming enables immediate playback at any point within the file. End-users may skip through the media file to start playback or change playback to any point in the media file. Hence, the end-user does not need to wait for the file to progressively download. Typically, streaming media is delivered from a few dedicated servers having high bandwidth capabilities via a specialized device that accepts requests for video files, and with information about the format, bandwidth and structure of those files, delivers just the amount of data necessary to play the video, at the rate needed to play it. Streaming media servers may also account for the transmission bandwidth and capabilities of the media player on the destination client. Unlike the web server, the streaming component807may communicate with the client device using control messages and data messages to adjust to changing network conditions as the video is played. These control messages can include commands for enabling control functions such as fast forward, fast reverse, pausing, or seeking to a particular part of the file at the client.

Since streaming component807transmits video data only as needed and at the rate that is needed, precise control over the number of streams served can be maintained. The viewer will not be able to view high data rate videos over a lower data rate transmission medium. However, streaming media servers (1) provide users random access to the video file, (2) allow monitoring of who is viewing what video programs and how long they are watched (3) use transmission bandwidth more efficiently, since only the amount of data required to support the viewing experience is transmitted, and (4) the video file is not stored in the viewer's computer, but discarded by the media player, thus allowing more control over the content.

Streaming component807may use HTTP and TCP to deliver video streams, but generally use RSTP (real time streaming protocol) and UDP (user datagram protocol). These protocols permit control messages and save bandwidth by reducing overhead. Unlike TCP, when data is dropped during transmission, UDP does not transmit resent requests. Instead, the server continues to send data. Streaming component807can also deliver live webcasts and can multicast, which allows more than one client to tune into a single stream, thus saving bandwidth. Streaming media players may not rely on buffering to provide random access to any point in the media program. Instead, this is accomplished through the use of control messages transmitted from the media player to the streaming media server. Another protocol used for streaming is hypertext transfer protocol (HTTP) live streaming (HLS). The HLS protocol delivers video over HTTP via a playlist of small segments that are made available in a variety of bitrates typically from one or more content delivery networks (CDNs). This allows a media player to switch both bitrates and content sources on a segment-by-segment basis. The switching helps compensate for network bandwidth variances and also infrastructure failures that may occur during playback of the video.

The delivery of video content by streaming may be accomplished under a variety of models. In one model, the user pays for the viewing of each video program, for example, using a pay-per-view service. In another model widely adopted by broadcast television shortly after its inception, sponsors pay for the presentation of the media program in exchange for the right to present advertisements during or adjacent to the presentation of the program. In some models, advertisements are inserted at predetermined times in a video program, which times may be referred to as “ad slots” or “ad breaks.” With streaming video, the media player may be configured so that the client device cannot play the video without also playing predetermined advertisements during the designated ad slots.

Output from a media player on the client device may occupy only a portion of total screen area available on a client device, particularly when bandwidth limitations restrict the resolution of streaming video. Although media players often include a “full screen” viewing option, many users prefer to watch video in a display area smaller than full screen, depending on the available video resolution. Accordingly, the video may appear in a relatively small area or window of an available display area, leaving unused areas. A video provider may occupy the unused area with other content or interface objects, including additional advertising, such as, for example, banner ads. Banner ads or similar additional content may be provided with links to an additional web site or page, so that when a user “clicks on” or otherwise selects the banner ad, the additional web site or page opens in a new window.

Referring toFIG. 9, a diagrammatic view of an apparatus900for viewing video content and advertisements is illustrated. In selected embodiments, the apparatus900may include a processor (CPU)902operatively coupled to a processor memory904, which holds binary-coded functional modules for execution by the processor902. Such functional modules may include an operating system906for handling system functions such as input/output and memory access, a browser908to display web pages, and media player910for playing video. The modules may further include media player manager (MPM)110. The memory904may hold additional modules not shown inFIG. 9, for example modules for performing other operations described elsewhere herein.

A bus914or other communication component may support communication of information within the apparatus900. The processor902may be a specialized or dedicated microprocessor configured to perform particular tasks in accordance with the features and aspects disclosed herein by executing machine-readable software code defining the particular tasks. Processor memory904(e.g., random access memory (RAM) or other dynamic storage device) may be connected to the bus914or directly to the processor902, and store information and instructions to be executed by a processor902. The memory904may also store temporary variables or other intermediate information during execution of such instructions.

A computer-readable medium in a storage device924may be connected to the bus914and store static information and instructions for the processor902; for example, the storage device924may store the modules906,908,910and912when the apparatus900is powered off, from which the modules may be loaded into the processor memory904when the apparatus900is powered up. The storage device924may include a non-transitory computer-readable storage medium holding information, instructions, or some combination thereof, for example instructions that when executed by the processor902, cause the apparatus900to be configured to perform one or more operations of a method as described herein.

A communication interface916may also be connected to the bus914. The communication interface916may provide or support two-way data communication between the apparatus900and one or more external devices, e.g., the streaming system800, optionally via a router/modem926and a wired or wireless connection925. In the alternative, or in addition, the apparatus900may include a transceiver918connected to an antenna927, through which the apparatus900may communicate wirelessly with a base station for a wireless communication system or with the router/modem926. In the alternative, the apparatus900may communicate with video streaming system800via a local area network, virtual private network, or other network. In another alternative, the apparatus900may be incorporated as a module or component of the system800and communicate with other components via the bus914or by some other modality.

The apparatus900may be connected (e.g., via the bus914and graphics processing unit (GPU)920) to a display unit928. Display unit928may include any suitable configuration for displaying information to an operator of the apparatus900. For example, display unit928may include or utilize a liquid crystal display (LCD), touchscreen LCD (e.g., capacitive display), light emitting diode (LED) display, projector, or other display device to present information to a user of the apparatus900in a visual display.

One or more input devices930(e.g., an alphanumeric keyboard, microphone, keypad, remote controller, game controller, camera or camera array) may be connected to the bus914via a user input port922to communicate information and commands to the apparatus900. In selected embodiments, an input device930may provide or support control over the positioning of a cursor. Such a cursor control device, also called a pointing device, may be configured as a mouse, a trackball, a track pad, touch screen, cursor direction keys or other device for receiving or tracking physical movement and translating the movement into electrical signals indicating cursor movement. The cursor control device may be incorporated into the display unit928, for example using a touch sensitive screen. A cursor control device may communicate direction information and command selections to the processor902and control cursor movement on the display unit928. A cursor control device may have two or more degrees of freedom, for example allowing the device to specify cursor positions in a plane or three-dimensional space.

Particular embodiments may be implemented in a non-transitory computer-readable storage medium for use by or in connection with the instruction execution system, apparatus, system, or machine. The computer-readable storage medium contains instructions for controlling a computer system to perform a method described by particular embodiments. The computer system may include one or more computing devices. The instructions, when executed by one or more computer processors, may be configured to perform that which is described in particular embodiments.