]> git.sesse.net Git - casparcg/commitdiff
manually merged 1a9ecbd00e from master
authorHelge Norberg <helge.norberg@svt.se>
Fri, 25 Oct 2013 11:46:34 +0000 (13:46 +0200)
committerHelge Norberg <helge.norberg@svt.se>
Fri, 25 Oct 2013 11:46:34 +0000 (13:46 +0200)
protocol/osc/oscpack/OscHostEndianness.h
protocol/osc/oscpack/OscOutboundPacketStream.cpp

index 1ff7bf5899480cbcac571df36a6f61d7fd976b77..2fadb159d1d1c650df5ece39dd67258329cf7352 100644 (file)
 #ifndef OSC_HOSTENDIANNESS_H
 #define OSC_HOSTENDIANNESS_H
 
-//#define OSC_HOST_BIG_ENDIAN 1
-
-//*
-//    Make sure either OSC_HOST_LITTLE_ENDIAN or OSC_HOST_BIG_ENDIAN is defined
-//
-//    If you know a way to enhance the detection below for Linux and/or MacOSX
-//    please let me know! I've tried a few things which don't work.
-//*/
-//
-//#if defined(OSC_HOST_LITTLE_ENDIAN) || defined(OSC_HOST_BIG_ENDIAN)
-//
+#define OSC_HOST_LITTLE_ENDIAN 1 
+
+/*
+    Make sure either OSC_HOST_LITTLE_ENDIAN or OSC_HOST_BIG_ENDIAN is defined
+
+    If you know a way to enhance the detection below for Linux and/or MacOSX
+    please let me know! I've tried a few things which don't work.
+*/
+
+#if defined(OSC_HOST_LITTLE_ENDIAN) || defined(OSC_HOST_BIG_ENDIAN)
+
 // you can define one of the above symbols from the command line
 // then you don't have to edit this file.
-//
-//#elif defined(__WIN32__) || defined(WIN32) || defined(WINCE)
-//
-// assume that __WIN32__ is only defined on little endian systems
-//
-//#define OSC_HOST_LITTLE_ENDIAN 1
-//#undef OSC_HOST_BIG_ENDIAN
-//
-//#elif defined(__APPLE__)
-//
-//#if defined(__LITTLE_ENDIAN__)
-//
-//#define OSC_HOST_LITTLE_ENDIAN 1
-//#undef OSC_HOST_BIG_ENDIAN
-//
-//#elif defined(__BIG_ENDIAN__)
-//
-//#define OSC_HOST_BIG_ENDIAN 1
-//#undef OSC_HOST_LITTLE_ENDIAN
-//
-//#endif
-//
-//#endif
-//
-//#if !defined(OSC_HOST_LITTLE_ENDIAN) && !defined(OSC_HOST_BIG_ENDIAN)
-//
-//#error please edit OSCHostEndianness.h to configure endianness
-//
-//#endif
+
+#elif defined(__WIN32__) || defined(WIN32) || defined(WINCE)
+
+ assume that __WIN32__ is only defined on little endian systems
+
+#define OSC_HOST_LITTLE_ENDIAN 1
+#undef OSC_HOST_BIG_ENDIAN
+
+#elif defined(__APPLE__)
+
+#if defined(__LITTLE_ENDIAN__)
+
+#define OSC_HOST_LITTLE_ENDIAN 1
+#undef OSC_HOST_BIG_ENDIAN
+
+#elif defined(__BIG_ENDIAN__)
+
+#define OSC_HOST_BIG_ENDIAN 1
+#undef OSC_HOST_LITTLE_ENDIAN
+
+#endif
+
+#endif
+
+#if !defined(OSC_HOST_LITTLE_ENDIAN) && !defined(OSC_HOST_BIG_ENDIAN)
+
+#error please edit OSCHostEndianness.h to configure endianness
+
+#endif
 
 #endif /* OSC_HOSTENDIANNESS_H */
index 20bc386dda010d11a135b4a35286229e3c7a3bc9..6a005b99e39ff480a28bb569382d7732eb36527e 100644 (file)
@@ -36,6 +36,8 @@
 #include <stdlib.h>
 #include <assert.h>
 
+#include <common/endian.h>
+
 #if defined(__WIN32__) || defined(WIN32)
 #include <malloc.h> // for alloca
 #endif
@@ -48,7 +50,7 @@ namespace osc{
 static void FromInt32( char *p, int32 x )
 {
 #ifdef OSC_HOST_LITTLE_ENDIAN
-    union{
+    /*union{
         osc::int32 i;
         char c[4];
     } u;
@@ -58,7 +60,8 @@ static void FromInt32( char *p, int32 x )
     p[3] = u.c[0];
     p[2] = u.c[1];
     p[1] = u.c[2];
-    p[0] = u.c[3];
+    p[0] = u.c[3];*/
+       *reinterpret_cast<int32*>(p) = caspar::swap_byte_order(x); 
 #else
     *reinterpret_cast<int32*>(p) = x;
 #endif
@@ -68,7 +71,7 @@ static void FromInt32( char *p, int32 x )
 static void FromUInt32( char *p, uint32 x )
 {
 #ifdef OSC_HOST_LITTLE_ENDIAN
-    union{
+    /*union{
         osc::uint32 i;
         char c[4];
     } u;
@@ -78,7 +81,8 @@ static void FromUInt32( char *p, uint32 x )
     p[3] = u.c[0];
     p[2] = u.c[1];
     p[1] = u.c[2];
-    p[0] = u.c[3];
+    p[0] = u.c[3];*/
+       *reinterpret_cast<uint32*>(p) = caspar::swap_byte_order(x); 
 #else
     *reinterpret_cast<uint32*>(p) = x;
 #endif
@@ -88,7 +92,7 @@ static void FromUInt32( char *p, uint32 x )
 static void FromInt64( char *p, int64 x )
 {
 #ifdef OSC_HOST_LITTLE_ENDIAN
-    union{
+    /*union{
         osc::int64 i;
         char c[8];
     } u;
@@ -102,7 +106,8 @@ static void FromInt64( char *p, int64 x )
     p[3] = u.c[4];
     p[2] = u.c[5];
     p[1] = u.c[6];
-    p[0] = u.c[7];
+    p[0] = u.c[7];*/
+       *reinterpret_cast<int64*>(p) = caspar::swap_byte_order(x); 
 #else
     *reinterpret_cast<int64*>(p) = x;
 #endif
@@ -112,7 +117,7 @@ static void FromInt64( char *p, int64 x )
 static void FromUInt64( char *p, uint64 x )
 {
 #ifdef OSC_HOST_LITTLE_ENDIAN
-    union{
+    /*union{
         osc::uint64 i;
         char c[8];
     } u;
@@ -126,7 +131,8 @@ static void FromUInt64( char *p, uint64 x )
     p[3] = u.c[4];
     p[2] = u.c[5];
     p[1] = u.c[6];
-    p[0] = u.c[7];
+    p[0] = u.c[7];*/
+       *reinterpret_cast<uint64*>(p) = caspar::swap_byte_order(x); 
 #else
     *reinterpret_cast<uint64*>(p) = x;
 #endif