diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2011-12-04 18:19:39 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2011-12-04 18:19:39 +0000 |
| commit | a43df152c2adf737208bbeb294a0a13608d3cc43 (patch) | |
| tree | c0534198745141699a08d9471303744948e51138 /apps | |
| parent | 700e360b612766eb2729597be55c43b5b69bbe7f (diff) | |
| download | rockbox-a43df152c2adf737208bbeb294a0a13608d3cc43.zip rockbox-a43df152c2adf737208bbeb294a0a13608d3cc43.tar.gz rockbox-a43df152c2adf737208bbeb294a0a13608d3cc43.tar.bz2 rockbox-a43df152c2adf737208bbeb294a0a13608d3cc43.tar.xz | |
Collect the 16-bit signed range sample clipping routines scattered about, which can be optimized on armv6 and create firmware/export/dsp-util.h (for lack of better place right now).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31142 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/codecs.h | 1 | ||||
| -rw-r--r-- | apps/codecs/libspc/spc_dsp.c | 20 | ||||
| -rw-r--r-- | apps/dsp.c | 15 | ||||
| -rw-r--r-- | apps/pcmbuf.c | 9 | ||||
| -rw-r--r-- | apps/plugin.h | 1 |
5 files changed, 6 insertions, 40 deletions
diff --git a/apps/codecs.h b/apps/codecs.h index 527c59a..f1e2a51 100644 --- a/apps/codecs.h +++ b/apps/codecs.h @@ -43,6 +43,7 @@ #include "pcm_record.h" #endif #include "dsp.h" +#include "dsp-util.h" #endif #include "gcc_extensions.h" diff --git a/apps/codecs/libspc/spc_dsp.c b/apps/codecs/libspc/spc_dsp.c index 28e0542..6350c4c 100644 --- a/apps/codecs/libspc/spc_dsp.c +++ b/apps/codecs/libspc/spc_dsp.c @@ -57,25 +57,7 @@ void DSP_write( struct Spc_Dsp* this, int i, int data ) } } -#if ARM_ARCH >= 6 -/* if ( n < -32768 ) out = -32768; */ -/* if ( n > 32767 ) out = 32767; */ -#define CLAMP16( n ) \ - ({ \ - asm ("ssat %0, #16, %1" \ - : "=r" ( n ) : "r"( n ) ); \ - n; \ - }) -#else -/* if ( n < -32768 ) out = -32768; */ -/* if ( n > 32767 ) out = 32767; */ -#define CLAMP16( n ) \ -({ \ - if ( (int16_t) n != n ) \ - n = 0x7FFF ^ (n >> 31); \ - n; \ -}) -#endif +#define CLAMP16( n ) clip_sample_16( n ) #if SPC_BRRCACHE static void decode_brr( struct Spc_Dsp* this, unsigned start_addr, @@ -19,15 +19,12 @@ * ****************************************************************************/ #include "config.h" - -#include <stdbool.h> -#include <inttypes.h> -#include <string.h> +#include "system.h" #include <sound.h> #include "dsp.h" +#include "dsp-util.h" #include "eq.h" #include "kernel.h" -#include "system.h" #include "settings.h" #include "replaygain.h" #include "tdspeed.h" @@ -261,14 +258,6 @@ static int32_t release_gain IBSS_ATTR; /* S7.24 format */ static void compressor_process(int count, int32_t *buf[]); -/* Clip sample to signed 16 bit range */ -static inline int32_t clip_sample_16(int32_t sample) -{ - if ((int16_t)sample != sample) - sample = 0x7fff ^ (sample >> 31); - return sample; -} - #ifdef HAVE_PITCHSCREEN int32_t sound_get_pitch(void) { diff --git a/apps/pcmbuf.c b/apps/pcmbuf.c index 8135a30..32e1157 100644 --- a/apps/pcmbuf.c +++ b/apps/pcmbuf.c @@ -27,6 +27,7 @@ #include "pcm.h" #include "pcm_mixer.h" #include "pcmbuf.h" +#include "dsp-util.h" #include "playback.h" #include "codec_thread.h" @@ -828,14 +829,6 @@ static size_t crossfade_find_buftail(size_t buffer_rem, size_t buffer_need) return buffer_rem; } -/* Clip sample to signed 16 bit range */ -static FORCE_INLINE int32_t clip_sample_16(int32_t sample) -{ - if ((int16_t)sample != sample) - sample = 0x7fff ^ (sample >> 31); - return sample; -} - /* Returns the number of bytes _NOT_ mixed/faded */ static int crossfade_mix_fade(int factor, size_t size, void *buf, size_t *out_index, unsigned long elapsed, off_t offset) diff --git a/apps/plugin.h b/apps/plugin.h index 0ee37bb..e2b7fe7 100644 --- a/apps/plugin.h +++ b/apps/plugin.h @@ -66,6 +66,7 @@ void* plugin_get_buffer(size_t *buffer_size); #include "filefuncs.h" #if (CONFIG_CODEC == SWCODEC) #include "pcm_mixer.h" +#include "dsp-util.h" #include "dsp.h" #include "codecs.h" #include "playback.h" |