summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimo Wischer <twischer@de.adit-jv.com>2018-11-20 17:02:28 +0100
committerFilipe Coelho <falktx@falktx.com>2019-01-17 00:56:39 +0100
commitbb99e09b99ab2c71f9a91ca0fb8cbb996df5dbc6 (patch)
treea1da64c1bde34c97487d4e19d2ef9697c61ae695
parentb4ea23df6a16180a3d686cefffe7dd91fcbc9a27 (diff)
downloadjack2-bb99e09b99ab2c71f9a91ca0fb8cbb996df5dbc6.tar.gz
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 <twischer@de.adit-jv.com>
-rw-r--r--common/memops.c10
-rw-r--r--common/memops.h2
2 files changed, 12 insertions, 0 deletions
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);