Browse Source

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>
tags/v1.9.13
Timo Wischer Filipe Coelho <falktx@falktx.com> 6 years ago
parent
commit
bb99e09b99
2 changed files with 12 additions and 0 deletions
  1. +10
    -0
      common/memops.c
  2. +2
    -0
      common/memops.h

+ 10
- 0
common/memops.c View File

@@ -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)
{


+ 2
- 0
common/memops.h View File

@@ -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);


Loading…
Cancel
Save