Commit e8c323ed authored by Max Kellermann's avatar Max Kellermann

pcm_utils: export pcm_range()

We are going to split the pcm_utils.c library, and pcm_range() will be useful for several sub libraries.
parent 9cb76856
......@@ -41,20 +41,6 @@ pcm_dither(void)
return (r & 511) - ((r >> 9) & 511);
}
/**
* Check if the value is within the range of the provided bit size,
* and caps it if necessary.
*/
static int32_t
pcm_range(int32_t sample, unsigned bits)
{
if (G_UNLIKELY(sample < (-1 << (bits - 1))))
return -1 << (bits - 1);
if (G_UNLIKELY(sample >= (1 << (bits - 1))))
return (1 << (bits - 1)) - 1;
return sample;
}
static void
pcm_volume_change_8(int8_t *buffer, unsigned num_samples, int volume)
{
......
......@@ -22,6 +22,8 @@
#include "pcm_resample.h"
#include "pcm_dither.h"
#include <glib.h>
#include <stdint.h>
#include <stddef.h>
......@@ -42,6 +44,20 @@ struct pcm_convert_state {
};
/**
* Check if the value is within the range of the provided bit size,
* and caps it if necessary.
*/
static inline int32_t
pcm_range(int32_t sample, unsigned bits)
{
if (G_UNLIKELY(sample < (-1 << (bits - 1))))
return -1 << (bits - 1);
if (G_UNLIKELY(sample >= (1 << (bits - 1))))
return (1 << (bits - 1)) - 1;
return sample;
}
/**
* Converts a float value (0.0 = silence, 1.0 = 100% volume) to an
* integer volume value (1000 = 100%).
*/
......
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