Commit bfef0fbf authored by Max Kellermann's avatar Max Kellermann

pcm_volume: implement float samples

parent 545685bc
......@@ -132,6 +132,16 @@ pcm_volume_change_32(int32_t *buffer, const int32_t *end, int volume)
}
}
static void
pcm_volume_change_float(float *buffer, const float *end, float volume)
{
while (buffer < end) {
float sample = *buffer;
sample *= volume;
*buffer++ = sample;
}
}
bool
pcm_volume(void *buffer, size_t length,
enum sample_format format,
......@@ -169,8 +179,9 @@ pcm_volume(void *buffer, size_t length,
return true;
case SAMPLE_FORMAT_FLOAT:
/* XXX */
return false;
pcm_volume_change_float(buffer, end,
pcm_volume_to_float(volume));
return true;
}
/* unreachable */
......
......@@ -43,6 +43,12 @@ pcm_float_to_volume(float volume)
return volume * PCM_VOLUME_1 + 0.5;
}
static inline float
pcm_volume_to_float(int volume)
{
return (float)volume / (float)PCM_VOLUME_1;
}
/**
* Returns the next volume dithering number, between -511 and +511.
* This number is taken from a global PRNG, see pcm_prng().
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment