This application claims the benefit of Indian Provisional Patent Application No. 357/CHE/2010 filed on Feb. 14, 2010, the contents of which are expressly incorporated by reference herein
Various implementations relate generally to method, apparatus, and computer program product for platform independent framework.
The rapid advancement in technology related to multimedia applications has resulted in an exponential increase in the development of a variety of multimedia applications and/or solutions, such as imaging applications, audio applications, video applications, and the like. Such applications and/or solutions are provided to users by means of various devices such as hand held devices, for example personal digital assistants (PDAs), tablets PCs, and mobile phone; device with converged internet capabilities, such as netbooks and e-book readers; embedded devices; desktops; application store servers; laptops; and the like.
Various aspects of examples embodiments are set out in the claims.
In a first aspect, there is provided a method comprising: providing a plurality of plug-ins associated with a platform in a framework, the plurality of plug-ins comprising a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins, each filter plug-in of the set of filter plug-ins is one of an in-built plug-in and a user-defined plug-in; facilitating selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins; and linking the selected source plug-in, the at least one filter plug-in and the target plug-in for configuring at least one application in the framework.
In a second aspect, there is provided an apparatus comprising: at least one processor; and at least one memory comprising computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus at least to: provide a plurality of plug-ins associated with a platform in a framework, the plurality of plug-ins comprising a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins, each filter plug-in of the set of filter plug-ins is one of an in-built plug-in and a user-defined plug-in; facilitate selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins; and link the selected source plug-in, the at least one filter plug-in and the target plug-in for configuring at least one application in the framework.
In a third aspect, there is provided a computer program product comprising at least one computer-readable storage medium, the computer-readable storage medium comprising a set of instructions, which, when executed by one or more processors, cause an apparatus to at least: provide a plurality of plug-ins associated with a platform in a framework, the plurality of plug-ins comprising a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins, each filter plug-in of the set of filter plug-ins is one of an in-built plug-in and a user-defined plug-in; facilitate selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins; and link the selected source plug-in, the at least one filter plug-in and the target plug-in for configuring at least one application in the framework.
In a fourth aspect, there is provided a method comprising: providing an editor for facilitating development of a sub-application; providing a plug-in associated with the sub-application to a platform, the platform comprising a plurality of plug-ins, the plurality of plug-ins comprising a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins, each filter plug-in of the set of filter plug-ins is one of an in-built plug-in and a user-defined plug-in, the sub-application plug-in being the user-define plug-in; facilitating selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins; linking the selected source plug-in, the at least one filter plug-in and the target plug-in for configuring at least one application in the framework; providing a set of binary components for configuring the at least one application; and generating a package to be installed at a target platform based on the set of binary components and configured at least one application.
In a fifth aspect, there is provided a computer program comprising program instructions which when executed by an apparatus, cause the apparatus to: provide a plurality of plug-ins associated with a platform in a framework, the plurality of plug-ins comprising a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins, the set of filter plug-ins comprising in-built plug-ins and user-defined plug-ins; facilitate selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins; and link the selected source plug-in, the at least one filter plug-in and the target plug-in for configuring at least one application in the framework.
For a more complete understanding of example embodiments of the present invention, reference is now made to the following descriptions taken in connection with the accompanying drawings in which:
a, 3b and 3c illustrates example screenshots of display screens for configuring various applications in accordance with an example embodiment;
a and 4b illustrate example screenshots of display screens for configuring a collage creation application in accordance with an example embodiment;
Example embodiments and their potential effects are understood by referring to
The device 100 may include an antenna 102 (or multiple antennas) in operable communication with a transmitter 104 and a receiver 106. The device 100 may further include an apparatus, for example, a controller 108 or other processing device that provides signals to and receives signals from the transmitter 104 and receiver 106, respectively. The signals may include signaling information in accordance with the air interface standard of the applicable cellular system, and/or may also include data corresponding to user speech, received data and/or user generated data. In this regard, the device 100 may be capable of operating with one or more air interface standards, communication protocols, modulation types, and access types. By way of illustration, the device 100 may be capable of operating in accordance with any of a number of first, second, third and/or fourth-generation communication protocols or the like. For example, the device 100 may be capable of operating in accordance with second-generation (2G) wireless communication protocols IS-136 (time division multiple access (TDMA)), GSM (global system for mobile communication), and IS-95 (code division multiple access (CDMA)), or with third-generation (3G) wireless communication protocols, for example Universal Mobile Telecommunications System (UMTS), CDMA1000, wideband CDMA (WCDMA) and time division-synchronous CDMA (TD-SCDMA), with 3.9G wireless communication protocol such as evolved-universal terrestrial radio access network (E-UTRAN), with fourth-generation (4G) wireless communication protocols, or the like. As an alternative (or additionally), the device 100 may be capable of operating in accordance with non-cellular communication mechanisms. For example, computer networks such as the Internet, local area network, wide area networks, and the like; short range wireless communication networks such as include Bluetooth® networks, Zigbee® networks, Institute of Electric and Electronic Engineers (IEEE) 802.11x networks, and the like; wireline telecommunication networks such as public switched telephone network (PSTN).
The controller 108 may include circuitry implementing, among others, audio and logic functions of the device 100. For example, the controller 108 may include, but are not limited to, one or more digital signal processor devices, one or more microprocessor devices, one or more processor(s) with accompanying digital signal processor(s), one or more processor(s) without accompanying digital signal processor(s), one or more special-purpose computer chips, one or more field-programmable gate arrays (FPGAs), one or more controllers, one or more application-specific integrated circuits (ASICs), one or more computer(s), various analog to digital converters, digital to analog converters, and/or other support circuits. Control and signal processing functions of the device 100 are allocated between these devices according to their respective capabilities. The controller 108 thus may also include the functionality to convolutionally encode and interleave message and data prior to modulation and transmission. The controller 108 may additionally include an internal voice coder, and may include an internal data modem. Further, the controller 108 may include functionality to operate one or more software programs, which may be stored in a memory. For example, the controller 108 may be capable of operating a connectivity program, such as a conventional Web browser. The connectivity program may then allow the device 100 to transmit and receive Web content, such as location-based content and/or other web page content, according to a Wireless Application Protocol (WAP), Hypertext Transfer Protocol (HTTP) and/or the like. In an example embodiment, the controller 108 may be embodied as a multi-core processor such as a dual or quad core processor. However, any number of processors may be included in the controller 108.
The device 100 may also comprise a user interface including an output device such as a ringer 110, an earphone or speaker 112, a microphone 114, a display 116, and a user input interface which may be coupled to the controller 108. The user input interface, which allows the device 100 to receive data, may include any of a number of devices allowing the device 100 to receive data, such as a keypad 118, a touch display, a microphone or other input device. In embodiments including the keypad 118, the keypad 118 may include numeric (0-9) and related keys (#, *), and other hard and soft keys used for operating the device 100. Alternatively, the keypad 118 may include a conventional QWERTY keypad arrangement. The keypad 118 may also include various soft keys with associated functions. In addition, or alternatively, the device 100 may include an interface device such as a joystick or other user input interface. The device 100 further includes a battery 120, such as a vibrating battery pack, for powering various circuits that are used to operate the device 100, as well as optionally providing mechanical vibration as a detectable output.
In an example embodiment, the device 100 includes a media capturing element, such as a camera, video and/or audio module, in communication with the controller 108. The media capturing element may be any means for capturing an image, video and/or audio for storage, display or transmission. In an example embodiment in which the media capturing element is a camera module 122, the camera module 122 may include a digital camera capable of forming a digital image file from a captured image. As such, the camera module 122 includes all hardware, such as a lens or other optical component(s), and software necessary for creating a digital image file from a captured image. Alternatively, the camera module 122 may include only the hardware needed to view an image, while a memory device of the device 100 stores instructions for execution by the controller 108 in the form of software to create a digital image file from a captured image. In an example embodiment, the camera module 122 may further include a processing element such as a co-processor, which assists the controller 108 in processing image data and an encoder and/or decoder for compressing and/or decompressing image data. The encoder and/or decoder may encode and/or decode according to a JPEG standard format or another like format. For video, the encoder and/or decoder may employ any of a plurality of standard formats such as, for example, standards associated with H.261, H.262/MPEG-2, H.263, H.264, H.264/MPEG-4, MPEG-4, and the like. In some cases, the camera module 122 may provide live image data to the display 116. Moreover, in an example embodiment, the display 116 may be located on one side of the device 100 and the camera module 122 may include a lens positioned on the opposite side of the device 100 with respect to the display 116 to enable the camera module 122 to capture images on one side of the device 100 and present a view of such images to the user positioned on the other side of the device 100.
The device 100 may further include a user identity module (UIM) 124. The UIM 124 may be a memory device having a processor built in. The UIM 124 may include, for example, a subscriber identity module (SIM), a universal integrated circuit card (UICC), a universal subscriber identity module (USIM), a removable user identity module (R-UIM), or any other smart card. The UIM 124 typically stores information elements related to a mobile subscriber. In addition to the UIM 124, the device 100 may be equipped with memory. For example, the device 100 may include volatile memory 126, such as volatile random access memory (RAM) including a cache area for the temporary storage of data. The device 100 may also include other non-volatile memory 128, which may be embedded and/or may be removable. The non-volatile memory 128 may additionally or alternatively comprise an electrically erasable programmable read only memory (EEPROM), flash memory, hard drive, or the like. The memories may store any number of pieces of information, and data, used by the device 100 to implement the functions of the device 100.
In an example embodiment, the apparatus 200 may facilitate configuring one or more applications. The apparatus 200 includes or otherwise is in communication with at least one processor 202 and at least one memory 204. Examples of the at least one memory 204 include, but are not limited to, volatile and/or non-volatile memories. Some examples of the volatile memory includes, but are not limited to, random access memory, dynamic random access memory, static random access memory, and the like. Some example of the non-volatile memory includes, but are not limited to, hard disks, magnetic tapes, optical disks, programmable read only memory, erasable programmable read only memory, electrically erasable programmable read only memory, flash memory, and the like. The memory 204 may be configured to store information, data, applications, instructions or the like for enabling the apparatus 200 to carry out various functions in accordance with various example embodiments. For example, the memory 204 may be configured to buffer input data, such as audio/video/image files for processing by the processor 202. Additionally or alternatively, the memory 204 may be configured to store instructions for execution by the processor 202. In an example embodiment, the memory 204 is configured to store a plurality of plug-ins, for example a set of source plug-ins, a set of target plug-ins and at least one filter plug-in.
The processor 202, which may be an example of the controller 108 of
A user interface (UI) 206 may be in communication with the processor 202. The UI 206 is configured to receive one or more inputs and provide output to the user. In an example embodiment, the UI 206 includes input interface and an output interface. Examples of the input interface may include, but are not limited to, a keyboard, a mouse, a joystick, a keypad, a touch screen, soft keys, and the like. The output user interface provides an audible, visual, mechanical or other output and/or feedback to the user. Examples of the output interface may include, but are not limited to, a display such as light emitting diode display, thin-film transistor (TFT) display, liquid crystal displays, active-matrix organic light-emitting diode (AMOLED) display, a microphone, a speaker, ringers, vibrators, and the like. In an example embodiment, the user interface 206 may include, among other devices or elements, any or all of a speaker, a microphone, a display, and a keyboard, touch screen, or the like. In this regard, for example, the processor 202 may comprise user interface circuitry configured to control at least some functions of one or more elements of the UI 206, for example, a speaker, ringer, microphone, display, and/or the like.
In an example embodiment, the apparatus 200 may include an electronic device. In an example embodiment, the electronic device may be a communication device. In an example embodiment, the communication device may include a mobile phone. In an example embodiment, the communication device may include a user interface, for example, the UI 206, having user interface circuitry and user interface software configured to facilitate a user to control at least one function of the communication device through use of a display and further configured to respond to user inputs. In an example embodiment, the communication device may include a display circuitry configured to display at least a portion of the user interface of the communication device. The display and display circuitry may be configured to facilitate the user to control at least one function of the communication device. For example, the display may include a menu bar. In an example embodiment, the menu bar may extend across a top of the display that may serve to categorize various commands into distinct items available for navigating the UI 206. Clicking on an item on the menu bar may cause a “pull-down” submenu to appear. The submenu may further comprise various items, each of which is associated with a desired action. The UI 206 may also include windows for affording a workspace to the user. The menu bar, the submenu and the windows are described in
In an embodiment, the UI 206 facilitates configuration of applications in the apparatus 200 by means of a platform. Various components for example compiler, linker, debugger, and the like may be associated with the platform for facilitating configuration of applications in the apparatus 200. The processor 202 and/or user interface circuitry comprising the processor 202 may be configured to control one or more functions of one or more elements of the user interface 206 through computer program instructions, for example, software and/or firmware, stored on a memory, for example, the at least one memory 204, and/or the like, accessible to the processor 202.
The processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, to cause the apparatus 200 to provide a plurality of plug-ins associated with a platform in a framework. The plurality of plug-ins includes a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins. Each filter plug-in of the set of filter plug-ins is one of an in-built plug-in and a user-defined plug-in. The plurality of plug-ins may be imaging plug-ins, audio plug-ins, video plug-ins, and plug-in associated with various applications. In an example embodiment, the in-built plug-ins and the user-defined plug-ins may be stored in the internal memory such as hard drive, random access memory (RAM) of the apparatus 200, or retrieved from external storage medium such as digital versatile disk (DVD), compact disk (CD), flash drive, memory card, or from external storage locations through the Internet, Bluetooth®, and the like. The apparatus 200 may also store algorithms corresponding to the plurality of plug-ins in the memory 204. In an example embodiment, a processing means may be configured to provide the plurality of plug-ins associated with the platform in the framework. An example of the processing means may include the processor 202, which may be an example of the controller 108.
In an example embodiment, the plurality of plug-ins associated with the framework may be accessed by utilizing the UI 206. In an example embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to receive user-defined plug-ins for various sub-applications. It will be understood that the user-defined plug-ins may be associated with the sub-applications, and are developed by the user in a UI editor. In an example embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to facilitate development of a user-defined plug-in by a user. As described herein, a plug-in associated with a sub-application may refer to a plug-in that may be linked to one or more associated application plug-ins in order to generate algorithms for developing one or more applications. In an example embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to append the plug-in associated with the sub-application to the existing set of filter plug-ins. For example, a plug-in associated with the sub-application such as a hair stretcher plug-in may be linked to a “face detection application” plug-in to generate an output.
In an example embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to facilitate selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins for configuring an application. For example, a source plug-in such as a “Common Image Importer” plug-in, a filter plug-in such as an “AlgorithmFaceDetection” plug-in, a target plug-in such as a “RGB Image Viewer” plug-in may be selected for configuring an “RGB image viewer” application. In another example, a source plug-in such as a “Video Importer” plug-in, filter plug-ins such as a “RGB to YUV 420p Converter” and a “Face Tracking” plug-ins, a target plug-in such as an “RGB Image Viewer” plug-in may be selected for configuring an “RGB Image Viewer” application. In an example embodiment, a processing means may be configured to facilitate selection of the source plug-in from the set of source plug-ins, the at least one filter plug-in from the set of filter plug-ins, and the target plug-in from the set of target plug-ins for configuring an application. An example of the processing means may include the processor 202, which may be an example of the controller 108.
In an example embodiment, the source plug-in, the target plug-in, and the at least one filter plug-in are selected automatically by a program and/or by the user. In an example embodiment, the source plug-in, the target plug-in, and the at least one filter plug-in are selected by the user by providing an input using the UI 206. In an example embodiment, the input provided using the UI 206 may be one or multiple mouse-clicks, keyboard keys selection, and the like.
In an example embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to link the selected source plug-in, the at least one filter plug-in and the target plug-in for configuring at least one application in the framework. For example, for configuring the “ROB image Viewer” application utilizing the platform, the source plug-in such as “Common Image Importer” plug-in, the filter plug-in such as “AlgorithmFaceDetection” plug-in, and the target plug-in such as “RGB image Viewer” plug-in may be selected for the purpose of linking. As another example, if a “Face Detection Algorithm” plug-in and a “Downscale Algorithm” plug-in are existing provided, a user can develop other supporting algorithms plug-ins such as nose stretching, hair style changer, face collage algorithm and link these supporting plug-ins to existing plug-ins and produce a desired application. In an example embodiment, the source plug-in, the target plug-in, and the at least one filter plug-in may be selected by one or more of a drag-and-drop operation, double-click operation, a mouse click operation, and other such operations for facilitating the user to easily select the plug-ins for configuring the application. In an example embodiment, a processing means may be configured to link the selected source plug-in, the at least one filter plug-in and the target plug-in for configuring the at least one application in the framework. An example of the processing means may include the processor 202, which may be an example of the controller 108.
In an example embodiment, the plug-ins may be dragged and dropped in an input viewer window in the display screen. In an example embodiment, the plug-ins may include input and output connecting ports such that the user may simply drag and drop the plug-ins to the input window of the display screen of the UI 206, and link the components through these input and output connecting ports. An advantage of providing dragging and dropping option is that the plug-in can be readily and conveniently linked without the need of writing any algorithmic codes for the same, thereby precluding any complexity in configuring the application.
In an example embodiment, the processor 202 may be embodied as to include, or otherwise control, a debugger. The debugger may be any means such as a software or otherwise embodied in hardware or a combination of hardware and software. For example, the processor 202 operating under software control, the processor 202 embodied as an ASIC or FPGA specifically configured to perform the operations described herein, or a combination thereof, thereby configures the hardware to perform the corresponding functions of the debugger. The debugger debugs the code associated with the application to be executed on the platform. In an example embodiment, debugging may be executed by performing an operation, such as a right-click operation of the mouse and allowing a “start” on an associated plug-in such as “Common Importer” component.
In an embodiment, the processor 202 may be embodied as to include, or otherwise control, a code generator. The code generator may be any mean such as a device or circuitry operating in accordance with software or otherwise embodied in hardware or a combination of hardware and software. For example, the processor 202 operating under software control, the processor 202 embodied as an ASIC or FPGA specifically configured to perform the operations described herein, or a combination thereof, thereby configures the apparatus or circuitry to perform the corresponding functions of the code generator. In an example embodiment, the code generator is configured to convert the source code to a readily executable form. In an example embodiment, the code generator facilitates at least in part automatic plugging of a plug-in corresponding to the platform with the framework for configuring the platform with the framework.
In an embodiment, the framework includes a single Application Programming Interface (API) for configuring one or more applications in the framework. In an advantageous mode, a single API may be exposed to the developers for configuring various applications for minimizing the complexity involved in developing the applications since the developer need not learn and remember all the APIs. As the API is implemented, the linking of source plug-in, the filter plug-ins and the target plug-in may be performed at least in part automatically for the required plug-ins. For example, the platform may be called “Playground”, and the command for at least in part automatically linking the plug-ins may be represented in the framework as: “QPlaygoundAlgo (“Name of algorithm”, input buffer, output buffer, . . . ). Accordingly, the algorithms and codecs that reside as part of plug-ins can be dragged and dropped into an Integrated Development Environment (IDE) of the playground.
In an embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to provide wrappers to different platform frameworks. Examples of such platform frameworks include, but are not limited to OpenMax™, GStreamer™, OpenCL™, and the like. In an embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to provide a platform independent layer so that the application developed may be launched on different vendor platform. In an embodiment, the processor 202 is configured to, with the content of the memory 204, and optionally with other components described herein, cause the apparatus 200 to provide at least one binary component for configuring the at least one application. In an example embodiment, the binary components may be provided as plug-ins in the platform. In an example embodiment, a processing means may be configured to provide wrappers to different platform frameworks. An example of the processing means may include the processor 202, which may be an example of the controller 108
a, 3b and 3c illustrate example screenshots 300, 400, and 500 of display screens for configuring various applications in accordance with an example embodiment Referring to
In an example embodiment, the plug-ins may be linked by dragging and dropping each plug-in from the respective workspaces such as window area 312 on the display screen 302. For example, the source plug-in “Common Image Importer” 310 may be dragged and dropped in the window area 312 from the set of plug-ins 304. In an example embodiment, the plug-ins may include input and output connecting ports for linking the plug-ins. For example, the filter plug-ins may be serially linked with the target plug-ins by connecting the output connecting ports of the filter plug-ins with the input connecting ports of the target plug-in.
In an embodiment, the window area 312 of the display screen 300 may include an input viewer window 322 and an output viewer window 324. The input viewer window 322 is configured to display the content, for example images that may be imported by the source plug-in for example the “Common Image Importer” plug-in 310. The output viewer window 324 is configured to display the output content, for example, face detected by means of “RGB Image Viewer” plug-in 320.
In operation, a user for example a developer may select an input utilizing the “Common Image Importer” plug-in 310. For example, the user may select a set of files in a desired format. In an example embodiment, upon selecting the “Common Image Importer” plug-in 310, the input viewer window 322 is launched. The input viewer window 322 displays the input files to be selected for receiving a desire output. For example, as illustrated in
In an example embodiment, the user-defined plug-in may be appended to the list of the existing set of filter plug-ins. The user-defined filter plug-ins may be developed by a developer. For example, for an existing plug-in such as a face detection and downsclaer plug-ins, a user/developer may develop nose stretching plug-in and/or hair styling plug-in, and/or face collage plug-in. These developed plug-ins may then be linked with the existing plug-ins to produce a desired output. The desired output may be obtained upon linking various plug-ins and executing a code for combining the linked plug-ins. In an example embodiment, the UI 206 may facilitate monitoring of a block (of the linked plug-ins) being executed by assigning distinct colors to the component plug-ins that are being executed. In an example embodiment, the desired output may be viewed in the “output viewer window” 324. As explained in
Referring to
Referring to
In another example embodiment, the apparatus 200 may be configured to perform various other applications, such as creating an image collage. The creation of image collage using the disclosed platform is explained with respect to
In an example embodiment, upon clicking an image using an image capturing device such as a camera, an application such as a collage creator may be launched in the background. A collage of the image along with other images may be presented to the user with a set of faces. In an example embodiment, user defined plug-ins, for example, a plug-in associated with a wrinkle detector algorithm, a hairstyle changer algorithm and a nose stretcher may be linked with the collage creator application. Additionally or optionally, the plug-ins associated with medical imaging algorithms may be linked to the collage generator plug-in for facilitating abnormalities identified in the face.
In an embodiment, any number of plug-ins may be added and linked to the source plug-ins and/or existing filter plug-ins during a capture mode, post-capture mode, at a website, and the like in the framework for configuring an application. The algorithm may be debugged irrespective of the underlying framework and/or architecture.
At block 802, a plurality of plug-ins associated with a framework are provided. The plurality of plug-ins includes a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins. Each filter plug-in of the set of filter plug-ins is one of an in-built plug-in and a user-defined plug-in. In an example embodiment, the user-defined plug-in may be developed/programmed by a user such as a developer, and thereafter appended to the set of the filter plug-ins. In an example embodiment, the user-defined plug-in may be appended to the set of existing plug-ins at least in parts automatically.
At block 804, a selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins is facilitated. In an example embodiment the selection may be performed manually by for example, automated tool/program and/or a user. At block 806, the selected source plug-in, the at least one filter plug-in and the target plug-in may be linked for configuring the at least one application in the framework. In an example embodiment, the source plug-in, the target plug-in, and the at least one filter plug-in may be linked by one of a drag and drop operation, a click operation, and the like. The screenshots displaying linking of the plug-ins are shown in
A platform independent framework is provided for configuring applications. In an example embodiment, the framework may include an editor that may be configured to develop UI components. At block 902, development of at least one sub-application in the editor may be facilitated. In an example embodiment, the editor may be a UI editor. At block 904, a plug-in associated with the sub-application (hereinafter referred to as sub-application plug-in) is provided. In an embodiment, the sub-application plug-in may be provided to a platform in the framework. In an example embodiment, the platform may be referred to as “Playground”. In an example embodiment, the playground may be installed as a plug-in to UI component for configuring an application. In an example embodiment, the playground may include core functionality components plug-ins, such as algorithms and codecs. In an example embodiment, the component plug-ins may be dragged and dropped into a playground Integrated Development Environment (IDE). In an example embodiment, the playground may provide wrappers to different platform frameworks. Examples of such frameworks include, but are not limited to OpenMax™, GStreamer™, OpenCL™, and the like. In an example embodiment, the playground is configured to provide a platform independent layer so that same application may be launched on different platforms/vendor platforms, thereby facilitating various vendors to write their own proprietary wrappers. Additionally or optionally, playground may facilitate generating of platform specific binary components.
In an embodiment, the playground may include a plurality of plug-ins. The plurality of plug-ins includes a set of source plug-ins, a set of target plug-ins and a set of filter plug-ins. Each filter plug-in of the set of filter plug-ins is one of an in-built plug-in and a user-defined plug-in. As is evident, the sub-application plug-in may be a user-define plug-in.
At block 906, a selection of a source plug-in from the set of source plug-ins, at least one filter plug-in from the set of filter plug-ins, and a target plug-in from the set of target plug-ins is facilitated. In an example embodiment, the selection may be performed by a user.
At block 908, the selected source plug-in, the at least one filter plug-in and the target plug-in are linked for configuring at least one application in the framework. As explained with reference to
Without in any way limiting the scope, interpretation, or application of the claims appearing below, a technical effect of one or more of the example embodiments disclosed herein is to configure applications, for example a face detection application in a platform independent framework. A framework is provided that includes various components for developing applications in a UI editor, and thereafter linking the developed applications with existing plug-ins and codecs in an easy and convenient way, thereby saving time and effort of the user. In an example embodiment, the existing plug-ins may be embodied in a platform, such that the platform may be installable as a plug-in to the UI editor. Also, a single API interface is provided for all the algorithms, thereby precluding the need of learning and remembering many APIs by a developer. An advantage of using the API is that once this API is used, linking of various plug-ins occur at least in parts automatically for required component blocks. The platform also includes wrappers that may be directly used in various other available mobile spaces such as OpenMax™, GStreamer™, and the like. Provision of these wrappers has various advantages since this precluded the developers from bothering about platform specific frameworks, avoids additional adaptation work, vendors can easily provide new solutions as plug-ins to playground and customers can easily do benchmark comparison with multiple vendor plug-ins, and the fragmentation of devices are resolved. Moreover, the framework is a platform independent framework, and accordingly the algorithms once written can work on different platforms with very minimal changes. This greatly enhances time to market for developers who want to push their latest applications to as many platforms as possible in very quick time.
The framework has many advantages, specifically for developers, vendors, and consumers. For example, for the developers the framework provides a development environment integrated with UI IDE and visual debugging. Also, several plug-ins are available for capture, post capture, website and platform side innovation, thereby increasing innovation possibilities. The framework may provide advantageous solutions to the vendors by increasing a developer base, reducing licensing costs and research and development investments due to increased contributions from universities and third party companies and developers, addressing innovation needs on different platforms, reducing the time to market applications, and facilitating evaluation of cross vendor solutions quickly with competition solutions. The consumers may be benefited since the framework provides increased innovative and useful applications.
Various embodiments described above may be implemented in software, hardware, application logic or a combination of software, hardware and application logic. The software, application logic and/or hardware may reside on at least one memory, at least one processor, an apparatus or, a computer program product. In an example embodiment, the application logic, software or an instruction set is maintained on any one of various conventional computer-readable media. In the context of this document, a “computer-readable medium” may be any media or means that can contain, store, communicate, propagate or transport the instructions for use by or in connection with an instruction execution system, apparatus, or device, such as a computer, with one example of an apparatus described and depicted in
If desired, the different functions discussed herein may be performed in a different order and/or concurrently with each other. Furthermore, if desired, one or more of the above-described functions may be optional or may be combined.
Although various aspects of the embodiments are set out in the independent claims, other aspects comprise other combinations of features from the described embodiments and/or the dependent claims with the features of the independent claims, and not solely the combinations explicitly set out in the claims.
It is also noted herein that while the above describes example embodiments of the invention, these descriptions should not be viewed in a limiting sense. Rather, there are several variations and modifications which may be made without departing from the scope of the present disclosure as defined in the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
357/CHE/2010 | Feb 2010 | IN | national |