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++) & 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 & MASK); 
     value >>= 1; 
   } 
}