U.S. Pat. No. 8,874,661
METHOD AND SYSTEM PROVIDING SPECTATOR INFORMATION FOR A MULTIMEDIA APPLICATION
AssigneeMicrosoft Technology Licensing LLC
Issue DateAugust 7, 2008
Illustrative Figure
Abstract
A method and system for allowing spectators to experience multimedia information over a network generated by an online video game running on a participant's device comprises a participant system and a universal spectator client system. A participant may utilize a device to experience game play. Each spectator may also have an associated device, which may allow the spectator to receive multimedia information generated by the participant system over a network. A spectator may experience multimedia information generated by a participant regardless of whether the spectator has the same title installed on an associated device and regardless of whether the associated spectator device provides the same capabilities and functionality as the participant device.
Description
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS FIG. 1Adetects an exemplary environment in which a spectator system may be deployed. An arbitrary number of users105a-105dmay each be associated with a respective device having various functionality and capabilities. For example, user105amay be associated with video game console135a, user105bmay be associated with the videogame console135b, user105cmay be associated with a personal computer140and user105dmay be associated with a cellular telephone117. The devices may exhibit heterogeneous functionality and capabilities. For example, the capabilities of video game consoles135a135bmay differ markedly from the capabilities of cellular telephone117as far as processing power, graphics capability, the ability to render audio, etc. Each of the devices, i.e., video game console135a, videogame console135b, personal computer140and cellular telephone117in each be coupled to a network125, which may be the Internet and associated World Wide Web. Each user105a-105dmay act as a participant in playing a video game or as a spectator in experiencing the game play conducted by another user who is acting as a participant. Whether a user105a-105dacts as a participant or spectator may depend upon the particular status and configuration of their respective device. Devices135a,135b,140and cellular telephone117may each provide a platform for hosting a video game providing a multimedia to a respective user incorporating graphics and sound. A video game also referred to herein as a video game title or title may comprise program instructions, resources, multimedia content involving sound and graphics etc., which when executed on a respective device may provide a multimedia experience to a user. A participant system (shown inFIG. 1B) may be deployed on any of the devices135a,135b,140and117in order to share the respective user's105a-105dgaming experience with other users acting as spectators via network125. Thus, a participant system deployed on a device may allow a user to act as a participant sharing his or her game play with others. For ...
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
FIG. 1Adetects an exemplary environment in which a spectator system may be deployed. An arbitrary number of users105a-105dmay each be associated with a respective device having various functionality and capabilities. For example, user105amay be associated with video game console135a, user105bmay be associated with the videogame console135b, user105cmay be associated with a personal computer140and user105dmay be associated with a cellular telephone117. The devices may exhibit heterogeneous functionality and capabilities. For example, the capabilities of video game consoles135a135bmay differ markedly from the capabilities of cellular telephone117as far as processing power, graphics capability, the ability to render audio, etc. Each of the devices, i.e., video game console135a, videogame console135b, personal computer140and cellular telephone117in each be coupled to a network125, which may be the Internet and associated World Wide Web.
Each user105a-105dmay act as a participant in playing a video game or as a spectator in experiencing the game play conducted by another user who is acting as a participant. Whether a user105a-105dacts as a participant or spectator may depend upon the particular status and configuration of their respective device.
Devices135a,135b,140and cellular telephone117may each provide a platform for hosting a video game providing a multimedia to a respective user incorporating graphics and sound. A video game also referred to herein as a video game title or title may comprise program instructions, resources, multimedia content involving sound and graphics etc., which when executed on a respective device may provide a multimedia experience to a user.
A participant system (shown inFIG. 1B) may be deployed on any of the devices135a,135b,140and117in order to share the respective user's105a-105dgaming experience with other users acting as spectators via network125. Thus, a participant system deployed on a device may allow a user to act as a participant sharing his or her game play with others. For example, user105ausing video game console may run a particular game title on videogame console135aand may desire to share his or her experience with users one105b-105d. A participant system may be deployed on videogame console135ain order to provide shared experience of user105aacting as participant to users105b-105dacting as spectators. The participant system may capture multimedia information from the running title on video game console135aand provide that multimedia information to users105b-105via network125. The participant system may provide the multimedia information from the running game title on video game console135aregardless of whether users105b-105dacting as spectators have the same game title installed on their respective devices as that running on video game console135aand regardless of whether the devices105b-105dhave the same capabilities or functionality as videogame console135a.
An expanded view of a video game console135aon which a participant system may be deployed is also shown inFIG. 1A. Video game console135amay include network interface107, GPU (“Graphics Processing Unit”)110, CPU (“Central Processing Unit”)115, frame buffer111, audio buffer109and rendering buffer108. CPU115may provide a general purpose computer that may concurrently execute any number of processes or tasks. Video game titles running on videogame console135a(not shown inFIG. 1) may each comprise a process or task executed by CPU115. Memory block121may store program instructions and/or data relating to processes or tasks executed by CPU115. Thus, CPU115may retrieve or store data in memory block121in order to perform processing. For example, videogame titles may be stored in memory block121and CPU115may access these instructions.
GPU110may provide a specialized and dedicated processor for performing graphics processing and rendering. GPU110may utilize frame buffer111and rendering buffer109in order to perform graphics processing and rendering. Frame buffer111may be a video output device that displays a video display from a complete frame of data. Information in frame buffer111may comprise color values for every pixel to be displayed on a display device140. Data in frame buffer111may be subject to further processing and rendering by GPU111the result of which may be stored in rendering buffer109. Additional rendering may include personal information of a user105a.
Audio buffer109may store rendered audio data relating to a video game title executing on video came console135. Data stored in audio buffer may be digital audio samples of audio information.
CPU110may interact with network interface107to cause information to be transmitted over network125. In addition, CPU110may interact with network interface107in order to receive information transmitted over network125, for example, for other users such as users105b-105d. Video game console135amay output rendered video for display on display device142and rendered audio for playback on audio device144.
FIG. 1Bdepicts an exemplary deployment of a participant system for sharing multimedia information for a video game with spectators. User105amay be associated with video game console135awhile user105bmay be associated with video game console135b. User105amay have installed video game titles190a-190con video game console135awhile user105bmay have installed only video game title190con video game console135b. User105amay desire to share, for example, multimedia information related to game play for video game title190arunning on video game console135awith user105beven though video game title190ais not installed on video game console135b. Thus, participant system220installed on a particular device allows a respective user to act as a participant and therefore share game play experience with others who act as spectators. AlthoughFIG. 1Bshows participant system220installed only on a single device (video game console135a), it should be understood that participant system220may be installed on a number of devices.
To accomplish this, participant system220(described in detail below) may be deployed on video game console135aand universal spectator client180described in detail below may be installed on video game console135b. Universal spectator client180, in general, operates to receive and render received multimedia information on a device and therefore allows a user who has installed universal spectator client180to act as a spectator. Universal spectator client180may be a scalable process that may be adapted to run on any type of device and account for the respective capabilities of that device. Thus, althoughFIG. 1Bshows only a single device with a universal spectator client180deployed, it should be understood that a universal spectator client180may be deployed on any number of devices coupled to network125so that users of those respective devices may act as spectators with respect to game play on video game console135a.
Spectator system220may capture multimedia information generated during game play of video game title190aconcurrently with the running of video game title190on video game console135a, render, encode and transmit the multimedia information via network125to universal spectator client180deployed on video game console135b.
Spectator server294may maintain state information regarding spectators online and connected to network125and their online status as well as participants connected to network125and their online status. Spectator server294may retrieve this information and provide appropriate information to participant system220so that participant system220can display a list of available spectators to user105ausing video game console135a. Similarly, spectator server294may provide information regarding participants and games available to be viewed by potential spectators via, for example, universal spectator client180on video game console135b.
It should be understood that a user may act as a participant alone with respect to certain video games, as a spectator alone with respect to certain video games and/or as a spectator and participant with respect to particular video games. Thus, althoughFIG. 1Bshows spectator system220and universal client180as installed on different devices, it should be understood that spectator system220and universal client180may be installed on a single device allowing an associated user for that device to act both as a participant and as a spectator with respect to particular video games.
FIG. 2Ashows an exemplary structure of a participant system according to one embodiment. Participant system220may be deployed on a device associated with a user that desires to act as a participant and thereby share multimedia information for running game titles with other users acting as spectators. For example, participant system220may be deployed on video game console135ain order to allow user105ato act as a participant and thereby share game play with users105b-105dacting as spectators.
Spectator system220may comprise one or more processes or tasks executed by CPU115as well as state data. For example, as shown inFIG. 2A, spectator system220may comprise a participant process203and participant interface process230. The details of a participant process203and spectator interface process will be described in detail below. As depicted inFIG. 2A, spectator system220may execute concurrently with other tasks or processes running on CPU115and in particular a game process210for which a user acting as a participant may desire to share multimedia information with other users acting as spectators. AlthoughFIG. 2Aonly shows one such concurrently running game process210, it should be understood that any number of game processes may run concurrently with participant system220on CPU115.
FIG. 2Bshows an exemplary architecture of a participant process according to one embodiment. Participant process220may comprise frame capture module250, audio capture module255, rendering module260, encoding module265and network communication module270. It is assumed that participant process220runs on a device associated with a user that desires to act as a participant with respect to one or more video games and share this information with spectators. Thus, participant process220may run on a device that includes an exemplary architecture such as that shown inFIG. 1aand may include a CPU115, GPU110, memory121, network interface107, frame buffer111, audio buffer109and rendering buffer108.
Frame capture module250may retrieve video data from frame buffer111on a periodic basis. Similarly audio capture module255may retrieve audio data from audio buffer109on a periodic basis. Video data retrieved by frame capture module250and audio data retrieved by audio capture module255are provided to rendering module260, which multiplexes video and audio data into a single multimedia signal288, which is then provided to encoding module265. Encoding module may perform any type of encoding or compression on the multimedia signal288received from rendering module260. For example, encoding module265may employ MPEG or other suitable encoding and compression scheme to the multimedia signal288to generate an encoded multimedia signal290which may then be provided to network communication module270. Network communication module performs packetization and other data preparation in order to prepare for the transmission of the encoded multimedia signal for transmission over a network such as network125.
FIG. 2Cshows an exemplary architecture of a participant interface process according to one embodiment. Participant interface process230may comprise spectator list module285and GUI module280. Participant interface process230may update information to a user acting as a participant regarding spectators that are online and wish to observe game play for a particular game. As will be described in detail below, a participant may allow or disallow certain other users from acting as spectators with respect to particular games. A participant may desire to disallow another from acting as a spectator for various reasons. For example, if a certain game involves a high degree of violence, a game player might desire to disallow potential spectators under a certain age from viewing game play. GUI module280may provide functionality for displaying a user interface for a spectator process as described in detail below.
Participant list module285may retrieve a list of all spectators sorted by game that are currently online via, for example, spectator server294shown inFIG. 1Bas described below. GUI module280may display the retrieved information using a dedicated participant GUI described in detail below.
FIG. 2Dshows an exemplary architecture of a spectator server according to one embodiment. Spectator sever294may comprise spectator/participant negotiation process294and spectator database237. Spectator database237may store and update state and permissions information relating to participants and spectators with respect to particular video games as well as keep track of particular user's allowed or disallowed status and additional information regarding the platform capabilities of devices utilized by particular spectators. An exemplary schema of a spectator database237is described below.
Spectator/participant negotiation process294may be a process executed on spectator server294. Spectator/participant negotiation process294may perform negotiation functions to allow particular spectators to experience game play of particular participants. In particular, as described in detail below, spectator/participant negotiation process294may utilize state information stored in spectator database to perform this negotiation.
FIG. 2Eshows an exemplary architecture of a universal spectator client according to one embodiment. Universal client180may allow a user operating a particular device to act as a spectator with respect to particular video game titles running on devices associated with users acting as participants regardless of whether the spectator has the same game titles as the participant installed on their device and regardless of whether the spectator is utilizing the same platform as the participant.
Universal spectator client180may be executed by a CPU115on a device associated with a spectator. Universal spectator client180may comprise spectator process237and spectator interface process. As described in detail below, spectator process237may act to receive shared multimedia information from participants who desire to share game play sessions and display that information on the associated spectator device. Spectator interface process239as described below may act to display a list of participants and associated video games that the spectator may observe as well as provide other interface functionality to allow the spectator to initiate, terminate or configure spectator sessions.
FIG. 2Fshows an exemplary architecture of a spectator interface process according to one embodiment. Spectator interface process239may comprise participant list module212and GUI module299. Participant list process212may update information to a spectator regarding participants that are online and wish to share game play for a particular game. As will be described in detail below, a participant may allow or disallow certain other users from acting as spectators with respect to particular games. GUI module299may provide functionality for displaying a user interface for a universal client process as described in detail below.
Participant list module212may retrieve a list of all participants sorted by game that are currently online via, for example, spectator server294shown inFIG. 1Bas described below. GUI module299may display the retrieved information using a dedicated spectator GUI described in detail below.
FIG. 3is a flowchart of an exemplary process executed by a participant process in order to capture and distribute to spectators multimedia information relating to video games running on a device. The process is initiated in305and may be initiated when a participant elects to share a video game experience with one or more spectators. In307, input is received from a participant regarding a selected game for which the participant desires to share multimedia game play information as well as a list of allowed spectators who may observe the game. According to one embodiment, this information may be captured by a participant interface process230described above with respect toFIG. 2A. The information may be propagated to spectator server294to update a spectator database regarding the allowed spectators. In310, a timer is initiated. In315, it is determined whether the timer has expired. If not (‘No’ branch of315) flow continues with315and the timer is checked again. If so (“Yes” branch of315), in330video data currently in the frame buffer is captured. In335, audio data currently in the audio buffer is captured. In340, the video and audio data respectively captured from the video and audio buffers is rendered into a composite multimedia signal. In345, the multimedia signal is encoded using any number of encoding, compression and/or encryption schemes. In350, the encoded signal is transmitted over a network to spectators selected in step307.
FIG. 4Ais a schema of an exemplary spectator database that may be deployed at a spectator server. Spectator database schema407may include spectator table475, participant table481, game table470, quality table480, allowed spectator table490, and device table492.
Spectator table475may store information regarding spectators and may include spectator ID field422, spectator name field425and IP address field410. Spectator ID field422may store a unique identifier for a spectator. Spectator name field425may store an alphanumeric string representing a name of a spectator. IP address field410may store a current IP address associated with a spectator.
Participant table481may store information regarding participants and may include participant ID field485, participant name field487and IP address field489. Participant ID field485may store a unique identifier for a participant. Participant name field487may store an alphanumeric string representing a name of a participant. IP address field489may store a current IP address associated with a participant.
Game table470may store information regarding particular game titles and may include game ID field410and game name field415. Game ID field may store a unique identifier for a game. Game name field415may store an alphanumeric string representing the name of a game.
Device table492may store information relating to particular devices associated by users. Device table492may include device ID field421, video profile field424, audio profile426and processor profile428. Device ID field421may store a unique identifier for a device. Video profile field424may store information regarding the video capabilities of the corresponding device including such information as screen resolution, etc. Audio profile426may information relating to the corresponding audio capabilities of the device. Processor profile428may store information regarding the capabilities of the processor associated with the device such as the clock speed, etc.
Quality table480may store information regarding quality of content to be delivered to a spectator. Quality ID field420stores a unique ID for a quality. Video quality field425stores a parameter indicating a desired video quality. The video quality parameter stored in the video quality field425may specify a resolution, bit rate, compression ratio, etc. Audio quality field427stores a parameter indicating a desired audio quality. The audio quality parameter stored in the audio quality field427may specify a bit rate, compression ratio, etc.
Allowed spectator table490may associate participants with allowed spectators for particular video games. Allowed spectator table490may include participant ID field485, spectator ID field422, game ID field410, quality ID field420and device ID field421. Thus, allowed spectator table490may relate a participant ID485to a spectator ID422with respect to a game ID410that the spectator may observe at a specific quality ID420and on a specific device ID420.
FIG. 4Bshows an exemplary process executed by a spectator list module that may be part of a participant system. It is assumed for this example that a participant system is deployed on a device associated with a user that desires to act as a participant with respect to one or more video games. It is further assumed that spectators may utilize a device with universal spectator client180installed. Universal spectator client180may perform actions to propagate information regarding the online status of spectators to spectator server294as described below with respect toFIG. 4C.
Spectator list module285may operate to retrieve information regarding allowed online spectators from spectator server294as well as propagate the online status of the participant to spectator server294. The process is initiated in451. In452, spectator list module285may transmit online status of the participant to spectator server294. This information may be used to allow potential spectators to learn that a participant for particular games and is online. In particular, spectator server294may receive the online status information of the participant and update spectator database237to reflect that the participant is online. Spectator server294may update the IP address field489of participant table481to indicate that the participant is online. Setting IP address field489of participant table481to ‘NULL’ may indicate that the participant is offline.
In453, spectator list module285may retrieve a list of all allowed spectators for all games on the participant's device on which spectator list module is currently running from spectator server294. This information may be retrieved from spectator database237at spectator server294and in particular, allowed spectator table490. Once this information is retrieved, spectator list module285may poll spectator server294to determine which of the allowed spectators are currently online and their respective IP addresses. In457, the information retrieved from spectator server294may be displayed to the participant via spectator interface process230.
FIG. 4Cshows an exemplary process executed by a participant list module that may be part of a universal spectator client. It is assumed for this example that a universal client module180is deployed on a device associated with a user that desires to act as a spectator with respect to one or more video games. It is further assumed that participants may utilize a device with a spectator system220installed. As described above, spectator system220may perform actions to propagate information regarding the online status of the respective participant to spectator server294so spectators using universal client180may learn of this status by polling spectator server294and initiate a spectator session.
Participant list module212may operate to retrieve information regarding allowed online participants from spectator server294as well as propagate the online status of the spectator on which the universal spectator client is installed. The process is initiated in472. In473, the online status of the spectator is transmitted to spectator server294to allow potential participants to learn that the user is a spectator in particular games and is online. In particular, spectator server294may receive the online status information of the participant and update spectator database237to reflect that the participant is online. Spectator server294may update the IP address field410of spectator table489to indicate that the spectator is online. Setting IP address field410of spectator table489to ‘NULL’ may indicate that the spectator is offline. In475, participant list module212may retrieve a list of all allowed participants and associated online status information for which the spectator is allowed to serve as a spectator. This information may be retrieved from spectator database237at spectator server294and in particular, allowed spectator table490. In479, the information retrieved from spectator server294is displayed on universal spectator client180in a GUI. This process may be performed by GUI module299.
In483participant list module may receive a desired game for a game that the spectator is allowed and the spectator wishes experience. In485, the spectator session is initiated. This may involve transmitting certain information to spectator server294and requesting permission from the participant of the requested video game. The process ends in491.
FIG. 4Dshows an exemplary participant interface GUI that may be generated by a GUI module that may be part of a participant interface process. Participant interface461may be displayed on a device on which a user plays a video game and may desire to share the video game experience with various spectators. The participant interface461may comprise a game play pane446, a game pane442and an allowed spectators pane444. Game play pane446may show the actual game play as the participant plays a game. Game pane442may allow a user to select a particular game for play. Allowed spectators pane444may show allowed spectators for the game. Thus, the exemplary display inFIG. 4Bshows that a user has selected a game “Claw Puppet” for play and the allowed spectators for “Claw Puppet” are GameLover295, Darth, Dino, GameGirl, Joe15, GameAlice, Henry and GameJoy1707. Participant interface may allow the participant to select those particular allowed spectators for which the participant desires to share a game play session. This information may be received by participant interface, which may then cause a participant process220to begin sharing the game play with the particular users selected.
According to an alternative embodiment, one or more spectators may indicate a desire to receive multimedia information regarding an upcoming multimedia session but may in fact not be online during the actual occurrence of the session. The spectators may provide an indication to a user of a multimedia system hosting the session that they would desire to view the session. Upon commencement of the session, the system may determine whether the interested spectators are online. If they are not online during the session, the system may cause the storage of the multimedia information generated during the session. At a later time, upon receiving a signal that the interested spectators are online, the system may initiate streaming of the stored multimedia information to the interested spectators.
FIG. 5shows an exemplary computing environment in which aspects of the example embodiments may be implemented. Computing system environment500is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the described example embodiments. Neither should computing environment500be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in exemplary computing environment500.
The example embodiments are operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the example embodiments include, but are not limited to, personal computers, server computers, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, embedded systems, distributed computing environments that include any of the above systems or devices, and the like.
The example embodiments may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. The example embodiments also may be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network or other data transmission medium. In a distributed computing environment, program modules and other data may be located in both local and remote computer storage media including memory storage devices.
With reference toFIG. 5, an exemplary system for implementing the example embodiments includes a general purpose computing device in the form of a computer510. Components of computer510may include, but are not limited to, a processing unit520, a system memory530, and a system bus521that couples various system components including the system memory to processing unit520. Processing unit520may represent multiple logical processing units such as those supported on a multi-threaded processor. System bus521may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus (also known as Mezzanine bus). System bus521may also be implemented as a point-to-point connection, switching fabric, or the like, among the communicating devices.
Computer510typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer510and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computer510. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
System memory530includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM)531and random access memory (RAM)532. A basic input/output system533(BIOS), containing the basic routines that help to transfer information between elements within computer510, such as during start-up, is typically stored in ROM531. RAM532typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit520. By way of example, and not limitation,FIG. 5illustrates operating system534, application programs535, other program modules536, and program data537.
Computer510may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 6illustrates a hard disk drive540that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive551that reads from or writes to a removable, nonvolatile magnetic disk552, and an optical disk drive555that reads from or writes to a removable, nonvolatile optical disk556, such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. Hard disk drive541is typically connected to system bus521through a non-removable memory interface such as interface540, and magnetic disk drive551and optical disk drive555are typically connected to system bus521by a removable memory interface, such as interface550.
The drives and their associated computer storage media discussed above and illustrated inFIG. 5, provide storage of computer readable instructions, data structures, program modules and other data for computer510. InFIG. 5, for example, hard disk drive541is illustrated as storing operating system544, application programs545, other program modules546, and program data547. Note that these components can either be the same as or different from operating system534, application programs535, other program modules536, and program data537. Operating system544, application programs545, other program modules546, and program data547are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into computer510through input devices such as a keyboard562and pointing device561, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to processing unit520through a user input interface560that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor591or other type of display device is also connected to system bus521via an interface, such as a video interface590. In addition to the monitor, computers may also include other peripheral output devices such as speakers597and printer596, which may be connected through an output peripheral interface595.
Computer510may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer580. Remote computer580may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to computer510, although only a memory storage device581has been illustrated inFIG. 5. The logical connections depicted inFIG. 5include a local area network (LAN)571and a wide area network (WAN)573, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
When used in a LAN networking environment, computer510is connected to LAN571through a network interface or adapter570. When used in a WAN networking environment, computer510typically includes a modem572or other means for establishing communications over WAN573, such as the Internet. Modem572, which may be internal or external, may be connected to system bus521via user input interface560, or other appropriate mechanism. In a networked environment, program modules depicted relative to computer510, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 5illustrates remote application programs585as residing on memory device581. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
Computing environment500typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by computing environment500. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by computing environment500. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Although the subject matter has been described in language specific to the structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features or acts described above are disclosed as example forms of implementing the claims.
The inventive subject matter is described with specificity to meet statutory requirements. However, the description itself is not intended to limit the scope of this patent. Rather, it is contemplated that the claimed subject matter might also be embodied in other ways, to include different steps or combinations of steps similar to the ones described in this document, in conjunction with other present or future technologies.
Claims
- A method for providing media information associated with a participant of a multimedia game application to a first spectator, the method comprising: displaying a graphical user interface (GUI) to the participant operating a participant device on which the multimedia game application is installed, the GUI indicating a plurality of allowed spectators for the multimedia game application, wherein the GUI enables the participant to choose whether or not to transmit the media information to each of the plurality of allowed spectators by selecting, using the GUI, which of the plurality of allowed spectators to which the media information will be transmitted;setting a timer;upon expiration of the timer, capturing, the media information from the multimedia game application;encoding the media information for transmission over a network;and transmitting the media information over the network to the first spectator.
- The method of claim 1 , wherein capturing the media information is performed by bypassing a rendering buffer.
- The method of claim 1 , further comprising: determining an online status for the first spectator;and providing information to the participant indicating the online status for the first spectator.
- The method of claim 1 , further comprising receiving permission information for the participant for a user, the permission information indicating whether the user may act as a spectator for the multimedia game application.
- The method of claim 1 , wherein the media information comprises video information and audio information captured respectively from a frame buffer and an audio buffer.
- The method of claim 1 , wherein encoding the media information comprises compressing the media information.
- The method of claim 1 , wherein the GUI further indicates an online status for the first spectator.
- The method of claim 7 , further comprising retrieving the online status for the first spectator from a network server.
- The method of claim 8 , wherein the network server stores the online status for the first spectator and an online status for the participant.
- A system for providing media information associated with a participant of a multimedia game application to a first spectator, the system comprising: a graphical user interface (GUI) displayed to the participant operating a participant device on which the multimedia game application is installed, the GUI indicating a plurality of allowed spectators for the multimedia game application, wherein the GUI enables the participant to choose whether or not to transmit the media information to each of the plurality of allowed spectators by selecting, using the GUI, which of the plurality of allowed spectators to which the media information will be transmitted;a processor;memory having stored therein instructions that, upon execution by the processor, at least cause the system to: set a timer;upon expiration of the timer, capture the media information from the multimedia game application;encode the media information for transmission over a network;and transmit the media information over the network to the first spectator.
- The system of claim 10 , wherein the instructions, upon execution by the processor, further cause the system to: transmit an online indicator to a server;receive an identifier of the first spectator;display the identifier of the first spectator;and receive input regarding the first spectator.
- The system of claim 10 , wherein capturing the media information is performed by bypassing a rendering buffer.
- The system of claim 10 , wherein the instructions, upon execution by the processor, further cause the system to: determine an online status for the first spectator;and provide information to the participant indicating the online status for the first spectator.
- The system of claim 10 , wherein the instructions, upon execution by the processor, further cause the system to receive permission information for the participant for a user, the permission information indicating whether the user may act as a spectator for the multimedia game application.
- The system of claim 10 , wherein the media information comprises video information and audio information captured respectively from a frame buffer and an audio buffer.
- The system of claim 10 , wherein the instructions, upon execution by the processor, further cause the system to compress the media information.
- A computer readable storage medium bearing instructions for providing media information associated with a participant of a multimedia game application to a first spectator, the instructions, upon execution by one or more processors of a computer system, cause the computer system to at least: display a graphical user interface (GUI) to the participant operating a participant device on which the multimedia game application is installed, the GUI indicating a plurality of allowed spectators for the multimedia game application, wherein the GUI enables the participant to choose whether or not to transmit the media information to each of the plurality of allowed spectators by selecting, using the GUI, which of the plurality of allowed spectators to which the media information will be transmitted;set a timer;upon expiration of the timer, capture the media information from the multimedia game application;encode the media information for transmission over a network;and transmit the media information over the network to the first spectator.
- The computer readable storage medium of claim 17 , wherein capturing the media information is performed by bypassing a rendering buffer.
- The computer readable storage medium of claim 18 , wherein the instructions, upon execution by the one or more processors of the computer system, further cause the computer system to: determine an online status for the first spectator;and provide information to the participant indicating the online status for the first spectator.
Disclaimer: Data collected from the USPTO and may be malformed, incomplete, and/or otherwise inaccurate.