root/rat/trunk/MODS @ 2879

Revision 2879, 46.7 KB (checked in by ucaccsp, 17 years ago)

Implement "-r codec/offset" command line option to enable redundancy.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
4The modifications here include the development versions, not all of which
5are released.  This list is not intended to be comprehensive. The current
6release is available at
8v0      Initial audio tool
9        Old VAT and RTPv2(5) compatibility
10        PCM DVI GSM LPC codecs
12v1      Vicky's restructuring
13        Dropped old VAT compat mode
14        Used in ReLaTe trials
15        New UI including small mode
16        Video Sync code added
18v2.0    Transmitter cleaned up
19        Lots of bugs fixed
20        Replaced DVI and LPC codecs with VAT4 versions
21        Released in Boston WWW4
23v2.1    Ported to Tcl7.3/Tk4.0
24        Added UI response slider
26v2.2    Added play and rec options
28v2.3    Port to Tk4.1/Tcl7.5
30v2.4a0  Port to Windows95
31v2.4a1  Fixed active speaker indication
32v2.4a2  Fixed GSM
33v2.4a3  Release to MERCI partners for testing
34v2.4a4  Fixed broken assertions...
35v2.4a5  SGI fix
36v2.4a6  Security holes fixed
37        Assertion handling improved
38        Start at encryption and multi-rate audio
39v2.4a7  FreeBSD modifications
40        Fixed playout calculation (probably)
41v2.4a8  Added RTCP SDES TOOL field to stats panel
42        Fixed version number
43        Made packet repetition an option and set default to OFF
44        Fixed encoding selection bugs
45        Misc bug fixes....
46v2.4a9  Fixed participant display when audio device is busy
47        When device is busy audio controls get disabled
48        Added code to set microphone gain under Win95
49        Modified loop timing for win95 version so that it does not hog CPU
50        Made session title appear as window title with -C flag
51v2.4a10 Added OS type to RTCP tool string
53v2.5a0  Fixed long DVI packet format. Now there is only one state (VAT comp).
54        Reduced UI window border width. New look!
55        Added scrollbar to participants window
56        New participant stats code. Allows multiple windows...
57        Attempt to fix some of the stats
58        Popup window to request RTP name if resource not set
59v2.5a1  Changed redundancy packet format to conform to UCL-INRIA spec
60        Added error code to report use of old packet format
61        New code to do encoding name stats
62        Fixed RTCP RR packets to conform with latest spec
63        Made RAT look in .RTPdefaults for user name
64        Added IP address display in stats
65v2.5a2  Highlight other RAT users in list of participants
66        Ignore audio until RTCP packet received
67v2.5a3  Added encryption (Darren said it's compatible with vat)
69v2.6a0  Added command line option to set redundancy type
70        Started to change payload type to match draft-perkins-rtp-redundancy-01.txt
71        (Grouped headers, but haven't changed bit order yet...)
72v2.6a1  Finished changing the payload type.
73        Default redundancy pt=121
74        Send initial RTCP message as soon as we start up...
75v2.6a2  Allow window to resize horizontally (requested by
76        Updated copyright notice.
77        Updated about panel.
78        Added -pt pt/codec/clock/channels command line option.
79        Example: "-pt 121/redundancy" to set redundancy payload type to 121
80        Remove -rpt option (use -pt instead).
81        Remove -f2 option.
82        Change -f option to accept things like "-f pcm/dvi" to set redundancy type.
83v2.6a3  Fixed packing order so it resizes horizontally correctly.
84v2.6a4  New WIN32 version
85        Changed priority of thread
86        Fixed cushion code to work with I/O switching
87        Linked tcl and tk with WIN32 binary so no DLLs are needed
88v2.6a5  Partial rewrite of win32 audio driver to use static buffers
89        Solved most win32 audio problems
90v2.6a6  Made the prompt for .RTPdefaults information less user hostile
91        Fixed LPC decoding on SGIs (-fsigned-char does it!?!)
92v2.6a7  Removed old bitmap from control panel
93        Rewrite of small user interface (command line option -smallui)
94v2.6a8  Further rewrite of the small user interface
95        Fixed SO_REUSEADDR
96        HP-UX fixes
97        Added "-crypt <key>" command line option to enable encryption
98v2.6a9  Fix m/cast power meters when encryption is turned on.
99v2.6a10 HP-UX fixes
100v2.6a11 Remove debugging malloc wh  en NDEBUG is defined.
101v2.6a12 Code cleanup in preparation for mixer
102        Corrected URL on the about panel
103v2.6a13 Code cleanup in preparation for mixer
104        Added -li <local_interface> option for multihomed hosts
105        Removed annoying transient tag from pop-up windows.
106v2.6a14 Added an icon
107        Win32 fixes
108        Removed -li stuff, since it broke the win32 port.
109        More HP-UX changes
111v3.0.0  Restructure code for audio translator/mixer
112        Extended ascii hostnames (>15 chars) - useful for unicast
113        Additional RTP header validation
114v3.0.1  Major restucturing of main_rat.c, and split into several separate files.
115        Fixes for Linux.
116        Include full/half duplex stuff in all versions.
117v3.0.2  Bug fixes to auddev_linux.c
118        Fixes to RTCP header checks on little-endian machines.
119        Now obeys xresources settings.
120v3.0.3  Experimental release for Linux
121        Some fixes to encryption code: it still doesn't work though...
122v3.0.4  Major mods to init_session.c
123        Added mixer code to linux port.
124v3.0.5  Fake TS start if we TOG packets
125        Fix RTCP timestamp epoch to 1900 not 1970 to conform to RFC1889
126        Fix display of group address in options panel.
127        Fix CNAME.
128        Extensive changes for the audio transcoder/mixer.
129        New HP-UX audio device driver from UiO added.
130v3.0.6  More changes for the audio transcoder/mixer.
131        Fixes to Linux audio driver when in half-duplex mode.
132        Added the -version option.
133v3.0.7  Major changes for the audio transcoder/mixer: First version to work at all!
134        Now sources $HOME/.rat as tcl on startup
135        Linux fixes
136v3.0.8  CNAME now uses dotted-quad representation of the IP address, not FQDN.
137        16bit linear audio throughout main code: not all device drivers fixed yet.
138        Make DVI the default primary encoding.
139        Added L16 (16bit linear, uncompressed) codec.
140        Both sides of transcoder/mixer use same SSRC/CNAME.
141        Calculate RTCP reporting interval, rather than using constant 6 seconds.
142        Major rewrite of transmitter and receiver code (supports multiple red)
143        Added CSRC processing to receiver
144        Fix indication of active speakers
145        Update device buffer cushion code
146        Removed small (ReLaTe) UI
147        Minor redisign of option UI
148        Added lecture mode
149        Linux port now works again
150v3.0.9  Added minimal LBL conference bus support
151        Enabled voice-switching of video using LBL conference bus/vic
152        Fixed SGI 16 bit
153        Fixed WIN32 16 bit
154        Slight highlighting of participants after they stop speaking
155        Now uses tk4.2/tcl7.6
156v3.0.10 Prehang and posthang added to new code
157        IP_MULTICAST_LOOP is now on for the session port
158        We can now parse our BYE message although it is wrong
159        Packet repetition added to new code
160        Audio DC bias removal added for all platforms
161v3.0.11 We can no longer parse our BYE message, since it is wrong!
162        More UI changes... (packet format uses pull down menus)
163        Disable powermeters option added
164        Selective muting of participants possible with middle mouse button.
165        Automatic bias removal (turns off if not needed)
166        Fix handling of RTP packets with CSRC data
167        Rewrite of RTCP handling code...
168        Fix RTCP BYE packet
169        Transcoder/mixer now passes RTCP packets
170        Exponential fade on packets   (no good)
171        LPC redundancy alignment code (also no good)
172v3.0.12 Linear fade on repeated packets
173        Fade on repeated LPC decoded packets
174        Prevention of mixing dummies with no decompressed data
175        Packet length shown in UI
176        Can select N-level redundancy from command line (-f pcm/dvi/lpc for example)
177        Fix parsing of command line options
178        Lecture mode is on by default
179        Turn off lecture mode as soon as we send data
180        Added -loopback_rtp option for loopback of the RTP packets (RTCP loopback is always on)
181        Added audio device trading via the LBL conference bus
182        Added flakeway operation
183v3.0.13 Integrated transcoder/mixer into the main Rat code.
184v3.0.14 Move to tcl-7.6p2/tk-4.2p2
185        Fix linux/HP-UX ports
186        Fix for flakeaway
187v3.0.15 Assorted bug fixes
188        Hang onto multiple encoded data in receiver
189        Logic into UI for redundant coding types 
190        Fix LPC redundancy (Ho Ho)
191        Fix sending L16 with redundancy
192        Fix auto-select of "Mike mutes net" when running on a half-duplex machine
193        TCL_ALL_EVENTS in event processing loop (sockets from tcl scripts->fileevents)
194v3.0.16 Bug fixes to the transmitter
195        Fix CSRC processing
196v3.0.17 Fixes for Win32
197v3.0.18 Fix RTCP BYE packet on little-endian machines
198        Muting of output now frees data
199        Fix reception of 160ms packets
200        Fix uninitialised variable in rtcp_db
201v3.0.19 Remove spurious debugging messages when we can't open the audio device
202        Cleanup HP-UX audio driver
203v3.0.20 Can now select line-in/microne input on SGI machines
204        Added -K option to enable encryption (synonym for -crypt)
205        Cleanup Linux audio driver
206        Cleanup Sparc audio driver
207        Cleanup for draft-ietf-avt-profile-new-00
208        Added -double_speed (16kHz) option
209        Transcoder no longer hits stdin/stdout with audio ioctls
210        Rewrite and optimize decryption of RTCP packets
211        RTCP timer reconsideration done for every RTCP packet received (following presentation at Memphis IETF...)
212        RTCP SR and SDES fixes
213        Can now send/display PHONE, LOC and EMAIL SDES items.
214        Fixed mike mutes net operation for half duplex cards.
215        FreeBSD port now works.
216        Win32 version uses registry to store defaults.
217v3.0.21 Added signal handler, to catch SIGINT and exit cleanly (with RTCP BYE)
218        Linux device driver now accepts 16kHz operation.
219        Assorted bug fixes to Linux device driver.
220        Initialise device_time variable: prevents crash if we can't access the audio device.
221        The use of strdup() interacts badly with xmalloc(). Fixed.
222        Fixed transcoder RTCP BYE handling
223        * Branch here: v3.1 development starts, later v3.0 fixes will have to
224        * be forward ported
225v3.0.22 Remove debugging messages in statistics.c
226        Remove WBS codec
227        Remove -double_speed option
228v3.0.23 Linux port uses both audio channels, rather than just the left channel
229        Linux port no longer repeatedly resets the volume to 50%
230        Bug fix for HP-UX audio driver (Terje Vernly <>)
231        Fix CPU usage on Win32
232v3.0.24 Fix encryption
233        Fix loopback of packts
234        Fix crash in LBL conference bus code, sending focus when the CNAME was NULL
235        Fix RTCP header validation
236        Fix RTP header validation when padding bit is set
237        Fix voice switching of video using LBL conference bus with vic
238        Modifications to WIN32 silence detection as PC hardware often breaks previous algorithm.
239        Assorted Win32 bug fixes
240        Win32 HOMEDIR bug fix.
2413.0.25  Assorted Win32 fixes.
2423.0.26  Fixed bug in net.c that caused packets to cease processing on some Win32
243        boxes.
2443.0.27  Fix transcoder problems on half-duplex machines. Thanks to Sachin Sheth
245        for providing the fix.
246        Fix fonts for solaris 2.6.
247        * Released 15 August 1998
2483.0.28  Update copyright notice (the dates were wrong!)
249        Endian fix to the RTCP packet forwarding code (Thanks to Sachin Sheth).
250        Fixed HOMEDIR problem introduced in 3.0.27 for Win32.
251        Fixed catch when sourcing ~/.rat
252        * Released 22 September 1998
2543.0.29  Added -smallui option to use relate interface and to enable power
255        messages via the lbl confbus
256        Fixed -drop option
257        * Released 21 December 1998
2593.0.30  Fix statistics in RTCP SR/RR packets
260        Fix copyright notice in small UI
261        Fix URL in the about panel
262        * Released 6 January 1999
2643.0.31  Remove obsolete tcl/tk library code
265        Fix tcl/tk configuration on win32
266        Move to using winsock2.h on win32
267        * Released 29 January 1999
2693.0.32  Fix Tk resource files on Win32
270        * Released 4 February 1999
2723.0.33  Fix font in the statistics panel, which I broke in 3.0.31 (oops!)
273        Added A-law audio codec.  Back port from 3.2x.
274        Added MMX mixing support. 
275        Patch from Michael Wallbaum for transcoder on win32.
276        Made file processing use binary mode opens.  Win32 cares.
277        * Released 1 March 1999
2793.0.34  Removed -D$(USER) from Makefile (Reported by Ola Borrebak).
280        Added alaw to command line codecs (Reported by Dimitris Terzis).
281        Winsock 1/2 detection and selection. 
282        Bug fixes for Winsock 1 built with Winsock 2 headers.
285v3.1.0  Added the wide-band speech codec (use with the -double_speed hack)
286        Cleanup statistics.c
287        Fixed Win32 cname
288        Made left mouse button on participants toggle stats on and off
289        Keep input/output mode selection and gain settings when device trading
290        Reorganize the codec_* files
291        Add indication of loss rat to UI
292        Add automatic gain control
293        Fix CPU usage on Win32
294        GSM now implements 06.11 repair (so there)
295        Fixed self induced LPC bug :-)
296        Improved cushion code to give lower delay
297        Completely fixed highlighting (honest)
298v3.1.1  Default RTP port is 5004 (draft-ietf-avt-profile-new-00)
299        Turn off automatic gain control in the transcoder
300        Linux port uses both audio channels, rather than just the left channel
301        Linux port no longer repeatedly resets the volume to 50%
302        UI user participant code now maintains sorted list
303        No longer source $HOME/.rat on startup
304        Separate the UI from the media engine (use conference bus for communication)
305v3.1.2  Many changes to the conference bus protocol and support code
306        Allow multiple UI scripts (use -ui <name> to select)
307        Unify Linux/FreeBSD drivers into auddev_oss.c
308        Fix HP-UX audio driver (Terje Vernly <>)
309        Fix encryption code on little-endian machines
310        Fix RTCP header validation code
311        Fix security hole in confbus (zap [] in strings send to tcl)
312        Add Anna Bouch's UI code (use "-ui anna" to enable)
313        Add ReLaTe UI code (use "-ui ReLaTe" to enable)
315v3.2.0  - Codec interface rewrite. Based on structure holding all codec
316          parameters and pointers to init/encode/decode functions.
317        - Multi rate support. Multiple clock support (one per participant plus
318          a few internal ones to keep RTCP etc working).
319        - Rewrite of transmit code. Circular buffer is gone and now a list of
320          minibufs is used instead. Within each minibuf the unit_size (which
321          is calculated from number of channels, freq etc) remains constant.
322        - Rewrite of receive code to support multiple unit_sizes. Now each
323          receiver has a separate receive buffer. Within each buffer units of
324          different length can be mixed without any problems. The only
325          restriction is that for any particular time segment all coded_units
326          must be compatible (i.e same length /frequency/channels etc).
327        - All the code understands number of channels, variable unit sizes and
328          multiple frequencies. This information is deduced from codec
329          information. This includes mix and statistics...
330        - Added hooks for up and down sampling of remote participant decoded
331          audio.
332        - Cleaned up include file mess. Now each source file includes only
333          required headers. In the process of doing so I cleaned up a few
334          interfaces so parts of the code that do not need to know about
335          structures don't see the definitions and work with pointers.
336        - Various old and new bug fixes :-)
337        - Probably some more changes that I can not remember now as I didn't
338          bother to write them down as I was doing them ;-)
339        - Reimplemented repair code from previous release and left hooks for
340          pitch repetition and pattern matching. Now repair is multi-channel
341          and multi-freq.
342        - Centralized allocation of rx_queue_element's.
343        - Added CD input support
344        - Assorted bug fixes to the original UI
345        - Add reception quality chart to the original UI
346        - Fix encryption code on little-endian machines (again)
347        - Cleanup RTCP code and headers
348        - Many changes to the conference bus (Mbus) code
349        - Assorted bug fixes to the transcoder
350        - SGI version now sets initial volume to something sensible
351        - Incorporated Luigi's mods to FreeBSD driver
352        - Added Pattern Matching repair
353        - Fix loopback of RTP packets
354        - Modified rules_based_silence to work at rates other than 8K.
355        - Add balloon help
356        - Fix RTP header validation for packets with P bit set [Bill Fenner]
357        - Fix transcoder timing (RTCP packets are sent much too often:
358          loopback problem...)
359        - Fix freeing of units held in the receive buffer, when an RTCP BYE
360          packet is received.
361        - Seems that FreeBSD (unlike the rest of the known universe...) has
362          a SO_REUSEPORT, which we need to set if we're doing TTL zero
363          multicast. Sigh.
364        - Fixed timer code - works with all freqs that divide into 96000.
365        - Added channel coding functionality - it should now be possible
366          to slot in any scheme.
367        - Reimplemented redundancy to comply with new channel coding regime.
368        - Added interleaving.
369        - Fix decoding of encrypted packet (no longer blocks...)
370        - Fix encryption code on little-endian machines (again, again!)
371        - Fix fragment size on Linux
372        - Added header extension support.
373        - Remove LBL conference bus support (exercise for the reader: write
374          an Mbus to LBL conference bus bridge, to allow device trading...)
375        - Add binding for Control-Button-1 to mute individual participants
376        - Add lip-sync support
377        - Major UI rewrite
378        - New silence detection algorithm.
379        - Fix parsing of RTCP SR/RR packets on little-endian machines
380        - Fix of decoding path - repair works again now.
381        - Separated out cushion code (cushion.[ch]) and cleaned a little.
382        - Separated out the UI update code from the Tcl/Tk maintainence code.
383        - Modularise Mbus code
384        - Stereo (?)
385        - Time code simplified.
386        - Multi-channel silence suppression.
387        - Misordered packets counted.
388        - Remove NET_MUTES_MIKE and MIKE_MUTES_NET options. We now require
389          a full duplex audio device to operate. This should not be a
390          problem, since such hardware is readily available for all
391          platforms we care about (and some we don't...).
392        - Minor memory allocation optimization for native units and mbus
393          block_alloc replacing xmalloc for fixed size allocations.
394        - Modularisation of silence detection and voice activity code.
395        - Transmit buffer simplification.
396        - Changes labels on preferences panel to match sdr, since it makes
397          sense that way, and the old labels were broken dammit! (and I
398          don't care if they were the ones Windows uses....)
399        - Remove flakeaway options (Cadbury's must hate us...)
400        - Create RTCP database entries for new sources when we find them
401          in SR/RR packets, rather than ignoring them.
402        - Fix operation with -no_ui. This is not very useful though...
403        - Hack the RTCP decryption code to accept encrypted packets from
404          vat, even though vat sets the padding bit incorrectly, and gets
405          the length of encrypted SDES packets off by one.
406        - Fix source address checking in the mbus code
407        - Added sampling options to transmission menu.
408        - Added destruction code to coders and channel coders.
409        - Make sure the random number generator is initialised before use.
410        - Rejigged code to allow hot swapping of sampling format mid-session.
411        - Fix RTCP reporting interval, when running at other than 8kHz
412        - Change of RTCP reporting interval when freq changes.
413        - Replaced old AGC code.
414        - UI tweaks, bitmaps, titling, about panel.
415        - Playout point limits now optional.
416        - Allow for remote ui, enable with "-ui <mbus_address>"
417        - Watch for transmitter device clock being slower than ours and
418          corrective action.
419        - Cushion decrease only when not playing audio - stops interruptions.
420        - Allow `wait for mbus init message' on startup with "-wait"
421        - Redundancy new format - mods to rfc to match implementation.
422        - Removed auto_path initialisation from init.tcl and aatk.tcl.
423        - Interleaver (mk II) no longer halts the system (or works).
424        - Powermeters frequency independent.
425        - Own activity only sent when changing state.
426        - Activity changes no longer refresh participant info.
427        - Playout buffer size monitoring and device drift bias correction.
428        - Fixed problem with codec recognition at startup when rate not 8k.
429        - UI displays correct encoding with interleaver and redundancy.
430        - Wrote a configure script
431        - Graceful failure/stasis when device not available.
432        - Bitmaps match audio i/o ports at start up.
433        * Released to CAIRN/MECCANO for testing, 8 June 1998
435v3.2.1  - Assorted tweaks to the UI
436        - Cleanup mbus_encode_str interface
437        - a small change to function rx_source_playout in mbus_engine.c
438        - fixed bug in ui_update_video_playout
439        - lip-sync support
440        - play audio packets in no lip-synced mode when no RTCP SR is received
441          even if lip-sync is enabled. When SR is received, switch to lip-sync
442          mode
443        - bug in mbus resend code fixed.
444        - Cleanup parsing of command line options
445        - Add patches for HP-UX 10 from Dirk Meersman
446        - Remove HP-UX 9 compatibility: it makes the code cleaner, and
447          HP-UX 9 is completely obsolete anyway. Now if only we could do
448          the same with SunOS 4...
449        - Only allow lip-sync to be enabled if we are not running on the
450          Mbus base c  hannel
451        - Table for format conversions.  Windows ACM PCM Converter support.
452        * Released for testing, 10 July 1998
454v3.2.2  - Fixes for command line option parsing
455        - Improvements to playout calculation (less togged)
456        - Increased audio in receive buffer to be 1 cushion's worth. This
457          makes handling "fast" senders easier and also reduces togged units
458        - tcl2c now strips comments, 10-40% size improvement on tcl strings
459          (UNIX only).
460        - Removed fixed tables for g711 conversion.  Now calculated at start
461          time.
462        - Increased minimum pitch length in pattern match repair (less pings).
463        - Add support for TclX, and profiling of the tcl code
464        - Attempt to optimize some of the more intensive Tcl routines
465        - Reduce rate of power-meter updates, since profiling shows that is
466          an expensive operation.
467        - Added playout buffer size to participant info
468        - Converted jitter into ms for ui
469        - Increased initial estimate of jitter, and codec independent
470        - Reduced average playout delay, now just add/subtract cushion surplus
471          instead of whole cushion length to playout, i.e. we add exactly
472          the right amount.
473        - Rearranged files for more portable Windows configuration.
474        * Released for testing, 17 July 1998
476v3.2.3  - Added button in the UI to enable sound externalisation (the
477          actual 3d audio code is not present yet).
478        - Fix display of loss rates in the participant list ("loss diamonds")
479        - Updated sdr plugin (in sdr v2.5a4)
480        - Change initial silence detection threshold, such that we transmit
481          until the detector has trained rather than suppressing.
482        - Win32 release configuration added.
483        - Added reset of saved settings when version change detected.
484        - Minor change to low jitter playout handling.
485        - Fix parsing of -K/-crypt options
486        - Endian fix to RTCP packet forwarding code
487        - Remove TclX support (as part of the planned move to using the
488          Tcl plus-patch to cleanup the initialisation code).
489        - Fixed playout point calculation problems.  Playout buffer should
490          now have same order as source timestamps, no overlaps allowed.
491        - Powermeters tweak.
492        - Move to winsock2.h, in preparation for IPv6 port. NOTE: This now
493          requires that winsock2.dll is installed on Windows.
494        - Win32 ACM G.723.1 code.
495        * Release for testing, 24 August 1998
497v3.2.4  - Cleanup networking code
498        - Cleanup RTCP code
499        - Only send an RTCP BYE packet if the number of members is less
500          than 50. This means we just-about comply with the latest RTP
501          draft, although we should really implement BYE reconsideration.
502        - Fixed bug introduced into repair code.
503        - Increased powermeter rate and added table to improve vu performance.
504        - RTCP timeout frequency independent.
505        - Got ride of speaker table code. Highlighting is now from when playout
506          buffer created destroyed.
507        - Fix GSM codec
508        * Release for testing, 10 September 1998
510v3.2.5  - Fix transmission mute/unmute
511        * Release for testing, 10 September 1998
513v3.2.6  - Move all system specific configuration options and includes into
514          config_unix.h and config_win32.h to ease porting. Should also
515          simplify things when we move to a common code library among the
516          UCL tools.
517        - Audio loopback in hardware for Solaris/SunOS and Windows.
518        - Moved select on audio_fd out of networking code.
519        - Centralized code that destroys and empties playout buffers.
520        - Added "net mutes mike" and called it "Silence Suppression".  Works
521          off of creation and destruction of playout buffers.
522        - Assorted UI tweaks
523        - Move to using our own version of tcl/tk on unix machines, to
524          avoid the problems with initialisation scripts being sourced
525          from other installed versions.  We no longer compile the tcl
526          or tk initialisation scripts into rat.
527        - Merge GSM codec into codec_gsm.[ch]
528        - Modularize networking code
529        - Mbus code now batches messages before transmission, to reduce
530          the number of packets sent
531        - Update Mbus command set to better match latest specification
532        - Add 3d audio code
533        - Add IPv6 support under Windows NT 4.0 using the stack from
534          Microsoft Research (
535        * Release for testing, 9 October 1998
537v3.3.0  - Audio interface revamp.  Support for multiple cards.
538        - Osprey SunVideo Plus audio support added (buggy).
539        - PCA audio support added on FreeBSD (builtin speaker).
540        - Documented audio interface.
541        - Replaced audio_fd with audio_device to emphasize this is no longer
542          a file descriptor.
543        - Added null audio interface for devices not attainable.
544        - Safety net when opening an interfac   - Fix LSR and DLSR in our reception report packets (maybe)
545        - Fix muting of individual participants
546        - Update mbus command set
547        - Added virtual externalisation (sound source emanating from outside
548          the head even when listened to with headphones)
549        - File loading and saving added.
550        - Playout calc refinements.
551        - Repair schemes given queryable interface (like other modules). 
552          mbus and ui updated to reflect this.
553        - Fix for fatal bug in channel decoder arising from duplicates and
554          interaction with playout buffer.
555        - Merge in IPv6 fixes from Maryann Maher
556        - 3D rendering code added, debugged, and integrated into UI.
557        - Audio device interface changes - input format may differ
558                                           from output format.
559                                         - format conversion in audio
560                                           interface if dev does not
561                                           support required format.
562        - Win32 RTCP tool includes OS version of end host.
563        - Win32 Multiple audio device support bug fixed.  Uses matching
564          card and mixer.
565        - Fix stereo powermeters (work).
566        - Convert to use the common code library
567        - Disposed of old packet queues, now use simpler buffer and no
568          nasty macros.  (rx queue still there, when there's time it goes..)
569        - Re-wrote codec interface.  Codec wrappers appear in files
570          codec_*.[ch]
571          and codec implementation files appear in cx_*.[ch].
572        - codec_t axed and replaced with codec_id_t.  Look at codec.h for
573          manipulation functions.
574        - Codec repair functions appear in codec interfaces rather than
575          reair function.
576        - Removed all RAT dependencies from codec code, repair code, 3d code,
577          appart from a few basic types i.e sample, audio format, and
578          coded_unit.
579        - Disabled all channel coding except vanilla.  All to be
580          re-implemented.
581        - Added ability to read number of samples written to and read from
582          audio device.
583        - Made audio device id's (handles) mirror codec id's.  We now always
584          have a valid handle for a device, and can read/write to it.
585        - Removed interfaces.[ch].
586        - Replaced receive.[ch] with source.[ch] and replaced playout
587          buffer code with playout.c.
588        - Rewrote channel coder interface to be cleaner.
589        - Removed unnecessary dependencies in rate and channel conversion code.
590          Conversion routine now uses coded_units for input and output.
591        - Moved codec_state_list onto source structure and channel_coder_state.
592        - Fixed dependencies in repair and 3D rendering code. Their only
593          dependencies are now the codec files.
594        - Made converter interfaces same as audio device and codec interfaces.
595        - Changed 3d rendered to always output stereo.
596        - Fixed potential problem in 3D code where the audio frame size being
597          passed is smaller than the delay the render applies causing samples
598          to be shifted over the stack.
599        - Added tests directory where people can through tests for modules if
600          they care.  So far have added test_3d.c which found the last problem
601          and native.c used to fix bug in native coding types. 
602        - Fixed nasty bug in 3d rendered where at high sampling rates the delay
603          size is larger than the storage buffers between intervals causing
604          memcpy to overlap src and dst areas.
605        - Fixed bug in vdvi frame peek code and sizes returned by
606          vdvi_{en,de}code.  All codecs pass tests in test_codecs.
607        - Wrote timestamp code that allows easy comparison between multi-rate
608          clocks.
609        - Added first order differencing for sequences of timestamps so
610          wraps in 32 bit clocks do not cause discontinuities in modulo m
611          clocks and vice versa.
612        - Added iterators to playout buffer.
613        - Updated transmitter to use playout buffer with multiple iterators
614          instead of former custom list code.
615        - Modified channel code and source code for playout buffer iterators.
616        - Fixed widgetabbing (due to missing tk library scripts).
617        - CNAME now uses the IPv6 host address, if running on IPv6.
618        - Move mbus heartbeat into the common code library.
619        - Repair and duplicate handling put back into new decode path.
620        - Separated sample ops into audio_util.[ch].
621        - Added MMX mixing code for Win32.
622        - Moved bias control out of session pointer and into transmitter.
623        - Removed support for multiple mbus channels.
624        - Removed unnecessary include files from assorted source files.
625        - Cleaned up device reconfiguration code.
626        - Fixed l16 48k stereo name - was incorrect.
627        - Renamed certain functions to make names congruent to group of calls.
628        - Removed input_mode and output_mode from session_struct.
629        - Restored playout buffer length reporting functions.
630        - Added source flush if mix fails (source sample rate change).
631        - Added repair failure code, should only fail if sample rate changes.
632        - Added codec list option (-codecs) for launcher apps to know what is
633          available.
634        - Added payload mapping from UI.
635        - Added Sun's G726 public reference version.
636        - Redundancy encoder and decoder re-written but not linked in yet,
637          needs debugging.
638        - Rewrote win32 mixer interface code.  No longer use string matching
639          with pre-defined english names.  Still have to use some string
640          matching but only between names various controls from the driver
641          spit out.  Took circuitous route since no two driver vendors
642          implement mixer functions in same way.  Seems to be stable now.
643        - Modularized audio ports so that device interfaces now return
644          audio_port_details_t that contains string name and unique
645          input/output identifier to be used for port selection.
646        - Modified UI to have transmit and receive checkbuttons and replaced
647          bitmaps with string names since we cannot guarantee win32 port
648          names and changing between bitmaps and strings in the ui is ugly.
649        - Fixed transmitter bug where temporary audio_buffer iterator
650          was not being freed.
652v4.0.0  - Update license agreement -- we now use a standard Berkeley style
653          license for all files. See the file LICENSE for details.
654        - Removed output_gain and input_gain from session_struct.  Should
655          fix output gain going to zero on some updates.
656        * Released 31 March 1999
658v4.0.1  - Clarify license -- the LICENSE and COPYRIGHT files contradicted
659          each other, we now only have one file (COPYRIGHT) which is a
660          standard Berkeley style license.
661        - Fixed problem with pseudo-devices (auddev_null and
662          auddev_pca) that use gettimeofday to calculate how many samples are
663          available.  They were failing to include number of samples included
664          in "device" buffer left over from previous reads.  This meant device
665          time was always slow.
666        - Go back to ssrc rather than cname in UI for indexing entries. 
667          Issues running multiple instances on single machine otherwise.
668        - Playout buffer skew adjustment added so when playout buffer
669          deviates from expected size because source clock is different and
670          signal is temporarily silent an adjustment is made.  Only intervals
671          when adjustment made is when packet has arrived in current
672          processing interval so we do not adapt at the end of talkspurts.
673        - Made repair and converters communication like that of input and
674          output ports in ui.  i.e. tool.rat.converters.flush,
675          tool.rat.converters.add, tool.rat.converter.  Defaults for repair
676          and conversion are first type of module.
677        - Issues with mixing multi-rate fixed.  Existing code was not
678          accounting properly for different sample rates when positioning new
679          mixer head time.  This probably got introduced when the time
680          stamp method got changed since it definitely worked before (honest).
681        - Added status bar's to file window.  Hopefully clearer what is going
682          on.  Attempted fix button of state problems.
683        - Caching of previous talkspurt jitter.  Previously a fresh guess was
684          made at the start of each spurt.
685        - source_get_playout_delay now includes audio we believe to be in
686          device buffer.
687          So buffer shifts now work with cushion...hopefully.
688        - Added counter for skew adjustments to make adjustments less
689          aggressive.
690        - Win32 mixer corrections - mixer control code now works with all
691          the cards we have. Let this be the end of it!
692        - Added read_and_discard for reading all available packets and
693          discarding them. This is needed because there is a long delay
694          between opening the socket and the first read (due to ui startup,
695          audio device startup, etc...).  As a result lots of audio was
696          getting buffered at receiver with continuous sources at start up.
697        - Fixes to linux audio driver
698        - Fixed initial playout delay estimation.
699        - Stopped interaction between skew ajustment and repair.
700        - Assorted bug fixes to the UI
701        - Attempt to get participant highlighting correct
702        - Blending on samples dropped because of skew not quite there.
703        - Added unsigned 8 bit to device formats and added to conversion
704          routines.
705        - Partial SoundBlaster support on FreeBSD (out s16, in u8).
706        - Initial code for the move to using the RTP library - not used yet
707        - WAV file MAKEFOURCC bug fixed for non-Win32 little endian machines.
708          All platforms should be able to read WAV and AU files.
709        - Changed skew adjust back so it invokes repair to cover would-be
710          gap.
711        - Enhanced sample drop during skew detection.  Period that can be
712          be dropped determined by pattern matching samples in frame to
713          to have samples dropped in.  Then blend in start of what would
714          have been played to match point.  Quality improvement
715          more than compensates for extra cpu cycles.
716        - Redundancy encoder working again (95% confidence :-).
717        - Added dismiss button to file dialog.
718        - Add support for DES encryption to the mbus (on by default).
719        - Fix encryption.
720        - Fix UI codec failure when changing sampling config and no codec
721          with same friendly name exists.  Also fix for redundant codec
722          displayed when primary updated.
723        - Add timestamp to mbus packet headers
724        - Reorder initialisation sequence, to handle the new requirement
725          that the mbus can only send reliably to those entities we've
726          received a message from previously. This probably means that
727          the wait-on-startup hack for ReLaTe is broken, but we don't care
728          since the entire initialisation sequence needs redoing anyway
729          (the Bremen PSTN-to-Mbone gateway needs more fine grained control
730          than is possible with the current startup sequence).
731        - Fixed size of participant window so user can see 2 layers of
732          encoding when redundancy in use.
733        - Fixed channel coder reconfigure issue when changing sampling mode.
734        - The name of the RAT binary now includes the version number.
735        - Fix muting of individual participants.
736        - Added G726-16 using code from Marc Randolph's patch on comp.speech.
737        - Add sdr plugin (not tested)
738        - Fixed decoding preference problem when redundancy used.
739        - Fixed source muting (we discard the packets in statistics, rather
740          than not mixing source).
741        - Removed -drop command line option.
742        - Moved codecs that had CODEC_PAYLOAD_DYNAMIC into unassigned and
743          dynamic range so they are available in transmission panel.
744        - Removed half-duplex cards appear in devices list on Win32.
745        - Fixed ui update when switching channel coder.
746        * Released 14 May 1999
748v4.0.2  - Added message box for win32 users who launch with no command line
749          options, giving usage instructions.
750        - Added WSACleanup() to shutdown win32 sockets nicely.
751        - Fix inet_aton(), which prevents a crash on startup on Windows NT
752          service pack 3 and some versions of Windows 95.
753        * Released 15 May 1999
755v4.0.3  - Fix compilation with v1.2 of the Microsoft Research IPv6 stack.
756        - Catch WM_DELETE for preferences window. Reported by Atanu Ghosh.
757        - Check address and port is valid in command line parsing so
758          we don't dump core later.  Reported by Lorenzo Vicisano.
759        - Unrecognized options are ignored, but no longer stop processing other
760          options. This means that "rat-4.0.3 -f pcm -t 64" now
761          sets the TTL correctly, even though the -f is unrecognized, meaning
762          that we can start rat via sdr. Reported by Terry Gibbons.
763        - Fix occasional assertion failure in mix.c:133 `len < ms->buf_len'
764          (it looks like the condition in the assert is off by one, should
765          be 'len <= ms->buf_len'. If this doesn't fix it, there's a check
766          around line 242 of mix.c which sets things up so we don't overflow
767          the buffer - we just decrease the amount we write by one sample
768          there instead. Reported by Roy Bennett and others.
769        - Fix payload type mapping for PCMA-16K-Stereo.
770        - Mapping for existing rat/vat codec names.
771        - Primary payload type mapping using -f.
772        - Secondary payload type mapping using -f also.
773        - Fix restoration of previous audio port settings from saved values.
774        - Separated sound file handling into sndfile_wav.[ch] and
775          sndfile_au.[ch]
776        - Added support for default sndfile extension if none specified.
777          Win32 -> wav, others -> au.
778        - Added support for writing alaw and ulaw.
779        - Updated man page.
780        - Added sndfile_raw.[ch] for handling raw files.
781        - Added sndfile_valid_format.
782        - Fixed spurious debugging code in the windows audio driver which
783          would cause an infinite loop if activated (rare, but could happen).
784        - Split converter code up into convert_*.[ch] and added convert_types.h
785        - Fixed repair when next unit on playout buffer is less than expected
786          length away.
787        - Compilation fixes for Irix 5.3 contributed by David Balazic.
788        - Some linux audio drivers, in particular the ES1370 used in the
789          SoundBlaster PCI 128, don't support /dev/sndstat. Rewrite the
790          query functions to work with /dev/mixer instead.
791        - Handle known skew in the audio sampling rate for those linux audio
792          drivers which report it.
793        - Added 'high quality' converter, sinc filter.
794        * Released 2 June 1999
796v4.0.4  - Add ability to receive on one port yet send to another, requested
797          by Henning Schulzrinne. Usage: "rat addr/rx_port/tx_port"
798        - Compilation fixes for Irix 6.5 contributed by Bob Olson.
799        - Fix core dump caused by calling sndfile_write_audio with buffer
800          length of 0.
801        - Fix core dump when called with invalid command line arguments,
802          reported by Marcus Meissner.
803        - Fix passing of encryption key across mbus, reported by Ed Whelan.
804        - Remove support for the -wait option. This means we can't work with the
805          ReLaTe interface anymore but, once the split into multiple processes
806          is complete, ReLaTe will be able to drive the media engine directly.
807        - Remove most of the transcoder support - it didn't work anyway, and
808          needs to be reimplemented from scratch.
809        - Start the split into multiple processes: media engine, user interface
810          and controller.
811        - Added basic layered channel coder. Usage: rat -l n <address>/<port>
812          <address>/<port>, where n = no of layers and there is an address and
813          port for each layer. Only works with the WBS codec at present, and
814          probably not very well at that.
815        - Move the code to load and save settings into the media engine, and
816          out of the user interface.
817        - Fixed WBS codec so that it works with different endian machines.
818        - Added hash table to settings_load.
819        - Fixes for 64 bit IRIX from Peter Orbaek
820        - Some codecs' default payload values clashed with RTP spec:
821          PCM-16-K Stereo was 76, now 124; GSM-16K was 72, now 118;
822          GSM-32K was 73, now 119; GSM-48K was 76, now 123.
823        * Released 7 July 1999
825v4.1.0  - Fixed slow memory leak reported by Emmanuel Duros.  Vanilla
826          decoder was not checking all pb_add functions returned success
827          and so pointer was getting trashed.
828        - Fix RTCP RR DLSR field when reporting on a source from which
829          we've received no SR packets.
830        - Changed drop preference for incoming packet buffer overflows.  Now
831          drop incoming packet rather than earliest packet in buffer - makes
832          source packet processing better ordered.
833        - Remove address sanity checking for the layered coder from the
834          command line parser: it should be done when the socket is opened
835          since that makes the code address format agnostic.
836        - Added network_exit.
837        - Added per source gain control.  Now appears in participant panel
838          on audio pane.  Suggested by Jerry Isdale.
839        - Fixes for the Detexis Musica IPv6 stack on Windows NT.
840        - Send rtp.source.cname messages to the video tool when lip-sync is
841          enabled, so it can match sources up to those in the video session.
842        - Cleanup documentation of the audev_*.c files
843        - Fix loading of preferences: powermeter, lip-sync
844        - Fix the fileboxes on the Windows release version.
845        - Fix spurious transmission of tool.rat.lecture.mode() mbus messages
846        - Fix spurious transmission of mbus messages when
847          we are sending.
848        - Fix (hopefully) assertion failure in the mixer when trying to zero
849          blocks longer than the buffer.
850        - Improved layered channel coder, thereby making it incompatible with
851          4.0.4.
852        - Added persistent database pdb.[ch].
853        - Moved render_3D_data from the rtcp database into persistent database
854          as first step towards using common rtp code.  Lots of other fields to
855          do, but looks to work in principle.
856        - Add RPM spec file for RedHat Linux. Based on that contributed by
857          Stephen Adler
858        - Convert to using the RTP code in the common library.
859        - Fixed getenv not checking for null string after getenv in
860          auddev_osprey.c.  Reported by Dirk Kutscher
861          <>.
862        - Add playout_calc.[ch].
863        - Add ts_mul and ts_div to keep playout calc clean.
864        - Change default units per packet to 1, since PIPVIC2 says that the
865          end to end delay is too large otherwise.
866        - Rewrite the reception quality matrix
867        - Consistency changes: audio device and repair query now consistent
868          with the majority of interfaces.
869        - More consistency changes: channel_get_coder now consistent with
870          other interfaces.
871        - Add ability to mtrace between participants by clicking on the squares
872          in the reception quality matrix
873        - Split setting load between .RTPdefaults and .RATdefaults.
874        - Add cutesy popup boxes to the reception quality matrix
875        - Add device buffer occupancy check to auddev_luigi to try to fix
876          sb16 problems.
877        - Add toged and cont_toged back.
878        - Move source_check_buffering into rtp_callback.
879        - Fix mixer handling overlapping blocks.
880        - Changed win32 audio read and write methods, added audio event to
881          reduce CPU usage.  Fixed handling of non-blocksize writes.
882        - Modified auddev_null on Win32 to use WaitForSingleObject rather
883          than Sleep on Win32.  Reduces CPU considerably.
884        - Added colour to powermeters.
885        - Add fixed size packet buffer to make for easy discards when media
886          engine has blocked for an inordinate period.
887        - Added source_get_bps (bits per second :-).
888        - Removed gain setting stuff from luigi_audio_open.  Problems reported
889          by Bill Fenner and code purpose is defunct.
890        - Complete split into media engine, user interface and controller
891          processes. Only works on Unix at present, still debugging the
892          Windows port.
893        * 5 October 1999
895v4.1.1  - Added transcoder audio device.  Contributed by Michael Wallbaum
896          <>
897        - Now send RTP BYE packets on exit
898        - Fixed converter table initialization.  Was not initializing
899          interpolation and extrapolation correctly after last consistency
900          update.
901        - Unrolled loops in extrapolation converter. 
902        - Replaced divisions in interpolation converter that were not powers
903          of two with a multiplication scaling factor and a power of 2
904          denominator.  Improves performance 3-4 for upsampling by 3,5,6.
905        - Fixed 2 step sample rate conversion support.
906        - Fixed Windows port.
907        - Initialize sp->cur_ts in main_engine, before tx_start.  Should fix
908          occasional assert failure during transmitter startup.
909        - Put cont_toged check into source_process packets.  Added check for
910          cont_toged in rtp_callback.
911        - Added time constants and replaced lots of ts_map32 functions with
912          them in source.c.
913        - Rewrite initialization and rendezvous code between the controller
914          and the user interface and media engine. This should remove many
915          race conditions and generally clean things up and make them more
916          reliable.
917                - use mbus_rendezvous_waiting() and mbus_rendezvous_go()
918                - do a real handshake between controller and the subprocesses
919        - Fix parsing of many command line options. NOTE: many of the options
920          are parsed in a backwards incompatible manner now, to make the code
921          cleaner.
925TODO -- They're features not bugs dammit!
928- Assorted audio driver problems:
929        - FreeBSD driver bug on SoundBlaster 16 has small write buffers
930          and stops working full duplex mode after a time.  Hard to fix because
931          of cushion.
932        - Broken auddev_pca with adding of audio interface conversion code.
933          FreeBSD 3.1 pca audio does not seem to work anymore.
934        - SunVideoPlus interface code does not work (have tried nearly all
935          options but current driver is v. unstable). Has only worked in 8k
936          mono.  New driver is coming soon...
937        - SGI O2's don't have autosensing audio interface selection like
938          Indy's.
939        - Need to allow manual input and output switching.
940- 3d renderer should decimate when using sampling rates other than
941  that for which it was originally designed for.
942- 3d renderer could use finite precision maths for better performance
943  (eliminate type conversions).
944- sndfile routines should use conversion functions in audio_fmt.c, not their
945  own.
946- Bias estimate should be sample continuous, not block stepped.
947- Channel coders need intelligent bail out fn's for when units overflow
948  (rare, but real problem).
949- UI lets you select packets larger than the MTU, which can't be sent
950- Release audio option
951- Add/restore audio device trading
952- Disabling participant list doesn't work if the window has been resized:
953  not sure if this is a feature of Tk or the window manager, but there's
954  little we can do about it.
955- Playout delays may be out of date in both tools (rat & vic) when lip-sync
956  is enabled and when no talkspurt has been sent/received for a while (e.g
957  when the speaker stops talking for a while)
958- When silence suppression is off, then no mbus lip-sync messages are exchanged
959  between rat & vic since this is done on a per-talkspurt basis by rat.  We
960  may use a timer to send such messages every so often.
961- Streaming option -S from command line to stream files, raw and sample based
962  files would be good.
963- All supported codecs should have payload types by default.
964- Reimplement transcoder.
965- Add support for conversion between m*8000 and n*11025
966        - n*11025 sampling isn't well supported in general
967- Add mp3 decoder.  xaudio and ms acm decoders look v. easy to add.
968- Playout bug with overlapping audio reception.  Pushes incoming audio too
969  far back.  Mute source briefly to get around this.
970- Better code documentation.
971- Sample based codecs should accept frame lengths of 0-200ms, not just
972  multiples of frame lengths in tables.  Should add codec_is_sample_based
973  test and data to codec tables and relax receiver sanity checking so that
974  sample based frames do not have to be n * codec__peek_frame_size.
975- Should use the empty RRs coming back from receivers who are not seeing
976  traffic, and display this in the loss matrix.
977- The new loading of settings isn't quite complete yet - some variables
978  need to be activated in the user interface (they are loaded fine; it's
979  just not made evident to the user)
Note: See TracBrowser for help on using the browser.