The present invention relates to the field of web-based software, and more particularly, to a system and method for creating interactive multimedia widgets for use on web pages.
a shows a flowchart for a computer routine for updating data between a client computer and a server using asynchronous messaging.
b shows a flowchart for a computer routine for performing conflict resolution on a server when the server receives data from a client computer.
c shows a flowchart for a computer routine for updating the data on a client computer in response to data received from a server.
The present invention relates to an online project, referred to as a production, for the creation of a widget (or any other form of a portable chunk of code that can be installed and executed within any separate html-based web page by an end user without requiring additional compilation) or video that includes any media with interactive properties. In some embodiments of the present invention, the widget may display a movie including one or more forms of interactive or non-interactive media.
In some embodiments of the present invention, each production exists as a set of data on the server. Individual users can create external links to a production such that it can be viewed in a web-browser or such that it can be embedded as an object in a webpage. Further, users may run the client version of the present invention in a web-browser and use it to edit a currently existing production or to create an entirely new production to which that user, or other users, may then subscribe. Subscribing to a production shall mean the creation of a channel of communication between the client computer and the server through which the client computer receives real time updates of the current state of the production from the server. Thus, when a user subscribes to a production, the client computer receives constant feedback and updates from the server, as discussed below, so that the client computer always has the most recent version of the production.
Referring to
Referring to
In many embodiments, there are many client computers 210 and/or many client applications on the same or different client computers (additional client computers not shown) connected to server 220 and connection manager 230 at the same time. In some of these embodiments, more than one client computer 210 connected to server 220 and connection manager access the same production at the same time. In some of these embodiments, any particular connection could also be accessing more than one production simultaneously.
In many embodiments, if it is not possible to create a direct socket connection 250 between the client computer 210 and the connection manager 230, then a virtual connection can be created using the more generic HTTP connections 240. Because there is no direct socket in this case, the client computer 210 must periodically pick up its messages by sending a “check mailbox” query to the server 220. The server 220 then responds by transmitting to the client computer 210 over the TCP connection 240 data pertaining to any updates to the publication, or data pertaining to any other pertinent information.
In some embodiments of the present invention, still referring to
When any changes occur to the production (e.g., if that user or another user edits the production), the connection manager 230 may push the update data via the open socket connection 250 to each client computer 210 currently subscribed to the production. Because of the nature of the open socket connection 250, the connection manager 230 need only push the small bit of data pertinent to the update rather than all the data for the entire production. If the subscriber is permitted to edit the production, the client computer 210 may send any data pertinent to changes in the production to the server via asynchronous messaging as the changes occur. Alternatively, the connection manager 230 may wait until the client computer 210 requests an update before pushing data to the client computer 210 over the open socket connection 250. This may be performed by comparing the state of the production on the client computer 210 with the state of the production on the server 220, comparing the most recent changes to the production on the server 220 to those on the client computer 210, or by any other acceptable technique.
Referring to
Referring to
If the new instructions conflict, the server rejects 360 the instructions, does not make any changes to the state of the production, and pushes 370 data to the client indicating that a conflict has occurred. In some embodiments, the server immediately pushes data pertinent to the current state of the production to the client computer. In another embodiment, the server pushes a request for the client computer's current state of the production to the client computer, receives a response, and then only pushes the data necessary to update the current state of the production on the client computer. In yet another embodiment, the server waits for a request from the client computer for an update regarding the current state of the production.
Referring to
The above described use of the connection manager greatly facilitates real-time interaction and co-editing amongst multiple users. Some embodiments of the present invention employ the connection manager such that when multiple users are subscribed to a production, any changes to the production made by one user are subsequently pushed to all of the other subscribing users. In this way, the system does not require individual users to continuously have to request updates to a production. Thus, when one user makes a modification to the current state of the production, once that modification is accepted by the server, it is pushed to all of the other subscribing client computers, which then make the appropriate modification to the current state of the locally maintained production.
In some embodiments of the present invention, production data is stored in an atomic structure. Thus, each production includes a plurality of assets and a plurality of instructions or command elements. Command elements are data dictating the proper manipulation and placement of each asset within a production. For example, in addition to other data, each command element contains an operator indicating the action to be applied to an asset, such as being added, modified, moved, deleted, etc. The command elements may be independently executable, or they may depend on one another. Authoritative command elements are a type of command element that do not depend on other command elements and thus may be processed without reference to another command element. Non-authoritative commands are a type of command element that can only be processed in conjunction with one or more additional command elements.
Referring to
Still referring to
For example, still referring to
In some embodiments, the system employs shadowing. Shadowing includes determining whether an asset or a command element becomes unnecessary because of a more recent command element. In some embodiments, the above described system will shadow assets or command elements when the value stored in the CID of one command element is the same as the value stored in a second command element and the operator data in the more recent of the two command elements (i.e., the one with the greater sequence number) indicates an operation that would make the previous command element unnecessary. For example, referring again to
In other embodiments of the invention, the CID of each command element is not strictly associated with a particular asset. Instead, the CID is unique to a command element unless a new command element affects a previous command element, in which case, the CID for each of these command elements would have the same value. For example, referring to
In another embodiment, the above described shadowing of assets allows the system to create a clean version of the production such that the list of relevant elements replaces the master list of relevant elements. The clean version of the production thus only contains the non-shadowed assets in the production. The system may prepare the clean version at the user's command. Alternatively, the system may be configured to create clean versions of productions at fixed time intervals or after a period where a specific production has not been modified for some fixed time period. Further, a clean version of a production may be generated at a time when a user has completed editing a production and makes it available to the public. Generating a clean version decreases storage requirements by decreasing the overall size of the production. The clean version also makes for a faster download for client computers subscribing to the production due to its decreased size.
In another embodiment of the above described system, referring again to
In some embodiments, the system further includes a variable containing the maximum sequence number. This allows the system to keep track of which command element is the most recent while at the same time allowing it to not delete the command elements that the user has chosen to undo. In some embodiments, the above described system further includes a maximum sequence number variable containing the value of the sequence number of the last command with which the system should populate any clean version of the production. Thus, if a user has added a variety of command elements and then later chooses to undo them, rather than permanently remove these command elements from memory, the system instead merely decreases the maximum sequence number such that the system will not process those command elements. Thus, the user can easily “redo” or reapply those command elements. Further, this variable allows for a variety of system optimization techniques.
In some embodiments, each production has a current sequence number and a maximum sequence number. The current sequence number represents the current undo/redo state. When the system receives input indicating that the user wishes to undo a command, the current sequence number decreases, or winds backwards. When the system receives input indicating that the user wishes to redo a command, the system increases the current sequence number. The maximum sequence number represents the total number of commands, including those that the user has chosen to undo but has not chosen to redo. Using the maximum sequence number, the system can track whether there currently exist any legal redo commands. If the system has received input indicating that one or more commands are to be undone and the system has decreased the current sequence number accordingly, when the system receives input from the user indicating a change to the production, the system truncates the maximum sequence number to have a value equal to the current sequence number after the change because the old undone commands would no longer be compatible with the new changes the production.
In some embodiments, there are two versions, sometimes referred to here as contexts, of each production, a published version, sometimes referred to here as an audience version or context, and a private version, sometimes referred to here as an author version or context. Each context has a maximum and a current sequence number, as discussed above. In these embodiments, whenever the system receives input from the user indicating a change to the production the system only applies the changes the author context. When the system receives input from the user indicating that he or she wishes to publish the production by making it viewable by the public, the system will copy any information in the author context to the audience context, which is viewable by the public.
In some embodiments, the system makes use of more than just two contexts and may thus include, for example, semi-private contexts. For example, a semi-private context might only be viewable by a limited audience. Further, such a context might be password protected or require some other appropriate form of user authentication.
In some embodiments, the above described system further includes a conflict resolution system whereby multiple users can simultaneously co-edit the same production. In this embodiment, the user adds, deletes, and otherwise manipulates assets in the production resulting in a series of command elements. The client computer transmits each new command element to the server. In order to provide real time editing, the client computer does not wait for a server response and instead assumes as true and accepted by the server each of the user's edits unless the server indicates otherwise. The system thus allows the user to continue to make additional edits to the production without any lag time. When the server receives a command element from the client computer, the server compares the sequence number of the command element with the last sequence number of the server's version of the production. If the new command element's sequence number indicates that there have been changes made to the server version since the client executed the command, the system checks for a conflict. One indication that changes have been made to the server version since the client executed the command is when the new command element's sequence number is less than or equal to the last sequence number in the server version. One method by which the server may check for conflicts is by checking the previous command elements having CIDs having the same value to see if they conflict with one another. For example, if a previous command element sent by the first user deletes the asset that was added to the production by the command element having a CID having a value of “2” and if the second user then sends a command element containing instructions to move the asset that was added to the production by the command element having a CID having a value of “2” to a different point in the time line, the server will reject this later command element and will then push data to the client version of the program running on the second user's computer. The pushed data would indicate that the proposed command element was rejected and would also contain the command elements added to the production by the other user. Alternatively, more sophisticated conflict checking methods are implemented. For example, the conflict resolution aspect of the invention may instead process all of the command elements received since the second user made an edit and check each one regardless of the CID and then perform the data push. This data push not only indicates that the proposed command element was rejected, but it also contains the command elements added by other users that have been accepted by the server. Once the client computer receives this information, it will determine whether any of the next command elements it submitted relied on this rejected command element and will remove them if necessary.
In another embodiment of the invention, the operator data portion of a command element may include a pointer to another command element or to another array of command elements. In this manner, the invention allows for arbitrary nesting of command elements and of command element arrays. Thus, a command element in a production may refer to another set of command elements, or it may refer to another external production. In this manner, productions may become nested within one another. Further, the use of nested command elements allows the production to incorporate assets that make further use of the atomic command element structure.
This application claims priority to and the benefit of U.S. Provisional Application No. 60/897,558, filed on Jan. 26, 2007, which is incorporated by reference as if set forth in full herein. This application is also related to the co-pending U.S. Provisional Application No. 60/897,552, filed on Jan. 26, 2007, titled “Video Downloading and Scrubbing System and Method” (Atty. docket no. 58745), U.S. Provisional Patent Application No. 60/897,559, filed on Jan. 26, 2007, titled “Payment System and Method for Web-Based Video Editing System” (Atty. docket no. 58891), U.S. Provisional Patent Application No. 60/897,544, filed on Jan. 26, 2007, titled “System and Method for Editing Web-Based Video” (Atty. docket no. 58981), U.S. Provisional Patent Application No. 60/898,201, filed on Jan. 29, 2007, titled “Image Editing System and Method” (Atty. docket no. 58744), U.S. Provisional Patent Application No. 60/913,204, filed on Apr. 20, 2007, titled “Image Editing System and Method” (Atty. docket no. 59717), and U.S. Provisional Patent Application No. 60/915,427, filed on May 1, 2007, titled “System and Method for Flow Control in Web-Based Movie Editing System” (Atty. docket no. 59323), the entire contents of each of which are expressly incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60897558 | Jan 2007 | US | |
60897552 | Jan 2007 | US | |
60897559 | Jan 2007 | US | |
60897544 | Jan 2007 | US | |
60898201 | Jan 2007 | US | |
60913204 | Apr 2007 | US | |
60915427 | May 2007 | US |