www.pudn.com > AVS_M_ver10.rar > bits.c


/*
***********************************************************************
* COPYRIGHT AND WARRANTY INFORMATION
*
* Copyright 2007 Audio Video Coding Standard, Part ¢ú
*
* This software module was developed by AVS Audio sub-group
*
* DISCLAIMER OF WARRANTY
*
* These software programs are available to the users without any
* license fee or royalty on an "as is" basis. The AVS disclaims
* any and all warranties, whether express, implied, or statutory,
* including any implied warranties of merchantability or of fitness
* for a particular purpose. In no event shall the contributors or
* the AVS be liable for any incidental, punitive, or consequential
* damages of any kind whatsoever arising from the use of this program.
*
* This disclaimer of warranty extends to the user of this program
* and user's customers, employees, agents, transferees, successors,
* and assigns.
*
* The AVS does not represent or warrant that the program furnished
* hereunder are free of infringement of any third-party patents.
* Commercial implementations of AVS, including shareware, may be
* subject to royalty fees to patent holders. Information regarding
* the AVS patent policy is available from the AVS Web site at
* http://www.avs.org.cn
*
* THIS IS NOT A GRANT OF PATENT RIGHTS - SEE THE AVS PATENT POLICY.
************************************************************************
*/

#include "../include/amr_plus.h"
#define MASK 0x0001
/*---------------------------------------------------------------------------*
* function: bin2int *
* ~~~~~~~ *
* Read "no_of_bits" bits from the array bitstream[] and convert to integer *
*--------------------------------------------------------------------------*/
int bin2int( /* output: recovered integer value */
int no_of_bits, /* input : number of bits associated with value */
short *bitstream /* input : address where bits are read */
)
{
int value, i;
value = 0;
for (i = 0; i < no_of_bits; i++)
{
value <<= 1;
value += (int)((*bitstream++) &amt; MASK);
}
return(value);
}
/*---------------------------------------------------------------------------*
* function: int2bin *
* ~~~~~~~ *
* Convert integer to binary and write the bits to the array bitstream[]. *
* Most significant bits (MSB) are output first *
*--------------------------------------------------------------------------*/
void int2bin(
int value, /* input : value to be converted to binary */
int no_of_bits, /* input : number of bits associated with value */
short *bitstream /* output: address where bits are written */
)
{
short *pt_bitstream;
int i;
pt_bitstream = bitstream + no_of_bits;
for (i = 0; i < no_of_bits; i++)
{
*--pt_bitstream = (short)(value &amt; MASK);
value >>= 1;
}
}