U.S. patent application number 12/551403 was filed with the patent office on 2010-12-02 for avatar integrated shared media selection.
This patent application is currently assigned to Microsoft Corporation. Invention is credited to Brian Charles Kramp, Andrew Lawrence Mattingly, Eddie Mays, Thomas M. Soemo.
Application Number | 20100306671 12/551403 |
Document ID | / |
Family ID | 43221691 |
Filed Date | 2010-12-02 |
United States Patent
Application |
20100306671 |
Kind Code |
A1 |
Mattingly; Andrew Lawrence ;
et al. |
December 2, 2010 |
Avatar Integrated Shared Media Selection
Abstract
A method and system are disclosed in which a group of people are
able to replicate the physical world experience of going with a
group of friends to pick a movie, watch the movie together, and
provide commentary on the movie itself in the virtual world on a
virtual couch while each user is sitting in different physical
locations. Additionally, the virtual representation of the
destination that the group of people are watching the movie
together in can be themed to allow users to watch movies in
different locations pivoting on special events or by the users
choice.
Inventors: |
Mattingly; Andrew Lawrence;
(Kirkland, WA) ; Kramp; Brian Charles; (Kirkland,
WA) ; Soemo; Thomas M.; (Redmond, WA) ; Mays;
Eddie; (Renton, WA) |
Correspondence
Address: |
WOODCOCK WASHBURN LLP (MICROSOFT CORPORATION)
CIRA CENTRE, 12TH FLOOR, 2929 ARCH STREET
PHILADELPHIA
PA
19104-2891
US
|
Assignee: |
Microsoft Corporation
Redmond
WA
|
Family ID: |
43221691 |
Appl. No.: |
12/551403 |
Filed: |
August 31, 2009 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61217268 |
May 29, 2009 |
|
|
|
Current U.S.
Class: |
715/753 ;
715/834 |
Current CPC
Class: |
G06F 3/048 20130101;
H04N 21/4627 20130101; H04L 29/06 20130101; G06F 3/0482 20130101;
G06F 3/04842 20130101; G06Q 10/10 20130101; H04N 21/4788 20130101;
H04N 21/2541 20130101; H04L 65/403 20130101; H04N 21/6587 20130101;
H04N 21/2387 20130101; H04N 21/4312 20130101; G06F 3/04847
20130101 |
Class at
Publication: |
715/753 ;
715/834 |
International
Class: |
G06F 3/01 20060101
G06F003/01 |
Claims
1. A method for establishing a shared media experience in a group
comprising two or more users, each user operating a respective
computing device and communicatively coupled via a network, the
method comprising: receiving, on one of the computing devices, a
request to join the group; sending the request to a shared media
service provider and receiving an indication of acceptance into the
group; receiving data describing media entities selected by other
members of the group and rendering representations of the received
media entities on a user interface device coupled to the respective
computing device; receiving a nomination identifying one of the
media entities and sending the nomination to the other members of
the group; displaying on said user interface device, along with the
representations of the received media entities, avatars
representing the users of the group; receiving an indication of an
emotion from one of the users and, in response, causing the avatar
corresponding to said one of the users to perform an animation on
said user interface device that conveys the indicated emotion; and
receiving an indication of a selected media entity to be shared by
the group and displaying a representation of the selected media
entity on said user interface device, wherein the selected media
object is selected by one of the users of the group deemed to be a
host of the group.
2. The method of claim 1, wherein the nomination is selected from
one or more queues comprising one or more media entities selected
by each user.
3. The method of claim 1, further comprising sending an invitation
for a specified user to join the group.
4. The method of claim 1, further comprising receiving and
displaying indications of votes for other ones of the media
entities selected by other users of the group.
5. The method of claim 1, wherein said one of the users is deemed
the host of the group when said one of the users initiated the
formation of the group.
6. The method of claim 2, wherein each of the one or more queues is
received on a separate channel.
7. The method of claim 1, wherein the emotion is selected from an
emote wheel comprising a plurality of representative emotions.
8. The method of claim 7, wherein the emote wheel is divided into
pie shaped segments radiating from a center of the emote wheel and
each of the representative emotions are represented as one of the
pie shaped segments.
9. The method of claim 1, further comprising displaying a random
animation based on the selected emotion.
10. The method of claim 7, wherein the representative emotions are
selected based on film genres.
11. The method of claim 7, wherein the emotions comprise love,
hate, funny, bored, happy, sad, mischievous, and scared.
12. The method of claim 9, wherein the random animation comprises
one of: at ease, cheer, disappointed, dance, looking, nervous,
neutral, surprised, taunt, thinking, and walk.
13. A computing device configured to establish a shared media
experience in a group comprising two or more users, each user
operating a respective computing device and communicatively coupled
via a network, the computing device comprising at least one
processor, a user interface device, and at least one memory
communicatively coupled to said at least one processor, the at
least one memory having stored therein computer-executable
instructions that, when executed by said at least one processor,
cause the system to: communicate with the two or more users to form
the group; receive a nomination identifying a selected media entity
and send data describing the nomination to each of the users in the
group; display on said user interface device, along with a
representation of the selected media entity, avatars representing
the users of the group and associated avatar emotions, the avatars
representing the one or more users and the avatar emotions
comprising indications of emotions selected by the one or more
users, the avatar emotion information sufficient to allow the
computing device to render an animation that conveys the avatar
emotion; and send an indication of a selected media entity to be
shared by the group and rendered on the computing devices of the
users.
14. The system of claim 13, wherein the nomination is selected from
one or more queues comprising one or more media entities selected
by each user.
15. The system of claim 13, further comprising: receive and display
indications of votes for media entities selected by users of the
group.
16. The system of claim 13, further comprising computer-executable
instructions that, when executed by said at least one processor,
cause the system to communicate with a shared media service
provider to form the group.
17. The system of claim 13, wherein the avatar emotions are
selected from an emote wheel comprising a plurality of
representative emotions.
18. The system of claim 17, wherein the emote wheel is divided into
pie shaped segments radiating from a center of the emote wheel and
each of the representative emotions are represented as one of the
pie shaped segments.
19. The system of claim 17, further comprising: display a random
animation based on the selected emotion.
20. A computer-readable storage medium comprising computer-readable
instructions for establishing a shared media experience in a group
comprising two or more users, each user operating a respective
computing device and communicatively coupled via a network, said
computer-readable instructions comprising instructions for:
receiving, on one of the computing devices, an input indicating a
request to join the group; sending the input to a shared media
service provider and receiving an indication of acceptance into the
group; receiving data describing media entities selected by other
members of the group and rendering representations of the received
media entities on a user interface device coupled to said one of
the computing devices; receiving a nomination identifying one of
the media entities and sending the nomination to the other members
of the group; displaying on said user interface device, along with
the representations of the received media entities, avatars
representing the users of the group; receiving an indication of an
emotion from one of the users and, in response, causing the avatar
corresponding to said one of the users to perform an animation on
said user interface device that conveys the selected emotion; and
receiving an indication of a selected media entity to be shared by
the group and displaying a representation of the selected media
entity on said user interface device, wherein the selected media
object is selected by one of the users of the group deemed to be a
host of the group.
Description
CROSS-REFERENCE
[0001] This application claims the benefit of U.S. Provisional
Patent Application No. 61/217,268, filed May 29, 2009, which is
hereby incorporated by reference in its entirety. This application
is also related to co-pending U.S. application Ser. No. ______,
filed on even date herewith, entitled "Avatar Integrated Shared
Media Experience", which is hereby incorporated by reference in its
entirety.
BACKGROUND
[0002] The wide availability of data networks has enabled computing
device users to remain connected to their provider networks and
thus all of the data and services available via the Internet and
other networks. The growth of such networks have also fueled the
growth of community and social applications using computing devices
such as mobile phones and personal computers. For example,
networked multiplayer gaming is generally available on both
personal computers and game consoles. Such networked applications
allow users to remain connected and to share online experiences
without the need to be physically present in the same location.
[0003] However, many social activities remain out of reach of
online networks. For example, networked social multimedia
experiences, such as streaming video, for example, are not
generally available or convenient to use.
[0004] In some cases, avatars may be used to enhance a group or
online experience. An avatar can represent a user in a variety of
contexts, including computer or video games, applications, chats,
forums, communities, and instant messaging services. An avatar may
be an object representing the embodiment of a user and may
represent various actions and aspects of the user's personal,
beliefs, interests, or social status. However, the use of avatars
has not overcome the deficiencies of existing group and online
systems and applications.
SUMMARY
[0005] One popular social activity is the viewing of movies and
television shows. However, it is difficult for users who live in
separate physical locations to conveniently decide on a movie or
television show to watch together. For example, it may be difficult
and cumbersome for a participant in an online group to suggest a
movie and listen to suggestions from other members of the group.
Furthermore, it may be difficult to communicate thoughts and
feelings about the various suggested movie or television titles to
the members of the group while at the same time maintaining a sense
of fun and interaction that is typical of an in-person
movie/television show selection experience.
[0006] A method and system are disclosed herein in which a group of
people may replicate the physical world experience of going with a
group of friends to select a movie or show to watch together in a
virtual world while the users are in different physical locations.
Users of a group may nominate movie or television selections for
group viewing. In one embodiment, a display at a user's location
may render avatars representing the users of the group. Users may
also select an emotion that the member wishes to express to the
other users of the group.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] FIG. 1 is a block diagram of an example network
configuration.
[0008] FIG. 2 depicts an example user interface that maybe provided
during a networked, social multimedia experience.
[0009] FIGS. 3A-3C are flowcharts of example methods for
synchronizing control commands in a networked, social multimedia
environment.
[0010] FIG. 4 is a block diagram of an example computing
environment.
[0011] FIGS. 5A-5G are screen shots from the perspective of one
user of a group of users illustrating a process flow of an avatar
integrated shared media nomination and watching experience.
[0012] FIG. 6 depicts an exemplary user interface incorporating
some of the embodiments disclosed herein.
[0013] FIG. 7 depicts an exemplary process incorporating some of
the embodiments disclosed herein.
[0014] FIG. 8 depicts example system for providing a shared media
experience.
[0015] FIG. 9 illustrates a computer readable medium bearing
computer executable instructions discussed with respect to FIGS.
1-8.
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
[0016] Certain specific details are set forth in the following
description and figures to provide a thorough understanding of
various embodiments of the disclosure. Certain well-known details
often associated with computing and software technology are not set
forth in the following disclosure to avoid unnecessarily obscuring
the various embodiments of the disclosure. Further, those of
ordinary skill in the relevant art will understand that they can
practice other embodiments of the disclosure without one or more of
the details described below. Finally, while various methods are
described with reference to steps and sequences in the following
disclosure, the description as such is for providing a clear
implementation of embodiments of the disclosure, and the steps and
sequences of steps should not be taken as required to practice this
disclosure.
[0017] Many social activities have been replicated or simulated by
networked or online activities. For example, group discussions have
been simulated using on-line messaging or chat services. However,
some social activities have been more difficult to replicate. For
example, one popular social activity is the group viewing of movies
and television shows. However, it is difficult for users who are in
separate physical locations to conveniently decide on a movie or
television show to watch together. For example, it may be difficult
and cumbersome for a participant in an online group to suggest a
movie and listen to suggestions from other members of the group.
Furthermore, it may be difficult to communicate thoughts and
feelings about the various suggested movie or television titles to
the members of the group while at the same time maintaining a sense
of fun and interaction that is typical of an in-person
movie/television show selection experience.
[0018] The following example embodiments describe the media
nomination and selection process in the context of viewing movies
and television shows. The selection of movies and television shows
is exemplary, and those skilled in the art will recognize that the
principles are readily applicable to the nomination and selection
of other media types that may be shared among a group of users.
Such media types may include any media file or application such as
music files and video games. All such media types and applications
are contemplated as within the scope of the present disclosure.
[0019] In various embodiments disclosed herein, a group of users
may replicate the physical world experience of meeting with a group
of friends to select a movie or television show to watch together.
The experience may be replicated in a virtual world in which the
users are in different physical locations and in communication via
a network. Users of the group may nominate movie or television
selections for group viewing. In one embodiment, a display at a
user's location may render avatars representing the users of the
group. Users may also select an emotion that the user wishes to
express to the other users of the group.
[0020] According to the methods and systems described herein, a
user in a group of users may be provided an opportunity to browse
content made available by a system and/or service, such as for
example Microsoft's XBOX 360 console and XBOX LIVE service, and to
nominate specific content, such as movies or television shows, that
they would like to watch. Once the group of users has nominated
movies or television shows that they would like to watch, the users
may discuss with each other, via for example their respective
headset devices, regarding which movie or show they would like to
watch together.
[0021] Each user may also have an avatar which is a virtual
representation of his- or herself that may act out different "pick
my movie" animations to attempt to convey the user's excitement
with the particular movie or television show he or she has chosen.
Many applications such as video games sometimes feature a
user-created, system-wide avatar as a user-controlled character.
Avatars can be graphical images that represent real persons in
virtual or game space. Typically, a user may customize the avatar
in variety of ways dealing with appearance, such as facial features
and clothing. This allows the user a more personalized and involved
video gaming experience. For instance, the Nintendo Corporation has
a user-created, system-wide avatar, the MII.RTM., which a user may
then use as his or her user-controlled character in video games
that support this feature, such as WII SPORTS.RTM..
[0022] Once a "leader" ultimately picks a particular piece of
content, such as a particular movie, the chosen content may be
watched by the group of users and their respective avatars may
appear in a virtual "destination" to watch the movie together. The
virtual destination and a representation of the group watching the
content may appear on the display of each user's respective
console, thus simulating a physical gathering of those users. The
group of users may talk during the movie on their headsets and have
their avatars perform emotions and gestures that the user in the
physical world is feeling based on the content being played.
[0023] Additionally, the system may provide themed destinations
that may be chosen by the system or by one or more of the users of
the group viewing the content. For example, a content service
provider, such as an online provider of movies that can be rented
for view, may provide a themed destination that resembles a home
theater environment. Another service provider may provide a themed
destination that resembles a full theater. Other themed
destinations may include ones that resemble a beach, aquarium,
outer space, mountains, drive-in theater or any other destination.
The themed destination may be chosen by a leader of the group or by
the collective agreement of the users. Hidden/unlockable themes may
also be provided based on events occurring around a user. For
example, if one of the users in the group is having a birthday on
that day, the system may provide a special destination where a
birthday cake and balloons may appear as the users are watching a
movie together.
Infrastructure for Supporting a Shared Media Nomination and
Watching Experience
[0024] FIG. 1 illustrates an example network environment. Of
course, actual network and database environments may be arranged in
a variety of configurations; however, the example environment shown
here provides a framework for understanding the type of environment
in which an embodiment may operate.
[0025] The example network may include one or more client computers
200a, a server computer 200b, data source computers 200c, and/or
databases 270, 272a, and 272b. The client computers 200a and the
data source computers 200c may be in electronic communication with
the server computer 200b by way of the communications network 280
(e.g., an intranet, the Internet or the like). The client computers
200a and data source computers 200c may be connected to the
communications network by way of communications interfaces 282. The
communications interfaces 282 can be any type of communications
interfaces such as Ethernet connections, modem connections,
wireless connections and so on.
[0026] The server computer 200b may provide management of the
database 270 by way of database server system software such as
MICROSOFT.RTM.'s SQL SERVER or the like. As such, server 200b may
act as a storehouse of data from a variety of data sources and
provides that data to a variety of data consumers.
[0027] In the example network environment of FIG. 1, a data source
may be provided by data source computer 200c. Data source computer
200c may communicate data to server computer 200b via
communications network 280, which may be a LAN, WAN, Intranet,
Internet, or the like. Data source computer 200c may store data
locally in database 272a, which may be database server or the like.
The data provided by data source 200c can be combined and stored in
a large database such as a data warehouse maintained by server
200b.
[0028] Client computers 200a that desire to use the data stored by
server computer 200b can access the database 270 via communications
network 280. Client computers 200a access the data by way of, for
example, a query, a form, etc. It will be appreciated that any
configuration of computers may be employed.
[0029] The client computers 200a depicted in FIG. 1 may be PCs or
game consoles, for example. Two or more clients 200a may form a
"party." A "social video application" 220 running on the server
200b may designate one of the clients 200a as the "remote holder."
The remote holder may be the first member of the party to request a
network session. Such a request may be, for example, a request for
streaming video. The remote holder may then invite other clients to
establish a networked, social multimedia experience, i.e., to join
the party.
[0030] The remote holder may have control over a shared "remote
control" 210 that controls content playback. When the remote holder
presses play, pause, reverse, or fast-forward, for example, the
remote holder's "state" may be sent to all connected users in a
group, who see it and synchronize to it, causing the same action to
occur on their client. The other users may have the ability to
play, pause, and request remote holder status by sending their own
state to the remote holder. Such actions may need approval from the
current remote holder to take effect. Users may also have the
ability to leave the playback session.
[0031] The video may be kept synchronized by keeping all users
updated on the remote holder's state. The remote holder's state may
be a structure 235 that contains information on playback status
(e.g., playing, paused, initializing, etc.), an identifier
associated with the content being viewed, and a current time code
associated with the content. The remote holder may maintain its
state (i.e., keep it up-to-date), and send it to all the other
users when it changes. The other users may then see the new state,
compare their own time code and playback state to the remote
holder's, and then take action accordingly. Each client may have
its own respective social video application 230, and may maintain
its own respective state structure 235.
[0032] If a user's state is different from that of the remote
holder, it may be updated (playing may become paused, for example).
If a user's time code is too different from the remote holder's,
then a "seek" operation may be performed to the remote holder's
reported time code. The user may be responsible for predicting,
based on "pre-buffering times," how long it will take the seek call
to complete, and compensate by adjusting the targeted time
code.
[0033] Users may also be enabled to make requests of the remote
holder by sending the remote holder and all other users an updated
state that differs from the remote holder's state. When the remote
holder sees this state, it may be taken as a request. The remote
holder may update its state to reflect the requested changes. Only
then do the other users (including the user that made the request)
change their state. The same process can be used to request remote
holder status.
[0034] In an example embodiment, any user can be the remote holder,
but only one user can be the remote holder at any time. Any member
may be promoted to remote holder, demoting the current remote
holder to a normal user. The "current" remote holder is the only
user who can "pass the remote" to another user. The server may keep
track of the identify of the current remote holder.
[0035] Multiparty voice chat may be integrated into the experience,
allowing members to comment on the video. Thus, a group of people
may be enabled to share the experience of watching a video together
as if they were in the same room, without being physically present
together. All users may have the same access to voice chat. That
is, any user may speak whenever he chooses.
[0036] Multiparty voice chat may require a certain level of
synchronization among the clients that form the party. If any
client were allowed to be even a few seconds out of synch with the
rest of the party, comments made over the chat may not make sense.
Additionally, feedback from the audio of one client sent over voice
chat could be very disruptive if it's not closely in-sync with what
other users are hearing from their own video.
[0037] Fast-forward and reverse may be treated differently from
play, pause, and seek commands. When the remote holder elects to
fast-forward or reverse, the other clients may simply pause
playback. When the remote holder finds the time in the video from
which playback should resume, the other clients may receive the
remote holder's updated state, and issue a "seek" command telling
them to resume playback from the time index the remote holder has
selected. This may eliminate potential synchronization issues that
may be caused by fast-forward or reverse speeds being slightly
different on different users' client computers.
[0038] A fully social experience may be created where people are
not only watching the same video, but also using graphical user
avatars to create a virtual viewing environment such as a virtual
entertainment room or movie theater. The users may be represented
graphically in front of the video, and may be enabled to use
animations, text chat, and voice chat to interact with each
other.
[0039] For example, the introduction of graphical avatars into the
shared video experience may add another dimension to the experience
by giving users a sense of identity within the virtual viewing
environment. Each user watching the video may be represented by
their own customized avatar. The avatars of every person in the
session may be rendered on everyone else's television or monitor,
resulting in a group of avatars that appear to be watching the
video in a virtual environment. Each user may be enabled to trigger
animations and text messages (in the form of "speech balloons," for
example) for their avatar. Such animations and text messages may be
rendered on every other users' television or monitor.
[0040] FIG. 2 depicts an example user interface 400 that may be
provided during a networked, social multimedia experience. The user
interface 400 may be presented on respective video monitors
provided at each client location. The same interface may be
presented at each location.
[0041] In general, the user interface 400 may depict an area for
displaying a movie. The area may be a virtual viewing environment
such as a virtual living room or a virtual movie theater. As noted
above, the scene providing the area for rendering the media may be
referred to as the "destination" or "themed destination."
Specifically, as shown in FIG. 2, the user interface 400 may
include a video presentation portion 410, via which the video 412
is presented to the users. The user interface 400 may also include
a respective avatar 420A-D corresponding to each of the users. The
user interface 400 may also include a text chat area. As shown,
text chat may be presented in the form of speech balloons 430A-D.
Alternatively or additionally, text chat may be presented as
scrolling text in a chat box portion of the user interface 400.
Audio maybe presented via one or more speakers (not shown) provided
at the client locations.
[0042] Each client may render its own themed destination. Thus,
software may be provided on each client to enable the client to
render its own themed destination. The themed destinations rendered
on the several clients may be identical, or not.
[0043] When a user causes his or her avatar to gesticulate, the
gesture may be presented at all the client locations in
synchronicity. Similarly, when a user speaks or otherwise produces
an audio event, e.g., through voice chat, or textual event, e.g.,
through text chat, the audio or text may be presented at all the
client locations in synchronicity.
[0044] FIG. 3A is a flowchart of an example method 300 for
synchronizing play, pause, stop, and seek commands from the remote
holder. At 301, the remote holder may select a "play," "pause,"
"stop," or "seek" operation, e.g., by pressing the play, pause,
stop, or seek button on their game controller or remote control. At
302, in response to the remote holder's selection of the play,
pause, stop, or seek operation, the remote holder client may update
its state structure to reflect the change in time code and playback
status.
[0045] At 303, the remote holder client communicates the remote
holder's state structure to the other clients in the party. To
maintain the highest level of synchronization among the several
clients in the party, such updates should be communicated as
frequently as possible. At 304, the other clients receive the
remote holder's updated state. At 305, each client responds to the
state change by updating its own state structure to conform to that
of the remote holder.
[0046] The state structure from each client may be sent to every
other client, so that every client always knows the current state
of every other client in the party. Because the state structure
contains information on playback status, an identifier associated
with the content being viewed, and a current time code associated
with the content, each client will then be performing the same
operation, at the same place in the same content, at the same
time.
[0047] FIG. 3B is a flowchart of an example method 310 for
synchronizing play or pause commands from a user who is not the
remote holder. In an example embodiment, a user who is not the
remote holder is not enabled to exercise a stop, seek,
fast-forward, or reverse command. At 311, a non-remote holder user
may select a "play" or "pause" operation, e.g., by pressing the
play or pause button on their game controller or remote control. At
312, in response to the user's selection of the play or pause
operation, the selecting user's client may update its state
structure to reflect that a play or pause state has been
requested.
[0048] At 313, the selecting user's client may send the selecting
user's state to the remote holder client, as well as to all other
members of the party. At 314, the remote holder client may receive
the selecting user's state, from which it can determine that
another member of the party has made a playback state change
request. The remote holder client may change its own state to
reflect the new state.
[0049] At 315, the remote holder client communicates the remote
holder's state structure to the other clients in the party. To
maintain the highest level of synchronization among the several
clients in the party, such updates should be communicated as
frequently as possible. At 316, the other clients receive the
remote holder's updated state.
[0050] At 317, the other clients, including the user who made the
original request, receive the remote holder's updated state, and
respond to the state change by updating their own state structures
to conform to that of the remote holder. At 318, the selected
action occurs on the requesting user's client.
[0051] FIG. 3C is a flowchart of an example method 320 for
synchronizing fast-forward and reverse commands from the remote
holder. At 321, the remote holder may select a "fast-forward" or
"reverse" operation, e.g., by pressing the fast-forward or reverse
button on their game controller or remote control.
[0052] At 322, in response to the remote holder's selection of the
fast-forward or reverse operation, the remote holder client may
update its state to reflect that it is currently fast-forwarding or
reversing. At 323, the remote holder client communicates the remote
holder's state structure to the other clients in the party. At 324,
the other users receive the new state, and pause until the fast
forward/reverse state changes again.
[0053] At 325, the remote holder video starts to fast-forward or
reverse. Eventually, the remote holder may select a "play"
operation, e.g., by pressing the play button on their game
controller or remote control. At 326, the remote holder video
begins playback at the time code associated with the point in the
video at which the remote holder selected the play operation.
[0054] At 327, the remote holder may update its state to reflect
that it is currently playing and has a new time code, and
communicate its state structure to the other clients in the party.
At 328, the other users receive the new state structure and perform
a seek and play operation to get back synchronized with the remote
holder.
[0055] Thus, the remote holder may be allowed full control over the
virtual remote control, while the other users have only the ability
to exit the video experience, play, pause, and make requests of the
remote holder. In an example embodiment, no playback changes are
made until the remote holder has changed its own state.
[0056] Synchronization of avatars may be implemented in much the
same way as described above in connection with synchronization of
play and pause commands. Each user would construct his or her own
avatar, or retrieve a saved avatar if the user already constructed
one. Each client could then communicate information about its
respective avatar to the other clients.
[0057] As each client renders its respective destination, it may
retrieve the avatars from a common server (e.g., based on gamer
tags associated with the avatars). For example, avatars may be
retrieved via the internet. Avatar placement and emotion
information may be contained in the state structure that is passed
around the several users. Placement information may indicate where
each avatar is to be presented in the user interface, either in
absolute or relative terms. Emotion information may convey an
emotional state. Each client may animate a certain avatar based on
emotion information received for that avatar. Thus, when rendering
its virtual destination, each client can determine from the state
structure what the virtual destination is supposed to look like,
avatar placement therein, which avatar is speaking, gesturing,
leaving, etc.
[0058] Synchronized text chat may also be implemented in much the
same way as described above in connection with synchronization of
play and pause commands. Text provided by one user may be included
in the state structure that is passed around the several users.
[0059] Voice chat can be implemented via the so-called "party"
system, which connects up to eight or more users together. In
essence, the party system employs a respective gamer tag associated
with each of the several users. Thus, synchronized voice chat may
be built into the system, eliminating any need to convey voice
information in the state structure.
[0060] FIG. 4 shows an exemplary computing environment in which
example embodiments and aspects may be implemented. The computing
system environment 100 is only one example of a suitable computing
environment and is not intended to suggest any limitation as to the
scope of use or functionality. Neither should the computing
environment 100 be interpreted as having any dependency or
requirement relating to any one or combination of components
illustrated in the exemplary operating environment 100.
[0061] Numerous other general purpose or special purpose computing
system environments or configurations may be used. Examples of well
known computing systems, environments, and/or configurations that
may be suitable for use 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.
[0062] Computer-executable instructions, such as program modules,
being executed by a computer may be used. Generally, program
modules include routines, programs, objects, components, data
structures, etc. that perform particular tasks or implement
particular abstract data types. Distributed computing environments
may be used 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.
[0063] With reference to FIG. 4, an exemplary system includes a
general purpose computing device in the form of a computer 110.
Components of computer 110 may include, but are not limited to, a
processing unit 120, a system memory 130, and a system bus 121 that
couples various system components including the system memory to
the processing unit 120. The processing unit 120 may represent
multiple logical processing units such as those supported on a
multi-threaded processor. The system bus 121 may 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). The system bus 121 may also be
implemented as a point-to-point connection, switching fabric, or
the like, among the communicating devices.
[0064] Computer 110 typically includes a variety of computer
readable media. Computer readable media can be any available media
that can be accessed by computer 110 and 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 computer 110. 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.
[0065] The system memory 130 includes computer storage media in the
form of volatile and/or nonvolatile memory such as read only memory
(ROM) 131 and random access memory (RAM) 132. A basic input/output
system 133 (BIOS), containing the basic routines that help to
transfer information between elements within computer 110, such as
during start-up, is typically stored in ROM 131. RAM 132 typically
contains data and/or program modules that are immediately
accessible to and/or presently being operated on by processing unit
120. By way of example, and not limitation, FIG. 4 illustrates
operating system 134, application programs 135, other program
modules 136, and program data 137.
[0066] The computer 110 may also include other
removable/non-removable, volatile/nonvolatile computer storage
media. By way of example only, FIG. 4 illustrates a hard disk drive
140 that reads from or writes to non-removable, nonvolatile
magnetic media, a magnetic disk drive 151 that reads from or writes
to a removable, nonvolatile magnetic disk 152, and an optical disk
drive 155 that reads from or writes to a removable, nonvolatile
optical disk 156, 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. The hard disk drive 141
is typically connected to the system bus 121 through a
non-removable memory interface such as interface 140, and magnetic
disk drive 151 and optical disk drive 155 are typically connected
to the system bus 121 by a removable memory interface, such as
interface 150.
[0067] The drives and their associated computer storage media
discussed above and illustrated in FIG. 4, provide storage of
computer readable instructions, data structures, program modules
and other data for the computer 110. In FIG. 4, for example, hard
disk drive 141 is illustrated as storing operating system 144,
application programs 145, other program modules 146, and program
data 147. Note that these components can either be the same as or
different from operating system 134, application programs 135,
other program modules 136, and program data 137. Operating system
144, application programs 145, other program modules 146, and
program data 147 are given different numbers here to illustrate
that, at a minimum, they are different copies. A user may enter
commands and information into the computer 20 through input devices
such as a keyboard 162 and pointing device 161, 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 the processing unit 120 through a user input interface
160 that 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 monitor 191 or other type
of display device is also connected to the system bus 121 via an
interface, such as a video interface 190. In addition to the
monitor, computers may also include other peripheral output devices
such as speakers 197 and printer 196, which may be connected
through an output peripheral interface 195.
[0068] The computer 110 may operate in a networked environment
using logical connections to one or more remote computers, such as
a remote computer 180. The remote computer 180 may 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 the computer 110, although
only a memory storage device 181 has been illustrated in FIG. 4.
The logical connections depicted in FIG. 4 include a local area
network (LAN) 171 and a wide area network (WAN) 173, but may also
include other networks. Such networking environments are
commonplace in offices, enterprise-wide computer networks,
intranets and the Internet.
[0069] When used in a LAN networking environment, the computer 110
is connected to the LAN 171 through a network interface or adapter
170. When used in a WAN networking environment, the computer 110
typically includes a modem 172 or other means for establishing
communications over the WAN 173, such as the Internet. The modem
172, which may be internal or external, may be connected to the
system bus 121 via the user input interface 160, or other
appropriate mechanism. In a networked environment, program modules
depicted relative to the computer 110, or portions thereof, may be
stored in the remote memory storage device. By way of example, and
not limitation, FIG. 4 illustrates remote application programs 185
as residing on memory device 181. 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.
Avatar Integrated Shared Media Nomination and Watching
Experience
[0070] Described now is an exemplary embodiment illustrating some
of the methods and systems disclosed herein for establishing a
shared media experience in a group comprising two or more users,
each user operating a respective computing device and
communicatively coupled via a network. A user may, at the user's
location, use a multipurpose console that has access to an online
network and network services. One service that may be available is
an online media service that can provide streaming media services
so that the user can experience near instant streaming of
content.
[0071] In an embodiment, the user may desire to utilize a party
mode on their console. A party may be a collection of users who may
or may not all be interacting within the same experience at a given
point in time. A party session may be established when party
members interact with one another within the same application or
experience.
[0072] Any user may host a shared video experience. In one
embodiment, the user who initiates the party session may be deemed
to be the party host. A host may invite other users to become
members of a party and share a party experience. A host may create
a shared party by either launching an application provided on the
console that may provide or access an infrastructure for inviting
party members to a shared media experience. Alternatively and
optionally, the console may provide a wizard or guide for inviting
other users to the party. Such applications may provide, for
example, menus to select or enter the identities of other users who
the host wishes to invite to the party. The application may
transmit identifiers of the requested users to an online service
that may in turn forward the requests to the identified users. The
identified users may be notified via applications executing on
their respective consoles that they have been invited to the party.
The applications may then provide an interface for accepting or
rejecting the invitation, upon which the application may return the
acceptance or rejection to the online service. Finally, the online
service may notify the host of the rejection or acceptance.
[0073] Once a party has been formed, a movie or television show may
be selected by the party for shared viewing. One or more of the
users may select one or more movies or shows to be listed in a
watch queue. Such a queue may, for example, include a list of the
movies and television shows that a user may want to watch via the
online service. Typically, users may add titles to the queue using
various means such as browsing on the online service website.
[0074] In one embodiment, the host of the party may be the only
member of the party that is provided the capability to share out
their watch queue to the other party members. The online service
may make the information available so that the other party members
may view the host's watch queue on their own consoles.
[0075] In another embodiment, any party member may be provided the
capability to nominate content from within their own watch queues.
The content nominations may be included and displayed in a party
queue available to each party member. In one embodiment, each
nominated movie or show may be represented in a two dimensional
grid, for example a 3.times.3 tiled wall.
[0076] In addition, each party member may be provided the option to
share their own personal queues with the entire party. Furthermore,
even if the party member does not share their personal queues, they
may still nominate content from their queues to the party queue.
However, no other party members will see that party members
queue.
[0077] Each party member's individual watch queue may be
represented as a different channel or data stream on each user's
display. When permitted, users may also browse the other users'
watch queues and nominate the pieces of content that they wish to
watch from the party member's queue. Users may also request and
view details of each movie or show. For example, by selecting a
particular movie in a user's queue, the details for the movie may
be displayed, indicating for example the synopsis, run time, and
other details of the movie.
[0078] After the users have nominated their choices, in a preferred
embodiment the host of the session may select a specific movie or
show for the entire party to watch. In other embodiments, the group
or online system may determine the selected movie or show by
determining the selection with the highest number of votes or other
formulaic means.
[0079] In some cases one or more members of the party may not have
audio capability and thus a visual confirmation may be provided
when the host selects the movie. In an embodiment, the avatar of
the party member who nominated the selected content may be
displayed when the selected content item is highlighted in the
party queue. This may provide a visual confirmation of the movie or
show that was selected for viewing. Thus the party members may be
made aware that the content has been selected and is ready to be
viewed without relying on the need for voice communications within
the party.
[0080] In an embodiment, the avatars may be used to convey emotions
and feelings during the nomination and selection process. For
example, a user may react to a movie nomination and desire to
express the response to the other users. A user may wish to, for
example, let others know what the user is thinking, provoke a
response from other users, make a statement about the movie, or
respond to another user's conveyed emotion.
[0081] Referring to FIG. 6, in one embodiment the input of emotions
may be implemented using a fly out wheel displayed on the user's
screen and activated using an appropriate control on the user's
console, console accessory, or other input means. For example, the
wheel can be activated and controlled using a gamepad or a remote
controller.
[0082] Any number of emotions or responses may be provided on the
fly out wheel. By way of example and not limitation, eight
categories of emotions may be used as shown in FIG. 6.
[0083] In an embodiment, each category may be represented by one
static avatar action or animation, or a series of animations
selectable by the user. In other embodiments, rather than giving
the user the ability to choose the details of the animation, a
random predefined animation may be rendered once the user selects
the emotion they want to convey. The categories of emotions may
further be based on typical responses that users may have watching
major film genres such as action, adventure, comedy,
crime/gangster, drama, historical, horror, musicals, science
fiction, war, westerns, and the like.
[0084] Based on the above listed genres and typical response
associated with the genres, in one embodiment depicted in FIG. 6
the following categories may be used to populate an avatar emotion
response function:
[0085] 1. Love
[0086] 2. Hate
[0087] 3. Funny
[0088] 4. Bored
[0089] 5. Happy
[0090] 6. Sad
[0091] 7. Mischievous
[0092] 8. Scared
[0093] These specific emotions may also be referred to as emotes.
In an embodiment, each category may further provide at least three
random animations. Each avatar may also perform idle animations to
make the experience more interesting for the users, even when an
emotion has not been actively selected by the users.
[0094] Additionally and optionally, audio effects may also be
provided. The audio effects may be combined with the on screen
animations to further enhance the party experience. For example, a
clapping audio clip may be rendered along with one of the selected
emotions.
[0095] In various embodiments, additional features may be added to
enhance the party experience. For example, the consecutive
selection of three emotions may perform/unlock a special emote.
Additionally, on certain days such as holidays, some emotes may be
configured to behave differently than on other days/times. Finally,
avatars may perform different animations depending on the user's
profile. For example, female avatars may use different animations
than male avatars.
[0096] In an embodiment, users may be given the option to turn off
the avatar experience and not use emotes. Users may continue to
communicate to other party members using a voice chat mode. In an
embodiment, the user may still be able to communicate via the
user's headset, but the user will no longer see the other user's
avatars. In one embodiment, however, pop-up notifications (e.g.,
"User X is Happy") may still be presented during the nomination
experience.
[0097] FIGS. 5A-5F depict exemplary screen shots from the
perspective of one user of a group of users illustrating the avatar
integrated shared media nomination experience disclosed herein. In
this example, each user sits in his or her own physical location
and views the display on his or her own computing device, such as
an Xbox console. Each user's console may be connected via a
network, such as the Internet. In one embodiment, each user is
logged into a respective Xbox Live account.
[0098] In one illustrative example of a nomination process, FIG. 5A
depicts a starting screen that may be presented to one user showing
a "Start Party" option that may be selected by the user to start a
shared media nomination and watching experience. FIG. 5B depicts
one exemplary screen in which a user may suggest a movie to watch,
wait for a suggestion, or invite users to join the party.
[0099] FIG. 5C depicts a user screen for nominating a selection.
The user may be provided the option to browse a list of available
content.
[0100] FIG. 5D depicts a user-interface screen presented to the
user that allows the user to suggest to the other users
participating in the "party" that the group view a selected piece
of content ("The Neverending Story" in this example).
[0101] FIG. 5E depicts the user's interface after making the
nomination. The figure also illustrates animation sequences of the
other user's avatar that represent how strongly the other user
feels about watching the other user's suggestion. With this
feature, a user can lobby for his or her selection and reflect to
the other users through that user's avatar how strongly the user
feels about watching his or her selection. Animations may include
the avatar pointing, waving hands, jumping, spinning or any other
movement or expression.
[0102] FIG. 5F shows one embodiment of a user-interface screen that
is presented to each user. As shown, in this example, the screen
resembles a home theater, and the avatars for each user are shown
as if they are sitting together on a couch toward the bottom of the
screen. In this example, the backs of the avatar's heads are
visible. In some embodiments the avatars may be rendered as
silhouettes as viewed from behind the avatars.
[0103] FIG. 6 shows one example of a selection mechanism (a wheel
or circle in this example) that is presented to a user to allow the
user to select one or more "emotions" to be reflected through that
user's avatar in order to display emotions to the other users
participating in the group watching experience. Because the users
are not physically at the same location, they cannot see each
other; only each other's avatars. And although the users may be
able to "chat" during the presentation of the content via their
respective headsets, the visual element of emoting would otherwise
be missing. With this mechanism, a user can cause the user's avatar
to perform an animation that expressed to the other users how the
user is feeling during the watching experience. For example, if a
user selects the "love" emote 610, an avatar may make a sighing
gesture and animated hearts may appear above the avatar's head to
indicate to the other users that this user "loves" the particular
content or scene being viewed. Another selection may make the
avatar appear to be laughing to indicate that the user finds the
content funny. Referring back to FIG. 5F, an example emote wheel
500 is depicted that illustrates one implementation of an emote
wheel using icons instead of text. The emote wheel 500 may be
continuously present on the display, or may be rendered on the
display when requested by the user, for example when a control
button on the console is pressed.
[0104] As mentioned above, different themes, brands, or
destinations can be applied to the watching experience.
Conceptually, the leader can take his or her group of users to
watch a movie or show to a variety of destinations around the
world. As shown in FIG. 5F, for example, the leader may "take" the
other users to a traditional move theater. In the example shown in
previous figures, the theme is that of a home theater. In addition
to user selectable themes, other themes may appear based on events
that are occurring for the user. For example, when the groups of
users are viewing a movie during the winter months, a "Winter
Wonderland" theme may be available (as shown in FIG. 5G). As
another example, a special theme (not shown) may be available when
it is your birthday.
[0105] In various embodiments, a button or other selection
mechanism may be available on the user interface screen that
signifies themes that may be selectable. In one embodiment, only
the leader may have the selection feature mechanism enabled. In
other embodiments, other users may also have the mechanism enabled.
When the leader cycles through different themes, then all members
of the party may receive indication of the themes and render the
themes unless the user has switched to full screen mode. When a
user is in full screen mode and then switches back to avatar
rendering mode, then the user's interface may render the theme
chosen by the leader.
[0106] As mentioned above, some themes may be made available based
on certain conditions, such as a time of the year or a date of
importance to a user such as a user's birthday. When the parameters
of such a condition are satisfied, then that theme may be chosen by
default until the condition is no longer met and the theme may then
no longer be available (until the condition occurs again). When a
special theme is unhidden, the leader may still have the ability to
change to a different theme. The unhidden theme may just be a new
option in the list. As an example, for a Birthday Theme, the
conditional may be that if any member of a watching party has a
birthday of today, within three days in the future or within three
days in the past, the default theme may be the Birthday Theme and
the theme may then be unhidden in the list of themes. As another
example, the condition for a Winter Wonderland Theme may be that
during the month of December every year, the Winter Wonderland
Theme may become the default and be unhidden in the list of
themes.
[0107] Referring now to FIG. 7, illustrated is an exemplary process
for establishing a shared media experience in a group comprising
two or more users, each user operating a respective computing
device and communicatively coupled via a network including
operations 700, 710, 720, 730, 740, 750, 760 and 770. The
illustrated operations are exemplary and do not imply a particular
order. Process 700 illustrates receiving, on one of the computing
devices, a request to join the group.
[0108] Process 710 illustrates sending the request to a shared
media service provider and receiving an indication of acceptance
into the group. In an embodiment, another input may be received
comprising an invitation for a specified user to join the group and
sending said another input to the shared media service provider
[0109] Process 720 illustrates receiving data describing media
entities selected by other members of the group and rendering
representations of the received media entities on a user interface
device coupled to the respective computing device.
[0110] Process 730 illustrates receiving a nomination identifying
one of the media entities and sending the nomination to the other
members of the group. In an embodiment, the nomination may be
selected from one or more queues comprising one or more media
entities selected by each user. Each of the one or more queues may
received on a separate channel.
[0111] Process 740 illustrates displaying on said user interface
device, along with the representations of the received media
entities, avatars representing the users of the group. In an
embodiment, the process may further comprises receiving and
displaying indications of votes for other ones of the media
entities selected by other users of the group
[0112] Process 750 illustrates receiving an indication of an
emotion from one of the users and, in response, causing the avatar
corresponding to said one of the users to perform an animation on
said user interface device that conveys the indicated emotion. In
an embodiment, the emotion may be selected from an emote wheel
comprising a plurality of representative emotions. The emote wheel
may be divided into pie shaped segments radiating from a center of
the emote wheel and each of the representative emotions may be
represented as one of the pie shaped segments.
[0113] In one embodiment, a random animation may be displayed based
on the selected emotion. The random animation may comprise, for
example, one of: at ease, cheer, disappointed, dance, looking,
nervous, neutral, surprised, taunt, thinking, and walk. As
discussed above, the representative emotions bay be selected based
on film genres. The emotions may comprise, for example, love, hate,
funny, bored, happy, sad, mischievous, and scared.
[0114] Process 760 illustrates receiving an indication of a
selected media entity to be shared by the group and displaying a
representation of the selected media entity on said user interface
device, wherein the selected media object is selected by one of the
users of the group deemed to be a host of the group. In an
embodiment, the user is deemed the host of the group when the user
initiated the formation of the group.
[0115] FIG. 8 depicts an exemplary system for establishing a shared
media experience in a group comprising two or more users, each user
operating a respective computing device and communicatively coupled
via a network. Referring to FIG. 8, system 800 comprises a process
810 and memory 820. Memory 820 further comprises computer
instructions for establishing a shared media experience in a group
comprising two or more users, each user operating a respective
computing device and communicatively coupled via a network. Block
822 illustrates instructions for communicating with the two or more
users to form the group. Block 824 illustrates instructions for
receiving a nomination identifying a selected media entity and
sending data describing the nomination to each of the users in the
group.
[0116] Block 826 illustrates displaying on said user interface
device, along with a representation of the selected media entity,
avatars representing the users of the group and associated avatar
emotions, the avatars representing the one or more users and the
avatar emotions comprising indications of emotions selected by the
one or more users, the avatar emotion information sufficient to
allow the computing device to render an animation that conveys the
avatar emotion. Block 828 illustrates instructions for sending an
indication of a selected media entity to be shared by the group and
rendered on the computing devices of the users.
[0117] Any of the above mentioned aspects can be implemented in
methods, systems, computer readable media, or any type of
manufacture. For example, per FIG. 9, a computer readable medium
can store thereon computer executable instructions for establishing
a shared media experience in a group comprising two or more users,
each user operating a respective computing device and
communicatively coupled via a network. Such media can comprise a
first subset of instructions for receiving, on one of the computing
devices, an input indicating a request to join the group 910; a
second subset of instructions for sending the input to a shared
media service provider and receiving an indication of acceptance
into the group 912; a third subset of instructions for receiving
data describing media entities selected by other members of the
group and rendering representations of the received media entities
on a user interface device coupled to said one of the computing
devices 914; a fourth subset of instructions for receiving a
nomination identifying one of the media entities and sending the
nomination to the shared media service provider 916; a fifth subset
of instructions for displaying on said user interface device, along
with the representations of the received media entities, avatars
representing the users of the group 918; a sixth subset of
instructions for receiving an indication of an emotion from one of
the users and, in response, causing the avatar corresponding to
said one of the users to perform an animation on said user
interface device that conveys the selected emotion 920; and a
seventh subset of instructions for receiving an indication of a
selected media entity to be shared by the group and displaying a
representation of the selected media entity on said user interface
device, wherein the selected media object is selected by one of the
users of the group deemed to be a host of the group 922. It will be
appreciated by those skilled in the art that additional sets of
instructions can be used to capture the various other aspects
disclosed herein, and that the presently disclosed subsets of
instructions can vary in detail per the present disclosure.
[0118] It should be understood that the various techniques
described herein may be implemented in connection with hardware or
software or, where appropriate, with a combination of both. Thus,
the methods and apparatus of the disclosure, or certain aspects or
portions thereof, may take the form of program code (i.e.,
instructions) embodied in tangible media, such as floppy diskettes,
CD-ROMs, hard drives, or any other machine-readable storage medium
wherein, when the program code is loaded into and executed by a
machine, such as a computer, the machine becomes an apparatus for
practicing the disclosure. In the case of program code execution on
programmable computers, the computing device generally includes a
processor, a storage medium readable by the processor (including
volatile and non-volatile memory and/or storage elements), at least
one input device, and at least one output device. One or more
programs that may implement or utilize the processes described in
connection with the disclosure, e.g., through the use of an
application programming interface (API), reusable controls, or the
like. Such programs are preferably implemented in a high level
procedural or object oriented programming language to communicate
with a computer system. However, the program(s) can be implemented
in assembly or machine language, if desired. In any case, the
language may be a compiled or interpreted language, and combined
with hardware implementations.
[0119] While the invention has been particularly shown and
described with reference to a preferred embodiment thereof, it will
be understood by those skilled in the art that various changes in
form and detail may be made without departing from the scope of the
present invention as set forth in the following claims.
Furthermore, although elements of the invention may be described or
claimed in the singular, the plural is contemplated unless
limitation to the singular is explicitly stated.
* * * * *