[MPlayer-cvslog] CVS: main bswap.h,1.5,1.6

Reimar Döffinger CVS syncmail at mplayerhq.hu
Wed Jul 13 19:24:44 CEST 2005


CVS change done by Reimar Döffinger CVS

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

Modified Files:
	bswap.h 
Log Message:
(hopefully) fixing remaining float endianness problems


Index: bswap.h
===================================================================
RCS file: /cvsroot/mplayer/main/bswap.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- bswap.h	21 Oct 2004 11:55:19 -0000	1.5
+++ bswap.h	13 Jul 2005 17:24:41 -0000	1.6
@@ -117,6 +117,37 @@
 
 #endif	/* !HAVE_BYTESWAP_H */
 
+static float inline bswap_flt(float x) {
+  union {uint32_t i; float f;} u;
+  u.f = x;
+  u.i = bswap_32(u.i);
+  return u.f;
+}
+
+static double inline bswap_dbl(double x) {
+  union {uint64_t i; double d;} u;
+  u.d = x;
+  u.i = bswap_64(u.i);
+  return u.d;
+}
+
+static long double inline bswap_ldbl(long double x) {
+  union {char d[10]; long double ld;} uin;
+  union {char d[10]; long double ld;} uout;
+  uin.ld = x;
+  uout.d[0] = uin.d[9];
+  uout.d[1] = uin.d[8];
+  uout.d[2] = uin.d[7];
+  uout.d[3] = uin.d[6];
+  uout.d[4] = uin.d[5];
+  uout.d[5] = uin.d[4];
+  uout.d[6] = uin.d[3];
+  uout.d[7] = uin.d[2];
+  uout.d[8] = uin.d[1];
+  uout.d[9] = uin.d[0];
+  return uout.ld;
+}
+
 // be2me ... BigEndian to MachineEndian
 // le2me ... LittleEndian to MachineEndian
 
@@ -127,6 +158,12 @@
 #define le2me_16(x) bswap_16(x)
 #define le2me_32(x) bswap_32(x)
 #define le2me_64(x) bswap_64(x)
+#define be2me_flt(x) (x)
+#define be2me_dbl(x) (x)
+#define be2me_ldbl(x) (x)
+#define le2me_flt(x) bswap_flt(x)
+#define le2me_dbl(x) bswap_dbl(x)
+#define le2me_ldbl(x) bswap_ldbl(x)
 #else
 #define be2me_16(x) bswap_16(x)
 #define be2me_32(x) bswap_32(x)
@@ -134,6 +171,12 @@
 #define le2me_16(x) (x)
 #define le2me_32(x) (x)
 #define le2me_64(x) (x)
+#define be2me_flt(x) bswap_flt(x)
+#define be2me_dbl(x) bswap_dbl(x)
+#define be2me_ldbl(x) bswap_ldbl(x)
+#define le2me_flt(x) (x)
+#define le2me_dbl(x) (x)
+#define le2me_ldbl(x) (x)
 #endif
 
 #endif /* __BSWAP_H__ */




More information about the MPlayer-cvslog mailing list