CU-SeeMe Change History README file 1-27-95 by Dick Cogger This document collects the changes that have occured to CU-SeeMe, through the various releases for the Mac, since the start of the 0.70 series. Most recent changes are at the top of the file. ------- 0.80b2 --------- 1) some bugs with slide projector fixed (bizarre per-cent, lockup if close window while sending). 2) New timer code--transparent to user, but might be more robust. 3) Floating window code disabled--solves problems with inconsistent window highlighting, "About Talk" no longer floats. 4) A user not sending video can now send ungarbled Talk--previously they could only send one message because bw manager didn't allocate any bw (bw controls being currently associated with Local video window) and their name was garbled. 5) Bug fix to speed up AuxData (extra retrys were often done). 6) Bug fixed that caused lots of clicks and used up cpu when > 15 senders were available on a reflector. 7) mods to UI handling to improve performance. 8) Exponentially weighted moving average of rates display. Display is set up with a parameter of .5, which means that the display value at time t, d(t) is: d(t) = .5*[x(t) + .5*x(t-1) + .5^2*x(t-2) + .5^3*x(t-3) + .... = .5*x(t) + .25*x(t-1) + .125*x(t-2) + .0625*x(t-3) + ... Result is that frame-rate and Kbps indications don't fluctuate so wildly when the framerate is low. When, for example, there is a big change from much movement, the rates will start to drop immediately, but won't settle to the new value for a couple seconds. ------- 0.80b1 --------- Slide Window stuff: 1. Slide Window AuxData type has been changed from 2 to 'CUsp' (transparent to user except different versions do not recognize each other-- i.e., 0.80a3 is obsolete.) 2. When you send a slide, the AuxData routines keep it available for receivers to request retrys of missing pieces until one of the following conditions is true: 1. A new slide is sent 2. MAX(30 seconds,twice original transmission time) elapses 3. The slide window is closed Previously, only 1. was controling. 3. Slides will not be received from a participant unless you are also receiving video from that participant. 4. The slide window menu item now alternates between "Open slide window" and "Close slide window" 5. The vertical dimension of the slide window is adjusted to fit on the monitor. Transmitted slides are the same size as is displayed, and will be positioned at the top of larger destination slide windows. Slides arriving from a larger source are truncated at the bottom. 6. The slide window large cursor will not appear and no remote pointing/queuing will be allowed unless the item has been sent at least once. Previously, it appeared to work, but nothing was sent. 7. When you leave Local mode, the slide that would have been queued had you not been in Local mode is queued. In other words, you catch up with the current state of the conference. 8. Fixed an anomaly in the button behavior that would occur if a new slide arrived while you were in Local mode, but yet had no slides in your stack 9. If you try to open SlideWindow without Quicktime installed, it will not be allowed, since SlideWindow uses the QT JPEG compressor. Even if you are receive-only, you need QuickTime in order to receive slides. Miscellaneous: 1. The application beeps if a connection request is received while you are in Waiting state (regardless of whether the acceptance dialog appears) 2. The application clicks whenever a new participant joins the conference, subject to a (new) preference item. 3. Video windows do not automatically come to foreground when they open, solving problem with Talk window typing being misrouted 4. Menu item for audio window brings it to the foreground (instead of just making it visible). 5. Reflector messages terminate the connection immediately (instead of waiting for user OK). 6. The reception hold down interval (during which time packets from a recently closed connection are ignored) has been increased from 30 sec. to 60 sec. Some comment on this is necessary to insure that it doesn't confuse people in point-to-point testing situations. 7. Audio squelch level is saved in preferences 8. Frame-Differencing and square decompression routines in PPC version have been modestly optimized. 9. Packet sequence number wrap-around is now allowed (to account for nv's 2-byte seqnum). 10. The kbps display in the rates bar now includes all packets sent or received on the CU-SeeMe port, with the exception of packets that are received from an IP address for which there is no rate bar to display it. Previously, only video was counted in the outgoing direction, and only _valid_ video, aux data, and OC packets were counted incoming. E.g., out of sequence packets, video packets for a closed window, etc. were not previously counted, nor was audio. 11. The transmission rate cap applies only to video+aux data, so OC packets and audio packets may cause the outgoing kbps to consistently exceed the cap. 12. The pull down stats display and the packet loss statistics that are used to adjust the rate cap are based on video + oc packets, and are only accumulated when video is being received. This approach is required since aux data and audio data have different sequence number spaces. This is essentially the same as before, except that there was a logic error that would sometimes allow a packet to enter the byte count without entering the packet count. Hence, the average packet size may have been over-estimated before. 13. Copyright and Permission notices have been modified: Contained in the application's About and also in the README.0.80.basic... file, it has been changed slightly: permission to modify has been deleted (not very meaningful with binary only, will be spelled out for Plug-In example sources), permissions granted explicitly only for the current version, reserving the right to modify permissions with future releases. ------- 0.80a3 --------- 1. A fix to the pop-up in the local window control panel for selecting digitizers which appeared in 80a2 (and in 70b13). The previous version *may* have introduced a freezing problem (although it appeared to work fine), especially when using System 7.5, especially on PowerMac's (we think). This fix is also in 0.70b15. 2. Please do not connect to "Self" as it will probably hang up your machine. ------- 0.80a2 --------- Note that the Plug-Ins are new and won't work with 80a1 and the old plugins won't work with 80a2. What's Different: 1) QuickCam support--The ability to select vdig (so you can use QuickCam) is brought forward from 0.70b14. However, the QuickCam won't produce a 640x480 image, so the SlideWindow is less useful than with a normal video source. 2) Delta-Mod 16K audio -- Charlie Kline's own 16Kbps audio encoding which first showed up in 70b13 has been brought forward. Remember that vat users will not be able to decode this signal; just Maven and CU-SeeMe for now. 3) The four required Apple Events are now supported, thanks to Aaron Giles. 4) DNS names are now supported in the connect dialog, but not yet in the Nickname file. A further release will have support for url format nicknames and saving bookmark files containing a url which will launch CU-SeeMe and connect to the site pointed to by the url. Apple events will also work for launching/connecting, so it should be possible to set up web brousers to establish CU-SeeMe sessions. But we havn't had time to wring this stuff out for this release. 5) There is a new preference item to open windows automatically when new video sources are discovered, which was previously the standard behavior. The new default is NOT automatic. That means that you would need to check this box to get the old way of working. The purpose of this change is to prevent naive first-time users from hooking to a busy reflector via a modem link, with default settings, and getting a flood of 8 windows most of which can do nothing but jam up their slip server. For the rest of us, it will allow you to get the folks on the screen you want and then not be annoyed by additional windows ceaslessly popping up. The full utility of this mode must await implemntation of the "Participants List" window which will have an entry for each particpant who is not displaying in a window. This option only applies to reflector connections. In 2-party, available video is always opened. 6) There is a new preference item to disable direct screen drawing, and omit black borders if direct screen drawing is disabled. Also, black borders are 2 pixels wide rather than 4. For those doing demo's with powerbooks and projectors, wanting to run in Mirror mode, this choice should allow the desired operation. 7) Default "Change Tolerance" is now 30 instead of 24. The result should be just a little less bandwidth, but little visible impact. On AV Mac's, I find that a value of 34 seems tolerable. 8) Change in IP address no longer wipes out old Preferences. 9) Preference file handling now allows compatibility across versions, so that we can add additional fields without destroying old information. Running an old version will, however, wipe out any new preference fields that it is not aware of. This will require a minor update to the 0.70 series (look for 0.70b15) to allow seamless switching between .80 and .70 series (except that running.70 will erase new preference items 5) and 6) above) 10) The "Local/Remote" button on slide projector behaves differently: it always displays as Local, but when you click it highlights (rev video) meaning you are *in* local mode. When it is normal black on white, it means you could click it to *go into* local mode. 11) The Aux Data facility has been improved in several ways. It can now transmit various items in an interleaved fashion, so that a large item will not delay the transfer of other items. It will repeat very short items a few times to enhance the probability of correct reception. It will avoid sending unnecessary control information. It will more efficiency handle error recover for multiple recipients. The plug-in interface now keeps Aux Data items around for 15 seconds after they have been sent greatly enhancing the probability of the items being received correctly. In our testing, the result is that the Talk window responds quickly and reliably, even when one or more slides are being transmitted. ------- 0.80a1 ------- OVERVIEW: new in 0.80 1) A "SlideWindow" facility with which you can capture 640x480 stills, transmit to all participients (who have SlideWindow open) and then point with the mouse and have everyone see the pointer. You can also switch among a number of slides and have the remote partipants see the same thing. SlideWindow is an "AuxData Application" which is invoked with the SlideWindow menu item on the Conference menu. 2) An "Auxilliary Data Transport" providing reliable one-to-many delivery of data constituting auxilliary materials for sharing in a conference. Data is transmitted as "Items," with an item being defined as a string of bytes contained in memory. The AuxData transport takes care of packetizing and any neccessary retrys to ensure reliable delivery. This transport is used by the built-in SlideWindow application or by plug-in AuxData applications (see below). 3) A Plug-In interface so that seperate modules can add functionality to CU-SeeMe. There will be (soon but not with the alpha release) a "Function Module Developer's Kit" consisting of documentation and sample plugins and a CodeWarrior project with libraries to facilitate development. If one or more plug-ins is in the same folder as CU-SeeMe at launchtime, a menu will be added (for each). 4) A "talk" plug-in (in source as an example) for sharing typed messages as with IRC. The Talk module implements a "chat" window that allows exchange of text messages. 5) An AuxData tracing tool for examining data flows when debugging or testing AuxData applications. The AD-Trace module is a testing or debugging tool that shows all "AuxData" traffic. 6) Also look for a new version of the reflector which will prevent sending of AuxData to participants who are not running the appropriate AuxData application (or who don't have it). This version is currently running at Cornell at the usual address, 132.236.91.204. You can use this reflector or you can make point-point connections to test the AuxData applications provided with the alpha 0.80. If any of the alpha-test group can run the new reflector, currently 2.50b1, please do and advise this group. With luck, there will also be a further enhanced reflector out soon, with additional facilities for interoperating with vat and nv. That version will also support AuxData transmission. ------- 0.70 b15 changes --------- 1. A fix to the pop-up in the local window control panel for selecting digitizers which appeared in b13. The b13 version *may* have introduced a freezing problem (although it appeared to work fine), especially when using System 7.5, especially on PowerMac's (we think). 2. A fix to a problem with handling Preferences files, especially when changeing back and forth from 0.70 to future (alpha) versions. This fix erroneously announced as being in b14, previously. -------- 0.70 b14 changes --------- 1. There is an additional audio encoding-- Charley Kline's delta-mod 16K bps encoding (thankyou again, Charley). This should work much better with low bandwidth links, such as 64K ISDN links, and possibly with 28.8K modem connections. However, compared to the DVI 32K encoding, assuming no packets lost in either case, the sound quality is noticibly poorer, although speech is entirely intelligible. You will not be able to use this encoding to converse with anyone using an earlier version of CU-SeeMe. You will not be able to interoperate with VAT. You should be able to use it with recent versions of Maven. ------- 0.70 b13 changes --------- 1. Support for the Connectix QuickCam (Yea!), the $100 combined camera and digitizer that plugs into your serial port, including an addition to the control panel you see under your own window that allows you to choose which of available digitizers to use. 2. Correct strange behavior when using a conference ID greater than 255. 3. Correct behavior when your own video is "paused" -- it was sending at much too high a rate. 4. Internal change dealing with packet sequence numbers and interoperation with VAT for periods longer than a couple hours. NOTE: This version will replace existing "CU-SeeMe Preferences" file, causing all settings to revert to default values. Before running this version, you may wish to take note of your current settings (e.g., Compression Tolerance, your name if not easily recalled, etc.). ------- 0.70 b12 changes --------- 1. Fix a bug introduced in 0.70b10 that caused audio connectivity to be flaky. In other words, some participants would receive your audio while others would not. 0.70 b11 changes: 1. Fix a bug in the processing of audio which potentially could be the cause of random crashes. 2. Allow incoming audio packets to continue to be processed even while the mouse is held down in the menus. For example, this allows incoming audio to continue to play out while you are looking through the list of participants in the Participants menu. Audio will continue to play out for 10 seconds at which point your connectiong will time-out in the reflector and it will stop sending you CUSM packets. ------- 0.70 b10 changes ------- 1. Nicknames >30 char no longer cause a crash on startup (but will be truncated to 30 characters). With the previous b9, the workaround for this bug was to avoid long nicknames. 2. Old Prefs files no longer cause crashes when opening a sound channel (as when clicking Push To Talk). With the previous b9, the workaround was to through away the preferences file and be sure to quit cleanly after using audio to save a good prefs file. 3. There is a small change to the OpenContinue message (CU-SeeMe's conference control protocol messages) as to the indication of changes-- result is much less work for the reflector as people come and go on a busy reflector. As before with bug fixes, there should be no user visible changes (apart from lack of crashes for the unwary). Reflector operators may notice many less log messages when folks have converted to this version. ------- 0.70b9 changes -------- 1. One case of "push to crash" related to wrong initialization of a sound channel. Not clear whether this fixes all cases. 2. A bughalt on a Mac IIcx because it was unable to initialize 4 sound channels. CU-SeeMe will now be happy if it can initialize at least one. It still trys to open 4 sound channels at initialization, but if it gets an error return after the first, if will settle for what it has. 3. Bughalts will now not send you to the dumper (or MaxBug) but will give a dialog with a message and then quit cleanly when you click OK. 4. There was a problem where the MinKbps control under Transmission under the Local window worked improperly. In particular, if the MinKbps were set to a value greater than 100, the first digit might be invisible. It could then appear that Min was, say, 10 but the Max could not be set below 110 or 210. ------- 0.70b5 --------- Be sure you use SoundManager 3.0 extension with Audio capable CU-SeeMe (but NOT on the PowerMac). CU-SeeMe0.70b5 is now available on gated.cornell.edu /pub/video for anonymous ftp. ***WARNING*** This is beta software. It is based on the previous 0.70b1 and contains no new features, only bug fixes. Several bugs in the area of audio have been fixed, and we do not expect that we have introduced new problems, but software folks always say that and aren't always correct, so beware. There is at least one crash producer still in this code. ------ New Stuff in 0.70 ------- 0.70b1 The principle enhancement in 0.70 versions is the inclusion of Audio, based on Charlie Kline's Maven code. It works with the new reflector and supports multiparty operation. BUT. ***Now Hear This*** (and tell your friends): AUDIO WILL NOT WORK CONNECTING WITH A MODEM!!! I know it would be great if it did, but it just doesn't. You need at least 32K bits/sec just for the audio (when speaking or listening) and modems only do 14.4K. If you decide to be a tester, watch out for the following: * Don't run CU-SeeMe0.70b1 and FTPd at the same time. At least on a Quadra 840AV it crashes after a while. Don't know if b5 changes this. * Problems have been reported with LC's and Quadra 650's using Spigots. * One particular Powerbook 180 and one PowerMac 8100 had crashes, but others worked fine. * Results trying to use MacRecorder (on older Mac's, like the venerable cx and ci, which don't have built-in audio) have been problematic. We've ordered a MacRecorder and will try to come up with a clear understanding. Any info/experience would be welcome. * Use the new reflector. If you hook to a reflector, and it's running the new code, you will probably get a Message Of The Day, telling you whatever the reflector operator wants you to know. 70bN will probably work with the old reflector code for video, but there may be problems with the audio. Shaking out these model-specific problems may take a while, since it's really hard for us to reproduce all the variations here. If you do experience crashes (and still want to continue), please try without any extra inits, or perhaps without other apps running; we have had problems with the moire screensaver, for example. REFLECTOR There is also a new version of the reflector, which you need to run to have the audio properly handled. (Note: we are one release further to b2 compared with the version released last week. You need this new version to support the new MOTD feature in the reflector/client.) It will also permit the use of stand-alone Maven. It is on the usual anonymous ftp site, gated.cornell.edu /pub/video. AUDIO Audio is controlled from a small window and works just like Maven. You can choose Push-To-Talk mode (PTT) or set a squelch level with a small pointer to the left of the audio-level bar. There are boxes in the audio window to turn receive and send on and off entirely. Or you can turn off audio from a particular particpant by pushing the speaker button under their video window (they will get the mic on your window X'd to indicate you won't hear when they speak). Also, you can choose to turn off receiving from standalone Maven clients who connect to the reflector (a temporary hack until we have a list-window for participants not displaying video). If you push the mic button on someone's window, you establish a private talk channel to them. Push again to go back to general conference audio sending. CONFERENCE MENU The Conections menu has been renamed to "Conference" since it now includes an item to open the Audio Window (if you've closed it). In future, there will be more conference-management related items on this menu. Of course, as time goes by, we may need to re-organize the menus to make sense of future developments which aren't even gleams in the eye today. THE EYE Also on remote window button bars is an eye-con (sorry, couldn't resist). If open, it means that the person in the window is looking at you-- or actually that they have a window open on their desktop showing your video stream. If they close the window, the eye at your end closes. When the eye is open, it looks a little sinistre, some folks think. Icons are still being edited. MOTD With the new reflector, you can set up a message which will be displayed to folks as they connect. (If they use 0.70 or later.) If you operate a reflector, you might want to use this facility to explain policies, etc. that apply to use of your reflector. SAVE WINDOW POSITIONS New on the File menu is an item you can use to save current window positions. Until you use it, they open tiling left to right. You probably want to move them around while you remember the order they came up and then save. The Participants menu lists the order that windows open as you initially connect to a reflector. You can go back to defaults by chucking your preferences file. This facility will be improved to make it easier to get the results you want. THE BLACK BORDER If part of the video portion of a CU-SeeMe window is covered, the program uses QuickDraw to move video into the window. Otherwise, optimized routines draw directly to the screen. Particularly on a slower Mac, drawing with QuickDraw is very slow. So you will know when this is happening, a black border shows on such a window. PREFERENCES LIMIT ON NUMBER OF WINDOWS You can set a preference for the maximum number of windows you want to show at one time (default 8, set between 2 and 8), including your local window. This feature will help if you have limited screen real-estate. CONFERENCE ID New on the Connection dialog is a box for conference ID, default of zero. The new reflector will reject all participants with the wrong number, and it can be configured with a conference ID other than zero. If both reflector and participants go with the defaults (zero), it works the way it always has. -------------Basic CU-SeeMe Info--------------- Get the latest file labeled CU-SeeMe.README.txt. for a consolidated collection of information on CU-SeeMe. CU-SeeMe was initially written for the Macintosh by Tim Dorcey with design assistance and sponsorship by Richard Cogger of the Advanced Technology group in the Network Resources division of Cornell University's Information Technology department (CIT). Important early contributions came from: Cornell University Medical Colleges (CUMC), Scott Brim, and John Lynn. Since Oct. 1, 1993, the CU-SeeMe Project receives funding from the National Science Foundation. A very significant collaborative effort at Cornell University Medical Colleges (CUMC) is contributing substantial expertise and code. This material is partially based on work sponsored by the National Science Foundation under Cooperative Agreement No. NCR-9318337. The Government has certain rights in this material. *****The fine print***** Copyright 1993, 1994, Cornell University Cornell hereby grants permission to use, copy, modify, and distribute this program for any purpose and without fee, provided that these copyright and permission notices, and those of Cornell's collaborators included below, appear on all copies and supporting documentation, the name of Cornell not be used in advertising or publicity pertaining to distribution of the program without specific prior permission, notice be given in supporting documentation that copying and distribution is by permission of Cornell. CORNELL MAKES NO REPRESENTATIONS OR WARRANTEES, EXPRESS OR IMPLIED. By way of example, but not limitation, CORNELL MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THIS SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS, OR OTHER RIGHTS. Cornell shall not be held liable for any liability with respect to any claim by the user or any other party arising from use of the program. The audio portion of CU-SeeMe was provided by Charley Kline's Maven. Charley Kline, cvk@uiuc.edu University of Illinois Computing and Communication Services 28 Feb 1994 Copyright (c) 1994 by Charley Kline and the University of Illinois Board of Trustees. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of Illinois, Urbana and its contributors. 4. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE TRUSTEES AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE TRUSTEES OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.