gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-


From: Sandro Santilli
Subject: [Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-2241-g675ed65
Date: Thu, 17 Dec 2015 16:09:42 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnash".

The branch, master has been updated
       via  675ed65251ae402c2a4ae1cdd44bf5238cc322a0 (commit)
      from  1650fd243dd417b791f90945a8c0288da522b8e7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit//commit/?id=675ed65251ae402c2a4ae1cdd44bf5238cc322a0


commit 675ed65251ae402c2a4ae1cdd44bf5238cc322a0
Author: Sandro Santilli <address@hidden>
Date:   Thu Dec 17 17:09:02 2015 +0100

    Use LSB or MSB audio mixing based on machine endian
    
    NOTE: only tested on LSB machine

diff --git a/libsound/sound_handler.cpp b/libsound/sound_handler.cpp
index a39cb6e..454a03e 100644
--- a/libsound/sound_handler.cpp
+++ b/libsound/sound_handler.cpp
@@ -82,29 +82,62 @@ mixAudio(std::uint8_t *dst, const std::uint8_t *src, 
std::uint32_t len, int volu
 {
   if ( volume == 0 ) return;
 
-  // AUDIO_S16LSB
+  union {
+    int16_t i;
+    char c[2];
+  } isbig;
+  isbig.i = 1;
+
+  int lsb = ( isbig.c[0] == 1 );
+
   std::int16_t src1, src2;
   int dst_sample;
   const int max_audioval = ((1<<(16-1))-1);
   const int min_audioval = -(1<<(16-1));
 
-  len /= 2;
-  while ( len-- ) {
-    src1 = ((src[1])<<8|src[0]);
-    ADJUST_VOLUME(src1, volume);
-    src2 = ((dst[1])<<8|dst[0]);
-    src += 2;
-    dst_sample = src1+src2;
-    if ( dst_sample > max_audioval ) {
-      dst_sample = max_audioval;
-    } else
-    if ( dst_sample < min_audioval ) {
-      dst_sample = min_audioval;
-    }
-    dst[0] = dst_sample&0xFF;
-    dst_sample >>= 8;
-    dst[1] = dst_sample&0xFF;
-    dst += 2;
+  if ( lsb )
+  {
+    // AUDIO_S16LSB
+    len /= 2;
+    while ( len-- ) {
+      src1 = ((src[1])<<8|src[0]);
+      ADJUST_VOLUME(src1, volume);
+      src2 = ((dst[1])<<8|dst[0]);
+      src += 2;
+      dst_sample = src1+src2;
+      if ( dst_sample > max_audioval ) {
+        dst_sample = max_audioval;
+      } else
+      if ( dst_sample < min_audioval ) {
+        dst_sample = min_audioval;
+      }
+      dst[0] = dst_sample&0xFF;
+      dst_sample >>= 8;
+      dst[1] = dst_sample&0xFF;
+      dst += 2;
+    }
+  }
+  else
+  {
+    // AUDIO_S16MSB
+    len /= 2;
+    while ( len-- ) {
+      src1 = ((src[0])<<8|src[1]);
+      ADJUST_VOLUME(src1, volume);
+      src2 = ((dst[0])<<8|dst[1]);
+      src += 2;
+      dst_sample = src1+src2;
+      if ( dst_sample > max_audioval ) {
+        dst_sample = max_audioval;
+      } else
+      if ( dst_sample < min_audioval ) {
+        dst_sample = min_audioval;
+      }
+      dst[1] = dst_sample&0xFF;
+      dst_sample >>= 8;
+      dst[0] = dst_sample&0xFF;
+      dst += 2;
+    }
   }
 }
 

-----------------------------------------------------------------------

Summary of changes:
 libsound/sound_handler.cpp |   67 ++++++++++++++++++++++++++++++++-----------
 1 files changed, 50 insertions(+), 17 deletions(-)


hooks/post-receive
-- 
Gnash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]