`Riddle
`
`I lllll llllllll Ill lllll lllll lllll lllll lllll 111111111111111111111111111111111
`US006175856Bl
`US 6,175,856 Bl
`*Jan. 16,2001
`
`(10) Patent No.:
`(45) Date of Patent:
`
`(54) METHOD AND APPARATUS FOR DYNAMIC
`SELECTION OF COMPRESSION
`PROCESSING DURING TELECONFERENCE
`CALL INITIATION
`
`(75)
`
`Inventor: G uy G. Riddle, Los Gatos, CA (US)
`
`(73) Assignee: Apple Computer, Inc., Cupertino, CA
`(US)
`
`( * ) Notice:
`
`This patent issued on a continued pros(cid:173)
`ecution application filed under 37 CPR
`1.53(d), and is subject to the twenty year
`patent term provisions of 35 U .S.C.
`154(a)(2).
`
`Under 35 U.S.C. 154(b), the tenn of this
`patent shall be extended for 0 days.
`
`(21) Appl. No.: 08/727,824
`
`Sep. 30, 1996
`
`(22) Filed:
`(51) Int. Cl.7
`........................ .. . G06F 15/16; G06F 15/177
`(52) U.S. Cl .
`............................................. 709/204; 709/227
`(58) Field of Search ......................... 395;200.34, 200.Gl,
`395/200.16, 330, 705, 706, 200.36, 200.75;
`354/284.4, 281.3, 514; 709/ 222, 227, 228,
`230, 220, 204, 231, 263; 340/825.5, 825.44
`
`(56)
`
`References Cited
`
`U.S. PA1ENT DOCUMENTS
`
`5,546,395 * 8/1996 Sharma et al. ......................... 370/84
`5,557,749 " 9/1996 Norris ............................. 395/200.18
`S,587,928 * 12/1996 Jones el al. ...................... 364/514 A
`5,600,646 " 2/1997 Polomski ............................. 370/263
`5,621,894 * 4/1997 Menezes et al. ................ 395/200.12
`5,742,773 * 4/1998 Blomfield-browo et al. ....... 395/200
`5,859,979 * 1/1999 Tuog et al. ..................... 395/200.58
`
`OTHER PUBLlCPJlONS
`
`International Telecommunication Union, "Draft ITU-T Rec(cid:173)
`ommendation H.245, Line Transmis.sion on Non-Telephone
`Signals; Control Protocol For Multimedia Communicatioa,"
`Nov. 2, 1995, pp. 1- 189.
`
`* cited by examiner
`
`Primary Examiner-Glenton B. Burgess
`Assi5tant Examiner-Tod Kupstas
`(74) Attorney, Agent, or Finn-Blakely, Sokoloff, Taylor &
`Zafmao
`
`(57)
`
`ABSTRACT
`
`A digital processing system and method which controls
`selection of a compressor in a communication system. In one
`embodiment, the method comprises receiving at the digital
`processing system information from a communication port,
`which information identifies decompression processing
`capabilities at a remote processor, and selecting in response
`to the information a particular compression process for use
`in compressing data for transmis.5ion to the remote proces(cid:173)
`sor.
`
`5,206,934 * 4/1993 Naef, III .............................. 395/200
`
`21 Claims, 6 Drawing Sheets
`
`20
`
`l
`
`.,..
`10
`
`'\
`30
`
`IPR2016-01710
`UNIFIED EX1003
`
`
`
`U.S. Patent
`
`Jan.16,2001
`
`Sheet 1of6
`
`US 6,175,856 Bl
`
`20
`"-- 23 J
`
`"-- 21
`
`15
`
`.,,.
`
`10
`
`FIG. 1
`
`' 30
`
`
`
`U.S. Patent
`
`Jan. 16,2001
`
`Sheet 2 of' 6
`
`US 6,175,856 Bl
`
`L(')
`L(')
`....-
`
`\
`
`(..)
`l.t')
`l.t')
`
`.a
`LO
`LO
`..-
`
`"C
`
`~"-1
`..-
`
`0
`L(')
`..-
`
`\
`
`.c
`0
`L(')
`..-
`
`I
`
`II
`
`L(') ca
`
`....--L(')
`~~
`c;
`tjgg!I
`g oo 0 o
`o oogo
`0 00 0
`o o0o0
`g aao0
`0 aao0
`a oao
`o oaoo0
`o goo00
`oo 0
`
`cJoO
`
`Q)
`LO
`l.t')
`....-
`
`0
`I'-..-
`
`Q,)
`0
`l.O
`
`(J oo
`
`r11g!I
`g oo0o
`o oogo
`o oo a
`o ooDa
`8 oa0a
`0 00 0
`o OoO
`0
`o a0ao0
`o gaooa 0 0
`
`0
`0
`..-
`
`J
`
`N
`•
`C!J
`~
`
`-
`
`
`
`U.S. Patent
`
`Jan.16,2001
`
`Sheet 3 of 6
`
`US 6,175,856 Bl
`
`FRAME
`DISPLAY ¢ BUFFER <;:::==
`321
`.3.1.il
`
`/150c
`
`,-----
`
`---KEYBOARD
`
`CURSOR
`CONTROL
`
`32a
`
`HARD
`COPY
`DEVICE
`3_24
`
`MAIN
`MEMORY
`
`.__,,_,lp!llli3_o_4~
`
`" . ~
`
`.
`
`.
`
`___,
`
`k'/'-. _
`•
`
`I
`I
`I
`I
`K""A~ -~
`I
`~
`-;-v'
`I
`I
`I
`I
`I
`I
`
`READ ONLY
`MEMORY
`
`3.0.6
`
`MASS
`STORAGE
`DEVICE
`NZ
`
`. )'
`
`BUS
`
`'
`
`7
`
`301
`
`PROCESSOR
`
`~150
`
`NETWORK
`CONNECTOR K/'-. _
`.
`
`ill
`
`____.
`
`SOUND
`OUTPUT
`DEVICE
`m
`
`VIDEO
`INPUT
`DEVICE
`329
`
`SOUND
`INPUT
`DEVICE
`.32.6
`
`K"A~-~
`..
`
`)
`
`)
`
`COMM
`DEVICE
`
`.
`
`NETWORKING MEDIUM
`
`FIG. 3
`
`
`
`U.S. Patent
`
`Jan.16,2001
`
`Sheet 4 of 6
`
`US 6,175,856 Bl
`
`APPLICATION PROGRAM
`
`CONFERENCE LAYER
`
`TRANSPORT LA YER
`
`NETWORK LAYER
`
`401
`
`400
`
`402
`
`403
`
`160
`(
`
`170
`
`FIG. 4
`
`
`
`U.S. Patent
`
`Jan. 16,2001
`
`Sheet 5 of 6
`
`US 6,175,856 Bl
`
`Begin Teleconference (or if there is an existing
`teleconference add new member or delete
`old member)
`
`502
`
`.,
`
`506
`Will this
`processor
`transmtt
`data?
`
`N
`
`y
`
`1 I
`
`Determine a list of
`compressors that the
`processor can use to
`compress data. 50.e.
`
`•
`
`Assign a ranking to each compressor
`available to the processor, indicating
`the relative efficiency, bandwidth, or
`proportional reduction in data word-
`length or other indicator of
`compressor 'goodness' expected to
`be achieved when the corresponding
`compressor is used. filQ
`
`!
`530
`~
`l_....
`~
`
`'
`Determine a list of
`decompressors available
`to this processor~
`
`,,
`Make list available
`to other processors
`in the network ~
`
`~
`t
`l 525
`~_.../
`t
`t
`l
`'
`t
`~
`
`...
`-
`
`'
`Issue request to other
`processors in the network for
`information identifying a list
`of decompressors available
`to the other processors filQ
`
`'
`Extract, from information that is
`received, a list of
`decompressors available to
`each of the other processes in
`the teleconf ere nee fil8
`
`'
`
`-
`Select the 'best' codec,
`according to the ranking, that -
`can be understood by all
`addressed recipients. fil
`
`Store the selcted best codec.
`;. where other routines can find
`the codec. ill
`
`FIG. S
`
`
`
`U.S. Patent
`
`Jan.16,2001
`
`Sheet 6 of 6
`
`US 6,175,856 Bl
`
`~-----------------~
`I
`
`SENDER/INITIATOR
`
`603
`
`604
`
`610
`
`620
`
`,--------------,
`:
`RECEIVER
`63 31
`RECEIVER'S CODE
`\.f FOR COMPRESSORS
`AND
`DECOMPRESSORS
`AT RECEIVER
`
`I
`I
`I
`I
`I
`I
`
`CODE FOR
`COMPRESSORS
`AND
`DECOM PRESSORS
`
`LIST OF
`COMPRESSORS
`AVAILABLE ON
`SENDER
`
`(LIST OF
`DECOMPRESSORS
`AVAILABLE ON
`SENDER)
`
`SELECTING CODE
`AND
`RANKING CODE
`I REQUESTING CODE
`
`(SENDING CODE)
`
`605
`
`I
`I
`I
`I
`I
`I
`606 I
`I
`I
`I
`I
`I
`I
`
`~7 I
`
`I
`I
`I
`
`~8 I
`
`I
`I
`I
`I
`I
`I
`
`601
`
`619
`
`FIG. 6
`
`634
`
`I
`I
`I
`I
`I
`
`612
`
`LIST OF
`DECOMPRESSORS
`AVAILABLE ON
`RECEIVER
`------------
`(LIST OF
`COMPRESSORS
`AVAILABLE ON
`RECEIVER)
`
`(SELECTING CODE
`AND
`RANKING CODE)
`
`63~ (REQUESTING CODE) I
`63~ SENDING CODE
`
`I
`I
`I
`I
`63SV
`I
`I
`I
`636 I
`I
`I
`I
`
`I
`
`I
`I
`I
`
`630
`
`
`
`US 6,175,856 Bl
`
`1
`METHOD AND APPARATUS FOR DYNAMIC
`SELECTION OF COMPRESSION
`PROCESSING DURING TELECONFERENCE
`CALL INITIATION
`
`BACKGROUND
`
`5
`
`15
`
`2
`selected data compressor. A communication port is coupled
`to the selected data compressor to allow the selected data
`compressor to provide compressed data for transmission.
`A method, according to one aspect of the present
`invention, comprises receiving, at a transmitting processor,
`information from a communication medium which provides
`an identification of decompression processing capabilities at
`a receiving processor and selecting, at the transmitting
`processor, a particular compression process for use in com-
`10 pressing and transmitting data from the transmitting proces(cid:173)
`sor to the receiving processor through the communication
`medium.
`In one embodiment, the communication medium may be
`considered to include a transmitting modem to phone-line to
`receiving modem connection without any conventional net(cid:173)
`working systems. In another embodiment, the communica(cid:173)
`tion medium may be considered to include a network system
`of computers with or without phone-line connections.
`Another aspect of the invention comprises a computer
`readable medium, containing executable computer program
`instructions, in a digital processing system. The instructions
`when executed in the system cause the system to perform the
`steps of receiving at the system information from a com(cid:173)
`munication port which identifies decompression processing
`capabilities and selecting, in response to the information, a
`particular compression process for use in compressing data
`for transmission. The particular compression process will
`typically be compatible with at least one of the identified
`decompression capabilities.
`It will be appreciated that video compressors are usually
`different than audio compressors. Therefore, the compressor
`negotiation process of the present invention is typically
`repeated twice. That is, a process according to the invention
`is performed for video data, and then another process
`according to the invention is performed for audio data. The
`process may also be repeated again if other data (e.g., a text
`file), to be compressed by yet another compressor, is trans(cid:173)
`ferred between the participants in a teleconference. It will
`also be appreciated that these negotiation processes may be
`performed substantially in parallel in time or serially. For
`example, the receiving processor may transmit information
`concerning video and audio decompressors at the same time
`or at different times. If data files (e.g., a text file) are to be
`transferred, the receiving processor may also transmit infor(cid:173)
`mation concerning decompression capabilities for such data
`files. It will be appreciated that the various compressors may
`be categorized into two categories: lossy and lossless. The
`video and audio compressors are often lossy, and the com(cid:173)
`pressors for data files, such as text files, are lossless.
`
`In teleconferencing applications between computers that
`are coupled by a networking or communication medium,
`data is generally compressed. Data is compressed for a
`number of reasons, including bandwidth limitations in the
`networking or communication medium, the information rate
`of the processors providing data to the medium, and the
`number of processors (and by the number of processes on
`each processor) trying to send data to the medium simulta-
`neously.
`Unfortunately, a large number of compression algorithms
`and processes are available, complicating data communica(cid:173)
`tion. Because the computer systems which are coupled for
`teleconferencing need not be of the same type, nor even
`operate on the same platform, and frequently do not have
`common teleconferencing applications or other telecommu(cid:173)
`nication applications available thereon, compatibility prob(cid:173)
`lems frequently arise. Selecting a data compression process
`or algorithm where several are available, that is compatible
`with at least one decompression process or algorithm on a
`remote processor can be problematic, especially given the
`fact that by definition data communication between the
`computer systems is not yet possible. Selecting a codec, or
`"compression/decompression" pair of processes, on remote
`processors can thus be difficult.
`When an application detects a problem, in that the data
`being received is compressed and that no decompression
`algorithm or process is available on the current processor to
`decompress the data, the application generally either 35
`terminates, or alternatively, a receiving processor on which
`an application has difficulty decompressing data may send a
`signal to the transmitting processor indicating that a problem
`has been detected, and requesting that the transmitting
`processor switch to a different compression algorithm. Thus, 40
`the transmitting processor will switch to different compres(cid:173)
`sion process and the receiving processor will determine if
`the received data can be decompressed.
`Although this hit-and-miss approach to codec negotiation
`is occasionally successful, the options become unmanage- 45
`able as the number of codecs or the number of parties
`involved in a teleconference increases.
`Therefore, a need has arisen for an automatic codec
`selector that determines what decompressors are available
`on each message recipient, determines what compressors are 50
`available on the current transmitting processor, and selects
`the best codec possible. The need is also arisen for a codec
`selector that automatically changes from one codec to
`another as new members join, or old members leave, a
`teleconference.
`
`20
`
`25
`
`30
`
`SUMMARY OF THE INVENTION
`An apparatus, according to one aspect of the present
`invention, comprises at least two data compressors, each of
`which compresses data from a transmitting processor
`according to a particular compression process, and a selector
`which is coupled to receive information from a communi(cid:173)
`cation medium. The selector receives information from a
`receiving processor and selects one of the two data com(cid:173)
`pressors based upon the information received from the
`receiving processor. The selector is typically coupled to at
`least one of the data compressors in order to select the
`
`55
`
`BRIEF DESCRIPTION
`FIG. 1 shows a number of computer systems coupled via
`a network each have a teleconferencing application running
`thereon.
`FIG. 2 shows one example of networked systems, spe-
`cifically showing two systems on such a network or com(cid:173)
`munication medium.
`FIG. 3 shows the system components of a general com(cid:173)
`puter system, having a number of component devices,
`60 coupled to a communication medium (e.g., a networking
`medium).
`FIG. 4 shows various levels of abstraction which describe
`the operation of codec selection, which is largely invisible to
`the user and to the higher levels of processing, for example
`65 the application.
`FIG. 5 shows a method according to one embodiment of
`the present invention.
`
`
`
`US 6,175,856 Bl
`
`3
`FIG. 6 shows such an embodiment of a computer readable
`medium containing a set of program instructions that, when
`executed by a digital processing system, cause the system to
`perform steps according to one embodiment of the present
`invention.
`
`DETAILED DESCRIPTION
`
`The present invention will be understood more fully from
`the detailed description given below and from the accom(cid:173)
`panying drawings of various embodiments of the invention,
`which, however, should not be taken to limit the invention
`to the specific embodiments, but are for explanation and
`understanding only. Specific circuit devices, components,
`and processes and numerous details such as specific com(cid:173)
`puter architectures, etc. are set forth in order to provide a
`thorough understanding of the present invention. In other
`instances, well-known structures and devices and processes
`are shown in block diagram form, rather than in detail, in
`order to avoid obscuring the present invention. However, it
`will be apparent to one of ordinary skill in the art that the
`present invention may be practiced without these specific
`details. In the present description, the terms "computer
`system", "work station", "machine", and "node" will be
`used interchangeably so as not to obscure the present
`invention needlessly. It will be understood that any of these
`may be replaced with a plurality thereof, or may be replaced
`with other intelligent systems such as servers, remote
`machines. Computer systems, servers, work stations, and 30
`other machines may be connected to one another across a
`communication medium including, for example, a network
`or networks. For simplicity of explanation, the term "com(cid:173)
`munication medium" refers to any medium for communi- 35
`eating including conductors (e.g., common carrier telephone
`lines) or electromagnetic transmissions and includes simple
`point to point systems (e.g., a first modem coupled to a
`telephone line which is coupled to a second modem) or
`complex systems where communications originate from a 40
`computer in a first LAN (Local Area Network), transit
`through router systems and/or gateway systems, to a second
`LAN. The term communication medium also refers to the
`network of networks referred to as the Internet.
`This disclosure contains copyrightable material which is
`reserved to the assignee of the present invention and is
`subject to copyright protection. The owner of this material
`has no objection to the facsimile reproduction by any one of
`the patent disclosure, as it appears in the Patent and Trade- 50
`mark Office patent files or records, but otherwise reserves all
`copyrights whatsoever.
`FIG. 1 shows three computer systems 11, 12, and 13 and
`a router 17 coupled to a network 10, and three computer 55
`systems 21, 22, and 23 coupled to another network 20, and
`another three computer systems 31, 32, and 33 coupled to
`another network 30.
`As shown in FIG. 1, a number of computer systems
`coupled via a network may each have a teleconferencing
`application running thereon. A teleconferencing application
`15 running on one computer system 12 sends teleconfer(cid:173)
`encing messages over the networks to the teleconferencing
`applications running on the other computer systems 22 and
`33 that are participating in the same teleconference. One
`computer system on a network may have running thereon a
`
`20
`
`10
`
`4
`teleconferencing application that is engaged in more than
`one teleconference simultaneously. Some computer systems
`on the networks are not engaged in any teleconferencing. As
`shown in FIG. 1, some computer systems or router systems
`5 are coupled to more than one network, such as router system
`17 and system 33; these computer systems or router systems
`can exchange information with other computer systems on
`each of the networks to which they are coupled, and may
`further serve as conduits (e.g., routers or gateways) by which
`computer systems on a first network can exchange informa-
`tion with computer systems on a second network. Some of
`the computer systems shown in FIG. 1 are personal com(cid:173)
`puters having only one user. Furthermore, some of the
`15 computer systems may be Macintosh computers, while
`others operate on non-Macintosh platforms.
`A network may be a local network connecting a few
`machines to one another, or a much wider network connect(cid:173)
`ing large numbers of different types of machines. Many
`networks, especially wide area networks, connect machines
`operating on different platforms with different operating
`systems and different microprocessors, but provide consis(cid:173)
`tent protocols to allow the machines to communicate. Vari-
`25 ous approaches to networking are known in the art, includ(cid:173)
`ing distributed networks and centrally administrative
`networks.
`FIG. 2 shows one example of two interconnected systems,
`specifically showing two systems coupled by a communi(cid:173)
`cation medium. Processors 150C and 155C are each con(cid:173)
`nected via a network adapter 160 and 165, respectively, to a
`network medium 170 which is a communication medium.
`The network medium 170 may be a digital bus, a video
`coaxial cable, a fiber optic cable, or other medium through
`which information may be transferred from one location to
`another and there may be intervening computer systems (not
`shown) which route or pass along the transmitted data. It
`will be understood upon reference to FIG. 2 that other
`arrangements are possible; for example, each of the proces(cid:173)
`sors 150C and 155C may be connected via other network
`adapters or other communication medium adapters to other
`network or communication media. Although reference is
`45 made to networks and network media, it will be apparent
`upon reference to the specification of the present invention
`that other communication media such as a telephone line or
`other link may be used. It will also be appreciated that the
`two systems each typically include at least one communi(cid:173)
`cation port which is used to couple its computer system to
`the communication medium. A communication port is typi(cid:173)
`cally an interface such as an Ethernet adapter or token ring
`adapter or "card" or an RS-232 interface (for connection to
`a modem); other types of interfaces which may be used as
`a communication port will be appreciated by those skilled in
`the art.
`Each of the computer systems (or digital processing
`systems) shown in FIG. 2 has a video monitor such as 150D
`60 and 155D, a video input such as 150A and 155A, an audio
`input such as 150B and 155B, a keyboard input (155e or
`150e) and a mouse (150/ or 155j), and possibly other
`peripheral input/output devices connected thereto. Com-
`65 puter systems such as 150 and 155 may connect to a number
`of network media having differing types of media substrates,
`and further having different network protocols. Processor
`
`
`
`US 6,175,856 Bl
`
`10
`
`5
`150C and 155C each display images on the video monitor
`150D and 155D, respectively, and receive inputs from other
`peripherals. Processors may also be running computer
`programs, including application programs and transport
`layer programs, that may call one another and serve one
`another, exchanging data, addresses, and control signals.
`FIG. 3 shows the system components of a general com(cid:173)
`puter system, such as the system 150, having a number of
`component devices.
`As shown in FIG. 3, a processor 302 is connected via a
`system bus 301 to a main memory 304, a read only memory
`306, and a mass storage device 307. The main memory may
`be a volatile memory array composed of dynamic random
`access memory. The read only memory 306 may be com- 15
`posed of a CD ROM, an initialization cache, erasable
`programmable read only memory, EEPROM, flash memory,
`or other read only memories. The mass storage device 307
`may be configured as a disk drive writing to, and reading
`from, hard disks, floppy disks, or other storage devices. The
`processor 302 may be a Power PC microprocessor or an Intel
`Pentium microprocessor. Processor 302 may have a cache,
`either a write back or read through configuration, storing
`frequently used values in a static random access memory or
`other memory array, the cache in some configurations being
`coupled directly to main memory 304. Various other intel(cid:173)
`ligent devices may be connected to the bus 301, including
`direct memory access devices.
`Also shown in FIG. 3, various peripherals exchange
`information via bus 301 with the processor 302, main
`memory 304, read only memory 306, and mass storage
`device 307. These peripherals include a display 321, gen(cid:173)
`erally a video monitor or LCD. A keyboard 322 is also 35
`coupled to the bus 301, permitting alphanumeric entry. A
`cursor control 323 coupled to the bus 301 may be configured
`as a mouse or track ball. A sound output device 328, also
`coupled to the bus 301, may be configured as a loud speaker
`or a number of loud speakers. A video input device 329 may
`be configured as a video camera, a scanner, a fax input, or
`similar device, and is coupled to the processor 302 via bus
`301. A sound input device 326, also coupled to the bus, may
`be configured as a microphone or a sound synthesizer, or
`may be a telephone connector. Finally, a communication
`device 327, also coupled to the bus 301, allows communi(cid:173)
`cation between any of the above devices and the network
`medium 170 via the network adapter 160. It will be recog(cid:173)
`nized that communication device 327 could be a modem, or 50
`any network interface device, including a token network
`interface device or other FDDI device. It will also be
`apparent upon reference to the specification herein described
`that the communication medium may be any communication
`link, such as a telephone line or other link, and that the
`system shown in FIG. 3 may be coupled through the
`communication device 327, which may be a modem, to
`another system not shown in the figure. In some
`embodiments, the networking medium is a digital commu(cid:173)
`nication medium, allowing high speed digital communica(cid:173)
`tion between computer systems over the network.
`A number of human users are collectively engaged in a
`teleconference using at least two systems such as 150 and
`155. The users may be coworkers sharing work-related
`information, friends enjoying a personal conversation, or
`
`6
`any other group of individuals discussing a subject of
`common interest. It will be apparent that, although human
`users are herein described, the computer systems may be
`servers, automatic database systems, control systems, or any
`5 other system capable of receiving and/or sending data.
`At each computer system in one embodiment, a user
`selects a teleconferencing application. In one example, each
`of the teleconferencing applications sends and receives
`sound, video, and other data. In other examples, sound-only
`teleconferencing applications may be used, for example to
`exchange voice-only information, or to broadcast speeches,
`lectures, or music. In still other examples, control-only
`signals may be exchanged, such as in simple white-board
`applications. Regardless of the situation, however, compres(cid:173)
`sion of data can increase the speed, reliability, and
`performance, while reducing bit-errors by allowing greater
`error correction and data rate.
`At a first computer system, video data is compressed
`according to a first compression algorithm. As stated above,
`video data is compressed for a variety of reasons, including
`bandwidth constraints of the network and of the 1/0 sub-
`systems of the computer systems. The compressed video
`25 data is combined with other data (e.g., header data) into one
`data packet or several data packets. It will be recognized that
`the sound and other data may also be compressed, or may be
`in an uncompressed form. Each packet is addressed to each
`of the other computer systems having applications engaged
`in the same teleconference. Depending on whether a multi-
`cast feature is available, a separate packet may need to be
`sent to each recipient computer system, or it may be that a
`single packet can be received by more than one recipient.
`As shown in FIG. 4, various levels of abstraction describe
`the operation of codec selection, which is largely invisible to
`the user and to the higher levels of processing. In many
`embodiments of the present invention, applications do not
`become involved in codec selection; these processes occur at
`lower levels of management. Video and other data may be
`provided to a lower level process by an application, and the
`data are compressed by the lower level process into a packet,
`addressed to at least one recipient. In one embodiment, the
`45 audio and video data are processed by the conference layer
`400 and passed in a compressed format to the layers 402 and
`403 and then to the communication medium for communi-
`cation to a receiving processor.
`A distinction is made between teleconference initiation
`requests and packets of compressed data. Teleconference
`initiation requests are made by a first user using a telecon(cid:173)
`ferencing application running on a first computer system,
`generally over a network, to a second user on another
`55 (second) computer system. In most cases, the first user and
`the second user are individuals and are the only users on the
`respective computer systems. In other cases, (for example,
`university, government, or institutional settings) at least one
`of the computers is a main frame or other multi-user,
`60 multi-task computer system. Teleconferencing initiation
`requests are therefore addressed to individual users, seeking
`to establish a teleconference. However, once a teleconfer(cid:173)
`ence is established, teleconference data, including com-
`65 pressed data packets, are addressed to particular teleconfer(cid:173)
`encing processes running on a computer system. Therefore,
`in most embodiments, recipients are identified by addresses.
`
`20
`
`30
`
`40
`
`
`
`US 6,175,856 Bl
`
`10
`
`40
`
`7
`Once a teleconference is established, packets may be
`addressed over the network to any of the application-level
`teleconferencing processes running on any computer sys(cid:173)
`tems in the network. With multi-cast, packets may be
`addressed to more than one process at a time.
`The packet must be in a form that can be decompressed
`by the recipients. To be so decompressed, the packet must be
`compressed by the sender according to a compression for(cid:173)
`mula corresponding to a decompression formula available
`on the recipient. The pair of formulas are collectively the
`"codec," or compression/decompression, formulas.
`In some embodiments of the present invention, the send(cid:173)
`ing computer system has available to it more than one
`compression algorithm. In such cases, one embodiment of
`the present invention includes a step of ranking the com(cid:173)
`pression algorithms in an order of preference. The ranking
`generally is selected to maximize or minimize some value,
`bandwidth (data rate) being an efficient example where the
`highest data rate is ranked the highest. A teleconferencing
`application operating according to this embodiment of the
`present invention sends a packet compressed according to
`the best codec available at the sender (the process sending
`the packet) to all recipients (processes receiving the packet)
`in the teleconference. The "best" codec is the codec on the
`sending computer system that provides the greatest data rate,
`yet is decompressible on any and all packet recipients.
`Because some codecs and compression schemes are better
`(that is, have a faster data rate or a lower probability of bit
`error) than other codecs and compression schemes, each
`transmitting processor transmits at the best codec for which
`all intended recipients of the message can decompress. The
`codec thus selected is common to all recipients in the
`teleconference.
`In other embodiments, the sending computer system
`groups the recipients into two or more groups according to
`the best codec available in each group of recipients, and
`sends a separate packet to each group or to each computer
`system in each group according to the best codec available
`on all recipients in the group. The codec thus selected is
`common to all recipients in the group. The latter approach is
`also applicable when multiple networks are linked together, 45
`and recipients are not all on one network; this may be the
`case when some recipients are located with the sender on the
`same local-area network while others are remotely located
`across a wide-area network, or when an inter-bus exchange
`is needed to transfer information to some recipients. Since
`each network may have different bandwidth availability,
`different codecs for each network may be appropriate.
`According to some embodiments of the present invention,
`the consequent increase in available data rate made possible
`by an appropriate matching of compressors with decom(cid:173)
`pressors generally makes up for any added complexity in the
`initiation messages. Due to the large number of compression
`and decompression algorithms and processes available, most
`embodiments of the present invention include an initial
`exchange of information between the sender and the recipi(cid:173)
`ent of a packet containing compressed data. The exchange of
`information contains information pertaining to the selection
`of the best codec. In one embodiment of the present 65
`invention, an automatic codec selector receives information
`from each recipient and from this information determines a
`
`8
`list of decompressors available on each recipient member of
`a teleconference. The codec selector then eliminates from
`the list decompressors for which no compressor is available
`at the current processor. The sender ranks the compressors
`5 available at the sender after this elimination, from best to
`worst, according to some ordering preference. In one
`embodiment, this preference is overall data rate. Then the
`ranked list of compressors at the sender is compared or
`matched to the list of decompressors available on each
`recipient, and this comparison produces a ranked list of
`compressors for which there is a corresponding decompres(cid:173)
`sor on each recipient. The sender then transmits data com(cid:173)
`pressed according to the best compressor available on the
`15 sender for which there is a corresponding decompressor on
`each recipient.
`An embodiment of the present invention is further shown
`in FIG. 5. In this embodiment, processors having telecon-
`20 ferencing applications join an ongoing teleconference by
`exchanging information with processors already participat(cid:173)
`ing in the teleconference. The embodiment shown in FIG. 5
`is one example of a sequence of steps which are performed
`according to this example of the present invention. It will be
`25 appreciated that the various steps may be performed in a
`different sequence or certain steps may be omitted. For
`example, step 508 could be performed before step 502, and
`step 516 could be omitted. The embodiment shown in FIG.
`5 begins in step 502 in which the teleconference begins (or
`30 if a teleconference exists,