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:
parent
9cb76856c0
commit
e8c323ed7e
@ -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 @@
|
|||||||
#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>
|
||||||
|
|
||||||
@ -41,6 +43,20 @@ struct pcm_convert_state {
|
|||||||
int error;
|
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
|
* Converts a float value (0.0 = silence, 1.0 = 100% volume) to an
|
||||||
* integer volume value (1000 = 100%).
|
* integer volume value (1000 = 100%).
|
||||||
|
Loading…
Reference in New Issue
Block a user