forked from len0rd/rockbox
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
This commit is contained in:
parent
700e360b61
commit
a43df152c2
7 changed files with 58 additions and 47 deletions
|
|
@ -43,6 +43,7 @@
|
|||
#include "pcm_record.h"
|
||||
#endif
|
||||
#include "dsp.h"
|
||||
#include "dsp-util.h"
|
||||
#endif
|
||||
|
||||
#include "gcc_extensions.h"
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
15
apps/dsp.c
15
apps/dsp.c
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue