changeset 757:9c135d421676

Clean up endianess handling a bit.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 05 Nov 2012 19:03:27 +0200
parents 8299288df6d2
children 6c8c968595d9
files src/xs_sidplay2.cc
diffstat 1 files changed, 38 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/src/xs_sidplay2.cc	Mon Nov 05 18:53:20 2012 +0200
+++ b/src/xs_sidplay2.cc	Mon Nov 05 19:03:27 2012 +0200
@@ -35,8 +35,18 @@
 #else
 #  include <sidplay/sidplay2.h>
 #  include <sidplay/sidlazyiptr.h>
+#  if G_BYTE_ORDER == G_BIG_ENDIAN
+#    define SID2_NATIVE_UNSIGNED SID2_BIG_UNSIGNED
+#    define SID2_NATIVE_SIGNED SID2_BIG_SIGNED
+#  elif G_BYTE_ORDER == G_LITTLE_ENDIAN
+#    define SID2_NATIVE_UNSIGNED SID2_LITTLE_UNSIGNED
+#    define SID2_NATIVE_SIGNED SID2_LITTLE_SIGNED
+#  else
+#    error Unsupported endianess!
+#  endif
 #endif
 
+
 class XSSIDPlay2 {
 public:
 #ifdef HAVE_SIDPLAY2_FP
@@ -199,58 +209,41 @@
 
 
     switch (state->audioBitsPerSample) {
-    case XS_RES_8BIT:
-        state->audioFormat = FMT_U8;
+        case XS_RES_8BIT:
+            state->audioFormat = FMT_U8;
 #ifndef HAVE_SIDPLAY2_FP
-        engine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
-#endif
-        break;
-
-    case XS_RES_16BIT:
-    default:
-            state->audioFormat = FMT_S16_NE;
-#ifndef HAVE_SIDPLAY2_FP
-        switch (state->audioFormat) {
-        case FMT_U16_LE:
             engine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
-            break;
-
-        case FMT_U16_BE:
-            engine->currConfig.sampleFormat = SID2_BIG_UNSIGNED;
-            break;
-
-        case FMT_U16_NE:
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-            engine->currConfig.sampleFormat = SID2_BIG_UNSIGNED;
-#else
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-            engine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
-#else
-#error Unsupported endianess!
-#endif
 #endif
             break;
 
-        case FMT_S16_LE:
-            engine->currConfig.sampleFormat = SID2_LITTLE_SIGNED;
-            break;
-
-        case FMT_S16_BE:
-            engine->currConfig.sampleFormat = SID2_BIG_SIGNED;
-            break;
-
+        case XS_RES_16BIT:
         default:
-#if G_BYTE_ORDER == G_BIG_ENDIAN
-            engine->currConfig.sampleFormat = SID2_BIG_SIGNED;
-#else
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-            engine->currConfig.sampleFormat = SID2_LITTLE_SIGNED;
-#else
-#error Unsupported endianess!
-#endif
-#endif
-            break;
+            state->audioFormat = FMT_S16_NE;
+#ifndef HAVE_SIDPLAY2_FP
+            switch (state->audioFormat) {
+                case FMT_U16_LE:
+                    engine->currConfig.sampleFormat = SID2_LITTLE_UNSIGNED;
+                    break;
+
+                case FMT_U16_BE:
+                    engine->currConfig.sampleFormat = SID2_BIG_UNSIGNED;
+                    break;
 
+                case FMT_U16_NE:
+                    engine->currConfig.sampleFormat = SID2_NATIVE_UNSIGNED;
+                    break;
+
+                case FMT_S16_LE:
+                    engine->currConfig.sampleFormat = SID2_LITTLE_SIGNED;
+                    break;
+
+                case FMT_S16_BE:
+                    engine->currConfig.sampleFormat = SID2_BIG_SIGNED;
+                    break;
+
+                default:
+                    engine->currConfig.sampleFormat = SID2_NATIVE_SIGNED;
+                    break;
         }
 #endif
         break;