-----------------------------------------------------------------------

ANSI-C G.723.1 Annex B Floating-Point Source Code
Version 5.1F
Release Notes
Mitch Bodart    Intel   10/01/96

/////
     Summary of changes between V4.1F and V5.1F
/////

1)  The VAD/CNG algorithm of Annex A was implemented in floating point.
    This resides mainly in several new source files:  codcng2.c, codcng2.h,
    deccng2.c, deccng2.h, utilcng2.c, utilcng2.h, vad2.c and vad2.h.
    Other changes related to VAD/CNG are:

    a) Supporting declarations have been added to file cst2.h.

    b) VAD/CNG initialization functions are called from lbccode2.c at
       the same time that Init_Coder and Init_Decod are called.

    c) Function Coder has been restructured to detect inactive frames and
       eliminate unnecessary processing when a SID frame is to be generated.
       Similarly, SID frame processing has been added to the function Decod.

    d) The interface to the Durbin() function was modified to accommodate
       VAD/CNG, though the functional result is unchanged.  (However, see
       note 4 below about bug fixes in the sine detection area.)

    e) The function Comp_Lpc was changed to use the new Durbin interface.
       The first element of table CombinatorialWindowTable was correspondingly
       eliminated, shortening the table from 11 elements to 10, which is
       now in line with the fixed point implementation.

    f) Support has been added for the -v command line switch, which enables
       VAD/CNG on encode (on decode, CNG is triggered by the presence
       of SID frames in the bit stream).  VAD/CNG is disabled by default,
       so that V5.1F is functionally equivalent to V4.1F.  However, due to
       reordering of operations, susceptibility to compiler optimizations,
       and a few bug fixes, V5.1F may not always produce output that is
       bit-for-bit identical with V4.1F.

    g) Three small tables, base, bseg and fact, have been added to file tab2.c.

    h) The function Comp_Info has an additional (FLOAT*) parameter, which is
       used to return a value needed for CNG during decode.

    i) The Line_Wr function can now emit 4-octet SID frames.  Non-frames are
       simulated by emitting 1 octet with a frame type of 3.  The Line_Rd
       function can now read these frame types.

2)  Copying of the CurrLsp vector into PrevLsp in function Lsp_Int has
    been deleted.  The copying is done in the caller after Lsp_Int returns.
    This was done for consistency with the fixed point code, and with
    the use of Lsp_Int by VAD/CNG.

3)  Many cosmetic changes, such as consistent indentation, correcting
    comments, etc., were applied to all files.

4)  The type of CodStat.SinDet was changed from int to Word16.  This was
    necessary so that tests of the form "if (CodStat.SinDet < 0)" would be
    valid on systems where type int is larger than 16 bits.  Additionally,
    a bug in the Durbin function's sine detector was fixed.  The negative
    of local variable Pk, or -Pk, should be used in the comparison with 0.95.

5)  Several other variables in cst2.h were changed from type int to type
    Word16 or Word32.  This was done for cosmetic purposes, to be more
    consistent with the fixed point code.  This necessitated additional
    casts, and changing the types of several related 'int' function
    parameters, to eliminate various compiler warnings.

6)  The count_clip variable, used to report the number of clipped samples,
    has been removed.

7)  The -r switch has been extended to support variable rate encoding.
    If the argument is not 53 or 63, it is taken to be the name of a file
    that contains one octet per frame, which indicates the rate to be
    used for encoding the frame.  The Line_Pack function takes an additional
    parameter that specifies the type of frame to encode.

8)  The decode rate is now determined by each frame in the bit stream,
    instead of by the -r switch.  The Line_Unpk function returns an
    additional parameter, that specifies the type of the frame just unpacked.
    The array PackedFrameSize in lbccode2.c is no longer used and
    has been removed.

9)  The file typedef2.h was restructured to eliminate the potential
    for multiply-defined typedef names.

10) Support has been added for the -R command line switch, which is used
    for testing.  Its argument, usually 10, specifies how often (e.g.,
    every 10 frames) the coder should be reinitialized.

11) A source bug was fixed in function D4i64_LBC.  Statements of the form
        *ptr_ri0i1++ = *ptr_ri0i1 * p_sign[i0] * p_sign2[i1];
    were not ANSI-compliant, as the autoincrement could happen before
    or after the access to *ptr_ri0i1 on the right hand side.

-----------------------------------------------------------------------
