www.pudn.com > AVS_M_ver10.rar > gaintcx.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  
#include  
#include "../include/amr_plus.h" 
int q_gain_tcx(    /* output: return quantization index */ 
  float code[],    /* (i)  : quantized vector           */ 
  int lcode,       /* (i)  : frame size                 */ 
  float *gain      /* in/out: quantized gain            */ 
) 
{ 
  int    i, index; 
  float  tmp, gcode0, gcode; 
  /* energy */ 
  tmp = 0.01f; 
  for(i=0; i 127) { 
    index = 127; 
  } 
  gcode = (float)pow(10.0, ((float)index)/28.0) / gcode0; 
  *gain = gcode; 
  return(index); 
} 
float d_gain_tcx(  /* output: gain                    */ 
  int index,       /* (i)  : index                    */ 
  float code[],    /* (i)  : quantized vector         */ 
  int lcode,       /* (i)  : frame size               */ 
  int bfi,         /* (i)  : 1=gain lost              */ 
  float *old_rms)  /* (i/o): for frame recovery       */ 
{ 
  int i; 
  float tmp, gain, gcode0, rms; 
  /* energy */ 
  tmp = FLT_MIN; 
  for(i=0; i