www.pudn.com > AVS_M_ver10.rar > writ_dat.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. 
************************************************************************ 
*/ 
 
/*---------------------------------------------------------------------- 
 * 
 *  FUNCTION:   writ_data 
 * 
 *  PURPOSE:  round array of float data to 16-bit words and write to the 
 *            file "fp" 
 * 
 *--------------------------------------------------------------------------*/ 
#include  
#include "../include/amr_plus.h" 
void writ_data( 
  float data[],  /* input : data              */ 
  int   size,    /* input : number of samples */ 
  FILE  *fp      /* output: file pointer      */ 
) 
{ 
  short data16[4*L_FRAME_FSMAX]; 
  int   i; 
  float temp; 
  for (i = 0; i < size; i++) 
  { 
    temp = data[i]; 
    if (temp >= 0.0) 
      temp += 0.5; 
    else 
      temp -= 0.5; 
    if (temp >  32767.0 ) temp =  32767.0; 
    if (temp < -32767.0 ) temp = -32767.0; 
    data16[i] = (short) temp; 
  } 
  fwrite(data16, sizeof(short), size, fp); 
  return; 
}