Methods, apparatus, and systems for on-line seminars
Claim Score by NHIP
Abstract
Methods, apparatus, and systems are provided for on-line seminars over a network. A client receives sets of program code that perform operations requested by a presenter. A stream is transmitted from a server to the client for the presentation. The server detects the operations requested by the presenter and pushes an event that indicates the requested operation into the stream. The client receives the event, selects a set of program codes based on information in the pushed event, and executes the selected set of program code in synchronization with the at least one stream.

Term
Term ended
Projected expiry passed 11 February 2023, 3.6 years ago.
- Priority
- Filed
- Published
- Projected expiry
- Today
21 claims: 3 independent, 18 dependent
- 1A method of synchronizing progress of a presentation running between a server and a client, wherein the server transmits at least one stream for the presentation, said method comprising:identifying an event that is pushed from the server in response to an operation requested by a presenter during the presentation;interpreting the event at the client to determine a set of program code called by the event, wherein the set of program code performs the operation requested by the presenter;and executing the called set of program code in synchronization with the at least one stream.
- 11A method of synchronizing progress of a presentation running between a server and a client, said method comprising:sending to the client sets of program code that perform operations requested by a presenter;transmitting at least one stream to the client for the presentation;detecting at the server at least one of the operations requested by the presenter;pushing from the server into the at least one stream an event that indicates the requested operation;selecting one of the sets of program codes based on information in the pushed event, wherein selected set of program code performs the requested operation;and executing the selected set of program code in synchronization with the at least one stream.
- 15Broadest claimClaim Score 86, broad(NHIP)A system for providing a presentation, comprising:a first processor for encoding content for the presentation into at least one stream, detecting an operation requested by the at least one presenter, and inserting an event into the at least one stream indicating the requested operation;and a second processor for transmitting the at least one stream to a client and pushing the event in the at least one stream to the client.
Independent claims3
75 paragraphs in 6 sections, as filed
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional Patent Application No. 60/354,944, entitled “METHODS, APPARATUS, AND SYSTEMS FOR ON-LINE SEMINARS,” filed on Feb. 11, 2002, the disclosure of which is expressly incorporated herein by reference in its entirety.
FIELD OF THE INVENTION
[0002] The present invention relates to electronic learning and, more particularly, it relates to presentations or seminars provided over a network.
BACKGROUND OF THE INVENTION
[0003] Delivering information, such as technical information, quickly and cost-effectively to a worldwide audience is a challenge faced by many organizations. Typically, an organization provides on-site seminars and field training programs to deliver information. For example, an organization may send a group of instructors around various sites to conduct training.
[0004] Unfortunately, training with on-site seminars and field programs is costly and inefficient. On-site seminars and field programs require extensive planning. Training materials for these programs often become obsolete in a short period of time. In addition, these seminars and programs may occur at inconvenient times for both the instructors and persons attending the training session.
[0005] On-line training, such as web broadcasts, has become a popular alternative to on-site seminars and field programs. Typically, on-line training involves users connecting to a network, such as the Internet; downloading one or more files; and executing an application at a prescribed time.
[0006] However, known on-line training products have several deficiencies. Users are often restricted to low bandwidth connections to the network, such as a dial-up modem connection. The files for the training may require a large amount of storage space and time to download. During an on-line training program, users often lose their place in the training relative to other users or the instructor. For example, a user may forget to proceed to a particular slide during the training session. Thus, users often are unable to participate in the training in real-time and the impact and retention of the training may be reduced.
[0007] It is therefore desired to provide methods, apparatus, and systems that address the above and other shortcomings of the prior art.
SUMMARY OF THE INVENTION
[0008] In accordance with the invention, a method of synchronizing progress of a presentation running between a server and a client is provided, wherein the server transmits at least one stream for the presentation. The method comprises: identifying an event that is pushed from the server in response to an operation requested by a presenter during the presentation; interpreting the event at the client to determine a set of program code called by the event, wherein the set of program code performs the operation requested by the presenter; and executing the called set of program code in synchronization with the at least one stream.
[0009] In accordance with another aspect of the invention, a method of synchronizing progress of a presentation running between a server and a client, comprises: sending to the client sets of program code that perform operations requested by a presenter; transmitting at least one stream to the client for the presentation; detecting at the server at least one of the operations requested by the presenter; pushing from the server into the at least one stream an event that indicates the requested operation; selecting one of the sets of program codes based on information in the pushed event, wherein selected set of program code performs the requested operation; and executing the selected set of program code in synchronization with the at least one stream.
[0010] In accordance with yet another aspect of the invention, a system for providing a presentation comprises a first processor for encoding content for the presentation into at least one stream, detecting an operation requested by the at least one presenter, and inserting an event into the at least one stream indicating the requested operation and a second processor for transmitting the at least one stream to a client and pushing the event in the at least one stream to the client.
[0011] Additional features and advantages of the invention will be set forth in part in the description which follows, and in part will be obvious from the description, or may be learned by practice of the invention. The features and advantages of the invention will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.
[0012] It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
BRIEF DESCRIPTION OF THE DRAWINGS
[0013] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an embodiment of the invention and together with the description, serve to explain the principles of the invention.
[0014] In the Figures:
[0015]FIG. 1 illustrates an exemplary system, in accordance with the principles of the present invention;
[0016]FIG. 2 illustrates an exemplary presenter segment, in accordance with the principles of the present invention;
[0017]FIG. 3 illustrates an exemplary server segment, in accordance with the principles of the present invention;
[0018]FIG. 4 illustrates an exemplary remote segment, in accordance with the principles of the present invention;
[0019]FIG. 5 illustrates an exemplary user segment, in accordance with the principles of the present invention; and
[0020]FIG. 6 illustrates an exemplary process for providing a presentation, in accordance with the principles of the present invention.
DESCRIPTION OF THE EMBODIMENTS
[0021] Methods, apparatus, and systems are provided for on-line seminars or presentations over a network, such as the Internet. One or more presenters provide the content for the presentation. A moderator controls flow or progress of the presentation based on the content provided by the one or more presenters. Users may listen and/or watch the presentation content over the network either live with the presenters or on-demand based on an archived version of the presentation.
[0022] For example, one or more presenters may give a presentation using a browser to provide audio and visual content. The content for the presentation is created and gathered using known input devices, such as a video camera and microphone, or known applications for creating content, such as PowerPoint by the Microsoft Corporation. In addition, during the presentation, a presenter may perform or request various operations, such as change slides, move a pointer, conduct polls, and review questions.
[0023] A moderator receives the content from the presenters and controls various aspects of the presentation. For example, the moderator may determine when portions of the presentation's content are available for retrieval by the users. When a plurality of presenters is participating in the presentation, the moderator may select which of the presenters that will provide the content for the presentation at a particular time. The moderator may also select various formats and protocols for providing the presentation content. The moderator then encodes the audio and/or visual content for the presentation, determines control information, such as events indicating the various operations requested by the presenters, and provides the encoded content and control information to one or more servers.
[0024] The one or more servers deliver the presentation content and control information to the users. For example, a web server may be used to provide one or more web pages for the presentation to the users. A streaming server may also be used to deliver audio or video content using a real-time multimedia protocol. Furthermore, the one or more servers may send control information by pushing various events, for example, in the audio stream to the users. The events include information that indicates the various operations, such as slide changes or pointer moves, requested by the presenters.
[0025] The users may also use a browser to connect to the one or more servers and receive the audio and/or visual content of the presentation. In addition, when control information, such as an event, has been pushed from the servers, the user's browser may be used to call and execute a set of program code, such as a JavaScript. Since the event is pushed within a stream of the presentation, the set of program code may be executed in synchronization with the stream to perform the operation requested by the presenters. Accordingly, the users may then, for example, easily follow the presentation in synchrony with the presentation when the various operations are performed or requested by the presenters.
[0026] Reference will now be made in detail to embodiments of the invention, an example of which is illustrated in the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts.
[0027]FIG. 1 illustrates an exemplary system, in accordance with methods, apparatus, and systems consistent with the principles of the present invention. As shown, a seminar system <b>100</b> may comprise a presenter segment <b>102</b>, a server segment <b>104</b>, a remote segment <b>106</b>, a user segment <b>108</b>, and a communications segment <b>110</b>.
[0028] Presenter segment <b>102</b> provides an interface between a presenter and system <b>100</b> to provide content for the presentation or seminar. Presenter segment <b>102</b> is implemented using one or more general purpose computers interfacing with communications segment <b>110</b>. In addition, presenter segment <b>102</b> may be equipped with various peripheral devices, such as a video camera, microphone, keyboard, mouse, or display to record content for the presentation or seminar. Accordingly, presenter segment <b>102</b> may provide content for the presentation or seminar in a variety of forms, such as video, audio, images, etc. Although seminar system <b>100</b> is shown with one presenter segment, system <b>100</b> may also include a plurality of presenter segments. Furthermore, a single presenter segment may accommodate multiple presenters.
[0029] Server segment <b>104</b> provides mediated connections between user segment <b>108</b> and remote segment <b>106</b>. Server segment <b>104</b> also provides the content and control information for the seminar or presentation to user segment <b>108</b>. Server segment <b>104</b> may include one or more servers interfacing with communications segment <b>110</b>. In addition, server segment <b>104</b> may include other known types of network equipment, such as switches, routers, firewalls, etc.
[0030] Remote segment <b>106</b> captures the content from presenter segment <b>102</b> and provides control information for the seminar or presentation. In one embodiment, remote segment <b>106</b> may provide an interface to allow a moderator to control the flow and operation of the seminar or presentation. Remote segment <b>106</b> is implemented using one or more general purpose computers interfacing with communications segment <b>110</b>. Although remote segment <b>106</b> is shown as a separate computer from server segment <b>104</b> and presenter segment <b>102</b>, remote segment <b>106</b> may be integrated into the same computer as either server segment <b>104</b> or presenter segment <b>102</b>.
[0031] User segment <b>108</b> provides an interface for a user to participate in the seminar or presentation. User segment <b>108</b> is implemented using one or more general purpose personal computers interfacing with communications segment <b>110</b>. Alternatively, user segment <b>108</b> may be implemented on other devices that are capable of accessing communications segment <b>110</b>, such as a mobile telephone or a personal digital assistant. Although seminar system <b>100</b> is shown with a single user segment, system <b>100</b> may accommodate any number of user segments. Furthermore, an individual user segment <b>108</b> may accommodate any number of users.
[0032] Communications segment <b>110</b> provides communications for the seminar or presentation between the various segments of seminar system <b>100</b>. For example, communications segment <b>110</b> may include one or more networks, such as the Internet. Communications segment <b>110</b> is implemented using known types of network equipment to support a variety of protocols, such as Internet Protocol (“IP”), Hypertext Transport Protocol (“http”), and Real Time Streaming Protocol (“RTSP”). RFC-2326, H. Schulzrinne et al., The Internet Society (1998), titled “Real Time Streaming Protocol (RTSP),” describes, inter alia, RTSP and is incorporated herein by reference in its entirety, etc. In addition, communications segment <b>110</b> may include respective access links, such as dedicated lines, or dialup lines, for presenter segment <b>102</b>, server segment <b>104</b>, remote segment <b>106</b>, and user segment <b>108</b>.
[0033]FIG. 2 illustrates a more detailed depiction of presenter segment <b>102</b>, in accordance with the principles of the present invention. As shown, a presenter <b>200</b> provides content for the presentation or seminar to a presenter console <b>202</b>. Presenter console <b>202</b> runs on presenter segment <b>102</b> and is implemented using a browser, such as Netscape Navigator or Internet Explorer.
[0034] In one embodiment, presenter console <b>102</b> operates using Java program code, such as JavaScript and Java applets. Presenter console <b>202</b> may operate based on information locally stored on presenter segment <b>102</b> or may operate based on information served from server segment <b>104</b> to avoid the installation of one or more files on presenter segment <b>102</b>.
[0035] Presenter console <b>202</b> is configured to receive content in various forms, such as through a video input <b>204</b>, an audio input <b>206</b>, or in the form of data files <b>208</b>. Upon receiving the content, presenter console <b>202</b> then distributes the content via communications segment <b>110</b>. For example, presenter <b>200</b> may use presenter console <b>202</b> to distribute the content based on whether it should be streamed. In particular, presenter console <b>202</b> may distribute content that is not intended for streaming, such as content in data files <b>208</b>, to server segment <b>104</b>. Server segment <b>104</b> may then store this content until remote segment <b>106</b> releases it to user segment <b>108</b>. Alternatively, server segment <b>104</b> may also provide this content to user segment <b>108</b> upon request. Presenter console <b>202</b> may use known protocols, such as Transport Control Protocol (“TCP”) or File Transfer Protocol (“FTP”) to distribute content to server segment <b>104</b>.
[0036] Presenter console <b>202</b> may also distribute content to remote segment <b>106</b> that is intended for streaming, such as content from video input <b>204</b> and audio input <b>206</b>. In order to distribute this content to remote segment <b>106</b>, presenter console <b>102</b> may use an embedded applet, which transmits information to remote segment <b>106</b> using HTTP “POST” messages and whose class files are obtained in response to HTTP “GET” messages from remote segment <b>106</b>.
[0037] In addition to the content, during a seminar or presentation, presenter <b>200</b> may request or perform various operations that assist users in following the presentation or seminar using presenter console <b>202</b>. These operations are then propagated from presenter console <b>202</b> through remote segment <b>106</b> and server segment <b>104</b> to user segment <b>108</b>. The operations propagated to user segment <b>108</b> may include, for example, operations related to manipulating images, such as slides, moving a pointer, conducting a poll from users attending the seminar or presentation, switching between live versus recorded content, or parsing questions from users. However, any type of action that assists the user in following a presentation or seminar may be include an operation that is propagated by presenter console <b>202</b>.
[0038] As an example, presenter console <b>202</b> may detect the location on a slide where presenter <b>200</b> is pointing through the use of layers, the known “<DIV>” tag, and manipulating inline style properties. Presenter console <b>202</b> may then execute JavaScript code to provide the location of the pointer to remote segment <b>106</b>. As another example, presenter <b>200</b> may advance to a slide in order to highlight information on that slide. The slide being pointed may further contain certain Hypertext Markup Language (“HTML”) statements and JavaScript code to indicate where presenter <b>200</b> clicked on the slide. As yet another example, a slide may contain script that alerts the parent frame to the location of a pointer graphic and supplies the offset of the pointer tip relative to the origin of the pointer graphic.
[0039] Upon detecting an operation, presenter console <b>202</b> then transmits information about the operation to remote segment <b>106</b> using, for example, HTTP messages, UDP, or TCP. In particular, presenter console <b>102</b> may use a Java applet to open a connection through communications segment <b>110</b> to remote segment <b>106</b>. Presenter console <b>102</b> may then execute a PerlScript to send User Datagram Protocol (“UDP”) packets to remote segment <b>106</b>. Presenter console may also use HTTP to communicate with remote segment <b>106</b>, for example, to minimize problems with any firewalls that may be between presenter segment <b>102</b> and remote segment <b>106</b>.
[0040] Presenter console <b>202</b> may also provide other various operations or functions to presenter <b>200</b> to assist in conducting the presentation or seminar. For example, presenter console <b>202</b> may support various web pages with frames that include one or more Common Gateway Interface (“CGI”) scripts. In one embodiment, presenter console <b>202</b> may include CGIs for: checking a database to see if a user is registered and checking the state of the seminar; maintaining a list of users actively participating in the presentation or seminar; requesting a pop-up question-review window at user segment <b>108</b>; requesting a window that pops-up at user segment <b>108</b> with a form in which a poll question is provided and the user is asked to respond; and requesting a poll results review window from remote segment <b>106</b> or server segment <b>104</b>. Upon executing the CGIs for these operations, presenter console <b>102</b> may initiate various calls, such as JavaScript calls, in remote segment <b>106</b>. In response, remote segment <b>106</b> may then send corresponding events to server segment <b>104</b>, which are then pushed to user segment <b>104</b>.
[0041] When there is a plurality of presenters, a moderator may be present at remote segment <b>106</b> to mediate which presenter provides content for the presentation or seminar. Since presenter segment <b>102</b> may be remote from the moderator, presenter console <b>202</b> may provide an indication, such as a colored indicator displayed on a web page in presenter console <b>202</b>, to notify presenter <b>200</b> when he is currently selected by the moderator at remote segment <b>106</b>.
[0042]FIG. 3 illustrates server segment <b>104</b>, in accordance with methods, apparatus, and systems consistent with the principles of the present invention. As shown, server segment <b>104</b> may include one or more servers, such as a web server <b>300</b> and a streaming server <b>302</b>.
[0043] Web server <b>300</b> is implemented using known equipment that supports, for example, HTTP and HTML. Web server <b>300</b> may contain information that is common to multiple presentations. For example, web server <b>300</b> may contain: an archive template that may be used to build an archive from a completed presentation or seminar. Web server <b>300</b> may also contain a template for tags corresponding to typical tools or features used to control a presentation or seminar. In addition, web server <b>300</b> may contain multiple versions of templates and automatically update a template when a new version is installed. Web server <b>300</b> may also contain customer-specific templates. The customer templates may be used to build formatted presentations or seminars for a particular customer. Web server <b>300</b> may also contain: HTML and image files that are common to particular customers or sessions; various CGI scripts; and the various files that are used by the CGI scripts as templates for building pages for a presentation.
[0044] In order to reduce the bandwidth requirement of user segment <b>108</b> during the presentation or seminar, web server <b>300</b> may optionally provide a package of files that are available for download to user segment <b>104</b> prior to the presentation. The download package may include a folder of HTML and graphics files. For example, web server <b>300</b> may contain information that is unique to a particular presentation or seminar. This information may be stored on web server <b>300</b> based on a customer identifier and a session identifier. In one embodiment, information that is unique to a particular presentation or seminar may include: a slide list indicating the URLs of each slide; a database file that includes key-value pairs used by various database applications; a database lock file; a package of files that are to be downloaded to user segment <b>108</b>; and files that are to be made available from web server <b>300</b> via HTTP.
[0045] Moreover, web server <b>300</b> may provide: a directory where archived versions of a presentation or seminar are stored; a directory where download packages may be stored; a directory where download packages are available via FTP; various files having to do with registration by the users, presenters, and moderator; and files for checking the multimedia capability of user segment <b>108</b>. Although FIG. 3 shows a single web server, server segment <b>104</b> may include any number of web servers.
[0046] The seminar may be archived based on the files prepared and created during the live presentation. The archived version may be served from server segment <b>104</b>. For example, audio for an archived seminar may be streamed from server segment <b>104</b> to user segment <b>108</b> from a file created during the live presentation. In addition, a transcript file may be viewed in a pop-up window at user segment <b>102</b>. The pop-up window may display portions of the transcript file that correspond to a particular time during the presentation. The timing that the portions of the transcript file are displayed may also be based on events pushed from the server segment <b>104</b> to user segment <b>108</b>.
[0047] For archived presentations and seminars, in one embodiment, server segment <b>104</b> may provide: files that indicate whether the archive includes audio or no audio; files for sourcing web pages for the archive; files that provide controls for the archive, such as a button that opens window for a transcript of the archive; files, such as JPEG images, for the archive; files displaying the slide; files that contain a URL for the audio file of the archive; and files providing a transcript of the archive. In addition, the transcript files may contain control information indicating, for example, the beginning of text corresponding to each slide.
[0048] Server segment <b>104</b> may include a copy of the JavaScript file that was created during the live seminar and the session-specific information, such as the slide list. In addition, server segment <b>104</b> may include a timeline file that declares and initializes an array of called “times” to maintain operations of the presentation or seminar in synchrony with, for example, the audio from the live presentation. The timeline file also allows a user to skip around within the archive while maintaining the synchronization of events during the live presentation.
[0049] Streaming server <b>302</b> provides data, such as audio or video data, in a stream to user segment <b>108</b>. For example, in one embodiment, streaming server <b>302</b> is implemented as a RealServer by Real Networks, Inc. However, other types of streaming servers are consistent with the principles of the present invention. Although FIG. 3 shows streaming server <b>302</b> as a single computer, server segment <b>104</b> may include any number of streaming servers. Server segment <b>104</b> may also include other servers for authentication, database access, or other types of applications.
[0050]FIG. 4 illustrates a more detailed depiction of remote segment <b>106</b>, in accordance with the principles of the present invention. As shown, a moderator console <b>400</b> and an encoder <b>402</b> run on remote segment <b>106</b>.
[0051] Moderator console <b>400</b> is implemented using a browser, such as Netscape Navigator or Internet Explorer. Moderator console <b>400</b> operates based on similar files provided to user console <b>1</b><b>12</b>. However, moderator console <b>400</b> is provided modified versions of several of the files to provide moderator-specific functionality.
[0052] In order to begin a presentation or seminar, a moderator (not shown) displays a login page at moderator console <b>400</b>. Upon receiving the login information, one embodiment of moderator console <b>400</b> may enter the information into a cookie. Since the presenter has a unique user-id, moderator console <b>400</b> uses the cookie to read hidden fields for the presentation or seminar. In addition, several of the fields may be pre-filled. For example, fields specifying a session identifier and an audio or video server may be pre-filled based on information provided in the cookie.
[0053] Moderator console <b>400</b> also includes CGIs to server segment <b>104</b> to build various web pages for the moderator. For example, moderator console <b>400</b> may include a CGI to retrieve information, such as a slide list and a control script, for the presentation or seminar. In the event that the presenter <b>200</b> changes the slide list or control list, then moderator console <b>400</b> may generate JavaScript program code to accommodate the requested changes.
[0054] Moderator console <b>400</b> also includes CGIs for: handling user questions; detecting when the presenter requests to change the state of the seminar; and tracking the number of active users, for example, based on a periodic “heartbeat” signal from user segment <b>108</b>.
[0055] As noted, remote segment <b>106</b> also includes encoder <b>402</b>, which in one embodiment is based on RealProducer 8.5 from Real Networks, Inc., to produce a stream for content distributed from presenter segment <b>102</b>. In one embodiment, encoder <b>402</b> encodes the content, such as audio or video, based on RTSP and provides the encoded content to server segment <b>104</b>. In addition, in response to the operations detected by presenter segment <b>102</b>, encoder may also embed control information in the form of event markers, such as Real Events (also known as “hurl”), within the stream. Encoder <b>402</b> sends its output to streaming server <b>302</b> for dissemination to user segment <b>108</b>. In one embodiment, encoder <b>402</b> runs based on an HTML file that contains an embedded RealProducer object and Perl script.
[0056]FIG. 5 illustrates a more detailed depiction of user segment <b>108</b>, in accordance with the principles of the present invention. As shown, a user console <b>500</b> and multimedia player <b>502</b> runs on user segment <b>108</b>. User console <b>500</b> is implemented using a browser, such as Netscape Navigator or Internet Explorer.
[0057] Prior to a presentation or seminar, user console <b>500</b> may optionally receive a download package from server segment <b>104</b>. In one embodiment, user console <b>500</b> is restricted from obtaining the download package until an authorization is received from remote segment <b>106</b>. The download package may include several HTML files to build various web pages for the presentation or seminar, such as presentation slides.
[0058] User console <b>500</b> displays various web pages with frames for the presentation or seminar. For example, user console <b>500</b> may display one or more web pages, that include: a form requesting information, such as a user-id, from the user; a frame for displaying controls for slide navigation, and audio or video related controls; a frame for displaying graphics, such as slides; and a page for displaying a pop-up window for polls requested by presenter <b>200</b>.
[0059] User console <b>500</b> may execute one or more CGIs for handling user questions, and tracking when the user is actively participating in the presentation or seminar based on a periodic “hearbeat” signal that is sent to server segment <b>104</b>. User console <b>500</b> also operates based on a JavaScript file and a meta-file to allow execution of any embedded applications. For example, multimedia player <b>502</b> may execute an embedded application, such as RealPlayer by Real Networks, Inc. or Media Player by Microsoft.
[0060]FIG. 6 illustrates an exemplary process for providing a presentation, in accordance with the principles of the present invention. In step <b>600</b>, presenter <b>200</b> gathers content for the presentation or seminar. Presenter <b>200</b> uses presenter segment <b>102</b> to gather content, such as audio, video, and graphics. In addition, presenter <b>200</b> may create a download package that includes some, most, or all of the graphics and other files that will be used in the presentation. Presenter <b>200</b> then provides the content to remote segment <b>106</b> and server segment <b>104</b>.
[0061] In one embodiment, presenter segment <b>200</b> distributes content that is not intended for streaming, such as static images or slides, to server segment <b>104</b>. Presenter segment <b>200</b> distributes content that is intended for streaming, such as audio or video data, to remote segment <b>106</b>. Remote segment <b>106</b> determines when the content may be transmitted to user segment <b>104</b>. For example, in order to begin a presentation, presenter <b>200</b>, the moderator, and the users may be required to login with web server <b>300</b> using a login web page.
[0062] Upon successful login by one or more parties, server segment <b>104</b> may allow at least portions of the content for the presentation to be available. For example, upon successful login by presenter <b>200</b> and the moderator at remote segment <b>106</b>, the moderator may then send a message to server segment <b>104</b>. Server segment <b>104</b> may then in turn send a message, such as an e-mail, to user segment <b>108</b>. The message may include, for example, one or more URLs for portions of the content for the presentation and information identifying streaming server <b>302</b>, such as an IP address. User segment <b>108</b> may then download the content stored in web server <b>300</b> and establish communications with streaming server <b>302</b>.
[0063] In step <b>602</b>, remote segment <b>106</b> begins streaming the content to user segment <b>108</b> via server segment <b>104</b>. In particular, remote segment <b>106</b> receives the content from presenter segment <b>102</b>. Encoder <b>402</b> encodes selected content, such as the audio or video, into a stream and <b>106</b> then transmits the stream to streaming server <b>302</b>. Streaming server <b>302</b> may then stream content for the presentation to user console <b>500</b> and multimedia player <b>502</b>. The stream between streaming server <b>302</b> and multimedia player <b>502</b> may comprises one or more channels, such as a channel for carrying data and a channel for carrying control events (i.e., a control channel). The control channel may include various events, such as hurl, which synchronize various aspects of the presentation, such as slide transitions, or embedded applications supported by user console <b>500</b>, and events corresponding to operations performed by presenter <b>200</b>.
[0064] User console <b>500</b> displays the presentation based on the information served from web server <b>300</b> and the stream from streaming server <b>302</b>. For example, as noted above, user console <b>500</b> may include a web page with a presentation window that displays graphics for the presentation. In addition, user console <b>500</b> may use multimedia player <b>502</b> to play the audio and/or video data in the stream from streaming server <b>302</b>. User console <b>500</b> uses the events in the control channel of the stream from streaming server <b>302</b> to synchronize these aspects of the presentation.
[0065] In step <b>604</b>, remote segment <b>106</b> determines whether the presentation includes an operation requested by presenter <b>200</b>. If remote segment does not detect a requested operation, then processing flows to step <b>610</b>. If remote segment determines that an operation was requested, then processing flows to step <b>606</b>.
[0066] For example, presenter console <b>200</b> may detect whether presenter <b>200</b> has moved a pointer, navigated to a particular slide, requested a new stream at a different URL, requested a poll from the users, or requested questions from the users. In one embodiment, presenter <b>200</b> provides information about the operation requested by presenter <b>200</b> using one or more Java applets and sending, for example, HTTP messages, UDP packets, or TCP packets to remote segment <b>106</b>.
[0067] Moderator console <b>400</b> of remote segment <b>106</b> may then detect that information about the operations has been received and determine a corresponding call for a set of program code that is executable by user segment <b>108</b>. For example, moderator console <b>400</b> may operate in conjunction with encoder <b>402</b> to determine a particular JavaScript call that corresponds to the operation. In addition, moderator console <b>400</b> and encoder <b>402</b> may parse the information about the operations from presenter segment <b>102</b> to determine one or more parameters, such as a slide number or pointer coordinates, for executing the set of program code. Encoder <b>402</b> then creates an event, such as text string, and sends it to streaming server <b>302</b> using, for example, a TCP connection.
[0068] In step <b>606</b>, remote segment <b>106</b> creates an event in response to the operation requested (or performed) presenter <b>200</b>. In particular, moderator console <b>400</b> receives the information indicating the operation and provides it to encoder <b>402</b>. Encoder <b>402</b> then creates an event for the operation and sends the event to streaming server <b>302</b>. In one embodiment, encoder <b>402</b> creates an event based on RTSP.
[0069] For example, encoder <b>402</b> may create a hurl that is compatible with products by Real Networks. In particular, the event may be encoded as a string, such as “&&control&&javascript:wp(‘hide’,2).” The portion of the event to the left of the colon indicates that the event is, for example, a JavaScript call. The portion after the colon (i.e., “wp”) identifies the particular set of program code that is called by the event.
[0070] In step <b>608</b>, streaming server <b>302</b> pushes the event to user segment <b>108</b>. In particular, streaming server <b>302</b> pushes the event to user segment <b>108</b> by inserting the event into the control channel of the stream. In one embodiment, streaming server <b>302</b> pushes the event into the control channel of a RTSP audio stream to multimedia player <b>502</b>.
[0071] Multimedia player <b>502</b> in user segment <b>108</b> then interprets the event. As noted, the event may use a known format, such as a hurl event for a Real Player, and include a call for executing a set of program code, such as JavaScript. Accordingly, multimedia player <b>502</b> may, for example, parse the event to determine whether it relates to progress of the presentation, or includes a call to a set of program code, such as JavaScript, that corresponds to an operation requested by presenter <b>200</b>. As noted above, in one embodiment, multimedia player <b>502</b> may identify that the event calls a set of program code when the event includes the string “%%control%%javascript.” In response, multimedia player <b>502</b> may then notify user console <b>500</b> to call the identified set of program code.
[0072] User console <b>500</b> may include sets of program code, such as JavaScript, for displaying movement of a pointer, navigating to a slide specified in the event, changing the stream received by multimedia player <b>502</b>, and displaying a pop-up window in response to poll conducted by presenter <b>200</b>. Other sets of program code for other operations are also consistent with the principles of the present invention. User console <b>500</b> may store the sets of local program code, for example, based on downloading files from web server <b>300</b> or may dynamically load the sets of program code from web server <b>300</b>. User console <b>500</b> then executes the called set of program code based on the parameters indicated in the event, such as “(‘hide’,2). ”
[0073] Accordingly, user console <b>500</b> may perform the operations requested by presenter <b>200</b> in synchronization with the stream. For example, user console <b>500</b> may display slide transitions in synchronization with a particular point in an audio stream. Therefore, users at user segment <b>108</b> may easily follow the presentation or seminar.
[0074] In step <b>610</b>, user console <b>500</b> determines whether the presentation or seminar is complete. User console <b>500</b> may determine whether the presentation is complete based, for example, on the slide list or from an event pushed into the stream between user segment <b>108</b> and server segment <b>104</b>. If the presentation is not complete, then processing repeats at step <b>604</b>. If the presentation is complete, then processing ends.
[0075] Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.
Contents6
7 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2010146078A1 | Cited by | United States of America | Pre-grant |
| US2004266408A1 | Cited by | United States of America | Pre-grant |
| US2011145429A1 | Cited by | United States of America | Pre-grant |
| US2009213205A1 | Cited by | United States of America | Pre-grant |
| US8819183B2 | Cited by | United States of America | Applicant |
| US2005071867A1 | Cited by | United States of America | Pre-grant |
| US2005265534A1 | Cited by | United States of America | Pre-grant |
| US10110645B2 | Cited by | United States of America | Applicant |
| US9214037B2 | Cited by | United States of America | Applicant |
| US2005086357A1 | Cited by | United States of America | Pre-grant |
| US9832423B2 | Cited by | United States of America | Search report |
| US11151889B2 | Cited by | United States of America | Applicant |
| US7694228B2 | Cited by | United States of America | Applicant |
| US10666696B2 | Cited by | United States of America | Search report |
| US10509709B2 | Cited by | United States of America | Search report |
| US2011107027A1 | Cited by | United States of America | Pre-grant |
| EP2487605A1 | Cited by | European Patent Office (EPO) | Search report |
| US7526525B2 | Cited by | United States of America | Search report |
| US7730133B2 | Cited by | United States of America | Applicant |
| US8325216B2 | Cited by | United States of America | Search report |
| US8682289B2 | Cited by | United States of America | Applicant |
| US8028073B2 | Cited by | United States of America | Applicant |
| US7587452B2 | Cited by | United States of America | Applicant |
| US2008005233A1 | Cited by | United States of America | Pre-grant |
| US9307095B2 | Cited by | United States of America | Applicant |
| US2008222252A1 | Cited by | United States of America | Pre-grant |
| US2006020665A1 | Cited by | United States of America | Pre-grant |
| EP2374056A4 | Cited by | European Patent Office (EPO) | Examiner |
| US7970833B2 | Cited by | United States of America | Search report |
| US2013019178A1 | Cited by | United States of America | Pre-grant |
| US2011242419A1 | Cited by | United States of America | Pre-grant |
| US2016072862A1 | Cited by | United States of America | Search report |
| US2012005588A1 | Cited by | United States of America | Pre-grant |
| US2010257449A1 | Cited by | United States of America | Pre-grant |
| US2004266412A1 | Cited by | United States of America | Pre-grant |
| US2005071880A1 | Cited by | United States of America | Pre-grant |
| US7779090B2 | Cited by | United States of America | Applicant |
| US9161184B2 | Cited by | United States of America | Applicant |
| US8780137B2 | Cited by | United States of America | Search report |
| US2011107221A1 | Cited by | United States of America | Pre-grant |
| EP2738721A1 | Cited by | European Patent Office (EPO) | Examiner |
| US2010311447A1 | Cited by | United States of America | Pre-grant |
| WO2008005340A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8892762B2 | Cited by | United States of America | Search report |
| US2011145366A1 | Cited by | United States of America | Pre-grant |
| US2004039789A1 | Cited by | United States of America | Pre-grant |
| US8577955B2 | Cited by | United States of America | Applicant |
| US2004264775A1 | Cited by | United States of America | Pre-grant |
| US7587037B2 | Cited by | United States of America | Search report |
| US2005240679A1 | Cited by | United States of America | Pre-grant |
| US9159296B2 | Cited by | United States of America | Search report |
| US8818330B2 | Cited by | United States of America | Applicant |
| US2010312819A1 | Cited by | United States of America | Pre-grant |
| US7925698B2 | Cited by | United States of America | Search report |
| US7813484B2 | Cited by | United States of America | Search report |
| US2014019858A1 | Cited by | United States of America | Pre-grant |
| US2015058415A1 | Cited by | United States of America | Pre-grant |
| US8243890B2 | Cited by | United States of America | Applicant |
| US8874638B2 | Cited by | United States of America | Applicant |
| US9426214B2 | Cited by | United States of America | Applicant |
| US11113983B1 | Cited by | United States of America | Search report |
| US10805365B2 | Cited by | United States of America | Applicant |
| EP2487605A1 | Cited by | European Patent Office (EPO) | Search report |
| US2005278424A1 | Cited by | United States of America | Pre-grant |
| US8949380B2 | Cited by | United States of America | Search report |
| US9740291B2 | Cited by | United States of America | Search report |
| US2008016175A1 | Cited by | United States of America | Pre-grant |
| USRE48579E | Cited by | United States of America | Search report |
| US8019824B2 | Cited by | United States of America | Search report |
| WO2008005340A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US11575955B2 | Cited by | United States of America | Applicant |
| US9311618B2 | Cited by | United States of America | Search report |
| US7379733B2 | Cited by | United States of America | Search report |
| US9094805B2 | Cited by | United States of America | Applicant |
| US2011145318A1 | Cited by | United States of America | Pre-grant |
| US2006248192A1 | Cited by | United States of America | Pre-grant |
| US2004086267A1 | Cited by | United States of America | Pre-grant |
| US7899863B2 | Cited by | United States of America | Search report |
| US2006041687A1 | Cited by | United States of America | Pre-grant |
| US2006041686A1 | Cited by | United States of America | Pre-grant |
| US9781175B2 | Cited by | United States of America | Search report |
| US2016072862A1 | Cited by | United States of America | Search report |
| US2007260683A1 | Cited by | United States of America | Pre-grant |
| CN108766066A | Cited by | China | Search report |
| US2005268242A1 | Cited by | United States of America | Pre-grant |
| US2004267502A1 | Cites | United States of America | Pre-grant |
| US5367667A | Cites | United States of America | Pre-grant |
| US5630049A | Cites | United States of America | Pre-grant |
| US5664115A | Cites | United States of America | Pre-grant |
| US5671280A | Cites | United States of America | Pre-grant |
| US5699528A | Cites | United States of America | Pre-grant |
| US5732400A | Cites | United States of America | Pre-grant |
| US5742754A | Cites | United States of America | Pre-grant |
| US5745884A | Cites | United States of America | Pre-grant |
| US5861882A | Cites | United States of America | Pre-grant |
| US5958007A | Cites | United States of America | Pre-grant |
| US6154128A | Cites | United States of America | Pre-grant |
| US6199193B1 | Cites | United States of America | Pre-grant |
| US6260160B1 | Cites | United States of America | Pre-grant |
| US6311149B1 | Cites | United States of America | Pre-grant |
1 member in 1 office
Priority claims6
| Document | Office | Kind | Date |
|---|---|---|---|
| 35494402 | United States of America | P | |
| 35494402 | United States of America | P | |
| 36192103 | United States of America | A | |
| 60354944 | – | – | – |
| US20020354944P | – | – | – |
| US20030361921 | – | – | – |
Members1
| Document | Office | Kind | |
|---|---|---|---|
| US2003191805A1 | United States of America | A1 |
29 transactions on the USPTO file
Abandoned after 1 non-final rejection.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 0
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Mail Abandonment for Failure to Respond to Office ActionAbandonedMABN2 | MABN2 | |
| Aband. for Failure to Respond to O. A.AbandonedABN2 | ABN2 | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Correspondence Address ChangeC.ADB | C.ADB | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Reference capture on IDSRCAP | RCAP | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Transfer Inquiry to GAUTI1050 | TI1050 | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Pre-Exam Office Action WithdrawnW/OA | W/OA | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| A statement by one or more inventors satisfying the requirement under 35 USC 115, Oath of the ApplicOATHDECL | OATHDECL | |
| Notice Mailed--Application Incomplete--Filing Date AssignedINCD | INCD | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
1 legal event, as the office reported them to INPADOC
Events
| Event | Code | |
|---|---|---|
| Information on status: application discontinuationABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTIONSTCB | STCB |
Numbers
- Publication, DOCDB
- 2003191805
- Publication, EPODOC
- US2003191805
- Application
- 10361921
- Application, DOCDB
- 36192103
- Application, EPODOC
- US20030361921
Titles
- English
- Methods, apparatus, and systems for on-line seminars
Classification
- CPC, 4
- G09B5/06
- H04L67/025
- H04L67/06
- H04L67/01
- IPC, 2
- G09B5 06
- H04L29 06
- USPC, 3
- 709204000
- 709203000
- 715730000