WO2005043311A2 - Method and system for audiovisual remote collaboration - Google Patents

Method and system for audiovisual remote collaboration Download PDF

Info

Publication number
WO2005043311A2
WO2005043311A2 PCT/US2004/034905 US2004034905W WO2005043311A2 WO 2005043311 A2 WO2005043311 A2 WO 2005043311A2 US 2004034905 W US2004034905 W US 2004034905W WO 2005043311 A2 WO2005043311 A2 WO 2005043311A2
Authority
WO
WIPO (PCT)
Prior art keywords
content
ktz
root
users
component
Prior art date
Application number
PCT/US2004/034905
Other languages
French (fr)
Other versions
WO2005043311A3 (en
Inventor
Samuel Sergio Tenembaum
Jorge A. Estevez
Ivan A. Ivanoff
Original Assignee
Porto Ranelli, Sa
Pi Trust
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Porto Ranelli, Sa, Pi Trust filed Critical Porto Ranelli, Sa
Publication of WO2005043311A2 publication Critical patent/WO2005043311A2/en
Publication of WO2005043311A3 publication Critical patent/WO2005043311A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Definitions

  • the present invention relates generally to a method and system for collaborating remotely by visualizing, editing and annotating audiovisual and text content from various locations either simultaneously or consecutively.
  • the invention provides a simple and cost effective means for creative developers (filmmakers, video makers, multimedia authors, advertising creatives, designers, animators, directors, FX supervisors, etc..) and even trainers to collaborate among themselves or with clients and/or trainees, even when they cannot be together. It even allows for asynchronous collaboration in those cases when the parties cannot work at the same time, as when they are in different time zones.
  • the present invention solves the problems described above by enabling real-time visualization of content from multiple locations simultaneously and/or consecutively, and by covering such content with a transparent layer that can hold annotations linked to specific key points in the content, hence preserving its integrity.
  • a way to visualize this is to imagine a book with old-fashioned acetate transparencies covering each page.
  • Each transparent sheet is associated with a given page and can hold annotations, drawings and edits. All without modifying the underlying text.
  • the present invention achieves similar results by wrapping digital content (video, audio, animations [vector based or otherwise], multimedia content, word processor documents, slide shows, etc..) in a transparent container. In addition to allowing annotations, this wrapper may enable real time visualization from remote locations.
  • users may interact with content and with one another in real time, by using a standard web browser to log onto a web page containing a workspace that holds both the content and the annotations.
  • This web page can be accessed by multiple users simultaneously, either openly or after entering a password, and may allow for multiple administrators (users with full editorial control) or for a single administrator and a number of viewers (users without editorial control who can only see the material). Users may then navigate through the content via a timeline and playback controls (also inside the workspace), going from key point to key point (or skipping) and making notes and drawing graphics associated with each of them.
  • Key points can be frames, as can key frames in a movie or an animation, slides in a PowerPoint presentation, or pages in a text document.
  • Annotations can be seen in real time by other logged in users or at a later time.
  • the timeline may indicate visually which key points include annotations, in order to simplify later reference.
  • the presently preferred embodiment of the invention uses Macromedia Flash (currently in its MX version) to create the workspace with the navigational and editorial tools, encase the content and generate and read XML files describing the annotations.
  • the preferred embodiment uses the Macromedia Flash Communications Server.
  • the selected content is first covered with a wrapper that includes tools for navigating, editing and annotating the content, as well as a communication toolkit that connects with a server that enables multiple connections.
  • the wrapper and the server could be built using alternative technologies, like Java or Delphi.
  • Figures 1A and 1 B also referred to collectively as Figure 1 , constitute a block diagram illustrating the upload process
  • Figure 2 is a block diagram illustrating the login and content selection processes
  • Figure 3 is a block diagram illustrating the operation of the invention when displaying video content
  • Figure 4 is a block diagram illustrating the operation of the invention when displaying HTML content
  • Figure 5 is a block diagram illustrating the operation of the invention when displaying Flash content
  • Figure 6 is a screenshot of the preferred interface.
  • a "Kratzer” website operating on a collaboration server by means of a conventional web browser.
  • This website contains the multimedia content on which users are to collaborate, and permits multiple users to interact with the content simultaneously and with each other. Different users may also access the same content at different times.
  • a user is presented with an interface that permits him to navigate through multimedia, audiovisual content by means of a timeline and playback controls, manipulating various key points and adding notations or graphics.
  • the user is also able to upload, manipulate and edit various types of objects, including video, Flash and HTML objects.
  • Figure 6 is a screenshot of an interface disclosed for illustrative purposes, where block A indicates the content viewing area.
  • Block B indicates the navigational controls, which includes controls to operate various content, such as a timeline T and playback controls P.
  • Block C indicates the annotation tools, including tools to add various forms of content. Those skilled in the art will be familiar with these tools and their operation.
  • Block D indicates text and video chat tools. All features are included for descriptive purposes. Features can be added and removed.
  • content such as Flash objects, video and audio
  • Annotations, graphics and such are created, manipulated and edited with tools C, and the user may use tools D for text and video chatting to collaborate in real time with other users.
  • video, Flash and HTML may be uploaded by a user to the Kratzer site and added to a menu on the interface. This process is illustrated in Figure 1.
  • Figure 1 is a functional block diagram of the object upload process; the figure being divided so that blocks on the left describe operations performed on the client side location and the blocks on the right describe operations performed on the server side location. Operation begins at block #1 and continues on to #2, where the user selects a file (object) to be uploaded.
  • Block #3 determines whether the selected file is video, if the answer is yes the process continues at block #4 where the object is instanced, then on to #5 where the object is checked for size and appropriate extension, and then on to #6, where it is validated. If the object is valid, then the process continues on to # 7 on the server side, otherwise the process returns to block #2 where users may select other objects.
  • objects are checked for file type (#7), if the file type is FLV, then the process continues on to #30. If the file type is other than FLV, then it is converted into FLV at block #8 and then the process continues at block #30. If the answer at block #3 is negative, the process continues on to block #10; where it is determined whether the selected object is Flash object.
  • the process continues on to #11 where the Flash object is instanced and then on to #12, where Flash specific checks are performed.
  • block #13 object validity is checked, if the answer is positive, then the process continues on to #30, otherwise the process returns to block #2, where users may select other objects. If the answer at #10 is negative, the process continues on to block #20; where it is determined whether the selected object is an HTML object. If the answer is positive, the process continues on to #21 where the
  • HTML object is instanced and then on to #22, where HTML specific checks are performed. Then, block #23 checks object validity, if the answer is positive, then the process continues on to #30; otherwise the process returns to block #2 where users may select other objects. If the result at block #20 is negative, the process returns to block
  • FIG. 2 is a functional block diagram of the operation of the "log on” process and the selection of the content and content type being viewed.
  • Operation begins at block # 101 , on the client side, with the client opening a standard browser window and requesting the Kratzer Home page.
  • the server receives the request and sends HTML code to the user, who inputs a user ID and password (block #103) in order to log on.
  • the server looks up the user in a registered user database and confirms validity of the user in block #105. if the user is valid then processing continues on to block #106, otherwise it returns to #103 for new user and password input. After the user is validated, block #106 finds the content objects available for such user. If there are no objects available to such user, the test at block #107 routes the process on to #108 and communicates this to the user; otherwise the process continues on to #109, where the user is presented with a list of available objects to choose from. Once the user selects an object to work with (block #109), the selection is passed on to the server, and at block #110 the server determines whether the content to be seen is Flash based.
  • FIG. 3 is a Functional block diagram of the operation of the invention when displaying video content, divided so that the left-hand blocks describe operations performed on the server side and the right-hand blocks describe operations performed on the client side.
  • Operation begins at block # 301 , on the client side, with the request for an ASP file, using parameters determined in the process described in Figure 2.
  • Block # 303 depicts the server receiving the request from block #301 and splitting the process into two parallel and concurrent sub-processes: the first is at #305, where the server obtains all parameters needed to display the selected object.
  • HTML code including tags requesting an SWF file is delivered to the user and is executed at block #307.
  • SWF Flash based wrapper
  • Block #309 the server receives the request and delivers the SWF file.
  • Block #311 shows the client executing the SWF wrapper file using parameters obtained in the aforementioned parallel process that takes place at block #305.
  • the wrapper requests the Video object, as seen in # 313, and the associated XML file where the annotations will reside, # 315.
  • the process continues at #316, where the video object and XML File ar received, and the user views and annotates the content.
  • block #320 provides a choice to save the annotations. If the answer is positive, the process transfers to #322 where the updated XML file with the annotations is saved to the server and the process ends at #324. Otherwise, the process ends at #324 without saving.
  • FIG 4 is a divided functional block diagram illustrating the operation of the invention when displaying HTML content, wherein the left- hand blocks describe operations performed on the server side and the right- hand blocks describe operations performed on the client side.
  • Operation begins at block # 401 , on the client side, with the request for an ASP file, using parameters determined in the process described in Figure 2.
  • Block # 403 depicts the server receiving the request from #401 and splitting the process into two parallel and concurrent sub-processes: one at #405, where the server obtains all parameters needed to display the selected object.
  • HTML code including tags requesting an SWF file is delivered to the user and executed at block #407.
  • HTML tags request the Flash based wrapper (SWF) file.
  • SWF Flash based wrapper
  • Block #409 the server receives the request and delivers the SWF file.
  • Block #411 shows the client executing the SWF wrapper using parameters obtained in the aforementioned first parallel process that takes place at #405.
  • the executing wrapper requests the HTML object, as seen in # 413, and the associated XML file where the annotations will reside, # 415.
  • the process continues at #416, where the HTML object and XML file are received, and the user views and annotates the content.
  • FIG. 5 is a Functional block diagram illustrating the operation of the invention when displaying Flash content, where the left-hand blocks describe operations performed on the server side and the right-hand blocks describe operations performed on the client side.
  • Operation begins at block # 501 , on the client side, with the request for an ASP file, using parameters determined in the process described in Figure 2.
  • Block # 503 depicts the server receiving the request from #501 and splitting the process into two parallel and concurrent sub-processes, the first of which is performed at #505, where the server obtains all parameters needed to display the selected object. Simultaneously, in the second sub- process (#507), HTML code including tags requesting an SWF file is delivered to the user and executed at block #507.
  • Block #509 On execution on the client side, such HTML tag requests the Flash based wrapper (SWF) file.
  • the server receives the request and delivers the SWF file.
  • Block #511 shows the client executing the SWF wrapper using parameters obtained in the aforementioned parallel process that takes place at #505.
  • the wrapper requests the Flash object, as seen in # 513, and the associated XML file where the annotations will reside in # 515.
  • the process continues at #516, where the object and XML file are received and the user views and annotates the content.
  • block #520 offers the choice to save the annotations. If the answer is positive, process moves to #522 where the updated XML file with the annotations is saved to the server and the process ends at #524. Otherwise, the process ends at #524 without saving.
  • a Flash wrapper similar to the one in the preferred embodiment, with or even without the communications capabilities can be used sequentially.
  • the way in which this embodiment functions is as follows: the content is first inserted onto the wrapper and compiled into a self contained SWF file. The resulting file includes the content and the navigation, editing and annotation tools (similar to the preferred embodiment). Once the compiled file is ready it can be distributed electronically in a number of ways (e.g. via Web, email, disk, network) for others to view and work on. The process can be iterative, allowing for multiple rounds of revisions. Preferred code for the disclosed process is attached as Appendix A.
  • KTZ_USER && _level3.KTZ movieController . free ! true) ⁇ _level3.KTZ movieMC. gotoAndStop (frame) ; leve!3.
  • KTZ_CLB_SOFrameActual ⁇ ⁇ ⁇ ; _global .
  • ContentFram.es KTZ_CLB_SOFrames . data; //loadMovieNumC'Comunica. swf", 4) ; //_root .
  • KTZ_CLB_SOLista.onSync function (obj ) ⁇ for (var i in obj ) ⁇ trace (obj [i] .code+” : "+obj [i] .name+” : "+obj [i] . oldValue) ; ⁇ for (var i in KTZ_CLB_S0Lista. data) ⁇ trace (i+"[] [] []”); ⁇ _root . ConectaChat ( ) ; KTZ_CLB_SOLista .
  • KTZ_CLB_SOFrameActual SharedObject . getRemote (frame, KTZ_CLB_connection.uri, true) ;
  • KTZ MOSTRAR ( ) this .rtn. fn. apply (this .rtn. obj , this . rtn. args) ;
  • KTZ_CLB_SOFrameActual.onSync function (obj ) ⁇ for (var i in obj ) ⁇ if (obj [i] .
  • ind KTZ_CLB_SOFrameActual.data[i] ; mostrarKTZObject (ind.KTZtipo, ind.KTZ_color, ind.KTZnom, ind.KTZcontenedorX, ind.KTZcontenedorY, ind.KTZcontenedorRota, ind.KTZobjTOP, ind.KTZobjlZQ, ind.KTZobjDER, ind.KTZobjINF, ind, ind.KTZid, ind.
  • KTZ obj TEXT KTZ obj TEXT
  • KTZ MOSTRARJJNO function (objNombre) ⁇ if ( !_root ._noVer)
  • ⁇ ind KTZ_CLB_SOFrameActual.
  • ob._enabled true : null; ob . gotoAndPlay (2 ) ; ⁇ ; MovieClip.

Abstract

A method and system for real-time visualization of content from multiple locations simultaneously and/or consecutively. The content is covered with a transparent layer that can hold annotations linked to specific key points in the content, hence preserving its integrity. This is similar to a book with acetate transparencies covering each page, in which each transparency is associated with a given page and can hold annotations, drawings and edits, all without modifying the underlying text. The present invention achieves similar results by wrapping digital content in a transparent container. In addition to allowing annotations, this wrapper may enable real time visualization from remote locations. In accordance with a preferred embodiment, users may interact with content and with one another in real time, by using a standard web browser to log onto a web page containing a workspace that holds both the content and the annotations.

Description

METHOD AND SYSTEM FOR AUDIOVISUAL REMOTE COLLABORATION
Field of the invention The present invention relates generally to a method and system for collaborating remotely by visualizing, editing and annotating audiovisual and text content from various locations either simultaneously or consecutively. The invention provides a simple and cost effective means for creative developers (filmmakers, video makers, multimedia authors, advertising creatives, designers, animators, directors, FX supervisors, etc..) and even trainers to collaborate among themselves or with clients and/or trainees, even when they cannot be together. It even allows for asynchronous collaboration in those cases when the parties cannot work at the same time, as when they are in different time zones.
Background of the invention Creative endeavors and the processes leading to them are being re-shaped by the constant advance of technology. Parties distributed around the world are now collaborating on projects that once were managed and developed from a centralized location. In addition to this, the advent of the Internet has resulted in an explosion of new creative outlets and formats, ranging from the purely artistic to the openly commercial and everything in between. These new modes of expression and communication sometimes require collaboration among parties who cannot meet in person, and telephone calls, faxes and even e-mails are sometimes not enough to convey adequate information to facilitate the joint work of these parties. Examples of these are: 1. Postproduction and special FX houses working with remote clients: this practice is more and more common and, until the present invention, required high end systems linked by dedicated connections. A well- known example of this was when Steven Spielberg had to supervise the special effects for "Jurassic Park 2: The Lost World" while shooting "Schindler's List" in Europe. The FX team was in California and had to provide daily samples of the work for the director to supervise and approve. 2. Advertising agencies working with clients and websites in remote locations: advertising work often requires multiple revisions, either generated by the client or in order to accommodate specifications of the publisher where the ad is poised to run. Prior to the current invention this entailed communications back and forth between the parties that demanded detailed descriptions and multiple versions. 3. Presentations, training materials and help desks: the state of business in this globalized world demands that organizations be able to train and help end-users and employees remotely, as well as to showcase all kinds of audio visual and presentation materials to distant parties.
Summary of the Invention The present invention solves the problems described above by enabling real-time visualization of content from multiple locations simultaneously and/or consecutively, and by covering such content with a transparent layer that can hold annotations linked to specific key points in the content, hence preserving its integrity. A way to visualize this is to imagine a book with old-fashioned acetate transparencies covering each page. Each transparent sheet is associated with a given page and can hold annotations, drawings and edits. All without modifying the underlying text. The present invention achieves similar results by wrapping digital content (video, audio, animations [vector based or otherwise], multimedia content, word processor documents, slide shows, etc..) in a transparent container. In addition to allowing annotations, this wrapper may enable real time visualization from remote locations. In accordance with a preferred embodiment, users may interact with content and with one another in real time, by using a standard web browser to log onto a web page containing a workspace that holds both the content and the annotations. This web page can be accessed by multiple users simultaneously, either openly or after entering a password, and may allow for multiple administrators (users with full editorial control) or for a single administrator and a number of viewers (users without editorial control who can only see the material). Users may then navigate through the content via a timeline and playback controls (also inside the workspace), going from key point to key point (or skipping) and making notes and drawing graphics associated with each of them. Key points can be frames, as can key frames in a movie or an animation, slides in a PowerPoint presentation, or pages in a text document. Annotations can be seen in real time by other logged in users or at a later time. The timeline may indicate visually which key points include annotations, in order to simplify later reference. The presently preferred embodiment of the invention uses Macromedia Flash (currently in its MX version) to create the workspace with the navigational and editorial tools, encase the content and generate and read XML files describing the annotations. In addition to Flash, the preferred embodiment uses the Macromedia Flash Communications Server. The selected content is first covered with a wrapper that includes tools for navigating, editing and annotating the content, as well as a communication toolkit that connects with a server that enables multiple connections. As should be clear to those skilled in the art, the wrapper and the server could be built using alternative technologies, like Java or Delphi.
Brief Description Of The Drawings The foregoing brief description, as well as further objects, features, and advantages of the present invention will be understood more completely from the following detailed description of a presently preferred, but nonetheless illustrative, embodiment with reference being had to the accompanying drawings, in which: Figures 1A and 1 B, also referred to collectively as Figure 1 , constitute a block diagram illustrating the upload process; Figure 2 is a block diagram illustrating the login and content selection processes; Figure 3 is a block diagram illustrating the operation of the invention when displaying video content; Figure 4 is a block diagram illustrating the operation of the invention when displaying HTML content; Figure 5 is a block diagram illustrating the operation of the invention when displaying Flash content; and Figure 6 is a screenshot of the preferred interface.
Detailed Description of the Preferred Embodiments In accordance with the preferred embodiment of the present invention, users connect with a "Kratzer" website operating on a collaboration server by means of a conventional web browser. This website contains the multimedia content on which users are to collaborate, and permits multiple users to interact with the content simultaneously and with each other. Different users may also access the same content at different times. On the Kratzer website, a user is presented with an interface that permits him to navigate through multimedia, audiovisual content by means of a timeline and playback controls, manipulating various key points and adding notations or graphics. The user is also able to upload, manipulate and edit various types of objects, including video, Flash and HTML objects. Figure 6 is a screenshot of an interface disclosed for illustrative purposes, where block A indicates the content viewing area. Block B indicates the navigational controls, which includes controls to operate various content, such as a timeline T and playback controls P. Block C indicates the annotation tools, including tools to add various forms of content. Those skilled in the art will be familiar with these tools and their operation. Block D indicates text and video chat tools. All features are included for descriptive purposes. Features can be added and removed. In operation content, such as Flash objects, video and audio, may be navigated by means of the timeline and other controls in area B. Annotations, graphics and such are created, manipulated and edited with tools C, and the user may use tools D for text and video chatting to collaborate in real time with other users. In general, video, Flash and HTML may be uploaded by a user to the Kratzer site and added to a menu on the interface. This process is illustrated in Figure 1. The user may log on to the Kratzer website and manipulate objects available to him. This process and the selection of objects is illustrated is Figure 2. This process determines whether the object is Flash video or HTML and selects an appropriate process to permit user manipulation, editing and saving of the objects. Figures 3, 4 and 5 illustrate the processes for Flash, video and HTML, respectively. Figure 1 is a functional block diagram of the object upload process; the figure being divided so that blocks on the left describe operations performed on the client side location and the blocks on the right describe operations performed on the server side location. Operation begins at block #1 and continues on to #2, where the user selects a file (object) to be uploaded. Block #3 determines whether the selected file is video, if the answer is yes the process continues at block #4 where the object is instanced, then on to #5 where the object is checked for size and appropriate extension, and then on to #6, where it is validated. If the object is valid, then the process continues on to # 7 on the server side, otherwise the process returns to block #2 where users may select other objects. At the server side, objects are checked for file type (#7), if the file type is FLV, then the process continues on to #30. If the file type is other than FLV, then it is converted into FLV at block #8 and then the process continues at block #30. If the answer at block #3 is negative, the process continues on to block #10; where it is determined whether the selected object is Flash object. If the answer is positive, the process continues on to #11 where the Flash object is instanced and then on to #12, where Flash specific checks are performed. At block #13 object validity is checked, if the answer is positive, then the process continues on to #30, otherwise the process returns to block #2, where users may select other objects. If the answer at #10 is negative, the process continues on to block #20; where it is determined whether the selected object is an HTML object. If the answer is positive, the process continues on to #21 where the
HTML object is instanced and then on to #22, where HTML specific checks are performed. Then, block #23 checks object validity, if the answer is positive, then the process continues on to #30; otherwise the process returns to block #2 where users may select other objects. If the result at block #20 is negative, the process returns to block
#2 where users may select other objects. Otherwise all processing continues at block #30 on the server side, where a new directory is created, then on to #31 where the uploaded object is saved in the new directory and on to #32, where the menu of available objects is updated. The process ends at block #33. Figure 2 is a functional block diagram of the operation of the "log on" process and the selection of the content and content type being viewed.
Again, the figure is divided into left-hand blocks describing operations performed on the server side and the right-hand blocks describing operations performed on the client side. Operation begins at block # 101 , on the client side, with the client opening a standard browser window and requesting the Kratzer Home page. At block #102, the server receives the request and sends HTML code to the user, who inputs a user ID and password (block #103) in order to log on.
At block #104, the server looks up the user in a registered user database and confirms validity of the user in block #105. if the user is valid then processing continues on to block #106, otherwise it returns to #103 for new user and password input. After the user is validated, block #106 finds the content objects available for such user. If there are no objects available to such user, the test at block #107 routes the process on to #108 and communicates this to the user; otherwise the process continues on to #109, where the user is presented with a list of available objects to choose from. Once the user selects an object to work with (block #109), the selection is passed on to the server, and at block #110 the server determines whether the content to be seen is Flash based. If the answer is positive, then the process for viewing Flash based content is activated at block #111 and the current process ends. If the answer to #110 is negative, then the process continues on to #112, where the system determines whether the content to be seen is Video based. If the answer is positive, then the process for viewing video based content is activated at block # 113 and the current process ends. If the answer at #112 is negative, then the process continues on to #114, where the system determines whether the content to be seen is HTML based. If the answer is positive, then the process for viewing HTML based content is activated at block # 115 and the current process ends. Figure 3 is a Functional block diagram of the operation of the invention when displaying video content, divided so that the left-hand blocks describe operations performed on the server side and the right-hand blocks describe operations performed on the client side. Operation begins at block # 301 , on the client side, with the request for an ASP file, using parameters determined in the process described in Figure 2. Block # 303 depicts the server receiving the request from block #301 and splitting the process into two parallel and concurrent sub-processes: the first is at #305, where the server obtains all parameters needed to display the selected object. Simultaneously, in the second process, HTML code including tags requesting an SWF file is delivered to the user and is executed at block #307. On execution on the client side, such HTML tags request the Flash based wrapper (SWF) file. At block #309 the server receives the request and delivers the SWF file. Block #311 shows the client executing the SWF wrapper file using parameters obtained in the aforementioned parallel process that takes place at block #305. Here the wrapper requests the Video object, as seen in # 313, and the associated XML file where the annotations will reside, # 315. The process continues at #316, where the video object and XML File ar received, and the user views and annotates the content. On completion of work, block #320 provides a choice to save the annotations. If the answer is positive, the process transfers to #322 where the updated XML file with the annotations is saved to the server and the process ends at #324. Otherwise, the process ends at #324 without saving. Figure 4 is a divided functional block diagram illustrating the operation of the invention when displaying HTML content, wherein the left- hand blocks describe operations performed on the server side and the right- hand blocks describe operations performed on the client side. Operation begins at block # 401 , on the client side, with the request for an ASP file, using parameters determined in the process described in Figure 2. Block # 403 depicts the server receiving the request from #401 and splitting the process into two parallel and concurrent sub-processes: one at #405, where the server obtains all parameters needed to display the selected object. Simultaneously in the second process (#407), HTML code including tags requesting an SWF file is delivered to the user and executed at block #407. On execution on the client side, such HTML tags request the Flash based wrapper (SWF) file. At block #409 the server receives the request and delivers the SWF file. Block #411 shows the client executing the SWF wrapper using parameters obtained in the aforementioned first parallel process that takes place at #405. Here the executing wrapper requests the HTML object, as seen in # 413, and the associated XML file where the annotations will reside, # 415. The process continues at #416, where the HTML object and XML file are received, and the user views and annotates the content. On completion of work, control transfers to block #420, which offers the choice to save the annotations. If the answer is positive, the process moves to #422 where the updated XML file with the annotations is saved to the server, after which the process ends at #424. Otherwise, the process ends at #424 without saving. Figure 5 is a Functional block diagram illustrating the operation of the invention when displaying Flash content, where the left-hand blocks describe operations performed on the server side and the right-hand blocks describe operations performed on the client side. Operation begins at block # 501 , on the client side, with the request for an ASP file, using parameters determined in the process described in Figure 2. Block # 503 depicts the server receiving the request from #501 and splitting the process into two parallel and concurrent sub-processes, the first of which is performed at #505, where the server obtains all parameters needed to display the selected object. Simultaneously, in the second sub- process (#507), HTML code including tags requesting an SWF file is delivered to the user and executed at block #507. On execution on the client side, such HTML tag requests the Flash based wrapper (SWF) file. At block #509 the server receives the request and delivers the SWF file. Block #511 shows the client executing the SWF wrapper using parameters obtained in the aforementioned parallel process that takes place at #505. Here the wrapper requests the Flash object, as seen in # 513, and the associated XML file where the annotations will reside in # 515. The process continues at #516, where the object and XML file are received and the user views and annotates the content. On completion of work, block #520 offers the choice to save the annotations. If the answer is positive, process moves to #522 where the updated XML file with the annotations is saved to the server and the process ends at #524. Otherwise, the process ends at #524 without saving.
Alternate embodiment of the present invention Alternatively, for those cases when real time collaboration is not possible or not necessary, a Flash wrapper similar to the one in the preferred embodiment, with or even without the communications capabilities can be used sequentially. The way in which this embodiment functions is as follows: the content is first inserted onto the wrapper and compiled into a self contained SWF file. The resulting file includes the content and the navigation, editing and annotation tools (similar to the preferred embodiment). Once the compiled file is ready it can be distributed electronically in a number of ways (e.g. via Web, email, disk, network) for others to view and work on. The process can be iterative, allowing for multiple rounds of revisions. Preferred code for the disclosed process is attached as Appendix A. Although a preferred embodiment of the invention has been disclosed for illustrative purposes, those skilled in the art will appreciate that many additions, modifications, or substitutions are possible without departing from the scope and spirit of the invention. For example, in addition to the preferred and described embodiment, those skilled in the art will easily recognize other ways of achieving similar results in a non-concurrent fashion, allowing users to view the content individually and even offline; annotate and edit it; and then send it to other parties to view the annotations and edits; and even add some of their own. This sequential process can obviously support multiple rounds of revisions.
APPENDIX A Code Section
Code included for illustration purposes only. Language: Macromedia FLASH MX Actionscript Initialization process and loading of components and tool palettes; loading of content.
Scene 1 actions for frame 6 _global.KTZ_CLB_connect = function (ski) { //ski: el shoshkele a ver _global.KTZ__CLB_connection = new NetConnection ( ) ; KTZ_CLB_connection.onStatus = function (info) { KTZ_CLB_connectSO ( ) ; };
KTZ_CLB_connection. connect ("rtmp: //kratzer.unitedsites . com. ar/kratzer/"+skl, KTZJJSER) ; }; _global.KTZ_CLB_connectSO = function () { _global.KTZ_CLB_SOFrames = SharedObject. getRe ote ("frames", KTZ_CLB_connection.uri, true) ; KTZ_CLB_SOFrames.onSγnc = function (obj ) { //la primera vez solo me indica quese conecto _global.usedFrames = {}; for (var i in KTZ_CLB_SOFrames .data) { //delete KTZ_CLB_SOFrames .data [i] usedFrames [i . substr (5) ] = true; } KTZ_CLB_SOFrames . onSync = function (obj ) { for (var i in obj ) { if (obj [i] . code == "change" && obj [i] .name. indexOf ( "FRAME") == 0) { var n = obj [i] .name. substr (5) ; if (__level3._frameActual == n) { KTZ_CLB_connectToFrame(n, null); } usedFrames [n] = true;
__level3.KTZ movieController . contenedor ["£"+n] . gotoAndStop (3) ; } else if (obj [i] . code == "delete" && obj [i] .name. indexOf ( "FRAME") == 0) { var n = Numbe (obj [i] .name. substr (5) ) ; if (_level3._frameActual == n) { _level3. KTZ LIMPI ( ) ; KTZ_CLB_SOFrameActual . close ( ) ; delete KTZ_CLB_SOFrameActual; } delete usedFrames [n] ; if (n%5 == 0) { var ir = 2; } else { var ir = 1; }
_level3.KTZ movieController . contenedo ["f"+n] .gotoAndStop (ir) ; } } }; KTZ_CLB_SOFrames.changeFrame = function (frame, usr) { if (frame != _level3.KTZ movieMC._currentframe && usr ! =
KTZ_USER && _level3.KTZ movieController . free != true) { _level3.KTZ movieMC. gotoAndStop (frame) ; leve!3. KTZ movieController . numFrame = frame; _level3._frameActual = frame; _level3. KTZ LIMPIA ( ) ; //_root . KTZ MOSTRAR ( ) ; if (usedFrames [frame] == true) { KTZ_CLB_connectToFrame (_level3._frameActual, null) ; } else { _level3.processing._visible = 0; KTZ_CLB_SOFrameActual . close ( ) ; delete KTZ_CLB_SOFrameActual; } } }; _global . ContentFram.es = KTZ_CLB_SOFrames . data; //loadMovieNumC'Comunica. swf", 4) ; //_root . ConectaCha ( ) ; _root . ConectaGlobalNotes ( ) ; _root . KTZ SYSCARGO++; }; KTZ_CLB_SOFrames . connect (KTZ_CLB_connection) ; }; ConectaGlobalNotes = function () { _global.KTZ_CLB_SOGlobalNotes = SharedObject.getRemote ("GlobalNotes", KTZ_CLB_connection.uri, true) ; KTZ_CLB_SOGlobalNotes . onSync = function () { // esta es que se conecto _roo . ConectaLista ( ) ; KTZ_CLB_SOGlobalNotes.onSync = function (obj ) { for (var i in obj ) { if (obj [i] . code == "change") { _level3. globalNotes . Obj eto . note . text = KTZ_CLB_SOGlobalNotes. data. KTZobjTEXT; } } }; }; KTZ_CLB_SOGlobalNotes. connect (KTZ_CLB_connection) ; }; ConectaLista = function () { _global.KTZ_CLB_SOLista = SharedObject . getRemote ("lista", KTZ_CLB_connection.uri, false) ; KTZ_CLB_SOLista.onSync = function (obj ) { for (var i in obj ) { trace (obj [i] .code+" : "+obj [i] .name+" : "+obj [i] . oldValue) ; } for (var i in KTZ_CLB_S0Lista. data) { trace (i+"[] [] []"); } _root . ConectaChat ( ) ; KTZ_CLB_SOLista . onSync = function (obj ) { for (var i in obj ) { trace (obj [i] . code+" : "+obj [i] . name+" : "+obj [i] . oldValue) ; } } ; } ; KTZ_CLB_SOLista . connect (KTZ_CLB_connection) ; }; ConectaMouse = function (nombre, tipo) { //tipo:l otro usuario, 0 uno mismo } ConectaChat = function () { _global.KTZ_CLB_SOTemporal = SharedObject . getRemote ("Chat", KTZ_CLB_connection.uri, false) ; // va a controlar las posiciones de mouse, el frame actual, y el texto de chat KTZ_CLB_SOTemporal.onSync = function ( ) { // esta es que se conecto loadMovieNumC'Comunica.swf", 4) ; KTZ_CLB_SOTemporal.onSync = function ( ) { }; }; KTZ_CLB_SOTemporal . onChat = function (txt, usr) { // _global.KTZ_CLB_CHAT += ">"+usr+": "+txt+newline; // trace (">»" + _global.KTZ_CLB_CHAT) ; // // if (_global.KTZ_CLB_CHAT.lengt_ι>10000) { // var dif = _global .KTZ_CLB_CHAT. length-100000; // _global.KTZ_CLB_CHAT = _global.KTZ_CLB_CHAT. substr (dif) ; // } _global.KTZ_APP_CHAT(txt, usr); }; KTZ_CLB_SOTemporal. connect (KTZ_CLB_connection) ; }; _global . KTZ_CLB_connectToFrame = function (frame, rtn) { if ( !_level3._noVer) { _level3.processing._visible — 1 ; //rtn: es a que funcion llama despues de conectarse, se trata de un Objeto en donde fn es la funcion y args son los argumentos _global.KTZ_CLB_SOFrameActual = SharedObject .getRemote (frame, KTZ_CLB_connection.uri, true); KTZ_CLB_SOFrameActual.onSync = functio () { _level3.processing._visible = 0; _level3. KTZ MOSTRAR ( ) ; this . rtn. fn. apply (this .rtn. obj , this . rtn. args) ; KTZ_CLB_SOFrameActual . onSync = function (obj ) { for (var i in obj ) { if (obj [i] . code == "change") { _level3.KTZ MOSTRAR_ϋNO (obj [i] .name) ; } else if (obj [i] . code == "delete") { _level3.KTZ LIMPIAJJNO (obj [i] .name) ; } } }; }; KTZ_CLB_SOFrameActual. frame = frame; KTZ_CLB_SOFrameActual . rtn = rtn; KTZ_CLB_SOFrameActual. connect (KTZ_CLB_connection) ; } }; actions for frame 6 loadVarsObj = new LoadVarsO; KTZ SAVE = function () { _root . tmpXML = new XML ( ) ; _root.tmpXML = _root .object2XML ( ) ; loadVarsObj . texto = escape (_root . tmpXML . toString ( ) ) ; }; KTZ SEND = function () { loadVarsObj . send (_root. KTZ path+"test_kratzer .asp", "_blank",
"POST") ; delete _root. mpXML; }; KTZ_CHK_LOAD = function () { if (_root.KTZ SYSCARGO == 2) { clearlnterval (_root .KTZ_SETINTERVAL) ; _root . KTZ^ ONLOAD ( ) ; } }; ConectaChat = function () { _global.KTZ_CLB_SOTemporal = SharedObject . getRemote ("Chat", KTZ_CLB_connection.uri, false) ; // va a controlar las posiciones de mouse, el frame actual, y el texto de chat KTZ_CLB_SOTemporal.onSync = function ( ) { // esta es que se conecto loadMovieNum( "Comunica . swf" , 4) ; KTZ_CLB_SOTemporal.onSync = function ( ) { }; }; KTZ_CLB_SOTemporal . onChat = function (txt, usr) { // _global.KTZ_CLB_CHAT += ">"+usr+": "+txt+newline; // trace(">»" + _global .KTZ_CLB_CHAT) ; // // if (_global.KTZ_CLB_CHAT.length>10000) { // var dif = _global .KTZ_CLB_CHAT. length-100000; // _global . KTZ_CLB_CHAT = _global . KTZ_CLB_CHAT . substr (dif) ; // } _global .KTZ_APP_CHAT (txt, usr) ; }; KTZ_CLB_SOTemporal . connect (KTZ_CLB_connection) ; }; _global.KTZ_CLB_connectToFrame = function (frame, rtn) { if ( !_level3._noVer) { _level3.processing._visible = 1; //rtn: es a que funcion llama despues de conectarse, se trata de un Objeto en donde fn es la funcion y args son los argumentos ^global . KTZ_CLB_SOFrameActual = SharedObject . getRemote (frame, KTZ_CLB_connection.uri, true) ; KTZ_CLB_SOFrameActual . onSync = function ( ) { _level3.processing._visible = 0; _level3. KTZ MOSTRAR ( ) ; this .rtn. fn. apply (this .rtn. obj , this . rtn. args) ; KTZ_CLB_SOFrameActual.onSync = function (obj ) { for (var i in obj ) { if (obj [i] . code == "change") { _level3.KTZ MOSTRARJJNO (obj [i] .name) ; } else if (obj [i] . code == "delete") { _level3.KTZ LIMPIAJJNO (obj [i] .name) ; } } }; }; KTZ_CLB_SOFrameActual . frame = frame; KTZ_CLB_SOFrameActual . rtn = rtn; KTZ_CLB_SOFrameActual . connect (KTZ_CLB_connection) ; } }; actions for frame 6 loadVarsObj = new LoadVars ( ) ; KTZ SAVE = function () { _root . tmpXML = new XML ( ) ; _root . tmpXML = _roo . obj ect2XML ( ) ; loadVarsObj .texto = escape (_root. tmpXML. toString ()) ; }; KTZ SEND = function () { loadVarsObj . send (_root. KTZ path+"test_kratzer . asp", "_blank",
"POST") ; delete _root. tmpXML; }; KTZ_CHK_LOAD = function () { if (_root.KTZ SYSCARGO == 2) { clearlnterval (_root .KTZ_SETINTERVAL) ; _root . KTZ ONLOAD ( ) ; } }; KTZ LOAD = function ( ) { // root . XML2obj ect ( roo - KTZ xml ) ; _root . KTZ_SETINTERVAL = setlnterval (KTZ_CHK_LOAD, 100 ) ; } ; KTZ ONLOAD = function () { trace ("aaa") ; _level3._root.attachPaletas () ; loadMovieNum(_root.KTZ path+_root .KTZ ski, 2) ; _root .preload_L2 = setlnterval (preload2, 100); _root. loading. texto = "Gathering Shoshkele Info"; _root. loading. barra.L = _level2; _level3._visible = 1; ob = KTZ_CLB_SOGlobalNotes.data _level3._root.mostrarKTZGNotes ("Note", " KTZGlobal_Note", 4,
0x000000, 20, 50, 0, 0,0, 700, 550, 85, ob.KTZobjTEXT) ; _level3._root .KTZ checkCliks . construyendo = 0; _level3._root . KTZ paletaHerra . onChangeNum ( ) ; // elegir la herramienta default KTZ_setDisable() ; }; KTZ RELOAD = function () { _level3._root .KTZ reloj . reloj . stop ( ) ; unloadMovieNum(2) ; loadMovieNum(_root.KTZ path+_root .KTZ ski, 2) ; _root . reload_L2 = setlnterval (reload_2, 100); }; function reload_2() { _level2._visible = 0; var amount = Math. ound ( (_level2.getBytesLoaded ( ) /_level2. getBytesTotal () )*100) ; if (amount == 100) { clearlnterval (_root. reload_L2) ; _level2._visible = 1; _level3._root.KTZ reloj .reloj .play () ; } } actions for frame 6 //#include "parser2.as" actions for frame 6 // initSKL_TML es si tiene timeline // para saber cual es la movie que hay que mostrar y habilitar timeline _global . initSKL_TML = function (movie) { _level3._root.KTZ MODE = "TML"; _level3._root .KTZ movieMC = movie; //aca debe llevar al frame actual if (KTZ_CLB_SOTemporal. data. frameActual != null && KTZ_CLB_SOTemporal. data. frameActual != undefined) { movie . gotoAndStop (KTZ_CLB_SOTemporal . data . frameActual) ; _level3.KTZ movieController .numFrame = frame; _level3._frameActual = frame; _level3. KTZ LIMPIA ( ) ; //_root . KTZ MOSTRAR ( ) ; if (usedFrames [frame] == true) { KTZ_CLB_connectToFrame (_level3._frameActual, null) ; } else { _level3.processing._visible = 0; KTZ_CLB_SOFrameActual . close ( ) ; delete KTZ_CLB_SOFrameActual; } } if ( !_level3._root.controllerExists) { _level3._root . attachController ( ) ; KTZ_setEnable() ; } }; _global . initSKL_KEY = function (key) { global . keyActive = key; _level3._root.KTZ MODE = "KEY"; if (_level3._root.controllerExists) {
_level3._roo . KTZ paletaHerra . openPal (_level3._root . KTZ movieController) _level3._root . KTZ movieController . editEnable (true) ; } else { _level3._root . attachController ( ) ; _level3._root . KTZ movieController . inicio ( ) ; } }; _global.updateSKL_KEY_TIMER = function () { _level3._root . KTZ movieController . updateTimer (keyActive . timer) ; }; _global . endSKL_KEY = function ( ) { _level3._root .KTZ movieController .editEnable (false) ; KTZ_setDisable () ; }; _global.KTZ_setEnable = function () { _global . paletteMSG . broadcastMessage ( "enableTools" ) ; _level3._root . itemsMSG.broadcastMessage ("enableTools") ; }; _global .KTZ_setDisable = function () { _global. paletteMSG.broadcastMessage ("disableTools") ; _level3._root. itemsMSG. broadcastMessage ("disableTools") ; }; actions for frame 6 Stage. scaleMode = "noScale"; // sacar todo esto cuando cargue desde un asp!!! /* _root.KTZ path = _url . substring (0, _url . lastlndexOf ("/") + 1) ; _root.KTZ ski = "MOCKDPS/skl_prueba_KEY.swf"; _root.KTZ fondo = "FONDOS/back_imdb. JPG"; root. KTZ xml = "baseXML2.xml"; */ // //if (typeof (MMSave) == "function") { _root.KTZ path = _url . substring (0, _url . lastlndexOf ("/") + 1) ; _root.KTZ ski = "MOCKUPS/video. swf"; _root.KTZ fondo = mull//"FONDOS/back_imdb. JPG"; root .KTZ xml = "baseXML2.xml"; //} KTZ_CLB_connect (_root .KTZ ski) _global.paletteMSG = new Object (); ASBroadcaster . initialize (_global .paletteMSG) ; // orden de carga: interfase, shoshkele, fdo. loadMovieNum(_root.KTZ path + "INTERFACE/interfase_key. swf", 3) ; _root .preload_L3 = setlnterval (preload3, 100); _root. loading. texto = "Building Interfase"; _root. loading. barra.L = _level3; _root . loading. barra . onEnterFra e = function () { var amount = Math. round ( (this .L. getBytesLoaded ( ) / this. L. getBytesTotal () ) * 100); this ._width = amount; }; function preloadl(){ _levell ._visible = 0; _root. loading. barra.L = _levell; var amount = Math. round ( (_levell . getBytesLoaded ( ) / _levell. getBytesTotal () ) * 100); if (amount == 100 || _root . skipFondo) { clearlnterval (_root .preload_Ll) ; _levell ._visible = 1; delete _root . loading .barra . onEnterFrame; _root . loading. texto = ""; _root. loading. _visible = 0; } } function preload2 ( ) { _level2._visible = 0; _root. loading. barra.L = _level2; var amount = Math. round ( (_level2.getBytesLoaded ( ) / _level2. getBytesTotal () ) * 100); if (amount == 100) { clearlnterval (preload_L2) ; _level2._visible = 1; _level3._root.KTZ reloj ._visible = true; ob = ContentFrames["globalObjects"] [" ELEM KTZGlobal_level2"] ; _level3.setKTZGLevel2 (ob.KTZid, ob.KTZcontenedorX, ob.KTZcontenedorY, ob.KTZobj SCALE) ; if (_root.KTZ fondo == undefined | | _root.KTZ fondo == "") { _root . skipFondo = true; preload_Ll = setlnterval (preloadl, 50); } else { _root. skipFondo = false; loadMovieNum(_root.KTZ path + _root.KTZ fondo, 1) ; preload_Ll = setlnterval (preloadl, 50); _root. loading. texto = "Building Background"; _root. loading. barra.L = _levell; } initSKL_TML (_level2 ) } } function preload3 ( ) { _level3._visible = 0; _root. loading. barra.L = _level3; var amount = Math. round ( (_level3. getBytesLoaded ( ) / _level3. getBytesTotal () ) * 100); if (amount == 100) { clearlnterval (_root .preload_L3) ; _level3._root.KTZ xml = _level0._roo .KTZ xml; _root . KTZ LOAD ( ) ; } } stop ( ) ; actions for Symbol 548 on (release) { _global.KTZ_USER = usr gotoAndPlay (2) ; } actions for frame 1 stop() ; actions for frame 7 stop ( ) ; Symbol Definition (s)
Interface: content manipulation
Scene 1 actions for process onClipEvent (load) { this ._visible = 0 } actions for frame 1 KTZ LIMPIA = function () { for (var i in this) { if (i.indexOf (" KTZObject_") == 0 && i != "KTZ paletaMC") { // _root . removeMovieClip (_root [i] ) ; root [i] .matarse ( ) ;
}; KTZ LIMPIAJJNO = function (objNombre) { trace ("::::: " + objNombre. substr (6) ) ; _root [objNombre . substr ( 6) ] .matarse ( ) ; }; KTZ MOSTRAR = function () { if ( !_root._noVer) { for (var i in KTZ_CLB_SOFrameActual .data) { if (i. indexOf (" ELEM") == 0) { var nombreOB = i. substring (6) ; ind = KTZ_CLB_SOFrameActual.data[i] ; mostrarKTZObject (ind.KTZtipo, ind.KTZ_color, ind.KTZnom, ind.KTZcontenedorX, ind.KTZcontenedorY, ind.KTZcontenedorRota, ind.KTZobjTOP, ind.KTZobjlZQ, ind.KTZobjDER, ind.KTZobjINF, ind, ind.KTZid, ind. KTZ obj TEXT) ; } } } }; KTZ MOSTRARJJNO = function (objNombre) { if ( !_root ._noVer) { ind = KTZ_CLB_SOFrameActual. data [objNombre] ; mostrarKTZObject (ind.KTZtipo, ind.KTZ_color, ind.KTZnom, ind.KTZcontenedorX, ind.KTZcontenedorY, ind.KTZcontenedorRota, ind.KTZobjTOP, ind.KTZobjlZQ, ind.KTZobjDER, ind.KTZobjINF, ind, ind.KTZid, ind. KTZobj TEXT) ; } }; text = " ELEM_EL REΞTO"; KTZ BORRA = function () { obj = _root[_root. itemsMSG. EDITA] ; delete obj.indice; trace ("»>»»»»»»"+" ELEM"+obj ._<) ; delete KTZ_CLB_SOFrameActual.data [" ELEM"+obj ._name] ; var e = false; for (var i in KTZ_CLB_SOFrameActual .data) { trace (KTZ_CLB_SOFrameActual. data [i] + ":" + i) ; if (i.indexOfC ELEM") == 0 && KTZ_CLB_SOFrameActual .data [i] != null && KTZ_CLB_SOFrameActual.data[i] != undefined) { e = true; } } trace (">»»»»»»»"+e) ; if (!e) { trace ("»»»»»»»>"+"FRAME"-l-_root ._frameActual) ; delete ContentFram.es ["FRAME"+_root ._frameActual] ; delete _global .usedFrames [_root._frameActual] ; if (_root ._£ ameActual%5 == 0) { var ir = 2; } else { var ir = 1; } else { var ir = 3; }
_roo .KTZ movieController. contenedor ["f"+_root._frameActual] . gotoAndStop (ir
); obj .matarse ( ) ; _root. itemsMSG. EDITA = null; }; KTZ SAVE = function () { _levelO._root.KTZ SAVE() ; }; KTZ SEND = function () { _levelO._root.KTZ SENDO ; }; KTZ RELOAD = function () { levelO . root . KTZ RELOAD ( ) ; }; actions for frame 1 MovieClip. prototype. createKTZObject = functio (tipo, posx, posy, ancho, alto, col) { col = _root.KTZ paletaMC.selectedColor.getRGB () ; if (ContentFrames ["FRAME"+_root._frameActual] == undefined || ContentFram.es ["FRAME"+_root._frameActual] == null) { ContentFrames ["FRAME"+_root._frameActual] = true; _global .usedFrames [_root._frameActual] = true; } if (KTZ_CLB_SOFrameActual. frame != _root._frameActual) { KTZ_CLB_connectToFrame (_root._frameActual, {obj :this, fn: createKTZ0bject2, args : [tipo, posx, posy, ancho, alto, col] } ) ; } else { this . createKTZ0bject2 (tipo, posx, posy, ancho, alto, col) } }; MovieClip. prototype. createKTZ0bject2 = function (tipo, posx, posy, ancho, alto, col) { var id = ++ContentFrames . TKZOID;
//ContentFrames ["FRAME"+_root._f ameActual] [" ELEM"+" KTZOb ect_"+id] = new Object ( ) ; KTZ_CLB_SOFrameActual.data[" ELEM"+" KTZObject_"+id] = new
Object ()
_root . TZ movieController . contenedor [ "f"+_root ._frameActual] . gotoAndStop ( 3 ) var ob = this . attachMovie ("KTZ BaseObject", " KTZObject_"+id, id+1000) ; _root. itemsMSG. addListener (ob) ; ob.tipo = tipo; ob._x = posx; ob._y = posy; ob.T_width = ancho; ob.T_height = alto; ob.T_color = col; ob.indice =
KTZ_CLB_SOFrameActual.data[" ELEM"+" KTZObject_"+id] //ContentFrames ["FRAME
"+_root._frameActual] [" ELEM"+" KTZObject_"+id] ; ob. indice.KTZid = id; ob.indice. KTZnom = " KTZ0bject_"+id; ob. indice .KTZtipo = tipo; ob.indice. KTZ_color = col; ob. indice .KTZcontenedorX = posx; ob. indice .KTZcontenedorY = posy; ob. indice. KTZcontenedorRota = 0; ob. indice. KTZobj TOP = 0; ob. indice. KTZobjIZQ = 0; ob. indice. KTZobj DER = ancho; ob.indice. KTZobj INF = alto; //ob.T color. setRGB (col) ; ob._enabled = true; // esto no me gusta... ob . gotoAndPlay (2 ) ; }; _root. createEmptyMovieClip ("KTZ checkCliks", 10) ; KTZ checkCliks . onMouseDown = function ( ) { this. hit = false; for (var j = _root .paletas . length-1; j>=0; j — ) { if (_root .paletas [j ] .hitTest (_xmouse, _ymouse, false) && _root. paletas [j ] ._visible) { this. hit = true; j = -5; break; } } // ( _root.KTZ paletaHerra. itTest (_xmouse, _ymouse, false)) ? this. hit = true : null; if (! this. hit && this . construyendo>0) { // chequear si NO es resaltador o flecha if (this .construyendo != 5 && this . construyendo != 6) { this.lineaOn = true; this.lp = _root.attachMovie("KTZ ObjectLine",
"KTZ LineaPunteada", 110000) ; this.lp._x = _root ._xmouse; this.lp._y = _root ._ymouse; this . onEnterFrame = function () { this . lp._xscale = (_root._xmouse-this .TMPiniX) ; this.lp._yscale = (_root ._ymouse-this . TMPiniY) ; }; this. TMPiniX = _root ._xmouse; this. TMPiniY = _root ._ymouse; } else { _root. createKTZObject (this . construyendo, 0, 0, 10, 10, 0x666666) ; } } /* // esta es la parte de soltar el edit...pero no else if (Ithis.hit && this . construyendo == 0 && _root. itemsMSG. EDITA !=null) { _root [_root. itemsMSG. EDITA] .deseditarO ; _root. itemsMSG. EDITA = null; }*/ }; KTZ checkCliks . onMouseUp = function () { if (Ithis.hit) { if (this . construyendo>0) { if (this . construyendo == 5 | | this . construyendo == 6) { this . construyendo = 0; _root . KTZ paletaHerra . onChangeNum ( ) ; } else { this.lineaOn = false; delete this . onEnterFrame; removeMovieClip (_root . KTZ LineaPunteada) ; if (_root._xmouse>this. TMPiniX) { var TR = _root ._xmouse; var TL = this. TMPiniX; } else { var TR = this .TMPiniX; var TL = _root ,_xmouse; } if (_root._ymouse>this. TMPiniY) { var TD = _root ._ymouse; var TU = this. TMPiniY; } else { var TD = this .TMPiniY; var TU = _root ._ymouse; } var W = TR-TL; var H = TD-TU; (W<10) ? W=50 : null; (H<10) ? H=50 : null; root . createKTZObjec (this . construyendo, TL, TU, W, H,
0x666666) if (this . construyendo == 4) { this . construyendo = 0; _root . KTZ paletaHerra . onChangeNum ( ) ; } } } } else { this.lineaOn = false; delete this . onEnterFrame; removeMovieClip (_root . KTZ LineaPunteada) ; } } ; itemsMSG = new Object (); ASBroadcaster . initialize (this . itemsMSG) ; //broadcastMessage ("freeze") ; //addListener (this ["lanza"+this .players [i] ] ) _global.calculaDist = function (xl, yl, x2, y2) { return Math.sqrt ( (x2-xl) * (x2-xl) + (y2-yl) * (y2-yl) ) ; }; _global._rtd = 180/Math. PI; /// MovieClip. prototype.mostrarKTZObject = function (tipo, col, nom, posx, posy, rot, top, izq, der, inf, indice, id, tex) { var ob = this . attachMovie ("KTZ BaseObject", " KTZObject_"+id, id+1000) ; _root. itemsMSG. addListener (ob) ; ob.tipo = tipo; ob._x = posx; ob._y = posy; ob._rotation = rot; ob.reconstruye = 1; ob.R_top = top; ob.R_izq = izq; ob.R_der = der; ob.R_inf = inf; ob.T_color = col; ob.indice = indice; ob.R_text = tex; //ob.T color. setRGB (col) ; (_root.KTZ MODE == "TML") ? ob._enabled=true : null; ob . gotoAndPlay (2 ) ; }; MovieClip. prototype.mostrarKTZGNotes = function (id, nom, tipo, color, posx, posy, rota, TOP, IZQ, DER, INF, ALPHA, TEXT) { padre = this . createE ptyMovieClip ("globalNotes", 1000005); padre. closed = true; padre . onEnterFrame = function ( ) { _root . cerrarme (this) ; }; ob = padre. attachMovie ("KTZ ObjectTipe"+tipo, "Objeto", 1); ob.R_x = posx; ob.R_y = posy; ob.R_width = der; ob . R_height = inf; ob.R_color = color; ob.R_text = text; ob.R_alph,a = alpha; ob.R_global = true; padre. indice = KTZ_CLB_SOGlobalNotes . data /*padre. indice. KTZid = id; padre. indice. KTZnom = " KTZGlobal_Note"; padre. indice. KTZtipo = tipo; padre. indice. KTZ_color = col; padre. indice. KTZcontenedorX = posx; padre .indice. KTZcontenedorY = posy; padre . indice. KTZcontenedorRota = 0; padre. indice. KTZobjTOP = 0; padre. indice. KTZobj IZQ = 0; padre. indice. KTZobj DER = der; padre. indice. KTZobj INF = inf; padre. indice. KTZobjALPHA = alpha;*/ padre. indice. KTZobjTEXT = text; }; MovieClip. prototype. setKTZGLevel2 = function (id, posx, posy, scale) { _level2._x = posx; _level2._y = posy; _level2._xscale = _level2. yscale=scale; _root . KTZ paletaControl . inicio ( ) ; padre = this . createE ptyMovieClip ("levelHolder", 1000006); padre. indice =
ContentFrames ["globalObjects"] [" ELEM KTZGlobal_level2"] ; padre. indice. KTZid = id; padre. indice. KTZno = " KTZGlobal_level2"; padre. indice. KTZcontenedorX = posx; padre. indice. KTZcontenedorY = posy; padre. indice. KTZobj SCALE = scale; }; actions for frame 1 cerrarme = function (pal) { if (pal. closed) { _root.KTZ paletaHerra. closePal (pal) ; pal. ready = true; } else { _root.KTZ paletaHerra. openPal (pal) ; pal. ready = true; } (pal. ready) ? delete pal . onEnterFrame : null; }; _root. paletitas = new Array (); _root . paletitas . push ( {movie : "KTZ paletaColor" , name : "KTZ paletaMC" , posX:300, posY:300, closed: true} ) ; _root. paletitas .push( {movie: "KTZ paletaOpciones", name:"KTZ paletaOpciones", posX:150, posY:300, closed: true} ) ; _root .paletitas .push ( {movie: "KTZ paletaControl", name:"KTZ paletaControl", posX:75, posY:400, closed: true} ) ; _root .paletitas .push ( {movie: "KTZ reloj ", name: "KTZ reloj ", posX: 664, posY:379, closed: false} ) ; _root . paletitas . pus ( {movie : "KTZ paletaHerra" , name:"KTZ paletaHerra", posX:1.9, posY:3, closed:null} ) ; function attachPaletas ( ) { _root .paletas = new Array (); depth = 1000009; for (var i = _root .paletitas . length; i>=0; i— ) { pal = _root. attachMovie (_root .paletitas [i] .movie, _root .paletitas [i] .name, ++depth) ; pal._x = _root .paletitas [i] .posx; pal._y = _root .paletitas [i] .posy; _root .paletas .push (pal) ; _global. paletteMSG. addListener (pal) ; _root .highest = pal; if (_root. paletitas [i] .name != "KTZ paletaHerra") { pal. closed = _root .paletitas [i] . closed; pal . onEnterFrame = function ( ) { _root. cerrarme (this) ; }; } } _root. attachMovie ("KTZ borrador", "KTZ borradorMC", 100+depth) ; KTZ borradorMC._x = -100; KTZ borradorMC._y = -100; ktz reloj . reloj .play ( ) ; delete _root .paletitas ; } _root . controllerExists = false; function attachController () { if (KTZ MODE == "TML") { attachear = {movie: "KTZ paletaMovieController", name: "KTZ movieController", posX:399, posY:490}; removeMovieClip (_root . KTZ reloj ) ; _root. controllerExists = true; KTZ_setEnable() ; } else if (KTZ MODE == "KEY") { attachear = {movie: "KTZ paletaKeyController", name: "KTZ movieController", posX:1.9, posY:3}; root . controllerExists = true; } maxDepth = _root .highest . getDepth () +1; pal = _root .attachMovie (attachear.movie, attachear .name, maxDepth); pal._x = 399; pal._y = 490; _roo .paletas . ush (pal) ; _root .highest = pal; delete pal; delete attachear; } stop ( ) ; actions for frame 1 keyListener = new Object (); keyListener .onKeyDown = function () { trace ( Selection. getFocus () ) ; if ( !_root .editText && Selection. getFocus ( ) !="_level4.chatBox.txtBox") { if (Key. isDown (Key. DELETEKEY) || Key. isDown (Key. BACKSPACE) ) { KTZ BORRAO ; } if (Key.isDown(86) ) { // V —> select _root.KTZ checkCliks . construyendo = 0; _root . KTZ paletaHerra . onChangeNum ( ) ; } if (Key.isDown(84) ) { // T —> text _root.KTZ checkCliks . construyendo = 4; _root . KTZ paletaHerra . onChangeNum ( ) ; } if (Key.isDown(70) ) { // F —> filledObject _root.KTZ checkCliks . construyendo = 2; _root . KTZ paletaHerra . onChangeNum ( ) ; } if (Key.isDown(lδ) ) { // SHIFT para el movimiento en x e y del level _root . s iftDown = true; KTZ_setEnable() ; } } }; keyListener . onKeyUp = function () { _root. shiftDown = false; }; Key. addListener (keyListener) ; Symbol Definition ( s )

Claims

What Is Claimed:
1. A method for achieving collaboration among a plurality of users in the visualization, creation analysis and editing of multimedia content, the users having access to a computer network via client computers, comprising the steps of: providing a computer on the network which acts as a collaboration server; at the server, generating executable code which is effective, when run on a client computer, to create a user interface including: a first component operable by a user to control selective, linear and nonlinear playback of the content; a second component operable by a user for linear and non-linear multimedia editing and annotation of content; a third component permitting real time and time-shifted interaction among users; and a fourth component for storage of edited or annotated content in memory accessible through the server without overwriting the original content; and conveying the executable code to a client computer for execution therein so that content may be shared by plural users for visualization, analysis and editing.
2. The method of claim 1 wherein the content is one of text, presentation slides, vectorial animation, frame-based animation, and video.
3. The method of claim 2 wherein the content is video embedded in a Macromedia Flash or Shockwave object.
4. The method of claim 1 wherein the first component includes a timeline based tool.
5. The method of claim 1 wherein the executable code further includes a fifth component permitting upload of an object from one of the client computers to memory accessible through the network.
6. The method in accordance with any preceding claim wherein the network is the Internet, users communicate with the server via a conventional web browser, and the executable code is embedded in a web page sent to the user.
7. A method for achieving collaboration among a plurality of users in the visualization, creation analysis and editing of multimedia content, the users having access to a computer network via client computers, comprising the steps of: providing a computer on the network which acts as a collaboration server; at the server, generating executable code which is effective, when run on a client computer, to create a user interface including: a first component operable by a user to control selective, linear and non-linear playback of the content; a second component operable by a user for linear and non-linear multimedia editing and annotation of content, the output of the second component being placed in a transparent layer above the content; and a third component for storage of edited or annotated content in memory accessible through the server without overwriting the original content; and conveying the executable code to a client computer for execution therein so that content may be shared by plural users for visualization, analysis and editing.
8. The method of claim 7 further comprising a fourth component permitting real time and time-shifted interaction among users.
9. The method of claim 8 wherein the executable code further includes a fifth component permitting upload of an object from one of the client computers to memory accessible through the network.
10. The method of claim 7 wherein the content is one of text, presentation slides, vectorial animation, frame-based animation, and video.
11. The method of claim 7 wherein the content is video embedded in a Macromedia Flash or Shockwave object.
12. The method of claim 7 wherein the first component includes a timeline based tool.
13. The method in accordance with any one of claims 7-12 wherein the network is the Internet, users communicate with the server via a conventional web browser, and the executable code is embedded in a web page sent to the user.
14. In a system for achieving collaboration among a plurality of users in the visualization, creation analysis and editing of multimedia content, the users having access to a computer network via client computers, the system comprising: a computer on the network which acts as a collaboration server; the server being programmed to generate executable code which is effective, when run on a client computer, to create a user interface including: a first component operable by a user to control selective, linear and nonlinear playback of the content; a second component operable by a user for linear and non-linear multimedia editing and annotation of content; a third component permitting real time and time-shifted interaction among users; and a fourth component for storage of edited or annotated content in memory accessible through the server without overwriting the original content; and a transmitter acting over the network to send the executable code to a client computer for execution therein so that content may be shared by plural users for visualization, analysis and editing.
15. The system of claim 14 wherein the content is one of text, presentation slides, vectorial animation, frame-based animation, and video.
16. The system of claim 15 wherein the content is video embedded in a Macromedia Flash or Shockwave object.
17. The system of claim 14 wherein the first component includes a timeline based tool.
18. The system of claim 14 wherein the executable code further includes a fifth component permitting upload of an object from one of the client computers to memory accessible through the network.
19. The method in accordance with any of claims 14-18 wherein the network is the Internet, users communicate with the server via a conventional web browser, and the executable code is embedded in a web page sent to the user.
20. In a system for achieving collaboration among a plurality of users in the visualization, creation analysis and editing of multimedia content, the users having access to a computer network via client computers, the system comprising: a computer on the network which acts as a collaboration server; the server being programmed to generate executable code which is effective, when run on a client computer, to create a user interface including: a first component operable by a user to control selective, linear and non-linear playback of the content; a second component operable by a user for linear and non-linear multimedia editing and annotation of content, the output of the second component being placed in a transparent layer above the content; and a third component for storage of edited or annotated content in memory accessible through the server without overwriting the original content; and a transmitter acting over the network to convey the executable code to a client computer for execution therein so that content may be shared by plural users for visualization, analysis and editing.
21. The system of claim 20 further comprising a fourth component permitting real time and time-shifted interaction among users.
22. The system of claim 21 wherein the executable code further includes a fifth component permitting upload of an object from one of the client computers to memory accessible through the network.
23. The system of claim 20 wherein the content is one of text, presentation slides, vectorial animation, frame-based animation, and video.
24. The system of claim 20 wherein the content is video embedded in a Macromedia Flash or Shockwave object.
25. The system of claim 20 wherein the first component includes a timeline based tool.
26. The system in accordance with any one of claims 7-25 wherein the network is the Internet, users communicate with the server via a conventional web browser, and the executable code is embedded in a web page sent to the user.
PCT/US2004/034905 2003-10-21 2004-10-21 Method and system for audiovisual remote collaboration WO2005043311A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51352603P 2003-10-21 2003-10-21
US60/513,526 2003-10-21

Publications (2)

Publication Number Publication Date
WO2005043311A2 true WO2005043311A2 (en) 2005-05-12
WO2005043311A3 WO2005043311A3 (en) 2006-06-29

Family

ID=34549290

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/034905 WO2005043311A2 (en) 2003-10-21 2004-10-21 Method and system for audiovisual remote collaboration

Country Status (1)

Country Link
WO (1) WO2005043311A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2131363A1 (en) 2008-06-06 2009-12-09 NTT DoCoMo, Inc. Video editing system, video editing server and communication terminal

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5600775A (en) * 1994-08-26 1997-02-04 Emotion, Inc. Method and apparatus for annotating full motion video and other indexed data structures
US6237025B1 (en) * 1993-10-01 2001-05-22 Collaboration Properties, Inc. Multimedia collaboration system
US20020145622A1 (en) * 2001-04-09 2002-10-10 International Business Machines Corporation Proxy content editing system
US6525747B1 (en) * 1999-08-02 2003-02-25 Amazon.Com, Inc. Method and system for conducting a discussion relating to an item
US6633918B2 (en) * 1998-10-06 2003-10-14 Realnetworks, Inc. System and method for providing random access to a multimedia object over a network
US6760885B1 (en) * 2000-06-15 2004-07-06 Microsoft Corporation System and method for using a standard composition environment as the composition space for video image editing

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6237025B1 (en) * 1993-10-01 2001-05-22 Collaboration Properties, Inc. Multimedia collaboration system
US5600775A (en) * 1994-08-26 1997-02-04 Emotion, Inc. Method and apparatus for annotating full motion video and other indexed data structures
US6633918B2 (en) * 1998-10-06 2003-10-14 Realnetworks, Inc. System and method for providing random access to a multimedia object over a network
US6525747B1 (en) * 1999-08-02 2003-02-25 Amazon.Com, Inc. Method and system for conducting a discussion relating to an item
US6760885B1 (en) * 2000-06-15 2004-07-06 Microsoft Corporation System and method for using a standard composition environment as the composition space for video image editing
US20020145622A1 (en) * 2001-04-09 2002-10-10 International Business Machines Corporation Proxy content editing system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2131363A1 (en) 2008-06-06 2009-12-09 NTT DoCoMo, Inc. Video editing system, video editing server and communication terminal
US8380047B2 (en) 2008-06-06 2013-02-19 Ntt Docomo, Inc. Video editing system, video editing server and communication terminal

Also Published As

Publication number Publication date
WO2005043311A3 (en) 2006-06-29

Similar Documents

Publication Publication Date Title
AU2005225130B2 (en) Management and use of data in a computer-generated document
Zaagsma On digital history
US10956874B2 (en) Multimedia calendar
US20070130177A1 (en) Media management system
US20020124048A1 (en) Web based interactive multimedia story authoring system and method
US20070198534A1 (en) System and method to create a collaborative web-based multimedia layered platform
KR20070006905A (en) A media package and a system and method for managing a media package
WO2005043401A9 (en) Sharing multimedia collection
US20090248393A1 (en) User translated sites after provisioning
US6539406B1 (en) Method and apparatus to create virtual back space on an electronic document page, or an electronic document element contained therein, and to access, manipulate and transfer information thereon
WO2018223229A1 (en) System and method for displaying an asset of an interactive electronic technical publication synchronously in a plurality of extended reality display devices
US10120855B2 (en) Consolidation of web contents between web content management systems and digital asset management systems
WO2015031864A1 (en) System and method for automatically attaching a tag and highlight in a single action
WO2009158664A2 (en) Library description of the user interface for federated search results
US7519617B2 (en) Dynamic personalized information organizer
US20070276852A1 (en) Downloading portions of media files
US7085770B2 (en) Method and system for generating a file containing graphical displays from content stored on a computing network location
US20120317171A1 (en) System and Method for Sharing Web Contents for Building Rich Internet Applications
US8296647B1 (en) Reviewing and editing word processing documents
Hu Multimedia mapping on the Internet using commercial APIs
Allen Palm webOS: The Insider's Guide to Developing Applications in JavaScript using the Palm Mojo™ Framework
WO2005043311A2 (en) Method and system for audiovisual remote collaboration
Gaines Supporting Collaboration through Multimedia Digital Document Archives
WO2003052555A2 (en) On line presentation software
Ryder et al. Adaptive crowd behaviour to aid real-time rendering of a cultural heritage environment

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
122 Ep: pct application non-entry in european phase