root/rat/trunk/MODS @ 3310

Revision 3310, 61.1 KB (checked in by ucacoxh, 17 years ago)

- Seal up 4.1.9 for Win32 only release.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
6The modifications here include the development versions, not all of which
7are released.  This list is not intended to be comprehensive. The current
8release is available at
10v0      Initial audio tool
11        Old VAT and RTPv2(5) compatibility
12        PCM DVI GSM LPC codecs
14v1      Vicky's restructuring
15        Dropped old VAT compat mode
16        Used in ReLaTe trials
17        New UI including small mode
18        Video Sync code added
20v2.0    Transmitter cleaned up
21        Lots of bugs fixed
22        Replaced DVI and LPC codecs with VAT4 versions
23        Released in Boston WWW4
25v2.1    Ported to Tcl7.3/Tk4.0
26        Added UI response slider
28v2.2    Added play and rec options
30v2.3    Port to Tk4.1/Tcl7.5
32v2.4a0  Port to Windows95
33v2.4a1  Fixed active speaker indication
34v2.4a2  Fixed GSM
35v2.4a3  Release to MERCI partners for testing
36v2.4a4  Fixed broken assertions...
37v2.4a5  SGI fix
38v2.4a6  Security holes fixed
39        Assertion handling improved
40        Start at encryption and multi-rate audio
41v2.4a7  FreeBSD modifications
42        Fixed playout calculation (probably)
43v2.4a8  Added RTCP SDES TOOL field to stats panel
44        Fixed version number
45        Made packet repetition an option and set default to OFF
46        Fixed encoding selection bugs
47        Misc bug fixes....
48v2.4a9  Fixed participant display when audio device is busy
49        When device is busy audio controls get disabled
50        Added code to set microphone gain under Win95
51        Modified loop timing for win95 version so that it does not hog CPU
52        Made session title appear as window title with -C flag
53v2.4a10 Added OS type to RTCP tool string
55v2.5a0  Fixed long DVI packet format. Now there is only one state (VAT comp).
56        Reduced UI window border width. New look!
57        Added scrollbar to participants window
58        New participant stats code. Allows multiple windows...
59        Attempt to fix some of the stats
60        Popup window to request RTP name if resource not set
61v2.5a1  Changed redundancy packet format to conform to UCL-INRIA spec
62        Added error code to report use of old packet format
63        New code to do encoding name stats
64        Fixed RTCP RR packets to conform with latest spec
65        Made RAT look in .RTPdefaults for user name
66        Added IP address display in stats
67v2.5a2  Highlight other RAT users in list of participants
68        Ignore audio until RTCP packet received
69v2.5a3  Added encryption (Darren said it's compatible with vat)
71v2.6a0  Added command line option to set redundancy type
72        Started to change payload type to match draft-perkins-rtp-redundancy-01.txt
73        (Grouped headers, but haven't changed bit order yet...)
74v2.6a1  Finished changing the payload type.
75        Default redundancy pt=121
76        Send initial RTCP message as soon as we start up...
77v2.6a2  Allow window to resize horizontally (requested by
78        Updated copyright notice.
79        Updated about panel.
80        Added -pt pt/codec/clock/channels command line option.
81        Example: "-pt 121/redundancy" to set redundancy payload type to 121
82        Remove -rpt option (use -pt instead).
83        Remove -f2 option.
84        Change -f option to accept things like "-f pcm/dvi" to set redundancy type.
85v2.6a3  Fixed packing order so it resizes horizontally correctly.
86v2.6a4  New WIN32 version
87        Changed priority of thread
88        Fixed cushion code to work with I/O switching
89        Linked tcl and tk with WIN32 binary so no DLLs are needed
90v2.6a5  Partial rewrite of win32 audio driver to use static buffers
91        Solved most win32 audio problems
92v2.6a6  Made the prompt for .RTPdefaults information less user hostile
93        Fixed LPC decoding on SGIs (-fsigned-char does it!?!)
94v2.6a7  Removed old bitmap from control panel
95        Rewrite of small user interface (command line option -smallui)
96v2.6a8  Further rewrite of the small user interface
97        Fixed SO_REUSEADDR
98        HP-UX fixes
99        Added "-crypt <key>" command line option to enable encryption
100v2.6a9  Fix m/cast power meters when encryption is turned on.
101v2.6a10 HP-UX fixes
102v2.6a11 Remove debugging malloc wh  en NDEBUG is defined.
103v2.6a12 Code cleanup in preparation for mixer
104        Corrected URL on the about panel
105v2.6a13 Code cleanup in preparation for mixer
106        Added -li <local_interface> option for multihomed hosts
107        Removed annoying transient tag from pop-up windows.
108v2.6a14 Added an icon
109        Win32 fixes
110        Removed -li stuff, since it broke the win32 port.
111        More HP-UX changes
113v3.0.0  Restructure code for audio translator/mixer
114        Extended ascii hostnames (>15 chars) - useful for unicast
115        Additional RTP header validation
116v3.0.1  Major restucturing of main_rat.c, and split into several separate files.
117        Fixes for Linux.
118        Include full/half duplex stuff in all versions.
119v3.0.2  Bug fixes to auddev_linux.c
120        Fixes to RTCP header checks on little-endian machines.
121        Now obeys xresources settings.
122v3.0.3  Experimental release for Linux
123        Some fixes to encryption code: it still doesn't work though...
124v3.0.4  Major mods to init_session.c
125        Added mixer code to linux port.
126v3.0.5  Fake TS start if we TOG packets
127        Fix RTCP timestamp epoch to 1900 not 1970 to conform to RFC1889
128        Fix display of group address in options panel.
129        Fix CNAME.
130        Extensive changes for the audio transcoder/mixer.
131        New HP-UX audio device driver from UiO added.
132v3.0.6  More changes for the audio transcoder/mixer.
133        Fixes to Linux audio driver when in half-duplex mode.
134        Added the -version option.
135v3.0.7  Major changes for the audio transcoder/mixer: First version to work at all!
136        Now sources $HOME/.rat as tcl on startup
137        Linux fixes
138v3.0.8  CNAME now uses dotted-quad representation of the IP address, not FQDN.
139        16bit linear audio throughout main code: not all device drivers fixed yet.
140        Make DVI the default primary encoding.
141        Added L16 (16bit linear, uncompressed) codec.
142        Both sides of transcoder/mixer use same SSRC/CNAME.
143        Calculate RTCP reporting interval, rather than using constant 6 seconds.
144        Major rewrite of transmitter and receiver code (supports multiple red)
145        Added CSRC processing to receiver
146        Fix indication of active speakers
147        Update device buffer cushion code
148        Removed small (ReLaTe) UI
149        Minor redisign of option UI
150        Added lecture mode
151        Linux port now works again
152v3.0.9  Added minimal LBL conference bus support
153        Enabled voice-switching of video using LBL conference bus/vic
154        Fixed SGI 16 bit
155        Fixed WIN32 16 bit
156        Slight highlighting of participants after they stop speaking
157        Now uses tk4.2/tcl7.6
158v3.0.10 Prehang and posthang added to new code
159        IP_MULTICAST_LOOP is now on for the session port
160        We can now parse our BYE message although it is wrong
161        Packet repetition added to new code
162        Audio DC bias removal added for all platforms
163v3.0.11 We can no longer parse our BYE message, since it is wrong!
164        More UI changes... (packet format uses pull down menus)
165        Disable powermeters option added
166        Selective muting of participants possible with middle mouse button.
167        Automatic bias removal (turns off if not needed)
168        Fix handling of RTP packets with CSRC data
169        Rewrite of RTCP handling code...
170        Fix RTCP BYE packet
171        Transcoder/mixer now passes RTCP packets
172        Exponential fade on packets   (no good)
173        LPC redundancy alignment code (also no good)
174v3.0.12 Linear fade on repeated packets
175        Fade on repeated LPC decoded packets
176        Prevention of mixing dummies with no decompressed data
177        Packet length shown in UI
178        Can select N-level redundancy from command line (-f pcm/dvi/lpc for example)
179        Fix parsing of command line options
180        Lecture mode is on by default
181        Turn off lecture mode as soon as we send data
182        Added -loopback_rtp option for loopback of the RTP packets (RTCP loopback is always on)
183        Added audio device trading via the LBL conference bus
184        Added flakeway operation
185v3.0.13 Integrated transcoder/mixer into the main Rat code.
186v3.0.14 Move to tcl-7.6p2/tk-4.2p2
187        Fix linux/HP-UX ports
188        Fix for flakeaway
189v3.0.15 Assorted bug fixes
190        Hang onto multiple encoded data in receiver
191        Logic into UI for redundant coding types 
192        Fix LPC redundancy (Ho Ho)
193        Fix sending L16 with redundancy
194        Fix auto-select of "Mike mutes net" when running on a half-duplex machine
195        TCL_ALL_EVENTS in event processing loop (sockets from tcl scripts->fileevents)
196v3.0.16 Bug fixes to the transmitter
197        Fix CSRC processing
198v3.0.17 Fixes for Win32
199v3.0.18 Fix RTCP BYE packet on little-endian machines
200        Muting of output now frees data
201        Fix reception of 160ms packets
202        Fix uninitialised variable in rtcp_db
203v3.0.19 Remove spurious debugging messages when we can't open the audio device
204        Cleanup HP-UX audio driver
205v3.0.20 Can now select line-in/microne input on SGI machines
206        Added -K option to enable encryption (synonym for -crypt)
207        Cleanup Linux audio driver
208        Cleanup Sparc audio driver
209        Cleanup for draft-ietf-avt-profile-new-00
210        Added -double_speed (16kHz) option
211        Transcoder no longer hits stdin/stdout with audio ioctls
212        Rewrite and optimize decryption of RTCP packets
213        RTCP timer reconsideration done for every RTCP packet received (following presentation at Memphis IETF...)
214        RTCP SR and SDES fixes
215        Can now send/display PHONE, LOC and EMAIL SDES items.
216        Fixed mike mutes net operation for half duplex cards.
217        FreeBSD port now works.
218        Win32 version uses registry to store defaults.
219v3.0.21 Added signal handler, to catch SIGINT and exit cleanly (with RTCP BYE)
220        Linux device driver now accepts 16kHz operation.
221        Assorted bug fixes to Linux device driver.
222        Initialise device_time variable: prevents crash if we can't access the audio device.
223        The use of strdup() interacts badly with xmalloc(). Fixed.
224        Fixed transcoder RTCP BYE handling
225        * Branch here: v3.1 development starts, later v3.0 fixes will have to
226        * be forward ported
227v3.0.22 Remove debugging messages in statistics.c
228        Remove WBS codec
229        Remove -double_speed option
230v3.0.23 Linux port uses both audio channels, rather than just the left channel
231        Linux port no longer repeatedly resets the volume to 50%
232        Bug fix for HP-UX audio driver (Terje Vernly <>)
233        Fix CPU usage on Win32
234v3.0.24 Fix encryption
235        Fix loopback of packts
236        Fix crash in LBL conference bus code, sending focus when the CNAME was NULL
237        Fix RTCP header validation
238        Fix RTP header validation when padding bit is set
239        Fix voice switching of video using LBL conference bus with vic
240        Modifications to WIN32 silence detection as PC hardware often breaks previous algorithm.
241        Assorted Win32 bug fixes
242        Win32 HOMEDIR bug fix.
2433.0.25  Assorted Win32 fixes.
2443.0.26  Fixed bug in net.c that caused packets to cease processing on some Win32
245        boxes.
2463.0.27  Fix transcoder problems on half-duplex machines. Thanks to Sachin Sheth
247        for providing the fix.
248        Fix fonts for solaris 2.6.
249        * Released 15 August 1998
2503.0.28  Update copyright notice (the dates were wrong!)
251        Endian fix to the RTCP packet forwarding code (Thanks to Sachin Sheth).
252        Fixed HOMEDIR problem introduced in 3.0.27 for Win32.
253        Fixed catch when sourcing ~/.rat
254        * Released 22 September 1998
2563.0.29  Added -smallui option to use relate interface and to enable power
257        messages via the lbl confbus
258        Fixed -drop option
259        * Released 21 December 1998
2613.0.30  Fix statistics in RTCP SR/RR packets
262        Fix copyright notice in small UI
263        Fix URL in the about panel
264        * Released 6 January 1999
2663.0.31  Remove obsolete tcl/tk library code
267        Fix tcl/tk configuration on win32
268        Move to using winsock2.h on win32
269        * Released 29 January 1999
2713.0.32  Fix Tk resource files on Win32
272        * Released 4 February 1999
2743.0.33  Fix font in the statistics panel, which I broke in 3.0.31 (oops!)
275        Added A-law audio codec.  Back port from 3.2x.
276        Added MMX mixing support. 
277        Patch from Michael Wallbaum for transcoder on win32.
278        Made file processing use binary mode opens.  Win32 cares.
279        * Released 1 March 1999
2813.0.34  Removed -D$(USER) from Makefile (Reported by Ola Borrebak).
282        Added alaw to command line codecs (Reported by Dimitris Terzis).
283        Winsock 1/2 detection and selection. 
284        Bug fixes for Winsock 1 built with Winsock 2 headers.
287v3.1.0  Added the wide-band speech codec (use with the -double_speed hack)
288        Cleanup statistics.c
289        Fixed Win32 cname
290        Made left mouse button on participants toggle stats on and off
291        Keep input/output mode selection and gain settings when device trading
292        Reorganize the codec_* files
293        Add indication of loss rat to UI
294        Add automatic gain control
295        Fix CPU usage on Win32
296        GSM now implements 06.11 repair (so there)
297        Fixed self induced LPC bug :-)
298        Improved cushion code to give lower delay
299        Completely fixed highlighting (honest)
300v3.1.1  Default RTP port is 5004 (draft-ietf-avt-profile-new-00)
301        Turn off automatic gain control in the transcoder
302        Linux port uses both audio channels, rather than just the left channel
303        Linux port no longer repeatedly resets the volume to 50%
304        UI user participant code now maintains sorted list
305        No longer source $HOME/.rat on startup
306        Separate the UI from the media engine (use conference bus for communication)
307v3.1.2  Many changes to the conference bus protocol and support code
308        Allow multiple UI scripts (use -ui <name> to select)
309        Unify Linux/FreeBSD drivers into auddev_oss.c
310        Fix HP-UX audio driver (Terje Vernly <>)
311        Fix encryption code on little-endian machines
312        Fix RTCP header validation code
313        Fix security hole in confbus (zap [] in strings send to tcl)
314        Add Anna Bouch's UI code (use "-ui anna" to enable)
315        Add ReLaTe UI code (use "-ui ReLaTe" to enable)
317v3.2.0  - Codec interface rewrite. Based on structure holding all codec
318          parameters and pointers to init/encode/decode functions.
319        - Multi rate support. Multiple clock support (one per participant plus
320          a few internal ones to keep RTCP etc working).
321        - Rewrite of transmit code. Circular buffer is gone and now a list of
322          minibufs is used instead. Within each minibuf the unit_size (which
323          is calculated from number of channels, freq etc) remains constant.
324        - Rewrite of receive code to support multiple unit_sizes. Now each
325          receiver has a separate receive buffer. Within each buffer units of
326          different length can be mixed without any problems. The only
327          restriction is that for any particular time segment all coded_units
328          must be compatible (i.e same length /frequency/channels etc).
329        - All the code understands number of channels, variable unit sizes and
330          multiple frequencies. This information is deduced from codec
331          information. This includes mix and statistics...
332        - Added hooks for up and down sampling of remote participant decoded
333          audio.
334        - Cleaned up include file mess. Now each source file includes only
335          required headers. In the process of doing so I cleaned up a few
336          interfaces so parts of the code that do not need to know about
337          structures don't see the definitions and work with pointers.
338        - Various old and new bug fixes :-)
339        - Probably some more changes that I can not remember now as I didn't
340          bother to write them down as I was doing them ;-)
341        - Reimplemented repair code from previous release and left hooks for
342          pitch repetition and pattern matching. Now repair is multi-channel
343          and multi-freq.
344        - Centralized allocation of rx_queue_element's.
345        - Added CD input support
346        - Assorted bug fixes to the original UI
347        - Add reception quality chart to the original UI
348        - Fix encryption code on little-endian machines (again)
349        - Cleanup RTCP code and headers
350        - Many changes to the conference bus (Mbus) code
351        - Assorted bug fixes to the transcoder
352        - SGI version now sets initial volume to something sensible
353        - Incorporated Luigi's mods to FreeBSD driver
354        - Added Pattern Matching repair
355        - Fix loopback of RTP packets
356        - Modified rules_based_silence to work at rates other than 8K.
357        - Add balloon help
358        - Fix RTP header validation for packets with P bit set [Bill Fenner]
359        - Fix transcoder timing (RTCP packets are sent much too often:
360          loopback problem...)
361        - Fix freeing of units held in the receive buffer, when an RTCP BYE
362          packet is received.
363        - Seems that FreeBSD (unlike the rest of the known universe...) has
364          a SO_REUSEPORT, which we need to set if we're doing TTL zero
365          multicast. Sigh.
366        - Fixed timer code - works with all freqs that divide into 96000.
367        - Added channel coding functionality - it should now be possible
368          to slot in any scheme.
369        - Reimplemented redundancy to comply with new channel coding regime.
370        - Added interleaving.
371        - Fix decoding of encrypted packet (no longer blocks...)
372        - Fix encryption code on little-endian machines (again, again!)
373        - Fix fragment size on Linux
374        - Added header extension support.
375        - Remove LBL conference bus support (exercise for the reader: write
376          an Mbus to LBL conference bus bridge, to allow device trading...)
377        - Add binding for Control-Button-1 to mute individual participants
378        - Add lip-sync support
379        - Major UI rewrite
380        - New silence detection algorithm.
381        - Fix parsing of RTCP SR/RR packets on little-endian machines
382        - Fix of decoding path - repair works again now.
383        - Separated out cushion code (cushion.[ch]) and cleaned a little.
384        - Separated out the UI update code from the Tcl/Tk maintainence code.
385        - Modularise Mbus code
386        - Stereo (?)
387        - Time code simplified.
388        - Multi-channel silence suppression.
389        - Misordered packets counted.
390        - Remove NET_MUTES_MIKE and MIKE_MUTES_NET options. We now require
391          a full duplex audio device to operate. This should not be a
392          problem, since such hardware is readily available for all
393          platforms we care about (and some we don't...).
394        - Minor memory allocation optimization for native units and mbus
395          block_alloc replacing xmalloc for fixed size allocations.
396        - Modularisation of silence detection and voice activity code.
397        - Transmit buffer simplification.
398        - Changes labels on preferences panel to match sdr, since it makes
399          sense that way, and the old labels were broken dammit! (and I
400          don't care if they were the ones Windows uses....)
401        - Remove flakeaway options (Cadbury's must hate us...)
402        - Create RTCP database entries for new sources when we find them
403          in SR/RR packets, rather than ignoring them.
404        - Fix operation with -no_ui. This is not very useful though...
405        - Hack the RTCP decryption code to accept encrypted packets from
406          vat, even though vat sets the padding bit incorrectly, and gets
407          the length of encrypted SDES packets off by one.
408        - Fix source address checking in the mbus code
409        - Added sampling options to transmission menu.
410        - Added destruction code to coders and channel coders.
411        - Make sure the random number generator is initialised before use.
412        - Rejigged code to allow hot swapping of sampling format mid-session.
413        - Fix RTCP reporting interval, when running at other than 8kHz
414        - Change of RTCP reporting interval when freq changes.
415        - Replaced old AGC code.
416        - UI tweaks, bitmaps, titling, about panel.
417        - Playout point limits now optional.
418        - Allow for remote ui, enable with "-ui <mbus_address>"
419        - Watch for transmitter device clock being slower than ours and
420          corrective action.
421        - Cushion decrease only when not playing audio - stops interruptions.
422        - Allow `wait for mbus init message' on startup with "-wait"
423        - Redundancy new format - mods to rfc to match implementation.
424        - Removed auto_path initialisation from init.tcl and aatk.tcl.
425        - Interleaver (mk II) no longer halts the system (or works).
426        - Powermeters frequency independent.
427        - Own activity only sent when changing state.
428        - Activity changes no longer refresh participant info.
429        - Playout buffer size monitoring and device drift bias correction.
430        - Fixed problem with codec recognition at startup when rate not 8k.
431        - UI displays correct encoding with interleaver and redundancy.
432        - Wrote a configure script
433        - Graceful failure/stasis when device not available.
434        - Bitmaps match audio i/o ports at start up.
435        * Released to CAIRN/MECCANO for testing, 8 June 1998
437v3.2.1  - Assorted tweaks to the UI
438        - Cleanup mbus_encode_str interface
439        - a small change to function rx_source_playout in mbus_engine.c
440        - fixed bug in ui_update_video_playout
441        - lip-sync support
442        - play audio packets in no lip-synced mode when no RTCP SR is received
443          even if lip-sync is enabled. When SR is received, switch to lip-sync
444          mode
445        - bug in mbus resend code fixed.
446        - Cleanup parsing of command line options
447        - Add patches for HP-UX 10 from Dirk Meersman
448        - Remove HP-UX 9 compatibility: it makes the code cleaner, and
449          HP-UX 9 is completely obsolete anyway. Now if only we could do
450          the same with SunOS 4...
451        - Only allow lip-sync to be enabled if we are not running on the
452          Mbus base c  hannel
453        - Table for format conversions.  Windows ACM PCM Converter support.
454        * Released for testing, 10 July 1998
456v3.2.2  - Fixes for command line option parsing
457        - Improvements to playout calculation (less togged)
458        - Increased audio in receive buffer to be 1 cushion's worth. This
459          makes handling "fast" senders easier and also reduces togged units
460        - tcl2c now strips comments, 10-40% size improvement on tcl strings
461          (UNIX only).
462        - Removed fixed tables for g711 conversion.  Now calculated at start
463          time.
464        - Increased minimum pitch length in pattern match repair (less pings).
465        - Add support for TclX, and profiling of the tcl code
466        - Attempt to optimize some of the more intensive Tcl routines
467        - Reduce rate of power-meter updates, since profiling shows that is
468          an expensive operation.
469        - Added playout buffer size to participant info
470        - Converted jitter into ms for ui
471        - Increased initial estimate of jitter, and codec independent
472        - Reduced average playout delay, now just add/subtract cushion surplus
473          instead of whole cushion length to playout, i.e. we add exactly
474          the right amount.
475        - Rearranged files for more portable Windows configuration.
476        * Released for testing, 17 July 1998
478v3.2.3  - Added button in the UI to enable sound externalisation (the
479          actual 3d audio code is not present yet).
480        - Fix display of loss rates in the participant list ("loss diamonds")
481        - Updated sdr plugin (in sdr v2.5a4)
482        - Change initial silence detection threshold, such that we transmit
483          until the detector has trained rather than suppressing.
484        - Win32 release configuration added.
485        - Added reset of saved settings when version change detected.
486        - Minor change to low jitter playout handling.
487        - Fix parsing of -K/-crypt options
488        - Endian fix to RTCP packet forwarding code
489        - Remove TclX support (as part of the planned move to using the
490          Tcl plus-patch to cleanup the initialisation code).
491        - Fixed playout point calculation problems.  Playout buffer should
492          now have same order as source timestamps, no overlaps allowed.
493        - Powermeters tweak.
494        - Move to winsock2.h, in preparation for IPv6 port. NOTE: This now
495          requires that winsock2.dll is installed on Windows.
496        - Win32 ACM G.723.1 code.
497        * Release for testing, 24 August 1998
499v3.2.4  - Cleanup networking code
500        - Cleanup RTCP code
501        - Only send an RTCP BYE packet if the number of members is less
502          than 50. This means we just-about comply with the latest RTP
503          draft, although we should really implement BYE reconsideration.
504        - Fixed bug introduced into repair code.
505        - Increased powermeter rate and added table to improve vu performance.
506        - RTCP timeout frequency independent.
507        - Got ride of speaker table code. Highlighting is now from when playout
508          buffer created destroyed.
509        - Fix GSM codec
510        * Release for testing, 10 September 1998
512v3.2.5  - Fix transmission mute/unmute
513        * Release for testing, 10 September 1998
515v3.2.6  - Move all system specific configuration options and includes into
516          config_unix.h and config_win32.h to ease porting. Should also
517          simplify things when we move to a common code library among the
518          UCL tools.
519        - Audio loopback in hardware for Solaris/SunOS and Windows.
520        - Moved select on audio_fd out of networking code.
521        - Centralized code that destroys and empties playout buffers.
522        - Added "net mutes mike" and called it "Silence Suppression".  Works
523          off of creation and destruction of playout buffers.
524        - Assorted UI tweaks
525        - Move to using our own version of tcl/tk on unix machines, to
526          avoid the problems with initialisation scripts being sourced
527          from other installed versions.  We no longer compile the tcl
528          or tk initialisation scripts into rat.
529        - Merge GSM codec into codec_gsm.[ch]
530        - Modularize networking code
531        - Mbus code now batches messages before transmission, to reduce
532          the number of packets sent
533        - Update Mbus command set to better match latest specification
534        - Add 3d audio code
535        - Add IPv6 support under Windows NT 4.0 using the stack from
536          Microsoft Research (
537        * Release for testing, 9 October 1998
539v3.3.0  - Audio interface revamp.  Support for multiple cards.
540        - Osprey SunVideo Plus audio support added (buggy).
541        - PCA audio support added on FreeBSD (builtin speaker).
542        - Documented audio interface.
543        - Replaced audio_fd with audio_device to emphasize this is no longer
544          a file descriptor.
545        - Added null audio interface for devices not attainable.
546        - Safety net when opening an interfac   - Fix LSR and DLSR in our reception report packets (maybe)
547        - Fix muting of individual participants
548        - Update mbus command set
549        - Added virtual externalisation (sound source emanating from outside
550          the head even when listened to with headphones)
551        - File loading and saving added.
552        - Playout calc refinements.
553        - Repair schemes given queryable interface (like other modules). 
554          mbus and ui updated to reflect this.
555        - Fix for fatal bug in channel decoder arising from duplicates and
556          interaction with playout buffer.
557        - Merge in IPv6 fixes from Maryann Maher
558        - 3D rendering code added, debugged, and integrated into UI.
559        - Audio device interface changes - input format may differ
560                                           from output format.
561                                         - format conversion in audio
562                                           interface if dev does not
563                                           support required format.
564        - Win32 RTCP tool includes OS version of end host.
565        - Win32 Multiple audio device support bug fixed.  Uses matching
566          card and mixer.
567        - Fix stereo powermeters (work).
568        - Convert to use the common code library
569        - Disposed of old packet queues, now use simpler buffer and no
570          nasty macros.  (rx queue still there, when there's time it goes..)
571        - Re-wrote codec interface.  Codec wrappers appear in files
572          codec_*.[ch]
573          and codec implementation files appear in cx_*.[ch].
574        - codec_t axed and replaced with codec_id_t.  Look at codec.h for
575          manipulation functions.
576        - Codec repair functions appear in codec interfaces rather than
577          reair function.
578        - Removed all RAT dependencies from codec code, repair code, 3d code,
579          appart from a few basic types i.e sample, audio format, and
580          coded_unit.
581        - Disabled all channel coding except vanilla.  All to be
582          re-implemented.
583        - Added ability to read number of samples written to and read from
584          audio device.
585        - Made audio device id's (handles) mirror codec id's.  We now always
586          have a valid handle for a device, and can read/write to it.
587        - Removed interfaces.[ch].
588        - Replaced receive.[ch] with source.[ch] and replaced playout
589          buffer code with playout.c.
590        - Rewrote channel coder interface to be cleaner.
591        - Removed unnecessary dependencies in rate and channel conversion code.
592          Conversion routine now uses coded_units for input and output.
593        - Moved codec_state_list onto source structure and channel_coder_state.
594        - Fixed dependencies in repair and 3D rendering code. Their only
595          dependencies are now the codec files.
596        - Made converter interfaces same as audio device and codec interfaces.
597        - Changed 3d rendered to always output stereo.
598        - Fixed potential problem in 3D code where the audio frame size being
599          passed is smaller than the delay the render applies causing samples
600          to be shifted over the stack.
601        - Added tests directory where people can through tests for modules if
602          they care.  So far have added test_3d.c which found the last problem
603          and native.c used to fix bug in native coding types. 
604        - Fixed nasty bug in 3d rendered where at high sampling rates the delay
605          size is larger than the storage buffers between intervals causing
606          memcpy to overlap src and dst areas.
607        - Fixed bug in vdvi frame peek code and sizes returned by
608          vdvi_{en,de}code.  All codecs pass tests in test_codecs.
609        - Wrote timestamp code that allows easy comparison between multi-rate
610          clocks.
611        - Added first order differencing for sequences of timestamps so
612          wraps in 32 bit clocks do not cause discontinuities in modulo m
613          clocks and vice versa.
614        - Added iterators to playout buffer.
615        - Updated transmitter to use playout buffer with multiple iterators
616          instead of former custom list code.
617        - Modified channel code and source code for playout buffer iterators.
618        - Fixed widgetabbing (due to missing tk library scripts).
619        - CNAME now uses the IPv6 host address, if running on IPv6.
620        - Move mbus heartbeat into the common code library.
621        - Repair and duplicate handling put back into new decode path.
622        - Separated sample ops into audio_util.[ch].
623        - Added MMX mixing code for Win32.
624        - Moved bias control out of session pointer and into transmitter.
625        - Removed support for multiple mbus channels.
626        - Removed unnecessary include files from assorted source files.
627        - Cleaned up device reconfiguration code.
628        - Fixed l16 48k stereo name - was incorrect.
629        - Renamed certain functions to make names congruent to group of calls.
630        - Removed input_mode and output_mode from session_struct.
631        - Restored playout buffer length reporting functions.
632        - Added source flush if mix fails (source sample rate change).
633        - Added repair failure code, should only fail if sample rate changes.
634        - Added codec list option (-codecs) for launcher apps to know what is
635          available.
636        - Added payload mapping from UI.
637        - Added Sun's G726 public reference version.
638        - Redundancy encoder and decoder re-written but not linked in yet,
639          needs debugging.
640        - Rewrote win32 mixer interface code.  No longer use string matching
641          with pre-defined english names.  Still have to use some string
642          matching but only between names various controls from the driver
643          spit out.  Took circuitous route since no two driver vendors
644          implement mixer functions in same way.  Seems to be stable now.
645        - Modularized audio ports so that device interfaces now return
646          audio_port_details_t that contains string name and unique
647          input/output identifier to be used for port selection.
648        - Modified UI to have transmit and receive checkbuttons and replaced
649          bitmaps with string names since we cannot guarantee win32 port
650          names and changing between bitmaps and strings in the ui is ugly.
651        - Fixed transmitter bug where temporary audio_buffer iterator
652          was not being freed.
654v4.0.0  - Update license agreement -- we now use a standard Berkeley style
655          license for all files. See the file LICENSE for details.
656        - Removed output_gain and input_gain from session_struct.  Should
657          fix output gain going to zero on some updates.
658        * Released 31 March 1999
660v4.0.1  - Clarify license -- the LICENSE and COPYRIGHT files contradicted
661          each other, we now only have one file (COPYRIGHT) which is a
662          standard Berkeley style license.
663        - Fixed problem with pseudo-devices (auddev_null and
664          auddev_pca) that use gettimeofday to calculate how many samples are
665          available.  They were failing to include number of samples included
666          in "device" buffer left over from previous reads.  This meant device
667          time was always slow.
668        - Go back to ssrc rather than cname in UI for indexing entries. 
669          Issues running multiple instances on single machine otherwise.
670        - Playout buffer skew adjustment added so when playout buffer
671          deviates from expected size because source clock is different and
672          signal is temporarily silent an adjustment is made.  Only intervals
673          when adjustment made is when packet has arrived in current
674          processing interval so we do not adapt at the end of talkspurts.
675        - Made repair and converters communication like that of input and
676          output ports in ui.  i.e. tool.rat.converters.flush,
677          tool.rat.converters.add, tool.rat.converter.  Defaults for repair
678          and conversion are first type of module.
679        - Issues with mixing multi-rate fixed.  Existing code was not
680          accounting properly for different sample rates when positioning new
681          mixer head time.  This probably got introduced when the time
682          stamp method got changed since it definitely worked before (honest).
683        - Added status bar's to file window.  Hopefully clearer what is going
684          on.  Attempted fix button of state problems.
685        - Caching of previous talkspurt jitter.  Previously a fresh guess was
686          made at the start of each spurt.
687        - source_get_playout_delay now includes audio we believe to be in
688          device buffer.
689          So buffer shifts now work with cushion...hopefully.
690        - Added counter for skew adjustments to make adjustments less
691          aggressive.
692        - Win32 mixer corrections - mixer control code now works with all
693          the cards we have. Let this be the end of it!
694        - Added read_and_discard for reading all available packets and
695          discarding them. This is needed because there is a long delay
696          between opening the socket and the first read (due to ui startup,
697          audio device startup, etc...).  As a result lots of audio was
698          getting buffered at receiver with continuous sources at start up.
699        - Fixes to linux audio driver
700        - Fixed initial playout delay estimation.
701        - Stopped interaction between skew ajustment and repair.
702        - Assorted bug fixes to the UI
703        - Attempt to get participant highlighting correct
704        - Blending on samples dropped because of skew not quite there.
705        - Added unsigned 8 bit to device formats and added to conversion
706          routines.
707        - Partial SoundBlaster support on FreeBSD (out s16, in u8).
708        - Initial code for the move to using the RTP library - not used yet
709        - WAV file MAKEFOURCC bug fixed for non-Win32 little endian machines.
710          All platforms should be able to read WAV and AU files.
711        - Changed skew adjust back so it invokes repair to cover would-be
712          gap.
713        - Enhanced sample drop during skew detection.  Period that can be
714          be dropped determined by pattern matching samples in frame to
715          to have samples dropped in.  Then blend in start of what would
716          have been played to match point.  Quality improvement
717          more than compensates for extra cpu cycles.
718        - Redundancy encoder working again (95% confidence :-).
719        - Added dismiss button to file dialog.
720        - Add support for DES encryption to the mbus (on by default).
721        - Fix encryption.
722        - Fix UI codec failure when changing sampling config and no codec
723          with same friendly name exists.  Also fix for redundant codec
724          displayed when primary updated.
725        - Add timestamp to mbus packet headers
726        - Reorder initialisation sequence, to handle the new requirement
727          that the mbus can only send reliably to those entities we've
728          received a message from previously. This probably means that
729          the wait-on-startup hack for ReLaTe is broken, but we don't care
730          since the entire initialisation sequence needs redoing anyway
731          (the Bremen PSTN-to-Mbone gateway needs more fine grained control
732          than is possible with the current startup sequence).
733        - Fixed size of participant window so user can see 2 layers of
734          encoding when redundancy in use.
735        - Fixed channel coder reconfigure issue when changing sampling mode.
736        - The name of the RAT binary now includes the version number.
737        - Fix muting of individual participants.
738        - Added G726-16 using code from Marc Randolph's patch on comp.speech.
739        - Add sdr plugin (not tested)
740        - Fixed decoding preference problem when redundancy used.
741        - Fixed source muting (we discard the packets in statistics, rather
742          than not mixing source).
743        - Removed -drop command line option.
744        - Moved codecs that had CODEC_PAYLOAD_DYNAMIC into unassigned and
745          dynamic range so they are available in transmission panel.
746        - Removed half-duplex cards appear in devices list on Win32.
747        - Fixed ui update when switching channel coder.
748        * Released 14 May 1999
750v4.0.2  - Added message box for win32 users who launch with no command line
751          options, giving usage instructions.
752        - Added WSACleanup() to shutdown win32 sockets nicely.
753        - Fix inet_aton(), which prevents a crash on startup on Windows NT
754          service pack 3 and some versions of Windows 95.
755        * Released 15 May 1999
757v4.0.3  - Fix compilation with v1.2 of the Microsoft Research IPv6 stack.
758        - Catch WM_DELETE for preferences window. Reported by Atanu Ghosh.
759        - Check address and port is valid in command line parsing so
760          we don't dump core later.  Reported by Lorenzo Vicisano.
761        - Unrecognized options are ignored, but no longer stop processing other
762          options. This means that "rat-4.0.3 -f pcm -t 64" now
763          sets the TTL correctly, even though the -f is unrecognized, meaning
764          that we can start rat via sdr. Reported by Terry Gibbons.
765        - Fix occasional assertion failure in mix.c:133 `len < ms->buf_len'
766          (it looks like the condition in the assert is off by one, should
767          be 'len <= ms->buf_len'. If this doesn't fix it, there's a check
768          around line 242 of mix.c which sets things up so we don't overflow
769          the buffer - we just decrease the amount we write by one sample
770          there instead. Reported by Roy Bennett and others.
771        - Fix payload type mapping for PCMA-16K-Stereo.
772        - Mapping for existing rat/vat codec names.
773        - Primary payload type mapping using -f.
774        - Secondary payload type mapping using -f also.
775        - Fix restoration of previous audio port settings from saved values.
776        - Separated sound file handling into sndfile_wav.[ch] and
777          sndfile_au.[ch]
778        - Added support for default sndfile extension if none specified.
779          Win32 -> wav, others -> au.
780        - Added support for writing alaw and ulaw.
781        - Updated man page.
782        - Added sndfile_raw.[ch] for handling raw files.
783        - Added sndfile_valid_format.
784        - Fixed spurious debugging code in the windows audio driver which
785          would cause an infinite loop if activated (rare, but could happen).
786        - Split converter code up into convert_*.[ch] and added convert_types.h
787        - Fixed repair when next unit on playout buffer is less than expected
788          length away.
789        - Compilation fixes for Irix 5.3 contributed by David Balazic.
790        - Some linux audio drivers, in particular the ES1370 used in the
791          SoundBlaster PCI 128, don't support /dev/sndstat. Rewrite the
792          query functions to work with /dev/mixer instead.
793        - Handle known skew in the audio sampling rate for those linux audio
794          drivers which report it.
795        - Added 'high quality' converter, sinc filter.
796        * Released 2 June 1999
798v4.0.4  - Add ability to receive on one port yet send to another, requested
799          by Henning Schulzrinne. Usage: "rat addr/rx_port/tx_port"
800        - Compilation fixes for Irix 6.5 contributed by Bob Olson.
801        - Fix core dump caused by calling sndfile_write_audio with buffer
802          length of 0.
803        - Fix core dump when called with invalid command line arguments,
804          reported by Marcus Meissner.
805        - Fix passing of encryption key across mbus, reported by Ed Whelan.
806        - Remove support for the -wait option. This means we can't work with the
807          ReLaTe interface anymore but, once the split into multiple processes
808          is complete, ReLaTe will be able to drive the media engine directly.
809        - Remove most of the transcoder support - it didn't work anyway, and
810          needs to be reimplemented from scratch.
811        - Start the split into multiple processes: media engine, user interface
812          and controller.
813        - Added basic layered channel coder. Usage: rat -l n <address>/<port>
814          <address>/<port>, where n = no of layers and there is an address and
815          port for each layer. Only works with the WBS codec at present, and
816          probably not very well at that.
817        - Move the code to load and save settings into the media engine, and
818          out of the user interface.
819        - Fixed WBS codec so that it works with different endian machines.
820        - Added hash table to settings_load.
821        - Fixes for 64 bit IRIX from Peter Orbaek
822        - Some codecs' default payload values clashed with RTP spec:
823          PCM-16-K Stereo was 76, now 124; GSM-16K was 72, now 118;
824          GSM-32K was 73, now 119; GSM-48K was 76, now 123.
825        * Released 7 July 1999
827v4.1.0  - Fixed slow memory leak reported by Emmanuel Duros.  Vanilla
828          decoder was not checking all pb_add functions returned success
829          and so pointer was getting trashed.
830        - Fix RTCP RR DLSR field when reporting on a source from which
831          we've received no SR packets.
832        - Changed drop preference for incoming packet buffer overflows.  Now
833          drop incoming packet rather than earliest packet in buffer - makes
834          source packet processing better ordered.
835        - Remove address sanity checking for the layered coder from the
836          command line parser: it should be done when the socket is opened
837          since that makes the code address format agnostic.
838        - Added network_exit.
839        - Added per source gain control.  Now appears in participant panel
840          on audio pane.  Suggested by Jerry Isdale.
841        - Fixes for the Detexis Musica IPv6 stack on Windows NT.
842        - Send rtp.source.cname messages to the video tool when lip-sync is
843          enabled, so it can match sources up to those in the video session.
844        - Cleanup documentation of the audev_*.c files
845        - Fix loading of preferences: powermeter, lip-sync
846        - Fix the fileboxes on the Windows release version.
847        - Fix spurious transmission of tool.rat.lecture.mode() mbus messages
848        - Fix spurious transmission of mbus messages when
849          we are sending.
850        - Fix (hopefully) assertion failure in the mixer when trying to zero
851          blocks longer than the buffer.
852        - Improved layered channel coder, thereby making it incompatible with
853          4.0.4.
854        - Added persistent database pdb.[ch].
855        - Moved render_3D_data from the rtcp database into persistent database
856          as first step towards using common rtp code.  Lots of other fields to
857          do, but looks to work in principle.
858        - Add RPM spec file for RedHat Linux. Based on that contributed by
859          Stephen Adler
860        - Convert to using the RTP code in the common library.
861        - Fixed getenv not checking for null string after getenv in
862          auddev_osprey.c.  Reported by Dirk Kutscher
863          <>.
864        - Add playout_calc.[ch].
865        - Add ts_mul and ts_div to keep playout calc clean.
866        - Change default units per packet to 1, since PIPVIC2 says that the
867          end to end delay is too large otherwise.
868        - Rewrite the reception quality matrix
869        - Consistency changes: audio device and repair query now consistent
870          with the majority of interfaces.
871        - More consistency changes: channel_get_coder now consistent with
872          other interfaces.
873        - Add ability to mtrace between participants by clicking on the squares
874          in the reception quality matrix
875        - Split setting load between .RTPdefaults and .RATdefaults.
876        - Add cutesy popup boxes to the reception quality matrix
877        - Add device buffer occupancy check to auddev_luigi to try to fix
878          sb16 problems.
879        - Add toged and cont_toged back.
880        - Move source_check_buffering into rtp_callback.
881        - Fix mixer handling overlapping blocks.
882        - Changed win32 audio read and write methods, added audio event to
883          reduce CPU usage.  Fixed handling of non-blocksize writes.
884        - Modified auddev_null on Win32 to use WaitForSingleObject rather
885          than Sleep on Win32.  Reduces CPU considerably.
886        - Added colour to powermeters.
887        - Add fixed size packet buffer to make for easy discards when media
888          engine has blocked for an inordinate period.
889        - Added source_get_bps (bits per second :-).
890        - Removed gain setting stuff from luigi_audio_open.  Problems reported
891          by Bill Fenner and code purpose is defunct.
892        - Complete split into media engine, user interface and controller
893          processes. Only works on Unix at present, still debugging the
894          Windows port.
895        * Released 5 October 1999
897v4.1.1  - Added transcoder audio device.  Contributed by Michael Wallbaum
898          <>
899        - Now send RTP BYE packets on exit
900        - Fixed converter table initialization.  Was not initializing
901          interpolation and extrapolation correctly after last consistency
902          update.
903        - Unrolled loops in extrapolation converter. 
904        - Replaced divisions in interpolation converter that were not powers
905          of two with a multiplication scaling factor and a power of 2
906          denominator.  Improves performance 3-4 for upsampling by 3,5,6.
907        - Fixed 2 step sample rate conversion support.
908        - Fixed Windows port.
909        - Initialize sp->cur_ts in main_engine, before tx_start.  Should fix
910          occasional assert failure during transmitter startup.
911        - Put cont_toged check into source_process packets.  Added check for
912          cont_toged in rtp_callback.
913        - Added time constants and replaced lots of ts_map32 functions with
914          them in source.c.
915        - Rewrite initialization and rendezvous code between the controller
916          and the user interface and media engine. This should remove many
917          race conditions and generally clean things up and make them more
918          reliable.
919        - use mbus_rendezvous_waiting() and mbus_rendezvous_go()
920        - do a real handshake between controller and the subprocesses
921        - Fix parsing of many command line options. NOTE: many of the options
922          are parsed in a backwards incompatible manner now, to make the code
923          cleaner.
924        - Tuples for mbus command switches in mbus_{control,engine,ui}.
925        * Released 2 November 1999
927v4.1.2  - Added echo suppression back, it fell out of code base at some point.
928        - Fix ui sending input and output gain values before it's got values
929          from audio engine.  Was happening because scale widget invokes
930          -command option when created.  Now we don't send gain info until
931          we've heard some from engine.
932        - Add signal handler to main_control.
933        - Add back default port 5004.
934        - Fix luigi_audio_drain to reset, sync, and trigger reading.
935        - Moved packet reception handling from rtp_callback to
936          source_add_packet.
937        - Changed playout buffer length estimation to use transit times and
938          average transit.  Previously used observations of playout buffer
939          lengths, but this maybe unreliable due to packet losses.
940        - Revised skew adaptation.  Now compares transit time in use with
941          transit average, instead of monitoring playout buffer length which
942          is tainted by packet losses.
943        - Playout variable now refers to playout offset only.
944        - VAT style reduction in playout estimate when marker bit set.
945        - Playout recalc trigger when jitter > playout.
946        - Device reconfig no longer resets ports if device unchanged.
947        - Shuffled front panel.  Added bps field.
948        - Changed source processing to use next_played rather than last_played.
949          Cleans some processing issues up and allows for codecs with
950          non-constant frame durations.
951        - Added source_get_skew_rate to return relative skew.
952        - Added skew to stats panel.
953        - Made stats panel consistent with UI.
954        - Split reception panel into Decoder and Playout.
955        - Added note field for local user.
956        - Playout calc revisions:  only update transit if:
957                (a) source is new.
958                (b) source quiet for longer than transit_reset period.
959                (c) playout re-calc triggered by toged_cont.
960        - toged_cont is now no. thrown on ground in last 8 packets.
961        - Global change of integer types, and removal of compatibility defines:
962                u_int8  -> u_int8_t
963                u_int16 -> u_int16_t
964                u_int32 -> u_int32_t
965          and the same for the signed varients.
966        - And change them all to be uint32, etc
967        - Packet spikes now accounted for in packet processing.  Transit
968          average and playout not updated during spike period.
969        - Playout panel now displays spike info also.
970        - Mbus updates from Markus Germeier, which fix compatibility with
971          the Uni Bremen implementation:
972                - mbus.bye() signals an entity when it leaves. (mbus.quit
973                  commands an entity to leave)
974                - Generate and work with 64 bit DES keys. Generate parity bits
975                  for key.
976                - mbus_heartbeat(m, 1) should send an mbus.hello() every
977                  second and not every two seconds
978                - HMAC-MD5 should read HMAC-MD5-96
979                - Honor the MBUS environment variable for the MBUS
980                  configuration file
981                - The TZI Mbus implementations generate spaces in
982                  configuration file, which mislead the UCL Mbus to dump core.
983                - Allow Spaces in .mbus
984                - Address must be unique
985                - Delete failed reliable messages if err_handler is present
986        - Fix uninitialized use of session->last_update in RTP code
987        - Fix assertion failures in RTP library when sending RTCP packets
988        - Recognize, but ignore, profile specific extensions to RTCP SR/RR
989          packets
990        - Update RTCP reporting interval calculation
991        - Implement reverse reconsideration of RTCP reporting interval
992        - Implement encryption in the RTP code
993        - Fix redundancy decoder
994        - Fix path searching when starting subprocesses
995        - Add patch matching segment insertion when correcting for slow sources
996        - Migrated Makefiles and Headers to use autoconf
997        - Fix crash on exit
998        - Fix system name in tool version
999        - Add version number to mbus config file. Should prevent crashes
1000          when we update the format of that file.
1001        - Set thread priority of media engine to THREAD_PRIORITY_ABOVE_NORMAL
1002          on Windows.
1003        - Fix CPU usage of UI
1004        - Update to common library 1.0.10
1005        * Released 13 December 1999
1007v4.1.3  - Rename common library to libuclmmbase.a on unix
1008        - Update RPM spec file
1009        - Update installation instructions
1010        - Fix "-t" option, to set the TTL. The v4.1.2 release would always
1011          send with TTL=15, making it useless for wide area.
1012        - Fix assertion failures in source.c
1013        - Cleanup code for updating SDES items in the UI
1014        - Remove core files & directories on "make distclean"
1015        - Add check audio in adjusted playout point packets can be played out
1016          and correct if would be dropped.
1017        - Add failure return option for pattern matches used in skew detection.
1018        - Add session_validate(), source_validate() and pdb_item_validate()
1019          debugging routines. These mostly just check a magic number stored
1020          in the structure, to check that the structure hasn't been totally
1021          corrupted. There's a lot of scope for extending them in future...
1022        - Waveform repair schemes now use last available native coding.
1023        - Minor decode path change.  Decode, sample rate conversion, 3d
1024          rendering, gain scaling, are all performed if no native coding
1025          available rather than individually test.  Fixes problems introduced
1026          with media_data duplication in playout buffer shift code.
1027        - Various fixes for potential buffer overflows
1028        - Update copyright notices to welcome in the new millennium
1029        - Fix mbus address of the media engine (had a spurious space in
1030          instance:pid)
1031        - Remove lip-sync command line option and toggle button in the user
1032          interface.
1033        - Automatically enable/disable lip-sync when we detect a video tool
1034          via our mbus interface.
1035        - Rewrite the lip-sync code to send our playout delay to the video
1036          tool. We send "rtp.source.playout(ssrc delay-in-ms)", which might be
1037          sufficient.
1038        - Added back backwards compatible name mappings for command line
1039          parsing.
1040        - Robustified command line parsing of codecs.
1041        - Fix ordering of command line argument parsing.
1042        - Accept -crypt as a synonym for -K.
1043        - Add encrkey field to the session struct.
1044        - Fix encryption key handling at startup.
1045        - Fix saving of audioChannelParameters setting.
1046        - Fix use of mbus structure after freeing it.
1047        - Fix freeing of memory on shutdown.
1048        - Add assorted debugging code.
1049        - Fix reception of RTP packets with padding (this is what caused a
1050          crash when using the GSM codec with encryption).
1051        - Update for changes in the mbus library.
1052        - Add format conversions for a-law devices.
1053        - Incorporated auddev_atm.c and wrote auddev_atm.h.
1054        * Released 31 January 2000 [X3D SDK CDROM]
1056v4.1.4  - Fix dependencies in Makefile for rpm target
1057        - Fix handling of odd numbered RTP ports (pick next lower port).
1058        - Fix loopback setting load and carry thru when changing device.
1059        - Fix -version command line option.
1060        * Released 1 February 2000
1062v4.1.5  - Add support for ALSA audio drivers on Linux, contributed by
1063          Robert Olson of Argonne National Laboratory.
1064        - Add rtt calculation to rtp_callback.c.
1065        - Fix don't start mbus and processes if no command line args given.
1066        - Add controller validation of command-line addresses before
1067          launching sub-processes.
1068        - Fix controller only quits upon hearing byes from one of it's
1069          children.
1070        - Add playout buffer debugging/validation code.
1071        - Add engine parsing of sdes commands accept my_ssrc as an acceptable
1072          ssrc identifier.  Then control does not need to know to set name,
1073          etc, from command line.
1074        - Add check in settings that sdes values read in are not already set.
1075        - Add filter on rtt values to avoid displaying garbage values from rtp
1076          misimplementations.
1077        - Fix participant muting (reported by Bob Olson).
1078        - Correct size of pb->buf allocation in pktbuf.c.
1079        - Fix slow memory leak in pktbuf (didn't free pb->buf).
1080        - Removed unused variables from the session struct
1081        - Add checks for sp->ui_on to the user interface dispatcher code.
1082          This has currently broken the user interface, but is needed to
1083          make the initialization sequence reliable.
1084        - Major update to the initialization sequence
1085                - media engine solicits for the user interface
1086                - user interface requests state information from the media
1087                  engine
1088                - split ui.c into ui_send_*.c
1089        - Load/save the note setting.
1090        - Remove all traces of operating specific defines.  Configure no longer
1091          subsitutes operating system.
1092        - Fix @OSTYPE@ in SDES Tool field (broke with latter).
1093        - Add SIGCHLD to main_control to shutdown process tree when child
1094          processes die in a timely manner.
1095        - Fix shutdown sequence.
1096        - Patch G711 A-law, Sun's reference implementation had a few glitches
1097          and you only notice when speaking with real h/w implementations.
1098        - Update README.mbus, giving documentation of how to remote control
1099          RAT using the message bus interface, and how to replace the user
1100          interface by one of your own choosing.
1101        - Fix two step sample format conversion assertion failure.
1102        - Fix device sample conversion layer freeing already freed pointer
1103          when swapping between devices with and without layer.
1104        - Add RTCP DELETE messages trigger deletion corresponding pdb entry
1105          and source (if relevent).
1106        - Tweak source ageing, to fix problems with users being hilighted
1107          after they finish speaking. Problem occured if less than 50
1108          packets arrived in a talkspurt.
1109        - Save settings now passes through settings file, replacing entries
1110          RAT has update values for, and then appends entries not in settings
1111          file. Requested by Frode Kileng.
1112        - Add use of username when no RTPdefault exists for participant name.
1113        - Fix handling of audioInputMute in RATdefaults. Reported by
1114          Frode Kileng.
1115        - Fix for local user in response to rtp.query(),
1116          didn't highlight local users transmit state.
1117        - Update SDR plugin.
1118        - Transfer string associative array code out of settings.c into new
1119          common library files asarray.[ch].
1120        - Fix -allowloopback option.
1121        - Add controller checks for child process termination on Win32.
1122        - Add message loop and watch for WM_DESTROY to controller.  Will now
1123          shutdown engine and ui when Win32 task manager sends these.  NB,
1124          Visual Studio debugger terminates processes and still leaves
1125          children running.  AFAIK there is no way for children to spot this,
1126          i.e. WaitForSingleObject watching process does not appear to work
1127          for children watching parents.
1128        - Use _vsnprintf for snprintf functionality on Win32.
1129        - Fix "make tgz" target to include the sdr plugin
1130        * Released 14 February 2000
1132v4.1.6  - Fix Windows port
1133        * Released 15 February 2000
1135v4.1.7  - Update ALSA detection in configure script
1136        - Fix display of names when SDES NAME is not known (fallback to
1137          CNAME or SSRC in that order).
1138        - Add support for the rtp.addr.query() mbus message to media engine.
1139        - Remove support for the tool.rat.codec.details() mbus message.
1140        - Add support for the
1141                tool.rat.codecs.request()
1142                tool.rat.codecs.flush()
1143                tool.rat.codecs.add()
1144          mbus messages.
1145        - Add audio clip support to balloon help.
1146        - Tidied mixer interface and cleaned session_struct out.
1147        - Fix mixer wrap handling for multi-channel.
1148        - Fix default device if not present in saved settings.
1149        - Add support for rtp.source.mute ("ALL" 0|1), which is much more efficient
1150          than iterating all sources over the mbus.
1151        - Fix handling of WM_DELETE_WINDOW for the about box
1152        - Fix handling of WM_DELETE_WINDOW for participant popup boxes
1153        - Remove all "Dismiss" buttons - just close the windows instead
1154        - Add balloon help button to the main window, moving the application name
1155          to the title bar
1156        - Partially fix processing of Tcl events in the UI during the rendezvous
1157          with the media engine
1158        - Partially fix audio processing on windows 2000
1159        * Released 24 February 2000
1161v4.1.8  - Partially fix layered codec (recognises multiple addresses on
1162          command line but doesn't send to all of them)
1163        - Slay zombies when children die
1164        - Add repeat+ repair type.  It does standard repeat and then reverse
1165          blends samples from the end of the previous frame with the start
1166          of this frame.  Perhaps reduces some glitching.
1167        - Add README.reporting-bugs describing "How to Report Bugs Effectively"
1168        - Update to the ALSA support, contributed by Bob Lindell of ISI
1169        - Add local tone generator.
1170        - Add pointer to the RAT users mailing list <>
1171          an open list for discussion of issues relating to RAT.
1172        - RTT calculation fix (ntp32_sub was broken).
1173        - Add checks to main processing loop for liveness of controller
1174          process.
1175        - Add checks for sibling and parent process in ui and engine so proc's
1176          don't wait for messages that are never going to come.
1177        - Change skew correction code to use audio_blend rather than repeat
1178          procedure in situ.  Fixes a memory corruption bug.
1179        - Add null handler for RX_APP to rtp_callback, circumvents abort call.
1180        - Add linear8 to sndfile import and export functions.
1181        - Add handling to sinc_converter for conversion chunks that are
1182          smaller than hold buffer size.  We can now convert a sample at a
1183          time if desired rather than blocks of at least the duration of the
1184          hold buffer.
1185        - Add manual silence detection algorithm.
1186        - Add UI and settings for silence detection algorithm alternatives.
1187        - Add sample rate and channel converter to sound file importer.
1188        - Add support for m*11025 native encoding types.  Although RAT does
1189          not support these sampling rates, one of the sample rate converters
1190          supports conversion from m*11025 to n*8000.
1191        - Fix noise during sample insertion from skew adaptation.
1192        - Fix fatal mix error when downsampling.  Trim length did not
1193          compensate for the sample rate, causing trim length to wrap and
1194          attempt to remove zillions of samples.
1195        - Fix mixer rounding error in timestamps vs samples.  Would
1196          periodically fail mix_verify by 1 otherwise.
1197        - Add installer for the Unix ports. This displays the copyright notice,
1198          and gets confirmation from the user that they accept the conditions,
1199          before extracting the .tar.gz file. Use "make installer" to build and
1200          then distribute the rat-4.1.8-installer binary only.
1201        - Add transit estimate reset when device format changes at either end.
1202        - Add settings to default to first device when device in settings file
1203          does not exist on host.
1204        * Released 20 March 2000.
12064.1.9  - fix configure script handling of X_CFLAGS during broken header tests
1207          reported by Atanu.
1208        - remove variable component (e->playout) from spike threshold in
1209          source processing, believe this is part of the bad spike messages
1210          (160>nnnnn).
1211        - Changes to Win32 driver read code to remove race condition (audio
1212          callback occuring as audio being taken from list of ready buffers).
1213        - Move participant database clean up into session_exit.
1214        - Destroy local file player and tone generator when reconfiguring
1215          device.
1216        - Changes to Win32 driver interface write code.  Appears to resolve
1217          problems with a few troublesome cards.
1218        - Replace puts with bgerror where appropriate in ui script.
1219        * Released 30 March 2000 for Win32 only.
1221TODO -- They're features not bugs dammit!
1224- Assorted audio driver problems:
1225        - FreeBSD driver bug on SoundBlaster 16 has small write buffers
1226          and stops working full duplex mode after a time.  Hard to fix because
1227          of cushion.
1228        - Broken auddev_pca with adding of audio interface conversion code.
1229          FreeBSD 3.1 pca audio does not seem to work anymore.
1230        - SunVideoPlus interface code does not work properly.  The driver Sun
1231          distributes only works in 8k mono.  MMAC produce the card and wrote
1232          a driver for Sun: an exceptionally buggy and unstable driver.
1233          MMAC now has a better version now, but expect you to pay for the
1234          developer kit to access features.  $1200 for a card that does not
1235          perform as advertised.  The marketing blurb states it has G728,
1236          G722, and "CD Quality" audio: it may do, but you can't access them.
1237        - SGI O2's don't have autosensing audio interface selection like
1238          Indy's.
1240- 3d renderer should decimate when using sampling rates other than
1241  that for which it was originally designed for.
1242- 3d renderer could use finite precision maths for better performance
1243  (eliminate type conversions).
1244- sndfile routines should use conversion functions in audio_fmt.c, not their own.
1245- Channel coders need intelligent bail out fn's for when units overflow
1246  (rare, but real problem).
1247- UI lets you select packets larger than the MTU, which can't be sent
1248- Add/restore audio device trading
1249- Disabling participant list doesn't work if the window has been resized:
1250  not sure if this is a feature of Tk or the window manager, but there's
1251  little we can do about it.
1252- Reimplement transcoder.
1253- Add support for conversion between m*8000 and n*11025
1254- Sample based codecs should accept frame lengths of 0-200ms, not just
1255  multiples of frame lengths in tables.  Should add codec_is_sample_based
1256  test and data to codec tables and relax receiver sanity checking so that
1257  sample based frames do not have to be n * codec__peek_frame_size.
1258- Should use the empty RRs coming back from receivers who are not seeing
1259  traffic, and display this in the loss matrix.
1260- Layering is broken (hasn't been updated for multiple processes, etc)
1261- Weird interaction with rat-3.0.x -- seems that we can generate packets
1262  which some instances of rat-3.0 won't play. You get some people in the
1263  session who's tools report receiving your data, but they don't play it
1264  out. Suspect we're hitting the limitations of the old playout algorithm,
1265  rather than a specific bug, and the correct solution is to get everyone
1266  to update to rat-4.x
1267- Handling of SSRC collisions is broken
1268- Sometime see messages of the form "source.c:767 Spike (160 > 2708390)"
1269  and hear nothing.
1270- Make rtp.addr() with an rx_port of 0, when sent to the media engine, mean
1271  that the media engine should get the kernel to select a receive RTP port.
1272- Rework media engine initialization, so we can query it before sending
1273  rtp.addr()
Note: See TracBrowser for help on using the browser.