The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
With reference now to the figures and in particular with reference to
With reference now to
In the depicted example, local area network (LAN) adapter 212 connects to south bridge and I/O controller hub 204 and audio adapter 216, keyboard and mouse adapter 220, modem 222, read only memory (ROM) 224, hard disk drive (HDD) 226, CD-ROM drive 230, universal serial bus (USB) ports and other communications ports 232, and PCI/PCIe devices 234 connect to south bridge and I/O controller hub 204 through bus 238 and bus 240. PCI/PCIe devices may include, for example, Ethernet adapters, add-in cards, and PC cards for notebook computers. PCI uses a card bus controller, while PCIe does not. ROM 224 may be, for example, a flash binary input/output system (BIOS). Hard disk drive 226 and CD-ROM drive 230 may use, for example, an integrated drive electronics (IDE) or serial advanced technology attachment (SATA) interface. A super I/O (SIO) device 236 may be connected to south bridge and I/O controller hub 204.
An operating system runs on processor 206 and coordinates and provides control of various components within data processing system 200 in
Instructions for the operating system, the object-oriented programming system, and applications or programs are located on storage devices, such as hard disk drive 226, and may be loaded into main memory 208 for execution by processor 206. The processes of the present invention are performed by processor 206 using computer implemented instructions, which may be located in a memory such as, for example, main memory 208, read only memory 224, or in one or more peripheral devices.
Those of ordinary skill in the art will appreciate that the hardware in
In some illustrative examples, data processing system 200 may be a personal digital assistant (PDA), which is configured with flash memory to provide non-volatile memory for storing operating system files and/or user-generated data. A bus system may be comprised of one or more buses, such as a system bus, an I/O bus and a PCI bus. Of course the bus system may be implemented using any type of communications fabric or architecture that provides for a transfer of data between different components or devices attached to the fabric or architecture. A communications unit may include one or more devices used to transmit and receive data, such as a modem or a network adapter. A memory may be, for example, main memory 208 or a cache such as found in north bridge and memory controller hub 202. A processing unit may include one or more processors or CPUs. The depicted examples in
The aspects of the illustrative embodiments provide a computer implemented method, apparatus and computer usable program code for managing the speeds at which a presentation changes views. Latency information for attendee computers that attend an electronic conference is collected. The attendee computers may be at varying distances and using varying data processing systems having varying workloads. Once latency information is collected from a set of attendee computers, a server may identify a presentation latency period. The server sends the presentation latency period to a presenter computer so that the presenter computer may feedback to a user/presenter a delay that represents delays inherent in the collective network of attendees and delays inherent in the processing power available to attendees.
Each attendee operates according to varying connection speeds and circumstances. Attendee A 307 uses broadband connection 317 and is relatively nearby to server 301 in relation to the number of hops needed to reach server 301. Attendee B 309 operates through congested network 319. Attendee C 311 is remote to server 301 as compared to attendee A 307. Attendee C 311 requires many hops 321 for a typical packet to be exchanged between attendee C 311 and server 305. Attendee D 313 connects via dial-up connection 323, which may have the lowest throughput of all attendees. Consequently, attendee D 313 may have a composite delay wherein the communication latency contributes most to the delay as compared to peer attendees.
A presentation latency period is a period determined by an algorithm to establish a tolerable delay to feedback to a presenter computer in order to improve presenter awareness. The presentation latency may be, for example, the average of composite delays to all attendee computers, wherein each composite delay is based on a server receiving acknowledgments from each attendee computer. The illustrative examples of the present invention ensure that selected attendee computers have presented the page or view before allowing the page or view to change.
As an average, the presentation latency period operates as a model whereby some attendees suffer a composite delay worse than the presentation latency period. On the other hand, some attendees, for example, attendee A 307 of
Screen content is the details of a video display presented to a graphics adapter, for example, graphics adapter 210 of
Presenter first rendition 400 has cursor 403. Attendee first rendition 450 has cursor 453 positioned in the same place relative attendee first rendition 450 as cursor 403 is to presenter first rendition 400.
In a second time period, presenter second rendition 410 and attendee second rendition 460 diverge. During the second time period, a presenter prepares a new screen content update by moving presenter cursor 413 toward thumbnails 411. The new screen content update may comprise a sequence of commands, for example, instructions for moving a cursor as well as instructions concerning new slides and transitions to be displayed. A distinct event, for example, a screen transition between slides, may mark the conclusion of the new screen content update. The presenter clicks a thumbnail representing a new slide as the final action during the second time period. Presenter second rendition 410 is the displayed image in the presenter computer.
In the second time period, the attendee computer displays attendee second rendition 460 at the time the presenter clicks the presenter's mouse. A stream of instructions may be arriving at the attendee computer, wherein the instructions instruct the attendee computer to move the cursor. Because of delays, attendee second cursor 463 lags behind movement of presenter cursor 413. Nevertheless, the attendee computer begins rendering aspects of a screen content update. The rendering continues even though the reception of the screen content update remains a work-in-progress. The attendee computer that renders the screen content update may be, for example, attendee computer A 307 of
In the third time period in these examples, the presenter computer may suppress moving the cursor in response to the person presenter's attempts to move person presenter's mouse. Cursor 423 remains in the same relative position as cursor 413 of the prior period.
In a third time period, the attendee computer continues to respond to a streamed or otherwise transmitted screen content update. The attendee computer moves cursor 473 closer to a thumbnail within attendee third rendition 470.
In a fourth time period, the presenter computer may continue suppressing cursor movement. The attendee computer receives a final cursor movement instruction and renders attendee fourth rendition 480 wherein cursor 483 is over thumbnail 481. At the conclusion of the fourth time period, the attendee computer may be receiving data concerning the new slide.
According to a time feedback mechanism disclosed below, during a fifth time period, both the presenter computer and the attendee computer render the final instructions of a screen content update. The presenter computer and the attendee computer render resultant rendition 440 to their respective displays. An embodiment may model a hypothetical attendee by setting a presentation latency period to the worst delays among a set of attendee computers. The modeled attendee or hypothetical attendee, for such an embodiment, permits a presenter to render nearly simultaneously with the worst-case attendee with respect to a screen content update.
In the foregoing embodiment, the presenter computer achieves feedback by pausing rendering at key stages of rendering the screen content update.
A first time period involves the presenter displaying a presenter first rendition 500 and the hypothetical attendee displaying an attendee first rendition 550.
A second time period shows the time shortly after a person presenter clicks his mouse on a thumbnail, wherein the presenter presents presenter second rendition 510. The presenter also presents a delay notice in the form of icon 515. A presenter or host computer generates a screen content update having a delay notice based on a presentation latency period. A presenter may display presenter second rendition 510 responsive to generating the screen content update. A delay notice is a set of computer instructions that instruct an audio adapter or a graphics processor to show or otherwise present a visible or audible alert signaling a delay, for example, instructions for a pop-up window. The attendee displays attendee second rendition 560.
A third time period shows the presenter computer displaying presenter third rendition 520. At this time, the presenter has completed the slide transition. The attendee continues to move a cursor while displaying attendee third rendition 570.
A fourth time period shows the presenter displaying presenter fourth rendition 530. The attendee continues to move a cursor while displaying attendee fourth rendition 580.
A fifth time period shows a time where the presenter and hypothetical attendee displays are synchronized. The presenter computer and the attendee computer render resultant rendition 540 to their respective displays. The presenter executes instructions to inhibit icon 535 that was formerly displayed in the fourth time period.
In the foregoing embodiment, the presenter achieves a delay notice or feedback by showing icon 515 during any significant delay. The presenter continues to display, or fails to inhibit the display of an icon through third time period 520 and fourth time period 530. It is appreciated that pop-up windows may have various shapes and sizes. In addition, the pop-up window may bear a legend that estimates the number of attendees that are in the process of catching up.
A first time period involves the presenter displaying a presenter first rendition 600 and the hypothetical attendee displaying an attendee first rendition 650.
A second time period shows the time shortly after a person presenter clicks his mouse on a thumbnail, wherein presenter presents presenter second rendition 610. The presenter also presents a delay notice in the form of pop-up 615. A delay notice is a set of computer instructions that instruct an audio adapter or a graphics processor to show or otherwise present a visible or audible alert signaling a delay, for example, instructions to present a pop-up window. The attendee displays attendee second rendition 660.
A third time period shows the presenter displaying presenter third rendition 620. At this time, the presenter has completed the slide transition. The attendee continues to move a cursor while displaying attendee third rendition 670.
A fourth time period shows the presenter displaying presenter fourth rendition 630. The attendee continues to move a cursor while displaying attendee fourth rendition 680.
A fifth time period shows a time where the presenter and hypothetical attendee displays are synchronized. The presenter computer and the attendee computer render resultant rendition 640 to their respective displays. The presenter computer executes instructions to inhibit pop-up 635, wherein the presenter computer formerly displayed the pop-up in the fourth time period.
In the foregoing embodiment, the presenter achieves feedback, for example, by transmitting or otherwise presenting a delay notice. It is appreciated that many other forms of delay indication are contemplated within the scope of the illustrative embodiments, including offering a sound or vibration feedback during any interval that the presenter renders significantly in advance of the hypothetical attendee.
A hypothetical attendee presentation is a presentation having a delay that may vary somewhat from any attendee that has logged in to a presentation. For example, establishing a presentation latency period that results from averaging the first latency period with the second latency period will neither permit showing lag indications corresponding to the first attendee or the second attendee—but rather, will establish a kind of tolerable or reasonable delay, that permits a quicker pacing of presentation. Regrettably, some attendees are slow to get each rendition under an embodiment based on averaging.
The server receives presenter login (step 701). The server is, for example, server 303 of
The server may add a server-presenter delay, if any, to the presentation latency period (step 712). A server-presenter delay is an estimation of time that a typical packet may spend in transit between the server and the presenter computers. For reasons of transient congestion in a network, the actual time some packets spend in transit may vary somewhat from the estimation.
Once no attendees remain, the server transmits the presentation latency period to the presenter computer (step 713). The presenter begins the presenter's presentation. The server receives a screen content update (step 715). The server transmits the screen content update to the set of attendees (step 717).
The presenter transmits a screen content update (step 753). The presenter renders a delay icon (step 755). As may be appreciated, creating a background tone, or producing a pop-up may be performed as alternatives to step 755. The presenter starts a presentation time-out based on the presentation latency period (step 757). The presenter determines whether the time-out has expired (step 759). A time-out is a counter or another electronic time measurement that triggers an event upon conclusion. A process operating on a computer may start a time-out and expire a time-out. A positive determination to step 759 is an example of expiring a time-out. A negative determination returns the presenter to the execute step 759.
A positive determination to step 759 leads the presenter to render feedback to a display (step 761). The feedback rendered may be removing an icon or pop-up or otherwise signaling with user output that the presentation latency period has concluded. Additional screen content updates may be transmitted by continuing execution at step 753, otherwise, the process may terminate thereafter.
An alternative manner to obtain a selected set of attendee computers is to establish a cut-off time. This illustrative embodiment of the present invention may permit the presenter to reach a preferred time and cut-off consideration of further attendees. This illustrative embodiment may permit the presenter to cherry pick the presenter's favored attendees, and account only for them. For example, this may permit a presenter to ignore known laggard attendees.
Still a further alternative manner to obtain a selected set of attendee computers is for a person presenter to pick which attendees the person presenter would like to exclude from an accounting of delays. Such an arrangement would suit situations where most attendee computers operate with good quality of service and minimize delays, whereas a minority of attendee computers is sluggish.
The server determines a composite delay for a current attendee (step 807). The server determines whether more attendees remain in the subset of attendees (808). The subset of attendees is a set of attendee computers. If more attendees remain in the subset, the server continues with step 807. Otherwise, the server determines delays of the set of attendees to obtain a presentation latency period (step 809). The server may reduce the presentation latency period by a server-presenter delay, if any (step 811). The server receives a presenter screen content update (step 813). The server transmits the screen content update to all attendees that have logged in (step 815). The server may transmit feedback to the presenter (step 817). The feedback may merely be a pop-up or icon as described with relation to
The server may determine the presentation latency period by selecting a worst-case among the latencies of each attendee in the subset. The server may determine the presentation latency period by averaging the latencies of all attendees in the subset. If the set is a single attendee, then both methods yield the same presentation latency period.
The server starts a presentation time-out based on the presentation latency period (step 819). The server determines if the time-out has expired (step 821). If the time-out has not expired, the server continues determining step 821. Upon an affirmative determination, the server transmits or otherwise feeds back completion to the presenter (step 823). Step 823 may involve transmitting a file that includes computer instructions to remove or inhibit an existing delay notice that appears on presenter's display. Consequently, step 823 may also be referred to as inhibiting a delay notice. Presenter is, for example, presenter 301 of
Alternatively, the attendee may simulate rendering and provide an acknowledgment based on the simulation. Yet another alternative includes estimating a duration for rendering a complete screen content update based on a formula. Thus, instead of step 911, the attendee may transmit a rendering delay to server, wherein the server may incorporate the rendering delay into a composite latency for the attendee.
The server receives a second acknowledgement from the attendee (step 935). The second acknowledgement confirms that the attendee completed rendering the current or latest screen content update. The server may calculate a composite delay based on these two acknowledgements. The composite delay is the interval between step 931 and step 935, minus half the interval between step 931 and 933. The composite delay is the estimated duration between the beginning of sending the screen content update, and actual visibility of the screen content update on the particular attendee. The process terminates thereafter.
The server transmits a ping packet to the presenter (step 1011). The server receives a ping packet from the presenter (step 1013). The server calculates the presenter-server delay based on the acknowledgment (step 1015). The server may simply compare times for the outbound ping and the returned acknowledgment and establish the presenter-server delay to be half the round trip time for the acknowledgment to be returned. The process terminates thereafter. The process of
Presentation latency period may be established based on several methods. First, averaging. Second, based on a selected attendee composite delay, wherein the selected attendee may have the longest composite delay among the set of attendees.
Thus, illustrative embodiments provide a computer implemented method, apparatus, and computer usable program code for halting presentations or otherwise warning on a presenter computer that corresponds in an electronic conference.
The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any tangible apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.