The present invention relates to the field of data processing, including, but not limited to, application design and execution.
Advances in microprocessor and related technologies have led to wide spread deployment and adoption of computing devices. Their form factors vary from desktop, laptop, palm sized, and so forth. A number of these computing devices are packaged as “special purpose” devices, such set-top boxes, entertainment control centers, personal digital assistants (PDA), pagers, text messengers, wireless mobile phones, and so forth.
While many of these devices have computing powers that used to be available only in very expensive main frame computers requiring conditioned operating environment, execution resources remain “insufficient”, as demands for execution resources continue to outstrip supplies, due to the ever increasing richness and complexity of the applications being deployed on these computing devices.
The present invention will be described by way of exemplary embodiments, but not limitations, illustrated in the accompanying drawings in which like references denote similar elements, and in which:
a-2b illustrate an outline view of an example module_0 and an example module_i of
a-4b illustrate parts of the operational flow of the thread module chaining service of
a-8b illustrate an overview of the protocol for the UPnP control point, media servers and media renderers of the example system of
Embodiments of the present invention include, but are not limited to, modules designed to be chained to other modules for execution as part of the same thread of the other modules, modules causing the chaining, services facilitating the chaining, computing devices, medium and/or systems incorporated with the modules to be chained, modules causing the chaining, and/or services facilitating the chaining.
Various aspects of the illustrative embodiments will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art. However, it will be apparent to those skilled in the art that the present invention may be practiced with only some of the described aspects. For purposes of explanation, specific numbers, materials and configurations are set forth in order to provide a thorough understanding of the illustrative embodiments. However, it will be apparent to one skilled in the art that the present invention may be practiced without the specific details. In other instances, well-known features are omitted or simplified in order not to obscure the illustrative embodiments.
Various operations will be described as multiple discrete operations, in turn, in a manner that is most helpful in understanding the present invention, however, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations need not be performed in the order of presentation.
The phrase “in one embodiment” is used repeatedly. The phrase generally does not refer to the same embodiment, however, it may. The terms “comprising”, “having” and “including” are synonymous, unless the context dictates otherwise.
Referring now to
Further, module_0108a may be easily modified to chain other modules of like design to form other threads for other applications. Similarly, each of module_1 through module_n 108b-108n, if desired, may be chained to one or more other module chains forming other threads. These other module chains may be executed in the same or other computing environments. Resultantly, modules 108a-108n may be highly re-useable, and development productivity may be improved.
Continuing to refer to
Further, thread module chaining service 104 may employ thread control data structure 106 to provide services 110-116 to facilitate the dynamic logical chaining of modules 108a-108n, and their chain executions. Thread control data structure 106 may include in particular, access information for each module (e.g. pointers) 122-126 for accessing chained start instructions, chained process instructions, and chained stop instructions of the various modules (organized e.g. in the form of methods), also to be described more fully below. The term “method” as used herein, unless the context of the usage indicates otherwise, refers to a set of executable instructions organized in accordance with the principles in the field of object-oriented programming, as the term is commonly understood by those skilled in the art.
a-2b illustrate an outline view of an example chaining module (module_0) and an example of a chained module (module_i) of
Yet further, access information 220 may be formed and/or organized in a manner that allow access information 220 to be ascertained, retrieved, determined, or extracted by a chaining entity (which may be a chaining module or a service servicing a chaining module). In one embodiment, access information 220, such as pointers 220a-220c may be located at a predetermined location, such as the beginning of example module_i 108*.
As illustrated in
Example module 0108a further may include instructions 204 to cause the chained modules to register events of interest to the chained modules. In various embodiments, instructions 204 may comprise invocation of Chain Start service 112 of a thread module chaining service 104 to cause the respective registration methods to be chain executed.
Additionally, example module 0108a may include instructions 206 to wait for the occurrence of one or more of the events of interest. In various embodiments, instructions 206 may e.g. include a Select( ) like function.
Example module 0108a may further include instructions 208 to cause the chained modules to process occurred ones of the registered events of interest. In various embodiments, instructions 208 may comprise invocation of the Chain Process service 114 of a thread module chaining service 104 to cause the respective processing methods to be chained executed. The invocations may also include notifying the process methods of the chained modules being invoked, of the events which occurrence led to the invocations.
Example module 0108a may further include instructions 210 to determine whether to cause the thread to be terminated or to return to instructions 206. In various embodiments, instructions 210 may comprise invocation of the Chain Clean Up service 116 of a thread module chaining service 104 to cause the respective module clean up methods to be chained executed.
a-4b illustrate parts of the operational flow of the thread module chaining service of
As illustrated in
After dynamically retrieving . . . or otherwise determining the access information of the module to be chained, service 104 updates and annotates the thread control data structure 106 to reflect the fact that the “target” module is chained to the service requesting (chaining) module (and other already chained modules), block 404. For the embodiment, service 104 also updates and annotates the thread control data structure 106 to with the access information for accessing the Start, Process and Clean-up methods of the module being chained, block 404.
Thereafter, the module may be executed as part of the same thread of the chaining module (and other modules already chained to the chaining module).
As illustrated in
Accordingly, modules 108b-108n may be executed as part of the same thread as module 108a, affording the opportunity to reduce the amount of execution resources required to manage their executions.
System memory 504 and mass storage devices 506 may be employed to store various transient and persistent copies of software components, such as modules 108a-108n and thread module chaining services 104. System memory 504 may be Dynamic Random Access Memory (DRAM), Synchronous DRAM (SDRAM) or other memory devices of the like. Mass storage devices 506 may be hard disks, CDROM, DVDROM, and other storage devices of the like.
Processor 502 may be employed to execute various the software components, modules 108a-108n (with chained ones as a single thread) and thread module chaining services 104. Processor 202 may be any one of a number of processors known in the art or to be designed. Examples of suitable processors include but are not limited microprocessors available from Intel Corp of Santa Clara, CA.
Other I/O devices 508 may be employed to facilitate other aspects of input/output. Examples of other I/O devices 508 include but are not limited to keypads, cursor control, video display and so forth.
Network communication interface 510 may be employed to facilitate network communication with other devices. Network communication interface 510 may be wired based or wireless. In various embodiments, network communication interface 510 may also support other networking protocols.
In various embodiments, computing device 500 may be a desktop computer, a laptop computer, a tablet computer, a palm-sized computing device, a PDA, a set-top box, an entertainment center controller, a wireless mobile phone, and so forth.
In various embodiments, the instructions may be C or C++ programming language instructions or other system programming language instructions of the like. Further, storage medium 600 may be a diskette, a tape, a compact disk (CD), a digital versatile disk (DVD), a solid state storage devices, or other electrical, magnetic and/or optical storage devices of the like.
UPnP media servers 704 may comprise a number of media contents 732. UPnP media servers 704 provide media contents 732 to selected ones of UPnP media renderers 706 to render, at the control of control point 702. In various embodiments, media contents 732 provided by UPnP media servers 704 may include media contents 732 accessible to UPnP media servers 704, but not disposed on UPnP media servers 704 itself.
Media contents 732 may be audio, video, textual, graphical, pictorial, and/or other contents of the like, including combinations thereof. Each UPNP media renderer 706 may be equipped to render one or more of the enumerated media types, i.e. audio, video, and so forth.
In general, the term “media content” as used herein is synonymous with the term “media item” used in the earlier identified UPnP Specification, unless the context clearly indicates to the contrary.
In various embodiments, elements 702-706 may be coupled to each other wirelessly 742-746, i.e. they are members of a wireless network domain. In other embodiments, elements 702-706 may be coupled to each other as members of a wire based network domain.
Regardless of the manner elements 702-706 are coupled to each other, for the embodiment, elements 702-706 may be equipped to operate in accordance with the above described UPnP family of specifications.
Additionally, for the embodiment, control point device 702 may include various media related services implemented in chainable modular organizations as described earlier, and thread module chaining service 104. The chainable modules 108a-108n and thread module chaining service 104 may be equipped to enable media contents 732 be available from UPnP media servers 704, and availability of UPnP media renderers 706 be made visible through an user interface of control point device 702.
Further, selection of media content 732 for rendering, and media renderer 706 to perform the rendering, may be made through the same user interface. Preferably, the user interface is a graphical user interface.
a-8b illustrate an overview of the protocol and methods for the UPnP control point, media servers and media renderers of
In response, UPnP media servers 704 respond as called for by the earlier mentioned UPnP A/V Architecture Specification, op 804.
In response to the receipt of each of these responses, control point device 702 requests for the identifications of media contents 732 available from the responding UPnP media server 704, in accordance with the earlier mentioned UPnP A/V Architecture Specification, op 806. For the embodiment, control point device 702 also requests for the corresponding meta data describing the available media contents 732.
In response, the UPnP media server 774 provides the identifications of media contents 732 available, including if applicable, the meta data describing the available media contents 732, op 808.
As alluded to earlier, and to be more fully described below, on receipt of the identifications and meta data, control point device 702 advantageously makes visible these information through the user interface of control point device 702.
Examples of meta data may include, but are not limited to, the title, the size, the version, date of creation, the media type, the artist, and so forth of the media content 732.
In various embodiments, operations 806 and 808 may be performed via one or more sets of requests and responses.
Thereafter, during operation, at an appropriate time, in response to a user selection to render a media content, control point device 702 instructs the applicable UPnP media servers 704 accordingly, to provide applicable ones of media contents 732 to the appropriate ones of UPnP media renderers 706, op 710. In alternate embodiments, control point device 702 may instruct a UPnP media renderer to pull the applicable media content from the applicable UPnP media server 704 instead.
As illustrated in
In response, UPnP media renderers 706 respond as called for by the earlier mentioned UPnP A/V Architecture Specification, op 814.
For the embodiment, in response to the receipt of each of these responses, control point device 702 requests for the description documents describing the responding UPnP media renderer 706, op 816.
In response, the UPnP media renderers 706 provide the description documents as requested, op 818.
As alluded to earlier and to be more fully described below, on receipt of the identifications and description documents, control point device 102 advantageously makes visible these information through the user interface of control point device 702.
Examples of description information in a description document may include, but are not limited to, the renderer type, e.g. DVD player, media types supported, e.g. DVD, CD, VCD, the manufacturer, and so forth of a UPnP media renderer 706.
In various embodiments, operations 816 and 818 may be performed via one or more sets of requests and responses.
Thereafter, during operation, at an appropriate time, in response to a user selection to render a media content, control point device 702 instructs the applicable UPnP media renderers 706 accordingly, to receive/pull and render provided media contents 732 from UPnP media servers 704, op 820.
Thus, it can be seen from the above descriptions, various novel data processing techniques have been described. While the present invention has been described in terms of the foregoing embodiments, those skilled in the art will recognize that the invention is not limited to the embodiments described. The present invention can be practiced with modification and alteration within the spirit and scope of the appended claims.
In particular, thread module chaining service 104 may further include the ability to facilitate passing of various parameter values to the methods of the chained modules during their chained execution to dynamically modify or tailor their execution behavior. Thread module chaining service 104 may be implemented as part of the extended or core operating system services.
Thus, the description is to be regarded as illustrative instead of restrictive on the present invention.