`
`[19]
`
`[11] Patent Number:
`
`5,857,189
`
`Riddle
`
`[45] Date of Patent:
`
`Jan. 5, 1999
`
`US005857189A
`
`[54] FILE SHARING [N A TELECONFERENCE
`APPLICATION
`
`5,737,599
`5,754,306
`
`4/1998 Rowe et al.
`5/1998 Taylor et al.
`
`.......................... .. 707/104
`......................... .. 358/400
`
`OTHER PUBLICATIONS
`Apple QiiickTime Conferencing Kit, Apple Computer, Inc.,
`Aug. 1995.
`“Apple QuickTime Conferencing,” Apple QuickTime Fact
`Sh t,AlC t,I .,J
`.1995.
`ee
`pp 6 Ompu er DC
`an
`Primary Examiner—Wayne Amsbury
`Attorney, Agent, or Fz'rm—Blakely, Sokoloff, Taylor &
`Zafman
`[57]
`
`ABSTRACT
`.
`A system and method vyhich enables teleconference mem-
`bers to share files during a teleconference. An endpoint
`including a processor with a memory coupled thereto. The
`memory stores a teleconferencing application. Afile sharing
`mechanism is associated with the application at run time.
`The file .ShaF11.1g meehamem generates 3 Wmdew 0“ the Ieeal
`display in which the local member of the teleconference may
`post advertisements for files thereby making the file shar-
`able. The local endpoint sends the advertisement to a remote
`endpoint. A corresponding accessory receives the advertise-
`ineiit and posts it in the remote Window. Alocal member can
`copy remotelv posted files by manipulating the correspond-
`in advemsegnent
`g
`
`'
`
`4 Claims, 20 Drawing Sheets
`
`K 604
`
`«eso
`
`[75]
`
`Inventor: Guy Riddle, Los Gatos, Calif.
`.
`.
`[73] Assignee: Apple Computer, Inc., Cupertino,
`Cahfi
`[21] Appl. No.: 646,626
`.
`May 8: 1996
`F1169:
`I22]
`Int. Cl.5 ...................................................... G06F 17/30
`[51]
`[52] U.S. Cl.
`............................................. .. 707/10; 707/104
`[58] Field of Search ................................... .. 395/615, 610;
`707/10, 104
`
`[56]
`
`References Cited
`
`U~S~ PATENT DOCUMENTS
`11/1989 Mahmound ............................. .. 379/53
`12/1995 shibata et 31.
`370/62
`5/1996 Bates ....... ..
`345/331
`5/1996 Courant et a .
`395/701
`8/1996 MCNe11eY et a1~
`364/514
`11/1996 Riddle 6‘ 31'
`379/202
`2/1997 P°1°m5ki ““ “
`370/263
`2/1997 Shibata et al.
`370/260
`5/1997 Warren et al.
`..... .. 345/350
`7/1997 Aldred et al.
`395/200.5
`9/1997 Muranaga et al.
`.................... .. 345/329
`
`
`
`4,882,743
`5,477,545
`5,515,491
`5,522,073
`5,550,754
`525722582
`5>60O>646
`5,606,554
`5,632,022
`5,649,105
`5,671,428
`
`FILE EXCHANGE
`POSTING EVENT
`
`ERROR EVENT
`
`FILE EXCHANGE MESSAGE
`ARRIVED EVENT
`
`FILE EXCHANGE MESSAGE
`ARRIVED EVENT
`
`FILE EXCHANGE COPY
`STATUS EVENT
`
`FILE EXCHANGE POSTING
`REMOVED EVENT
`
`
`
`
`FILE EXCHANGE MESSAGE S
`ARRIVED EVENT
`
`6
`
`31
`
`63
`
`2
`
`633
`
`634
`
`635
`
`«ese
`
`RPX Exhibit 1136
`RPX V. DAE
`RPX Exhibit 1136
`RPX v. DAE
`
`
`
`
`
`
`
`
`’ .3--
`
`1fl
`
`tnuEtoaP&U
`
`maJ
`
`
`
`ummvommw
`
`any
`
`mm,
`
`mmm_
`
`3mm.
`
`999
`
`S
`
`Am
`
`1
`
`fl.
`
`5,857,189
`
`mmm:
`
`0EGDGDDDDDDDUD
`
`
`
`0DDDUUDUUUDDD2BEnwwmmmm.mmmwwww
`
`UUDUUUUDUUUH
`
`HUD
`
`oN_
`
`82
`
`gdflnnunuunflflD
`
`DUUUUUUUUDDDDD
`
`UUUUDUDDDDUDD
`
`DUUUUUDDUDUD
`
`UUUDUUUDDUDN
`
`DH
`
`Dun
`
`H.65
`
`
`
`
`
`
`
`
`U.S. Patent
`
`J
`
`1
`
`S
`
`02PI.0
`
`5,857,189
`
`
`
`
`
`M...EmE=oo_uv_B_
`
`
`
`
`
`1%muzmficoo.3:EQEEBSQ
`
`
`
`.\|EoezoouxwnMmom_E.oc>m._o_o0
`
`59=m>>$53.:3uofiom
`
`91%
`_2._.wE_._.v_o_:O\WflewE.atmEEE
`
`EmeaoouV62M>._.
`
`:55m®Em_..in_uEmon_
`
`2ace0:inumfioa
`
`m.®_n_
`
`I
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 3 of 20
`
`5,857,189
`
`1500
`
`DISPLAY
`
`3.2.1
`
`FRAME
`
`M
`
`I_ _ _ _ _ — _ _ _ _ — _"7
`K MAIN
`READ ONLY
`MASS
`MEMORY
`MEMORY
`STORAGE
`
`DEVICE 307
`£6
`M
`BUFFER
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`KEYBOARD
`
`322
`
`CURSOR
`CONTROL
`
`£3
`
`HARD COPY
`DEVICE
`32-P
`
`NETWORK
`CONNECTOR
`
`fl
`
`SOUND
`OUTPUT
`DEVICE
`
`COMM
`DEVICE
`
`321
`
`FIG. 3
`
`160
`
`170
`
`150
`
`‘
`
`NETWORKING MEDIUM
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 4 of 20
`
`5,857,189
`
`401
`
`APPLICATION PROGRAM
`
`
`
`API CALLS
`
`404
`
`05
`
`406
`
`I
`
`
`
`CONFERENCE COMPONENT
`
`400
`
`
`MESSAGES 402
`
`1
`
`TRANSPORT COMPONENT
`
`I
`
`403
`
`NETWORK COMPONENT
`
`16°
`
`170
`
`FIG. 4
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 5 of 20
`
`5,857,189
`
`MTConference Accessorize(cc, "Acc1 Acc2 Acc3")
`
`AccessorizeUpon(Acc2, Acc3)
`r420
`430
`
`—C
`
`AccessorizeUpon(Acc1, Acc2)
`
`FIG. 4a
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 6 of 20
`
`5,857,189
`
`Conference Component
`
`I» 400
`
`Sound Stream
`Player
`
`513
`
`I:
`
`I Source Stream
`I
`Director
`L _ _ _ _ _ __ J
`
`Transport
`Component
`
`Component
`1. _ _ _ _ _ _ I
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 7 of 20
`
`5,857,189
`
`ACCESSORY INITALIZED
`EVENT
`
`614
`
`CONFERENCE READY EVENT ; $
`
`601
`
`t
`
`MEMBER READY EVENT ;
`
`ACCESSORY READY X
`EVENT
`
`602
`
`610
`
`612
`
`WINDOW EVENT
`
`MEMBER READY EVENT
`
`E503
`
`OTHER EVENTS
`
`5604
`
`MEMBER TERMINATED S
`EVENT
`
`MEMBER TERMINATED S
`EVENT
`
`DISPOSE WINDOW EVENT
`
`605
`
`606
`
`613
`
`611
`
`ACCESSORY TERMINATED ;
`
`ms
`
`‘W 600
`
`EVENT
`
`k
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 8 of 20
`
`5,857,189
`
`f 604
`
`630
`
`631
`
`632
`
`633
`
`634
`
`635
`
`636
`
`5
`
`
`
`FILE EXCHANGE
`POSTING EVENT
`
`ERROR EVENT
`
`FILE EXCHANGE MESSAGE
`ARRIVED EVENT
`
`FILE EXCHANGE MESSAGE
`ARRIVED EVENT
`
`FILE EXCHANGE COPY
`STATUS EVENT
`
`FILE EXCHANGE POSTING
`REMOVED EVENT
`
`FIG. 6a
`
`
`
`FILE EXCHANGE MESSAGE ;
`ARRIVED EVENT
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 9 of 20
`
`5,857,189
`
`MEMBER INITIALIZATION
`
`AccESSoRIzE ACCESSORIES
`
`SET CAPABILITIES 5
`
`701
`
`702
`
`SET SETTINGS
`
`SET OPTIONS
`
`SET MODE
`
`709
`
`;
`
`711
`
`S
`
`704
`
`SET TIMEOUT S
`
`706
`
`703
`REGISTER & PUBLISH K
`ADDRESS
`
`LISTEN FOR CONFERENCE
`CALLEHS
`
`710
`
`FIG. 7
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 10 of 20
`
`5,857,189
`
` WINDOW
`
`ASSOCIA D
`‘ CCESSO
`.
`
`
`
`FIG. 8
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 11 of 20
`
`5,857,189
`
`ADVERTISMENT RECEIVED ;
`
`901
`
`902
`
`YES
`
`NO
`
`CREATE DATA STRUCTURE
`TO REMEMBER NAME AND
`WHO SENT
`
`SEND POSTING ADDED E
`EVENT
`
`903
`
`904
`
`SAVE ICONS
`
`DISPLAY AD
`
`905
`
`X
`
`905
`
`S
`
`FIG. 9
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 12 of 20
`
`5,857,189
`
`
`
`FIND AD
`DATA
`STRUCTURE
`
`
`
`SEND AD DELETED MESSAGE
`
`AD POSTED
`
`
`LOCALLY ‘ TO REMOTE ENDPOINT
`
`
`
`
`
`
`DELETE AD
`
`REDRAW LIST
`
`FIG. 10
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 13 of 20
`
`5,857,189
`
`1102
`
`1103
`
`1104
`
`1101
`
`NO
`
`
`
` FHUD
`LOCALAD
`
`NAME?
`
`
`YES
`
`ALLOCATE COPY
`STRUCTURE
`
`RECORD WHO ASKED E
`AND WHICH AD
`
`RECORD COPY X
`REFERENCE
`
`OPEN FILE
`
`/£;’1105
`
`ADD COPY STRUCTURE FOR S
`LlST FOR THIS AD
`
`1106
`
`FIG. 1 1
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 14 of 20
`
`5,857,189
`
`CREATE EMPTY FILE
`FCR WRITING
`
`1201
`
`CREATE COPY DATA E
`STRUCTURE
`
`INITIALIzE FORK AND
`SET oFFSET TO zERo
`
`OPEN EMPTY FILE FOR S
`WRITING
`
`1202
`
`1203
`
`1204
`
`SEND FILE REQUEST
`
`S1205
`
`CALL MORE PLEASE 5
`TI-IREE TIMES
`
`|N|T|AL|ZE PROGRESS E
`BAR TO 0%
`
`1206
`
`1207
`
`FIG. 12
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 15 of 20
`
`5,857,189
`
`CURRENT
`FOF{K=ZERO
`
`
`
`FIG. 13
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 16 of 20
`
`5,857,189
`
`1401
`
` FIND
`
`COPY STRUCTURE W/
`COPY REF. AND REQUESTING
`
`MEMBER
`
`
`
`
`
`ES
`
`ALLOCATE SIZE OF
`REPLY MESSAGE
`
`1403
`
`
`
`
`
`FETCH COMMENT
`INTO REPLY
`BUFFER
`
`DOES
`COMMENT
`XIST?
`
`FORK
`PE IS COMMENT’?
`
`
`
`SET REPLY
`ISSUE FILE SYSTEM
`SIZE T0 LENGTH
`READ OF ALLOCATED
`
`
`OF COMMENT
`BYTES
`
`
`
`
`SEND MESSAGE
`BACK TO
`REQUESTER
`
`
`
`CALL KILL
`
`
`
`
`
`
`
`COPQIXIEURSROR
`CA\,Lv§NK(')LF';M(i&PY
`
`STATUS
`
`
`
`
`SEND MESSAGE BACK
`TO REQUESTER
`
`FIG. 14
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 17 of 20
`
`5,857,189
`
`ADVANCE FORK
`
`1504
`
`1505
`
`SET OFFSET TO ZERO
`
`
`
`ADVIANCED
`‘ LREADY?
`
`YES
`
`1506
`
`YES
`
`SAVE COMMENT FOR
`FILE
`
`1513
`
`1514
`
`CALL KILL RECEIVE
`COPY NORMAL STATUS
`
`I501
`
`NO
`FIND COPY
`STRUCTURE’?
`
`
`
`
`CALL MORE PLEASE
`
`1507
` REPLY
`IS COMMENT?
`
`
`
`SIZE IN
`REPLY = ZERO
`
`1508
`
`
`
`
`
`
`WRITE NUMBER
`OF BYTES INTO FILE
`
`CREATED
`
`
`SYE
`
`
`
`
`REVISE COPY
`TIME ESTIMATE
`
`1511
`
`
`
`
`CALL KILL COPY
`W] ERROR
`
`@ FIG. 15
`
`
`
`
`
`ERROR
`IN WRITING?
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 18 of 20
`
`5,857,189
`
`1604
`
`1605
`
`15%
`
`WHO COPIED AND HOW
`MANY COPIERS
`
`INCREMENT NUMBER OF
`COPIERS
`A
`
`UPDATE DISPLAY
`
`[a 1601
`
`CLOSE FILE IN COPY
`STRUCTURE
`
`1602
`
`N0
`
`ERROR
`EXISTS?
`
`YES
`
`1503
`
`FAILURE MESSAGE TYPE
`SENT REQUESTER
`
`REMOVE FROM LIST AND
`DISPOSE COPY DATA
`STRUCTURE
`
`1607
`
`FIG. 16
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 19 of 20
`
`5,857,189
`
`T
`
`1701
`
`CLOSE WRITE TO
`FILE
`
`1702
`
`
`
`REMEMBER WHERE FILE
`COPIED LAST
`
`
`
`ERROR
`EXISTS?
`
`
`
`
`
`DELETE WRITE TO FILE
`
`FIG. 17
`
`
`
`U.S. Patent
`
`Jan. 5, 1999
`
`Sheet 20 of 20
`
`5,857,189
`
`
`
`FIND COPY
`STRUCTURE?
`
`CALL KILL RECEIVED
`COPY W/ERROR
`
`
`
`
`
`FIG. 18
`
`
`
`5,857,189
`
`1
`FILE SHARING IN A TELECONFERENCE
`APPLICATION
`
`BACKGROUND OF THE INVENTION
`
`(1) Field of the Invention
`The present invention relates to teleconferencing systems.
`More specifically, the invention relates to an accessory to
`allow file sharing during a teleconference.
`(2) Background Information
`Teleconferencing is increasingly becoming a popular
`application in personal computer systems. Such applications
`typically allow the transfer of audio and video data between
`users so that they can speak and otherwise communicate
`with one another. Such applications sometimes also include
`data sharing wherein various types of data such as
`documents, spreadsheets, graphic data, or other types of
`data, can be shared and manipulated by all participants in the
`teleconference. Different
`teleconference applications per-
`haps residing on dilferent hardware platforms have different
`capabilities. Moreover, a wide variety of features has been
`implemented in different teleconference applications, and
`the proliferation of different types of computer systems with
`diflferent capacities, and different networking media has
`created challenges for tclcconfcrcncing.
`For example, for most teleconferencing applications, it is
`assumed that
`the sender and the receiver have certain
`
`minimum capabilities. However, with the wide diversity of
`systems having different computation capacities, and in
`addition, the wide variety of networking media, that certain
`systems may not have certain capabilities. Prior art systems
`have typically required that the application provide support
`for all capabilities used within the teleconference. This fact
`has substantially complicated teleconferencing applications,
`and made expansion of capabilities diflicult or impossible. It
`would be desirable to be able to relieve the application of the
`burden of supporting all capabilities by providing accesso-
`ries which interface logically between the application and a
`base teleconference component to provide additional and
`expandable capabilities. It would also be desirable if an
`accessory supported file sharing during a teleconference
`without jeopardizing the integrity and security of any par-
`ticipating cndpoint.
`
`BRIEF SUMMARY OF THE INVENTION
`
`Asystem and method which enables teleconference mem-
`bers to share files during a teleconference is disclosed. An
`endpoint
`includes a processor with a memory coupled
`thereto. The memory stores a teleconferencing application.
`A file sharing mechanism is associated with the application
`at run time. The file sharing mechanism generates a window
`on the local display in which the local member of the
`teleconference may post advertisements for files thereby
`making the file sharable. The local endpoint sends the
`advertisement to a remote endpoint. Acorresponding acces-
`sory receives the advertisement and posts it in the remote
`window. A local member can copy rcmotcly postcd filcs by
`manipulating the corresponding advertisement.
`In one embodiment, the advertisement of a copyable file
`has one representation before it is copied locally and a
`second representation after it
`is copied locally. During
`copying time to complete is periodically recalculated and
`displayed in the file sharing window. An abort functionality
`is provided such that a selected copying can be aborted at
`any time before the copying is complete. The partially
`copied file is automatically deleted.
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`2
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The present invention is illustrated by way of example
`and not limitation in the figures of the accompanying in
`which like references indicate similar elements and in
`which:
`
`FIG. 1 illustrates an example configuration in which
`various embodiments of the present invention may be imple-
`mented.
`
`FIG. 2 shows a teleconference display of one embodiment
`of the invention.
`
`FIG. 3 shows a single system in which embodiments of
`the present invention may be implemented.
`FIG. 4a shows an example architecture of a system
`employing various embodiments of the present invention.
`FIG. 4b shows stacking of accessories using an API call.
`FIG. 5 shows a more detailed view of the conference
`
`component illustrated in FIG. 4.
`FIG. 6 shows a sequence of typical conference events
`during a teleconference which are forwarded through an
`accessory stack to an application.
`FIG. 6a shows a group of file sharing events.
`FIG. 7 shows a typical sequence of steps performed for
`member initialization before a teleconference.
`
`FIG. 8 shows a flowchart of accessory initialization
`subsequent to being accessorized.
`FIG. 9 shows a flowchart of posting to a file sharing
`accessory window.
`FIG. 10 shows a flowchart of removal of a posting from
`a file sharing accessory window.
`FIG. 11 shows a flowchart of a response to a copy request
`in a file sharing accessory.
`FIG. 12 shows a flowchart of a file sharing accessory
`initialization prior to copying an advertised file.
`FIG. 13 shows a flowchart of a copier requesting more of
`a file in a file sharing accessory.
`FIG. 14 shows a flowchart of a posting member response
`to a request for more of a shared file.
`FIG. 15 shows a flowchart of a copier responding to the
`receipt of a portion of a file being copied.
`FIG. 16 shows a flowchart of a kill copy routine per-
`formed by a posting endpoint.
`FIG. 17 shows a flowchart of a kill copy routine per-
`formed by a copying endpoint.
`FIG. 18 shows a flowchart of a copying endpoint respond-
`ing to a failure message.
`DETAILED DESCRIPTION
`
`The present invention relates to teleconferencing systems,
`more specifically, the present invention describes systems in
`which accessories are employed to increase the functionality
`of the teleconference independent of a teleconferencing
`application employed. Although the present invention will
`bc dcscribcd with reference to certain specific embodiments
`thereof, especially, with relation to certain hardware
`configurations, data structures, packets, method steps, and
`other specific details, these should not be viewed as limiting
`the present invention. Various modifications and other may
`be made by one skilled in the art, without departing from the
`overall spirit and scope of the present invention.
`A portion of the disclosure of this patent document
`contains material which is subject to copyright protection.
`They copyright owner has no objection to the facsimile
`
`
`
`5,857,189
`
`3
`reproduction by anyone of the patent disclosure, as it
`appears in the Patent and Trademark Office patent files or
`records, but otherwise reserves all copyright rights whatso-
`ever. Copyright Apple Computer, Inc.
`A typical system configuration in which a teleconference
`may take place is illustrated as 100 in FIG. 1. For example,
`a first workstation 150 may communicate via teleconference
`with a second workstation 155, as illustrated. Systcm 150
`may include a central processing unit 150C which is coupled
`to a display 150d a video input device 150a, and a sound
`input device 150b. The system 150 may communicate with
`system 155 over networking medium 170 via network
`connection module 160. 160 may include any number of
`network adapters commercially available such as using
`Ethernet, Token Ring, or any other networking standard
`commercially available. Note that network adapter 160 may
`also include a wireless network adapter which allows trans-
`mission of data between components without a r11ediur11 170.
`Communication is thus provided via network adapter 165
`coupled to system 155, and bi-directional communications
`may be established between two systems. System 150 fur-
`ther has a keyboard 150e and a pointing device 150]‘, such
`as a mouse, track ball, or other device for allowing user
`selections and user input.
`FIG. 2 shows a teleconference display 200 on which icon
`220 corresponds to the conferencing application in use. In
`implemented embodiments of the present invention, there is
`a source window, such as 202, showing a monitor of the
`local media source, and there are other media windows, such
`as 201 for each other member with which a local member is
`communicating. While only one other media window is
`shown, it is anticipated that several members (and accord-
`ingly scvcral other mcdia windows) may participate in any
`teleconference. In the illustrated example, each of the win-
`dows 201-202 provides media information, that is, real-time
`audio and/or video information for bi-directional telecon-
`ferencing. Accessory window 203 is an example of an
`accessory window for one possible accessory of the instant
`invention. Only a single accessory window 203 is shown,
`however it
`is envisioned that up to n (where n is an
`arbitrarily large number) accessories could be used. Each
`accessory either has an associated accessory window or is a
`faceless accessory. This distinction will be discussed further
`below.
`
`The particular accessory shown is a file sharing accessory
`which allows advertisements 205 to be posted by a user at
`a remote endpoint and viewed by a user at a local endpoint
`within the accessory window 203. Similarly, the local user
`can post advertisements 215 in the accessory window 203
`that can then be viewed by a remote user. The advertisement
`205 includes an icon 206, a file name 208, a file size and type
`209, and the name of the remote member 210 responsible for
`the posting. A copy bar 207 is also provided.
`To copy a file associated with an advertisement, the local
`member need only drag the icon 206, 211 to a location to
`which copying is desired, and the accessory will copy the
`file to that location. Here, icon 211 has been dragged to the
`desktop where the icon 214 appears. The copy bar 212
`begins to fill as the copying from a remote endpoint is
`performed. The file name 213 is highlighted when selected.
`An advertisement need not remain selected during copying.
`Once copying is complete, the file name 213 will revert from
`boldface type to plain text. The time remaining 218 to
`complete copying is displayed in the lower part of the
`accessory window 203. Clicking on stop sign 221 while
`copying of a selected file is in progress win abort the copy
`and cause the partially copied file to be deleted. If no file is
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`In one
`the stop sign option is unavailable.
`selected,
`embodiment, once a file has been copied, the advertisement
`effectively becomes an alias allowing the file to be launched
`by double clicking on the advertisement. Significantly, prior
`to copying, said double clicking will only result in a dialog
`box indicating that the file must be copied to be launched.
`This is because no physical file exists on the local end point
`and the advertisement merely provides an access path
`through which the physical file may be copied.
`A locally posted advertisement 215 differs from a
`remotely posted advertisement in that the file name 217 is
`displayed in italic typc and instead of a postcr’s namc, thc
`copy status 216 is displayed. In one embodiment, copying
`locally posted files is not permitted. As other members of the
`conference copy the file associated with advertisement 215,
`thc copy status will change to rcflcct “copied by cvcryonc”
`or copied by x of n where x is the number of copiers, and n
`is the number of conference members. At any time, a
`member may delete an advertisement
`in the accessory
`window 203 by dragging the corresponding icon to the trash
`204. If the deleting member is also the posting member for
`the advertisement, once trashed,
`the advertisement will
`disappear from all conference members’ windows.
`Conversely, if a remotely posted advertisement is trashed, it
`is only deleted from the trasher’s file sharing window.
`A computer system, such as a workstation, personal
`computer or other processing apparatus 150C or 1550 as
`shown in FIG. 1 is illustrated in more detafl in FIG. 3. 150C
`comprises a bus or other communication means 301 for
`communicating information, and a processing means 302
`coupled with bus 301 for processing information. System
`150C further comprises a random access memory (RAM) or
`other volatile storage device 304 (referred to as main
`memory), coupled to bus 301 for storing information and
`instructions to be executed by processor 302. Main memory
`304 also may be used for storing temporary variables or
`other intermediate information during execution of instruc-
`tions by processor 302. Included in memory 304 during
`run-time may be the conference component module which
`operates according to the communication protocols gener-
`ally known in the art. System 150C also comprises a read
`only memory (ROM) and/or other static storage device 306
`couplcd to bus 301 for storing static information and instruc-
`tions for processor 302, and a data storage device 307 such
`as a magnetic disk or optical disk and its corresponding disk
`drive. Data storage device 307 is coupled to bus 301 for
`storing information and instructions.
`System 150C may further be coupled to a display device
`adapter 321 such as a cathode ray tube (CRT) or liquid
`crystal display (LCD) coupled to bus 301 for displaying
`information to a computer 11ser. Such a display 321 may
`further be couplcd to bus 301 for thc rcccipt of vidco or
`image information. An alphanumeric input device 322,
`including alphanumeric and other keys may also be coupled
`to bus 301 for communicating information and command
`selections to processor 302. An additional user input device
`is cursor control 323, such as a mouse, a trackball, stylus, or
`cursor direction keys, coupled to bus 301 for communicating
`direction information and command selections to processor
`302, and for controlling cursor movement on display 321.
`For teleconferencing applications, system 150C may also
`have coupled to it a sound output device 324, a video input
`device 325, and sound input device 326, along with the
`associated D/A (Digital-to-Analog) and AID (Analog-to-
`Digital) converters for inputting or outputting r11edia signal
`bitstreams. System 150c may further be coupled to commu-
`nication device 327 which is coupled to network adapter 160
`for communicating with other teleconferencing stations.
`
`
`
`5,857,189
`
`5
`Note, also, that any or all of tlie components of system
`150C and associated hardware may be used in various
`embodiments, however, it can be appreciated that any con-
`figuration of the system may be used for various purposes
`according to the particular implementation.
`In one embodiment, system 150C is one of the Apple
`Computer® brand family of personal computers such as the
`Macintosh 8100 brand personal computer manufactured by
`Apple Computer, Inc. of Cupertino, Calif. Processor 302
`may be one of the PowerPC brand microprocessors manu-
`factured by Motorola, Inc. of Schaumburg, Ill.
`Note that the following discussion of various embodi-
`ments discussed herein will refer specifically to a series of
`routines which are generated in a high-level programming
`language (e.g., the C or C++ programming language) and
`compiled, linked, and then run as object code in system 150C
`during run-time within main memory 304 by processor 302.
`For example the object code may be generated by the C++
`Compiler available from Symantec, Inc. of Cupertino, Calif.
`Although a general purpose computer system has been
`described,
`it can be appreciated by one skilled in the art,
`however, that the following methods and apparatus may be
`implemented in special purpose hardware devices, such as
`discrete logic devices, large scale integrated circuits (LSI’s),
`application-specific integrated circuits (ASIC’s), or other
`specialized hardware. The description here has equal appli-
`cation to apparatus having similar function.
`FIG. 4 illustrates a plurality of processes and/or apparatus
`which may be operative within system 150C. At the highest
`level, for example, at
`the highest level
`in the ISO/OSI
`networking model, an application program 401, such as a
`tclcconfcrcncing application, an audio/vidco server, or a
`data server, communicates with conference accessory 404 in
`the form of Application Program Interface (API) calls. Each
`accessory 404-406 is a derived component which adds some
`additional capability to the conference component 400. An
`accessory 404 receives the API calls from the application
`401 and events from conference component 406 (indirectly
`via accessories 405 and 406). An accessory claims API calls
`and events directed to it, and forwards those not directed to
`it. In this way, all events intended for the application 401 are
`passed along through the accessories to the application 401.
`Similarly, API calls for the conference component are passed
`to the conference component through the accessory stack.
`Because the application interfaces with only a single
`accessory, overhead and complexity of the application are
`reduced over a system in which an application interfaces in
`parallel with n accessories.
`FIG. 4a shows operation of the API call used to create an
`acccssory stack. Thc API call MTConfcrcnccAcccssorizc( )
`accepts one of two forms of arguments: 1) an accessory
`string listing the desired accessories in the desired order
`from top to bottom of the stack; or 2) all automatic acces-
`sories which will stack all automatic accessories in an
`arbitrary order. As previously discussed, accessories are
`derived components including a conference component 426
`and a capability component 420, 421 and 422 as shown in
`frame 440. These capability components and conference
`components make up derived components 430, 431 and 432.
`When an application wishes to stack accessories it is nec-
`essary to sever the conference component from all but the
`bottom accessory in the stack. This is performed within the
`accessorized
`API
`call
`by
`calling
`MTConferenceAccessorizeUpon(_ ) which unglues,
`for
`example, capability component 421 of derived component
`431, and reattaches it to derived component 432 to form new
`
`10
`
`15
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`derived component 424 as shown in frame 441. By itera-
`tively calling MTConferenceAccessorizeUpon( ) accessory
`stack 425 is created. The top of the stack is then linked to the
`application as shown in frame 443. In this way the capa-
`bilities of the accessories are accumulated serially between
`the application and the conference component. Thus, the
`API calls and events are passed through the accessory stack
`with each accessory watching for events and calls relevant
`to it. If the event or the call is relevant to the accessory the
`accessory will take some action. If it is not relevant to the
`accessory, the accessory merely passes it along to the next
`level of the stack until it reaches either the application or the
`conference component depending on which direction the
`message is flowing.
`Because the capability component provides its capability
`to the teleconference system while remaining independent of
`the application, an application with only minimal telecon-
`ference capability may appear to the user to be quite robust
`simply by accessorizing a number of accessories. The acces-
`sories are transparent to the application and are typically
`stored on the system heap in memory.
`In the case of
`automatic accessories, the application need not know of the
`existence or capability of the accessory. The application
`merely issues API calls as it would in the prior art and the
`accessories take care of themselves. Such accessories will
`
`forward events (including events related to the accessory) to
`the application but the application can ignore unfamiliar
`events without detriment. If the application “knows” about
`the accessories, such events may be used, e.g.
`to update
`menus or status information. Accessories are generally inde-
`pendent of the transport protocol used and do not deal with
`the real time media.
`
`Accessories fall within two classes, accessories associated
`with a window and faceless accessories. Many window
`associated accessories are used for relatively low bandwidth
`sharing functions including but not limited to, file sharing,
`shared whiteboard, chat window, application sharing and
`desk top sharing. File sharing allows members of a telecon-
`ference to share files by placing those files in the associated
`accessory window. Application sharing would allow mem-
`bers to share a running application. For example, a word
`processing document may bc sharcd such that all mcmbcrs
`can edit the document during the conference. A shared white
`board accessory would create a window in which graphics
`and text can be shared between members. Desk top sharing
`allows the teleconference members to access and use items
`residing on remote members’ desk tops. A chat window
`could be used as a low bandwidth replacement for the
`audio/visual media of the teleconference allowing near
`real-time sharing of typed messages.
`To remain independent of thc application, thc window
`associated accessories take advantage of certain features of
`the operating system and the MovieTalk Toolbox.
`Specifically, the accessory must be able to identify system
`events that apply to it before the application receives the
`event. Each
`accessory makes
`a
`call
`to
`MTToolboxPreviewSystemEvent( Upon receiving a sys-
`tem event, the MovieTalk Toolbox passes it to each acces-
`sory which has made this call until an accessory claims the
`event or all such accessories have failed to claim this event.
`
`For example, a mouse down event may be passed to an
`accessory which determines if the mouse down occurred in
`its window. In this way, user interaction is handled trans-
`parently to the application. In one embodiment correspond-
`ing windows on a remote end point of some or all of the
`windows associated accessories automatically reflect
`changes, e.g., typing, cutting, pasting, posting, etc., to the
`
`
`
`5,857,189
`
`7
`local window. Simultaneously, the local window will auto-
`matically “share” remote changes. Thus, corresponding rep-
`resentations will appear in both the local and remote win-
`dows associated with a particular accessory.
`Other window associated accessories perform other types
`of functions, such as window mirroring. Window mirroring
`associates events within some window of interest with the
`rcal-timc mcdia cvcnts and converts thosc window occur-
`rences into a video stream. This might be particularly useful
`in the context of a lecture with, for example, changing slides.
`In such case, it is desirable that the slide be associated with
`the audio and video at the proper time in the lecture. By
`placing the slides in a window subject to window mirroring,
`the slide will be so associated and converted to a video
`
`stream receivable by the teleconference members. A movie
`of the teleconference could subsequently be played back and
`the audio, video and the slides in the movie would be
`correctly associated.
`Faceless accessories have no associated window but nev-
`ertheless provide some useful capability. Examples of face-
`less accessories include call
`logging, data compression,
`encryption, and protocol translation. Call logging can be
`used even where no other member has that capability. It
`might, for example, track the number of calls placed and
`received, to whom, and the disposition or length of the calls.
`Faceless accessory have no direct user interaction. Rather,
`they remain independent of the application by monitoring
`messages moving through the accessory stack and taking
`action according to the messages. While in most cases the
`ordering of window associated accessories in the accessory
`stack can be arbitrary, faceless accessories need to be at the
`bottom of the stack (e.g., closer to the conference
`componcnt). Morcovcr, within a group of facclcss
`accessories, specific ordering is desirable. For example, data
`compression should be performed before encryption.
`Moreover, the ordering must be the same at both end points
`(e.g., so that decryption occurs before decompression at the
`remote endpoint). Also significant is the fact that accessories
`communicate through a point
`to point
`link rather than
`through a multicast. This allows accessories to be used
`between any two conference members even if other mem-
`bers do not have that accessory capability. For example, in
`a three-way teleconference in which only two members have
`data compression. The two having data compression can
`communicate in compressed messages while not compress-
`ing the messages sent over the links to the third member.
`The conference component 400 allows the application
`401 to establish communications between two or more
`teleconference stations. Control
`information, and media
`information can be transmitted between the first participant
`system and a second participant system. The conference
`component will be shown in more detail in FIG. 5. Confer-
`ence compo