[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] [SCM] Gnash branch, master, updated. release_0_8_9_final-2241-g675ed65,
Sandro Santilli <=