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.
This commit is contained in:
Max Kellermann 2009-01-07 18:03:53 +01:00
parent 9cb76856c0
commit e8c323ed7e
2 changed files with 16 additions and 14 deletions

View File

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

View File

@ -22,6 +22,8 @@
#include "pcm_resample.h"
#include "pcm_dither.h"
#include <glib.h>
#include <stdint.h>
#include <stddef.h>
@ -41,6 +43,20 @@ struct pcm_convert_state {
int error;
};
/**
* 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%).