From bb99e09b99ab2c71f9a91ca0fb8cbb996df5dbc6 Mon Sep 17 00:00:00 2001 From: Timo Wischer Date: Tue, 20 Nov 2018 17:02:28 +0100 Subject: [PATCH] memops: Provide function for float to S32 conversion Due to inlining and enabled optimization the compiler will not create machine instructions for the if-clauses and left shift for sample_move_dS_s32s() and sample_move_dS_s32(). Signed-off-by: Timo Wischer --- common/memops.c | 10 ++++++++++ common/memops.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/common/memops.c b/common/memops.c index 266b7b8f..5648a96b 100644 --- a/common/memops.c +++ b/common/memops.c @@ -489,6 +489,11 @@ void sample_move_dS_s32u24s (jack_default_audio_sample_t *dst, char *src, unsign sample_move_dS_s32s_signext (dst, src, nsamples, src_skip, true); } +void sample_move_dS_s32s (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip) +{ + sample_move_dS_s32s_signext (dst, src, nsamples, src_skip, false); +} + static inline void sample_move_dS_s32_signext (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip, const bool do_signext) { @@ -574,6 +579,11 @@ void sample_move_dS_s32u24 (jack_default_audio_sample_t *dst, char *src, unsigne sample_move_dS_s32_signext (dst, src, nsamples, src_skip, true); } +void sample_move_dS_s32 (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip) +{ + sample_move_dS_s32_signext (dst, src, nsamples, src_skip, false); +} + void sample_move_d24_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state) { diff --git a/common/memops.h b/common/memops.h index 93a619af..93ce457d 100644 --- a/common/memops.h +++ b/common/memops.h @@ -81,6 +81,8 @@ void sample_move_dither_tri_d16_sS (char *dst, jack_default_audio_sample_ void sample_move_dither_shaped_d16_sSs (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state); void sample_move_dither_shaped_d16_sS (char *dst, jack_default_audio_sample_t *src, unsigned long nsamples, unsigned long dst_skip, dither_state_t *state); +void sample_move_dS_s32s (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); +void sample_move_dS_s32 (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); void sample_move_dS_s32u24s (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); void sample_move_dS_s32u24 (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip); void sample_move_dS_s24s (jack_default_audio_sample_t *dst, char *src, unsigned long nsamples, unsigned long src_skip);