U.S. patent application number 12/778038 was filed with the patent office on 2010-09-02 for multi-media center for computing systems.
Invention is credited to Thomas Madden.
Application Number | 20100223553 12/778038 |
Document ID | / |
Family ID | 37912085 |
Filed Date | 2010-09-02 |
United States Patent
Application |
20100223553 |
Kind Code |
A1 |
Madden; Thomas |
September 2, 2010 |
Multi-Media Center for Computing Systems
Abstract
Various "media-components" are provided in a "multi-media
center." In modular architecture, a module-controller communicates
with media-modules provided for various media-components. A
media-module can include or obtain data pertaining to a particular
media-component, identify media-player(s), and access information
related to their media. However, the media-modules are isolated
from each other, and the module-controller effectively controls
output generated in response to user input. A user interface
library is provided for the media-modules. Media-modules can obtain
a template or other tools from the library and construct their user
interface (e.g., menus). Media-modules can also identify a
media-player that can be initiated in response to user input.
Subsequently, the media-controller forwards user input to the
media-player.
Inventors: |
Madden; Thomas; (Redwood
City, CA) |
Correspondence
Address: |
TI Law Group
2055 Junction Avenue, #205
San Jose
CA
95131-2116
US
|
Family ID: |
37912085 |
Appl. No.: |
12/778038 |
Filed: |
May 11, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11247975 |
Oct 10, 2005 |
7721208 |
|
|
12778038 |
|
|
|
|
60724622 |
Oct 7, 2005 |
|
|
|
Current U.S.
Class: |
715/716 |
Current CPC
Class: |
G06F 3/01 20130101; G06F
9/451 20180201 |
Class at
Publication: |
715/716 |
International
Class: |
G06F 3/048 20060101
G06F003/048 |
Claims
1. A method, implemented by a computing system, of providing a
multi-media center that includes a plurality of media-components,
said method comprising: configuring a plurality of media-modules
for the multi-media center, wherein the plurality of media-modules
represents a media-component in the multi-media-center, wherein
each of the plurality of media-components includes at least one of
digital media and an application program configured to access
digital media; initiating a module-controller configured to
communicate with each of the plurality of media-modules; receiving
by the module-controller an input associated with the multi-media
center; identifying at least one of the plurality of media-modules
to generate a response to the input received by the
module-controller; forwarding the input to the identified
media-module; and receiving, at the module-controller, a response
to the input as determined by the identified media-module.
2. A method as recited in claim 1, wherein the plurality of
media-modules do not directly communicate with each other, and
wherein the plurality of media-modules can be dynamically removed
or added to the multi-media center.
3. A method as recited in claim 1, wherein said method further
comprises: determining whether to forward the input to another
module that is not one of the plurality of media-modules.
4. A computing system for providing a multi-media center that
includes a plurality of media-components each including digital
media, said computing system comprising: at least one processor; a
plurality of media-modules, wherein said media-modules include a
first media-module that can receive input and generate output; and
a module-controller configured to communicate directly with each of
said plurality of media-modules, wherein said module-controller can
further operate to: receive input associated with said multi-media
center; forward said input to a first media-module; process and
generate an output, by said first media-module, in response to said
input; receive said output from said first media-module in response
to said input; and perform at least one operation based on said
output, wherein said at least one operation is controlled by the
module-controller, wherein said plurality of media-modules do not
communicate with each other or with a multi-media center user and
do not control said output.
5. A computer readable medium including at least executable
computer program modules stored therein for a multi-media center
that includes a plurality of media-components, wherein each of said
plurality of media-components includes digital data, said computer
readable medium comprising: computer program code for determining,
based on a plurality of media-modules that each respectively
represent at least one media-component, a central-user-interface
that is used to access the plurality of media-components provided
by the multi-media center; computer program code for receiving
input associated with the central-user-interface; computer program
code for determining whether to forward the input to one of the
media-modules; and computer program code for forwarding the input
to a first media-module of the plurality of media-modules when the
determining determines to forward the input by one of the
media-modules, wherein the plurality of media-modules are isolated
from each other and do not directly communicate with each other or
with a multi-media center user, but communicate with a
module-controller.
6. A computer readable medium as recited in claim 5, wherein said
computer readable medium further comprises: computer program code
for determining which one of the media-modules is to receive the
input when the determining determines to forward the input to one
of the media-modules; computer program code for generating, by the
first media-component, a first output after associated with the
input; and computer program code for performing, based on the first
output, at least a first operation in response to the input
associated with the central-user-interface.
7. A computer readable medium as recited in claim 6, wherein the
first media-module includes or can obtain data that is output by
the first media-module as the first output.
8. A computer readable medium as recited in claim 7, wherein the
data pertains to a menu for the media-module, wherein the first
output is the menu, and wherein the first operation is displaying
the menu as a part of the central-user-interface.
9. A computer readable medium as recited in claim 7, wherein the
first media-module accesses a library to obtain a template for the
menu; and wherein the first media-module fills the template with
the data included in or obtained by the first module.
10. A computer readable medium as recited in claim 6, wherein the
output identifies a first media-player, and wherein the first
operation initiates the first media-player.
11. A computer readable medium as recited in claim 5, wherein said
computer readable medium further comprises: computer program code
for determining whether to process the input by a media-player
capable of presenting media; and computer program code for
processing the input by a media-player when the computer program
code for determining determines to process the input by a
media-player.
12. A computer readable medium as recited in claim 5, wherein the
computer program code for determining of whether to process the
input by a media-player is performed prior to the computer program
code for forwarding.
13. A computer readable medium as recited in claim 5, wherein each
one of the media-modules includes or can obtain information that
can be used to generate a main menu for the media-modules, and
wherein the central-user-interface includes each of the main menu
for the media-modules.
14. A computer readable medium as recited in claim 13, wherein at
least one of the media-modules includes or can obtain information
that can be used to generate one or more submenus for the at least
one media-module, and wherein the central-user-interface includes
the one or more submenus for the at least one media-module.
15. A computer readable medium as recited in claim 14, wherein the
information includes a number of menu or submenu items, icons, or
streaming video.
16. A computer readable medium as recited in claim 5, wherein the
module-controller comprises: computer program code for receiving
the input; computer program code for sending the input to the first
media-module; computer program code for receiving output from the
first media-module in response to the input; and computer program
code for performing at least one operation based on the output.
17. A computer readable medium as recited in claim 16, wherein the
at least one operation initiates a media-player to present
media.
18. A computer readable medium as recited in claim 16, wherein the
at least one operation facilitates display of the output on a
display, wherein the module-controller sends the output to a
menu-window for display, wherein the module-controller forwards the
input to a main window, and wherein main window determines whether
to process the input.
19. A computer readable medium as recited in claim 18, wherein said
computer readable medium further comprises: computer program code
for determining by the main window whether to process the input;
and computer program code for determining by the main window a
media-module to process the input when the main window determines
not to process the input.
20. A method, implemented by a computing system, of providing a
multi-media center that includes a plurality of media-components
which each includes digital data and program code to access the
digital data, said method comprising: determining, based on a
plurality of media-modules that each respectively represent at
least one media-component, a central-user-interface that is used to
access the plurality of media-components provided by the
multi-media center; receiving input associated with the
central-user-interface; determining whether to forward the input to
one of the media-modules; and forwarding the input to a first
media-module of the plurality of media-modules when the determining
determines to forward the input by one of the media-modules,
wherein the plurality of media-modules are isolated from each other
and do not directly communicate with each other or with a
multi-media center user, but communicate with a
module-controller.
21. A computing system for providing a multi-media center that
supports digital media, said computing system comprising: a
plurality of media devices, wherein said media devices include a
first media device that can receive input and generate output; and
a centralized controller configured to communicate directly with
each of said plurality of media devices, wherein said centralized
controller is configured to: receive input associated with said
multi-media center; determine a first media device of said
plurality of media device to receive the input; forward the input
to said first media device; and process and generate an output, by
said first media device, in response to the input.
22. A computing system as recited in claim 21, wherein said
plurality of media devices communicate with each other by way of
said centralized controller.
23. A computing system as recited in claim 21, wherein said
centralized controller is further configured to: receive the output
from said first media device in response to the input; and perform
at least one operation based on the output, wherein the at least
one operation is controlled by the centralized controller.
24. A computing system as recited in claim 23, wherein the at least
one operation being performed comprises presenting media data
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. patent
application Ser. No. 11/247,975, filed Oct. 10, 2005, and entitled
"MULTI-MEDIA CENTER FOR COMPUTING SYSTEMS," which is hereby
incorporated herein by reference, which in turn claims priority to
U.S. Provisional Patent Application No. 60/724,622, filed Oct. 7,
2005, and entitled "MULTIMEDIA SYSTEM," which is hereby
incorporated herein by reference.
[0002] This application is related to: (i) U.S. patent application
Ser. No. 11/245,937, filed Oct. 7, 2005, and entitled "TECHNIQUES
FOR PAIRING REMOTE CONTROLLERS WITH HOST DEVICES," which is hereby
incorporated by reference herein; and (ii) U.S. Provisional Patent
Application No. 60/725,544, filed Oct. 10, 2005, and entitled
"MULTIMEDIA CONTROL CENTER," which is hereby incorporated by
reference herein.
BACKGROUND OF THE INVENTION
[0003] Today, virtually anything can be represented as digital data
and presented in numerous forms including audible, visual, or
audio-visual forms. Digital data can also be transported
electronically, for example, as digital files or digital streams.
Basically speaking, digital data can be stored as a "digital media"
(e.g., a digital file, a media-player which stores digital data).
Digital media (or "media") can be accessed by a variety of
computing devices (e.g., personal computers, media-players,
personal assistants, wireless phones). Typically, digital media
includes at least digital content (or "content") that represents
the actual content of information stored in a digital form. As
such, digital content can, for example, be the content of a printed
book, a picture, a song in audible form and/or in audio-visual
forms (e.g., a rock video), movies, sports broadcasts, news in a
variety of forms including text, audio, or audio-visual.
[0004] Digital media can be packaged with media-player(s) and/or
other application programs. For example, Apple iPod media-player
available from Apple Computers, Inc. combines a digital audio
player and a portable hard drive for storing the media. iTunes or
iPhoto, which are also available from Apple Computers, Inc, can be
packaged with media-players and applications or tools that can be
used for organization, searching and retrieval of media (e.g.,
organizing photo, obtaining lists of music or films from a
database, and downloading music or films). Packaging digital media
with media-players, tools, or other applications is a relatively
recent development. Nevertheless, given the popularity of digital
media, numerous forms of media and media-players have been
developed and are in use today.
[0005] As digital data has become more prevalent, techniques for
presenting digital data have become increasingly more useful.
SUMMARY OF THE INVENTION
[0006] The invention pertains to techniques for combining various
"media-components" through use of a "multi-media center" which can
be accessed via a central-user-interface.
[0007] The invention can be implemented in numerous ways, including
a method, an apparatus, a computer readable medium, a computer
system, or a signal embodied in a carrier wave. Several embodiments
of the invention are discussed below.
[0008] As a method, implemented by a computing system, of providing
a multi-media center that includes a plurality of media-components,
one embodiment can, for example, include at least: configuring a
plurality of media-modules for the multi-media center, wherein the
plurality of media-modules represents a media-component in the
multi-media-center, wherein each of the plurality of
media-components includes at least one of digital media and an
application program configured to access digital media; initiating
a module-controller configured to communicate with each of the
plurality of media-modules; receiving by the module-controller an
input associated with the multi-media center; identifying at least
one of the plurality of media-modules to generate a response to the
input received by the module-controller; forwarding the input to
the identified media-module; and receiving, at the
module-controller, a response to the input as determined by the
identified media-module.
[0009] As a computing system for providing a multi-media center
that includes a plurality of media-components each including
digital media, one embodiment can, for example, can include at
least at least one processor; a plurality of media-modules, wherein
the media-modules include a first media-module that can receive
input and generate output; and a module-controller configured to
communicate directly with each of the plurality of media-modules.
The module-controller can further operate to: receive input
associated with the multi-media center; forward the input to a
first media-module; process and generate an output, by the first
media-module, in response to the input; receive the output from the
first media-module in response to the input; and perform at least
one operation based on the output, where the at least one operation
is controlled by the module-controller. The plurality of
media-modules do not communicate with each other or with a
multi-media center user and do not control the output.
[0010] As a computer readable medium including at least executable
computer program modules stored therein for a multi-media center
that includes a plurality of media-components, where each of the
plurality of media-components includes digital data. The computer
readable medium includes at least: computer program code for
determining, based on a plurality of media-modules that each
respectively represent at least one media-component, a
central-user-interface that is used to access the plurality of
media-components provided by the multi-media center; computer
program code for receiving input associated with the
central-user-interface; computer program code for determining
whether to forward the input to one of the media-modules; and
computer program code for forwarding the input to a first
media-module of the plurality of media-modules when the determining
determines to forward the input by one of the media-modules. The
plurality of media-modules are isolated from each other and do not
directly communicate with each other or with a multi-media center
user, but communicate with a module-controller.
[0011] As a method, implemented by a computing system, of providing
a multi-media center that includes a plurality of media-components
which each includes digital data and program code to access the
digital data, one embodiment of the invention can, for example,
include at least: determining, based on a plurality of
media-modules that each respectively represent at least one
media-component, a central-user-interface that is used to access
the plurality of media-components provided by the multi-media
center; receiving input associated with the central-user-interface;
determining whether to forward the input to one of the
media-modules; and forwarding the input to a first media-module of
the plurality of media-modules when the determining determines to
forward the input by one of the media-modules. The plurality of
media-modules are isolated from each other and do not directly
communicate with each other or with a multi-media center user, but
communicate with a module-controller.
[0012] As a computing system for providing a multi-media center
that supports digital media, one embodiment can, for example, can
include at least a plurality of media devices, where the media
devices include a first media device that can receive input and
generate output, and a centralized controller configured to
communicate directly with each of the plurality of media devices.
The centralized controller is configured to: receive input
associated with the multi-media center; determine a first media
device of the plurality of media device to receive the input;
forward the input to the first media device; and process and
generate an output, by the first media device, in response to the
input.
[0013] Other aspects and advantages of the invention will become
apparent from the following detailed description, taken in
conjunction with the accompanying drawings, illustrating by way of
example the principles of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
[0014] The present invention will be readily understood by the
following detailed description in conjunction with the accompanying
drawings, wherein like reference numerals designate like structural
elements, and in which:
[0015] FIG. 1 depicts a computing environment capable of providing
a multi-media-center in accordance of one embodiment of the
invention.
[0016] FIG. 2A depicts a method for providing a multi-media center
in accordance with one embodiment of the invention.
[0017] FIG. 2B depicts a method for processing input associated
with a multi-media center in accordance with one embodiment of the
invention.
[0018] FIG. 3 depicts in greater detail an architectural view for a
multi-media center program that can provide access to multiple
media-components via a central-user-interface in accordance with
one embodiment of the invention.
[0019] FIGS. 4A-4B depict a method for providing a multi-media
center which can be accessed to a central-user-interface in
accordance with another embodiment of the invention.
DETAILED DESCRIPTION OF THE INVENTION
[0020] As noted in the background section, techniques for
presenting digital data have become increasingly more useful as
digital media and media-players have become increasingly more
popular and prevalent. Furthermore, given that many different forms
of digital media and media-players have been developed and even
more are likely to be developed soon, it is highly desirable to
provide a "multi-media center" that can effectively combine various
"media-components."
[0021] Accordingly, the invention pertains to techniques for
combining various "media-components." In accordance with one aspect
of the invention, various "media-components" are provided in a
"multi-media center" which can be accessed via a
central-user-interface. A "media-component" as used herein refers
to digital media and/or application(s) used to access digital
media. The "multi-media center" can, for example, be provided as a
program on a computer system that includes one or more computers.
The central-user-interface can graphically represent each
media-component (e.g., as a selectable item in a main menu). User
input can be entered, for example, by a keyboard and/or mouse
connected to a computer system, or it can be entered remotely
(e.g., wirelessly and/or over a network).
[0022] Another aspect of the invention provides a modular
architecture that includes at least one media-module for each of
the media-components configured for the multi-media-player. A
media-module can include or obtain data pertaining to a particular
media-component (e.g., user interface menus, lists of digital data
in the media-component). In addition, a media-module can also
identify media-player(s) and access information related to their
media (e.g., music or movie lists). However, the media-modules do
not directly control output. Instead, a module-controller
communicates with various media-modules and effectively controls
output generated in response to user input. The module-controller
can forward the input to various media-modules for processing and
receive output from them. Subsequently, the module-controller can
use the output generated by the media-modules to perform the
appropriate response (e.g., manipulate display of menus or
presentation of media). In other words, the media-modules do not
directly control the output of the multi-media center even though
they may process the input and effectively generate the appropriate
response. Furthermore, media-modules can be isolated from each
other. As a result, the media-modules cannot communicate with each
other, but can be added or removed dynamically as they do not
affect each other or a main (base) program that effectively runs
the multi-media center.
[0023] In one embodiment, each media-module includes or can obtain
information needed to construct menus for its associated
media-component. It should be noted that media-modules can
construct their menus (or submenus) by using an User Interface
Library (or library). More particularly, media-modules can obtain a
template or other tools (e.g., metric utilities, windows, views,
widgets, sounds) from the User Interface Library (or library). As
such, each media-module may select a user interface template (e.g.,
menus, window) from the User Interface Library (or library) and
subsequently fill (or populate it) with the appropriate information
(e.g., menu items). In addition, the media-module can identify
media-player(s) that can be used to present digital data associated
with a media-component, and access information related to their
media (e.g., music or movie list). However, the module-controller
initiates the media-player associated with a media-component and
subsequently forwards any input associated with presentation of
media directly to the media-player for processing. As a result, the
familiar look and feel of media-players can be preserved.
[0024] Embodiments of these aspects of the invention are discussed
below with reference to FIGS. 1-4B. However, those skilled in the
art will readily appreciate that the detailed description given
herein with respect to these figures is for explanatory purposes as
the invention extends beyond these limited embodiments.
[0025] FIG. 1 depicts a computing environment 100 capable of
providing a multi-media-center in accordance with one embodiment of
the invention. It will be appreciated that the multi-media-center
can combine a plurality of media-components each including digital
data and/or application(s) that can access digital data. The
digital data associated with a media-component can be presented in
one or more forms (e.g., display pictures, play music while
displaying pictures, play a movie or a song). These
media-components can be readily available and/or generally known
(e.g., music player (e.g., iTunes), photo viewer (e.g., iPhoto),
DVD player) or they can be developed for the multi-media-center. In
general, each media-component includes digital data which can be
presented in one or more forms and/or one or more application(s)
(e.g., media-player) that can be used to manipulate digital data
(e.g., present, organize, retrieve).
[0026] It will be appreciated that the computing environment 100
can provide a "central-user-interface" that can serve as a user
interface for accessing all the media-components provided in the
multi-media center. Referring now to FIG. 1, a main menu 104
displayed on a display 102 can be part of the
central-user-interface for a multi-media center provided by the
computing system 108. Furthermore, user input may be entered via an
input device 106 (e.g., keyboard, mouse) connected to a computing
system 108, and/or via a remote device 107 (e.g., remote
controller, media-player with remote control capabilities) whether
directly or via a network. The computing system 108 can, for
example, be a computer, or a plurality of computers (e.g., a
cluster). In general, the computing system 108 includes at least
one processor and memory (not shown).
[0027] As depicted in FIG. 1, the main menu 104 can, for example,
include a main menu-items (M.sub.1 . . . M.sub.n) for each of the
media-components provided by the multi-media center. Thus, a menu
item M.sub.i in the main menu 104 can represent a media-component
M.sub.i. In addition, for each of the media-components
(M.sub.1-M.sub.n) provided by the multi-media center, a
media-module is configured in the computing system 108. This means
that a media-module 110 is provided for media-component M
represented in the main menu 104 (M.sub.1) and available for
access. Generally, the media-module 110 (M) can include the
information needed to construct and display various menus (or
submenus) for the media-component M.sub.i. As such, if the
media-component M is selected from the main menu, media-module 110
can provide a main (or base) menu for the media-component M.
Similarly, the media-module 110 (M.sub.i) can provide submenus for
the media-component M.sub.i if its submenu is selected, and so on.
It should be noted that the media-module 100 can obtain data from a
local storage 116 or a remote storage 118 (e.g., database).
Typically, the data pertains to the media-component M.
[0028] It will be appreciated that the modular design of the
architecture demonstrated in FIG. 1 allows configuring a plurality
of media-modules for various media-components. The media-module can
provide a set of self-contained menus for a media-component. In
addition, media-modules can be isolated from each other, so that
they can be added or removed from the multi-media center without
interfering with each other or a main program that controls the
multi-media center.
[0029] In this modular design, the media-modules communicate with a
multi-media-controller (or module-controller) 120. The
multi-media-controller 120 can effectively control the centralized
user interface (e.g., the menu displayed on display 102). The
multi-media-controller (or module-controller) 120 can also serve as
a central point for receiving input associated with the multi-media
center (e.g., input received from the input 106, or remote device
107). More particularly, the multi-media-controller 120 can forward
an input 122 to one of the media-modules (M.sub.1 . . . M.sub.n),
or to a media-player (or other applications) 112 that process the
input in response to input 122. The media-modules (M.sub.1 . . .
M.sub.n) can generate output (e.g., menu, submenu, request to
activate a media-player). As will be discussed in greater detail
below, in some cases, the multi-media-controller 120 processes
input 122 without forwarding it to a media-module or
media-player(s) 121.
[0030] From an architectural perspective, it is important to note
that the media-modules (M.sub.1 . . . M.sub.n) do not directly
control output (e.g., what is displayed on the display 102), but
communicate with the multi-media-controller 120 which effectively
controls output. However, output can be determined based on the
processing or output provided or generated of the media-module.
Typically, input is initially processed at a central location,
namely, the multi-media-controller 120 which can route the input to
the appropriate destination. Finally, media-modules (M.sub.1 . . .
M.sub.n) are typically isolated from each other and do not
communicate with each other. Generally, the multi-media-controller
120 routes input to a media-module (M.sub.i) if it can be handled
by the media-module (e.g., input concerns a menu or additional
information relating to a media-component). However, if a
media-player (or other application) is to be activated or is
currently presenting media, then the module-controller typically
forwards the input to the media-player to affect the presentation
of the media (or processing of media by an application
program).
[0031] FIG. 2A depicts a method 150 for providing a multi-media
center in accordance with one embodiment of the invention.
Initially, at least one media-module is configured (152) for each
media-component provided by the multi-media center. A media-module
represents a media-component and can, among other things, include
and/or obtain information relating to a media-component (e.g.,
menus, lists of available items) and/or applications (e.g.,
media-players) related to the media-component.
[0032] Next, a central entity (e.g., a module-controller) is
initiated (154) for the media-modules. The central entity (e.g.,
module-controller), among other things, can communicate with the
media-modules and exchange information, for example, as
input/output. In addition, the central entity (e.g.,
module-controller) can serve as a central point for receiving
input. Accordingly, the central entity (e.g., module-controller)
receives (156) input associated with the multi-media-controller.
Finally, the central entity (e.g., module-controller) effectively
controls (158) the output of the multi-media center based on the
input. As will be discussed below, a central entity (e.g.,
module-controller) can effectively control the output of the
multi-media cent, for example, by forwarding the input to a
media-module and subsequently receiving output, by forwarding the
input to an application program associated with the media-module
and the media-component, or by effectively processing it internally
or by an associated component (e.g., a main view media-module
provided to control the main-view for the multi-media center).
[0033] To further elaborate, FIG. 2B depicts a method 200 for
processing input associated with a multi-media center in accordance
with one embodiment of the invention. The processing method 200
can, for example, be used by the multi-media-controller (or
module-controller) 120 shown in FIG. 1. The multi-media center can,
for example, be implemented as computer program. Initially, a
central-user-interface that can be used to access a plurality of
media-components is determined (202). It should be noted that the
central-user-interface is determined based on a plurality of
media-modules that represent various media-components configured
(i.e., available) in the multi-media center. Accordingly, the
central-user-interface is generated (204) based on the
media-modules. Next, it is determined (206) whether input
associated with the central-user-interface is received. If it is
determined (206) that input is received and the input does not
indicate to end the multi-media center, it is determined (208)
whether to forward the input to one of the media-modules configured
for the multi-media center. If it is determined (208) to forward
the input to one of the media-modules, a media-module that is to
receive the input is determined and the input is forwarded (210) to
the media-module. Thereafter, a response (e.g., output) is
generated (212) by the media-module. After the processing of the
input by the media-module, it is determined (214) whether to update
the central-user-interface based on the response generated by the
media-module. Accordingly, the central-user-interface can be
updated (216). Subsequently, it can be determined (206) whether
input associated with the central-user-interface is received and
the processing method 200 can proceed in a similar manner as
discussed above. However, if it is determined (214) not to update
the central-user-interface, it is determined (206) whether input
associated with the central-user-interface is received without
updating (216) the central-user-interface. Thereafter, the method
200 proceeds in a similar manner as discussed above.
[0034] On the other hand, if it is determined (208) not to process
the input by a media-module, it is determined (218) whether to
process the input by a media-player (or an application).
Accordingly, the input can be processed (220) by the media-player
and the media-player may affect the presentation of media based on
the input. Thereafter, it is determined (222) whether to end the
multi-media center and the method 200 can end. Otherwise, it can be
determined (206) whether input associated with the
central-user-interface is received and the method 200 proceeds in a
similar manner as discussed above.
[0035] If it is determined (218) not to process the input by a
media-player (or application), the input is processed (222)
internally (e.g., by a media-controller) or another component of
the multi-media center (e.g., by a main window component that
processes input associated with a main menu of the multi-media
center). Subsequently, it is determined (224) whether to end the
multi-media center (e.g., terminate the computer program) and the
method 200 can end accordingly. Otherwise, it is determined (206)
whether input associated with the multi-media center is received
and the method 200 proceeds as discussed above until an input
indicates to end the multi-media center.
[0036] FIG. 3 depicts in greater detail an architectural view for a
multi-media center that allows users to access multiple
media-components by interfacing with a central-user-interface in
accordance with one embodiment of the invention. As shown in FIG.
3, in addition to a number of media-modules (304, 305, 306) and
media-players 307, a module-controller 302 can communicate with a
menu-window 308 and a User Interface Library (library) 310. It
should be noted that the module-controller 302 can receive input
(e.g., as events) from a keyboard and/or mouse 314, a remote device
316, or other hardware input 315 (e.g., DVD is inserted or
ejected).
[0037] The menu-window 308 effectively controls menus displayed on
the display 309. In addition, it can maintain and store menus using
menu-views 312. The menu-views 312 effectively implements a stack
of menu-views to keep track of what has been displayed on the
display 309. Thus menu-views 312 can be added or removed from the
stack as the user traverses up and down between various menus or
submenus of a particular media-components or between main menu
items of the multi-media center representing different
media-components, and so on. As will be appreciated, menus and
submenus can be created using a User Interface Library (library)
310. More particularly, when the module-controller 302 receives an
input, for example, pertaining to a menu item associated with a
particular media-component, the module-controller 302 can request
that the media-module "post" the appropriate menu to make this
request. The module-controller 302 can, for example, forward the
input to a particular media-module. The media-module then, uses the
User Interface Library (library) 310 to obtain an appropriate theme
(or template) and then uses the theme from the User Interface
Library (library) 310 to generate the appropriate menu (i.e.,
effectively fills out a template with its information). It should
also be noted that a media-module 304 can also use a media access
layer 320 to access data (e.g., list of songs, movies), for
example, from a database associated with a media-component (iTunes)
that stores information about the media-component. In any case,
menus and/or other data generated and/or obtained by a media-module
can be forwarded to the module-controller 302 which can in turn
provide it to the menu-window 308.
[0038] To further elaborate, initialization of the
module-controller 302 will be discussed now. Initially, an
initial-event signifying the start of the multi-media center
program is received. This initial-event can be input by a keyboard
and/or mouse 314 or a remote device 316. In any case, in response
to the initial-event, the module-controller 302 is initiated. The
module-controller 302 effectively determines what media-modules are
currently configured, as media-modules may be dynamically added or
removed from the configuration (e.g., a media-module 306 may be
added or removed without affecting other media-modules). In one
embodiment of the invention, each media-module sends its initial
data (icon and name) to the module-controller 302. The
module-controller 302 sends the initial data (icons and names) to
the menu-window 308 which generates a main menu including the
initial data (icons and name) generated by the media-modules. The
menu-window 308 can use the User Interface Library (library) 310 to
generate the main menu for the multi-media center and facilitate
displaying it on the display 309.
[0039] After the main menu for the multi-media center is generated
and displayed, the module-controller 302 can wait for user input
(i.e., input received from a user, for example, a human, or
application program). If the input pertains to manipulation of the
main menu for the multi-media center (e.g., rotation of a
carrousel), then the module-controller 302 can forward it to the
menu-window 308 which is capable of processing it to effectively
manipulate the main menu displayed on display 309 for the
multi-media center (e.g., rotate a carrousel that represents the
main menu). If user input, however, pertains to a particular
media-module (e.g., selection of a particular media-module from the
main menu of the multi-media center), the menu-window 308 does not
process it even if the module-controller 302 initially sends the
input to the menu-window 308. Instead, the menu-window 308 can
determine which media-module is to process the input. This
determination can, for example, be made based on which menu or menu
item is currently displayed or is effectively on top of the
menu-views 312. The media-module associated with the menu can then
be identified and forwarded to the module-controller 302.
[0040] Subsequently, the module-controller 302 can forward the user
input to the appropriate media-module for processing. It is likely
that the input associated with a media-module initially pertains to
a main (or base) menu for the media-component represented by the
media-module. The media-module can access the User Interface
Library (library) 310 to get an appropriate theme (or template) for
its base menu. In one embodiment, a set of menus including a
standard menu and an accessorized menu are provided. The
media-module can select a standard menu which includes a list of
items, or an accessorized menu that additionally includes a preview
screen. These Menus are also described in U.S. Provisional Patent
Application No. 60/725,544, filed Oct. 10, 2005, and entitled
"MULTIMEDIA CONTROL CENTER".
[0041] In any case, the media-module can obtain a template for a
menu and subsequently fill (or populate) it with data (e.g., menu
items). Subsequently the media-module can send its filled out menu
to the module-controller 302 which can, in turn, send it to
menu-window 308. The menu-window 308 effectively displays the menu
by pushing it on the menu-views 312. In this way, a main (or base)
menu for a particular media-component can be displayed in response
to a selection made from the main menu of the multi-media
center.
[0042] When user input pertains to the main menu of the multi-media
center, it can be handled by the menu-window 308. More
particularly, the input initially received by the module-controller
302 is forwarded to the menu-window 308. The menu-window 308
recognizes the input and it can effectively process the input and
communicate it to the module-controller 302. However, the
module-controller 302 may actually control the display, for
example, by manipulating the main menu displayed for the
multi-media center (e.g., rotates the main menu). However, if input
pertains to a particular media-module (e.g., selection of a
particular media-component), the input can be handled by the
media-module. More particularly, the media-module can access the
User Interface Library (library) 310 and construct another menu (or
submenu) in a similar manner as discussed above. The constructed
menu can then be sent to module-controller 302 which sends it to
the menu-window 308.
[0043] It should be noted that in addition to generating a menu (or
submenu), a media-module can effectively ask the module-controller
302 to initiate a media-player (307). More particularly, when a
user selects, for example, a menu item that is associated with
presenting media (e.g., play music, play film, show photo,
slideshow), user input is received by the module-controller 302.
The module-controller 302 can initially forward the input to the
menu-window 308, but the menu-window 308 would not process the
input as it does not pertain to manipulation of the main menu.
Instead, the menu-window 308 effectively asks the module-controller
302 to forward the input to the appropriate media-module. In
addition, the menu-window 308 can effectively identify the
media-module that should process the input because it can determine
which menu-view is the top (or most-front) menu and identify its
associated media-module. In other words, menu-window 308 can
determine which media-module's menu (or submenu) is currently being
displayed and let the module-controller 302 know which media-module
should process the input.
[0044] In addition to constructing menus, the media-module can
perform other functions. By way of example, when user input
associated with presentation of media is forwarded by the
module-controller 302 to a media-module 304, the media-module 304
can identify the input as a request for presentation of media of
its associated media-component. As a result, the media-module 304
identifies a media-player (307) to be initiated. Subsequently, the
module-controller 302 initiates the media-player (307) which
effectively results in presentation of media on display 309 and/or
other devices (e.g., speakers). It should be noted that when a
media-player is initiated, the media-module 304 does not directly
communicate with the media-player. Furthermore, as long as the
media-player is active (i.e., presenting media), the
module-controller 302 sends input directly to media-player (307)
for processing. It will be appreciated that various media-players
readily available and/or familiar to the users can be used. In
addition, the familiar look and feel of media-players can be
preserved. It is possible to have a media-player (e.g., music
player) present media (e.g., music) in the background while another
media-player presents media (e.g., displays photos or a slideshow).
It should also be noted that it is possible to use a virtual stack
(307) to keep track of usage of the media-players. Hence, when an
active media-player terminates, the media-player is effectively
popped from the virtual stack (307).
[0045] FIGS. 4A-4B depict a method 400 for providing a multi-media
center which can be accessed via a central-user-interface in
accordance with another embodiment of the invention. Initially, it
is determined (402) whether an activation event is received. If it
is determined (402) that an activation event is received, a
module-controller is initiated (404). The module-controller
effectively polls the media-modules which have been configured for
the multi-media center for their initial data (e.g., name of the
media-module and icon). Accordingly, the media-modules send the
module-controller initial data typically pertaining to their main
menu for the multi-media center. As noted above, this data can, for
example, include an icon and name for each of the media-modules.
Thereafter, a menu window can be initiated (408). Subsequently, the
module-controller sends the menu window the initial data.
Thereafter, the menu window displays (412) a main menu for the
multi-media center 412. After the menu window is displayed, the
module-controller effectively awaits (414) input. Assuming that the
input does not indicate (416) to terminate the multi-media center,
it is determined (418) whether a media-player is active. If it is
determined (418) that a media-player is active, the
module-controller sends (420) the input to the appropriate
media-player for processing and the media-player processes (422)
the input accordingly. Subsequently, it can be determined (414) by
the module-controller whether input is received.
[0046] However, if it is determined (418) that a media-player is
not active, the module-controller sends (424) the input to the menu
window. The menu window can then determine (425) whether to handle
the input. If the menu window determines (425) to handle the input,
the menu window processes (426) the input. As a result, a main menu
displayed for the multi-media center can be manipulated (426).
Thereafter, the module-controller determines (414) whether input
has been received and the method 400 proceeds in a similar manner
as discussed above.
[0047] On the other hand, if it is determined (425) that the menu
window cannot handle the input, the main window identifies (428)
the appropriate media-module to process the input. Subsequently,
the module-controller sends (430) the input to the identified
media-module.
[0048] Next, referring to FIG. 4B, the media-module determines
(432) whether to activate a media-player in response to the input.
If it is determined (432) by the media-module to activate a
media-player, the media-module identifies (434) a media-player and
requests (436) from the module-controller to initiate the
identified media-player. As a result, the module-controller
initiates (438) the media-player. Thereafter, it can be determined
(414) by the module-controller whether the input is received, and
method 400 proceeds in the similar manner as discussed above.
[0049] On the other hand, if the media-module determines (432) not
to activate a media-player, the input is directed to a menu (or
other data) related to the media-component. Although other
functions including obtaining (450) data can be performed by the
media-module, for brevity, only construction of a menu is depicted
in greater detail. Consequently, if it is determined (449) that the
input is associated with a menu, the media-module obtains (440) a
menu template from an User Interface Library (library).
Subsequently, the media-module fills (442) the menu and sends (444)
the filled menu to the module-controller. The module-controller
sends (446) the menu to the menu-window. As a result, the
appropriate menu is displayed (448) in response to the input
received (414) by the media-controller. Thereafter, it is
determined by the media-controller (414) whether the input is
received, and the method 400 proceeds in the similar manner as
discussed above until it is determined (416) to end the method 400
and effectively terminate the multi-media center.
[0050] Those skilled in the art will know that media-modules can be
designed as computer program modules that can be "plugged" in or
removed from a main multi-media center application program. As
such, media-modules may post all requests through a
module-controller. In addition, media-modules can use user
interface classes and widgets provided in a user interface library,
and access data via a media access layer. Media-modules can provide
one or more of the following functions: provide a media-module
identifier "key," provide a main (or base) menu, have the ability
to respond to input corresponding to a selection of one of the
items listed in their main (or base) menu, provide a name and/or
icon image for the media-component they represent. The media-module
may also provide other functions including saving or restoring
states associated with a database, playing a sound, and phrase
presentation of an associated media-player.
[0051] Those skilled in the art will also appreciate that a
module-controller can function as traffic manager. It can
instantiate and keep track of media-modules, route events
associated with user input, control what is displayed. A user
interface library can include metric utilities, windows and views,
widgets, and sounds. The metric utilities can be implemented as a
set of C programming calls that provide various layout metrics,
including screen frames, the menu frames, and text attributes.
Windows and views can include a collection of classes that define
the layout and behavior of windows and views. Widgets can include a
set of interface widgets that can be used by the media-module or
window or views. Finally, the user interface library can also
provide hooks to play sounds that can be played for various user
actions. The sounds can be played via a standard C calls.
[0052] The invention has many advantages. An embodiment of the
invention can include one or more of these advantages. One
advantage of the invention is that various types of digital data
and applications used to present digital data can be accessed from
a user interface. Another advantage of the invention is that
various types of digital data and applications can be added or
removed dynamically. Yet another advantage of the invention is that
it is possible to use a standard user interface library for various
types of digital data and applications. Still another advantage of
the invention is that it is possible to use and preserve the look
and feel of more popular media-players.
[0053] The many features and advantages of the present invention
are apparent from the written description, and thus, it is intended
by the appended claims to cover all such features and advantages of
the invention. Further, since numerous modifications and changes
will readily occur to those skilled.
* * * * *