Other objects and advantages of the instant invention will become apparent upon reading the following detailed description and upon reference to the drawings in which:
Referring now to the drawings, wherein like reference numerals indicate the same parts throughout the several views, there is provided a preferred system and method for assisting a user in identifying the relative or absolute CPU usage required to play or sound specific tracks in a multi-track multimedia editing application, additionally the instant invention enables the user to identify the individual-track CPU usage values in real time during a work's performance by an editing application, a play-back only application, etc.
By way of general explanation and in accord with the preferred embodiment, it is to be understood that when the phrase “assisting a user in identifying the relative or absolute CPU usage” is used herein that usage will preferably be interpreted as either adding specific GUI (graphical user interface) elements to the GUI of an already existing multi-track multimedia application or delivering a multi-track multimedia application with fixed integration of the needed specific GUI elements onto each visual representation of the tracks of the multi-track multimedia application. Accordingly, the instant invention will preferably be implemented either in form of a plugin to pre-existing software or as integral part of a custom editing application.
For purposes of the instant embodiment it should be understood that the invention preferably seeks to allow the user to eliminate a fundamental annoyance when working with multi-track multimedia editing applications, especially when working with audio editing/creating applications. The instant invention is primarily intended to help the user to quickly locate problematic setups in the multi-track arrangement of an audio or video work. Problematic setups typically manifest themselves as stutters, noise, lags or other performance anomaly in the audio performance of a multi-track multi-media work. The implementation and use of the instant invention allows the user to first identify and then eliminate these problematic settings or arrangements. Additionally, the instant invention will operate as a teaching tool when working with the multi-track multimedia editing application, in that this invention will help a novice user recognize which parameter settings are most likely to create hardware “lag” issues.
Turning first to the general environment of the invention and as is generally indicated in
Additionally it is possible that an external camera 110 of some sort will be utilized with—and will, preferably be connectable to—the computer so that video and/or graphic information can be transferred to and from the computer. Preferably the camera 110 will be a digital video camera, although that is not a requirement, as it is contemplated that the user might wish to utilize still images from a digital still camera in the creation of his or her multimedia work. Further given the modern trend toward incorporation of cameras into other electronic components (e.g. in handheld computers, telephones, laptops, etc.) those of ordinary skill in the art will recognize that the camera might be integrated into the computer or some other electronic device and thus, might not be a traditional single-purpose video or still camera. Although the camera will preferably be digital in nature, any sort of camera might be used, provided that the proper interfacing between it and the computer is utilized. Additionally a microphone 130 might be utilized so that the user can add voice-over narration to a multimedia work and a CD/DVD burner 120 could be useful for reading and/or storing in-progress or completed works.
Turning next to
The arrangement of visual volume indicators in the prior art example of
Turning now to a discussion of the instant invention,
Turning next to
Turning next to
In the next preferred step, the plugin will preferably obtain information about the work environment (step 720), which might include, for example information about the type of the host-program, information pertaining to the operating system and/or its revision level, etc. In some preferred embodiments, this information will enable the instant invention to activate only those features that are compatible with the host-program. Additionally, some indication should be obtained from the user or elsewhere of the name and/or location of the digital work that is to be performed. This might take the form of, by way of example only, a file name (including the file path) or the location of a default digital work (e.g., the work that was last performed), etc.
As a next preferred step the instant invention will preferably add GUI elements to the graphical user interface of the host-program (step 730). Preferably, this addition will be carried out through the use of a simple graphical overlay that will be drawn over the standard graphical user interface. Alternatively, the GUI element might be added to the graphical user interface of the host-program directly, the advantage of this approach being that the functionality of the instant invention will be integrated completely into the host-program.
As a next preferred step, the instant invention will determine whether or not the host-program is capable of providing track-level CPU load information (decision item 740). By way of explanation, in a computer program written specifically to take advantage of the instant invention is it anticipated that track-by-track CPU usage information will be provided internally in a sorted format for use as needed. Alternatively, the instant invention will determine the necessary information from the performance characteristics of the CPU and its current load, such information being provided to the GUI in near real time as is discussed below.
With respect to the left branch of decision item 740, if the host-program has made available detailed track load information the plugin will preferably obtain the information from the host-program and will transmit the track load values 750 to the appropriate GUI elements. Next, and preferably, the instant invention will dynamically and continuously populate the GUI elements 760 with the track load data values.
On the other hand, and with respect to the “NO” branch of decision item 740, if the query of the host-program regarding the provision of detailed CPU load information results in a negative answer, the instant invention will connect to the API of the underlying operating system 770 and will, by way of a constant comparison between the currently played clips/active tracks and the current CPU load, determine the specific CPU load values for each individual track in real time (steps 780, 782, and 784). Of course, due to the limited availability of track-specific data values it should be understood that this variant of the instant invention delivers load estimates for the individual tracks which may not be as precise as the values for the individual tracks provided in the other previously described variants. However, these values will enable a user to at least roughly determine specific “bottleneck” tracks in the arrangement. A more detailed description of this particular approach is illustrated in combination with
Turning next to
Finally, and turning to
In this figure, three tracks 900, 910 and 920 of a typical multimedia editing application are illustrated, wherein within each of these tracks are one or more multimedia clips 930 (numbered 1 to 9) which will typically be of different lengths. The endpoints of the multimedia clips are denoted by the letters (a) to (f), respectively. That is, clip 1 is bounded by the starting time of the work and a clip ending time at (b). Similarly, clip 6 is bounded by the ending time of clip 5 (time point (f)) and the end of the material contained within track B. In the scenario of
To populate the added CPU load GUI elements initially, the instant invention will preferably acquire the global CPU load the moment the playback of the multimedia arrangement is initiated. Because track-level CPU performance is not available by assumption, the global CPU load value will initially be assumed to be distributed evenly between the individual tracks (e.g., the ⅓ of the global CPU load will be allocated to each track).
As the playback continues, the instant invention will attempt to estimate the CPU required to perform each track by calculating the performance differential that is observed when clips that are stored within each track are started and stopped. If one track has a significant gap between clips, that would make calculating the differential relatively straightforward. However, in the more common scenario the clips in a track will be immediately adjacent to each other, in which case another method will preferably be utilized.
According to a preferred embodiment, when playback of the first multimedia clip has ended (a), the instant invention will preferably calculate the CPU load of tracks A and B by taking a CPU load snapshot at that time. By using this snapshot the instant invention can define the CPU load value for multimedia clip 7 (difference between the global load when all three clips are playing and when one of these clips stops playing) or that particular track used for playback of multimedia clip 7. In a next preferred step it will preferably be assumed that the CPU load of multimedia clip 8 is the same or at least similar to that of multimedia clip 7 and, therefore, the CPU load value for clip 8 will also be available. Given that information, the process will preferably proceed through the multimedia clips in all tracks determining the CPU load value of the individual clips and, thus, the individual tracks.
When the playback of multimedia clip 1 is over (b), the process will next preferably determine the CPU load for multimedia clip 1 by calculating the difference between the global CPU load while all clips are playing and the global CPU load value when one of these clips stops playing. As a consequence, the CPU load value for multimedia clip 1 can be determined and, with that information and the estimate of the CPU value for multimedia clip 8, the instant invention can determine the CPU load value for multimedia clip 4 and additionally multimedia track B. Of course, the foregoing can be readily extended to an arbitrary number of tracks and clips. In general, the instant invention determines the CPU load values for each multimedia clip contained in the different tracks. Note that in some cases, the track load values may be delivered somewhat after the fact, i.e., not in “real time.” In extreme cases, the best estimate of track load may only be available after the entire work has played through once. However, since the prior art does not provide any way to readily determine individual track load, even such backward oriented estimate can still be invaluable.
Note that, although the preferred embodiment, in case of audio editing, utilizes sampled instruments (e.g.
Additionally, it should be noted that, although the preferred embodiment will display the instantaneous (or, preferably, at least short-time interval) CPU load for each track during the performance of the digital work, in some embodiments the controlling program might well monitor the CPU track loads internally and indicate to the user only, for example, the largest of the CPU load either during its performance or after it has concluded. That is, in some preferred embodiments an indicator (e.g., a pointer, a change in color of the track background, a printed notation, etc.) might be used to indicate only the track that is utilizing the greatest number of CPU cycles at a given moment. The other tracks (i.e., the ones not indicated as the most CPU intensive track) could then be inferred to be requiring fewer CPU resources than the indicated one.
The term CPU has been used throughout to describe a device for controlling the selection, reading and/or performance (either audio, video, or a combination) of a digital work on a device that is equipped with a loud speaker (to include ear phones, head phones, etc.), and/or a display device. Obviously, the CPU might be a traditional microprocessor, but it could also be one of any number of other devices that are at least somewhat programmable (e.g., programmable logic devices (“PLD”) including, without limitation, gate arrays, FPGA's (i.e., field programmable gate arrays), CPLD's (i.e., complex PLD's), EPLD's (i.e., erasable PLD's), SPLD's (i.e., simple PLD's), PAL's (programmable array logic), FPLA's (i.e., field programmable logic array), FPLS (i.e., fuse programmable logic sequencers), GAL (i.e., generic array logic), PLA (i.e., programmable logic array), FPAA (i.e., field programmable analog array), PsoC (i.e., programmable system-on-chip), SoC (i.e., system-on-chip), CsoC (i.e., configurable system-on-chip), ASIC (i.e., application specific integrated chip), etc., as those acronyms and their associated devices are known and used in the art. Further, those of ordinary skill in the art will recognize that many of these sorts of devices contain microprocessors integral thereto. Thus, for purposes of the instant disclosure the terms “processor,” “microprocessor” and “CPU” (i.e., central processing unit) should be interpreted to take the broadest possible meaning herein, and such meaning is intended to include any PLD or other programmable device of the general sort described above.
Thus, the present invention is well adapted to carry out the objects and attain the end and advantages mentioned above as well as those inherent therein. While the inventive device has been described and illustrated herein by reference to certain preferred embodiments in relation to the drawings attached thereto, various changes and further modifications, apart from those shown above or suggested therein, may be made therein by those of ordinary skill in the art, without departing from the spirit of the inventive concept the scope of which is to be determined by the following claims.
This application claims the benefit of U.S. Provisional Patent Application Ser. No. 60/833,395 filed on Jul. 26, 2007, and incorporates said provisional application by reference into this disclosure as if fully set out at this point.
Number | Date | Country | |
---|---|---|---|
60833395 | Jul 2006 | US |