[MPlayer-cvslog] CVS: main/libaf af_format.c,1.27,1.28

Richard Felker CVS syncmail at mplayerhq.hu
Thu Feb 24 17:48:20 CET 2005


CVS change done by Richard Felker CVS

Update of /cvsroot/mplayer/main/libaf
In directory mail:/var2/tmp/cvs-serv10232/libaf

Modified Files:
	af_format.c 
Log Message:
100l for me, lrintf is better. now fixed so it should be prototyped, and should work even if there is no prototype

Index: af_format.c
===================================================================
RCS file: /cvsroot/mplayer/main/libaf/af_format.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- af_format.c	22 Feb 2005 02:12:58 -0000	1.27
+++ af_format.c	24 Feb 2005 16:48:18 -0000	1.28
@@ -3,6 +3,9 @@
    AFMT_U16_LE, AFMT_U16_BE, AFMT_S32_LE and AFMT_S32_BE.
 */
 
+// Must be defined before any libc headers are included!
+#define _ISOC9X_SOURCE
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -14,6 +17,14 @@
 #include "../bswap.h"
 #include "../libvo/fastmemcpy.h"
 
+// Integer to float conversion through lrintf()
+#ifdef HAVE_LRINTF
+#include <math.h>
+long int lrintf(float);
+#else
+#define lrintf(x) ((int)(x))
+#endif
+
 /* Functions used by play to convert the input audio to the correct
    format */
 
@@ -31,9 +42,9 @@
 // Change the number of bits per sample
 static void change_bps(void* in, void* out, int len, int inbps, int outbps);
 // From float to int signed
-static void float2int(void* in, void* out, int len, int bps);
+static void float2int(float* in, void* out, int len, int bps);
 // From signed int to float
-static void int2float(void* in, void* out, int len, int bps);
+static void int2float(void* in, float* out, int len, int bps);
 
 static af_data_t* play(struct af_instance_s* af, af_data_t* data);
 static af_data_t* play_swapendian(struct af_instance_s* af, af_data_t* data);
@@ -488,48 +499,48 @@
   }
 }
 
-static void float2int(void* in, void* out, int len, int bps)
+static void float2int(float* in, void* out, int len, int bps)
 {
   register int i;
   switch(bps){
   case(1):
     for(i=0;i<len;i++)
-      ((int8_t*)out)[i] = (int)(127.0 * (1.0+((float*)in)[i])) - 127;
+      ((int8_t*)out)[i] = lrintf(127.0 * in[i]);
     break;
   case(2): 
     for(i=0;i<len;i++)
-      ((int16_t*)out)[i] = (int)(32767.0 * (1.0+((float*)in)[i])) - 32767;
+      ((int16_t*)out)[i] = lrintf(32767.0 * in[i]);
     break;
   case(3):
     for(i=0;i<len;i++)
-      store24bit(out, i, (int)(2147483647.0 * (1.0+((float*)in)[i])) - 2147483647);
+      store24bit(out, i, lrintf(2147483647.0 * in[i]));
     break;
   case(4):
     for(i=0;i<len;i++)
-      ((int32_t*)out)[i] = (int)(2147483647.0 * (1.0+((float*)in)[i])) - 2147483647;
+      ((int32_t*)out)[i] = lrintf(2147483647.0 * in[i]);
     break;
   }	
 }
 
-static void int2float(void* in, void* out, int len, int bps)
+static void int2float(void* in, float* out, int len, int bps)
 {
   register int i;
   switch(bps){
   case(1):
     for(i=0;i<len;i++)
-      ((float*)out)[i]=(1.0/128.0)*((float)((int8_t*)in)[i]);
+      out[i]=(1.0/128.0)*((int8_t*)in)[i];
     break;
   case(2):
     for(i=0;i<len;i++)
-      ((float*)out)[i]=(1.0/32768.0)*((float)((int16_t*)in)[i]);
+      out[i]=(1.0/32768.0)*((int16_t*)in)[i];
     break;
   case(3):
     for(i=0;i<len;i++)
-      ((float*)out)[i]=(1.0/2147483648.0)*((float)((int32_t)load24bit(in, i)));
+      out[i]=(1.0/2147483648.0)*((int32_t)load24bit(in, i));
     break;
   case(4):
     for(i=0;i<len;i++)
-      ((float*)out)[i]=(1.0/2147483648.0)*((float)((int32_t*)in)[i]);
+      out[i]=(1.0/2147483648.0)*((int32_t*)in)[i];
     break;
   }	
 }




More information about the MPlayer-cvslog mailing list