
   /******************************************************************

       iLBC Speech Coder ANSI-C Source Code

       packing.h

       Copyright (C) The Internet Society (2004).
       All Rights Reserved.

   ******************************************************************/

#ifndef __PACKING_H
#define __PACKING_H

void packsplit(int *index,      /* (i) the value to split */
  int *firstpart,               /* (o) the value specified by most
                                   significant bits */
  int *rest,                    /* (o) the value specified by least
                                   significant bits */
  int bitno_firstpart,          /* (i) number of bits in most
                                   significant part */
  int bitno_total               /* (i) number of bits in full range
                                   of value */
  );

void packcombine(int *index,    /* (i/o) the msb value in the
                                   combined value out */
  int rest,                     /* (i) the lsb value */
  int bitno_rest                /* (i) the number of bits in the
                                   lsb part */
  );

void dopack(unsigned char **bitstream,  /* (i/o) on entrance pointer to
                                           place in bitstream to pack
                                           new data, on exit pointer
                                           to place in bitstream to
                                           pack future data */
  int index,                    /* (i) the value to pack */
  int bitno,                    /* (i) the number of bits that the
                                   value will fit within */
  int *pos                      /* (i/o) write position in the
                                   current byte */
  );





void unpack(unsigned char **bitstream,  /* (i/o) on entrance pointer to
                                           place in bitstream to
                                           unpack new data from, on
                                           exit pointer to place in
                                           bitstream to unpack future
                                           data from */
  int *index,                   /* (o) resulting value */
  int bitno,                    /* (i) number of bits used to
                                   represent the value */
  int *pos                      /* (i/o) read position in the
                                   current byte */
  );

#endif
