pcm/Traits: add MIN and MAX

Move from PcmClamp().
This commit is contained in:
Max Kellermann
2013-12-22 18:52:54 +01:00
parent 316a25dead
commit b43ec3d6f0
2 changed files with 28 additions and 9 deletions

View File

@@ -74,6 +74,16 @@ struct SampleTraits<SampleFormat::S8> {
* not exist if this is not an integer sample format.
*/
static constexpr unsigned BITS = sizeof(value_type) * 8;
/**
* The minimum sample value.
*/
static constexpr value_type MIN = -(sum_type(1) << (BITS - 1));
/**
* The maximum sample value.
*/
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
};
template<>
@@ -87,6 +97,9 @@ struct SampleTraits<SampleFormat::S16> {
static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
static constexpr unsigned BITS = sizeof(value_type) * 8;
static constexpr value_type MIN = -(sum_type(1) << (BITS - 1));
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
};
template<>
@@ -100,6 +113,9 @@ struct SampleTraits<SampleFormat::S32> {
static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
static constexpr unsigned BITS = sizeof(value_type) * 8;
static constexpr value_type MIN = -(sum_type(1) << (BITS - 1));
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
};
template<>
@@ -113,6 +129,9 @@ struct SampleTraits<SampleFormat::S24_P32> {
static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
static constexpr unsigned BITS = 24;
static constexpr value_type MIN = -(sum_type(1) << (BITS - 1));
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
};
template<>
@@ -125,6 +144,9 @@ struct SampleTraits<SampleFormat::FLOAT> {
typedef float long_type;
static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
static constexpr value_type MIN = -1;
static constexpr value_type MAX = 1;
};
#endif