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) ...@@ -41,20 +41,6 @@ pcm_dither(void)
return (r & 511) - ((r >> 9) & 511); 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 static void
pcm_volume_change_8(int8_t *buffer, unsigned num_samples, int volume) pcm_volume_change_8(int8_t *buffer, unsigned num_samples, int volume)
{ {
......
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
#include "pcm_resample.h" #include "pcm_resample.h"
#include "pcm_dither.h" #include "pcm_dither.h"
#include <glib.h>
#include <stdint.h> #include <stdint.h>
#include <stddef.h> #include <stddef.h>
...@@ -42,6 +44,20 @@ struct pcm_convert_state { ...@@ -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 * Converts a float value (0.0 = silence, 1.0 = 100% volume) to an
* integer volume value (1000 = 100%). * 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