summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/pcm/Silence.cxx3
-rw-r--r--src/pcm/Traits.hxx11
2 files changed, 13 insertions, 1 deletions
diff --git a/src/pcm/Silence.cxx b/src/pcm/Silence.cxx
index b1883ab61..babcb2408 100644
--- a/src/pcm/Silence.cxx
+++ b/src/pcm/Silence.cxx
@@ -19,6 +19,7 @@
#include "config.h"
#include "Silence.hxx"
+#include "Traits.hxx"
#include "SampleFormat.hxx"
#include "util/WritableBuffer.hxx"
@@ -29,7 +30,7 @@ PcmSilence(WritableBuffer<void> dest, SampleFormat format)
{
uint8_t pattern = 0;
if (format == SampleFormat::DSD)
- pattern = 0x69;
+ pattern = SampleTraits<SampleFormat::DSD>::SILENCE;
memset(dest.data, pattern, dest.size);
}
diff --git a/src/pcm/Traits.hxx b/src/pcm/Traits.hxx
index 6d7bcc6ea..1ed74ffbf 100644
--- a/src/pcm/Traits.hxx
+++ b/src/pcm/Traits.hxx
@@ -85,6 +85,11 @@ struct SampleTraits<SampleFormat::S8> {
* The maximum sample value.
*/
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
+
+ /**
+ * A value which represents "silence".
+ */
+ static constexpr value_type SILENCE = 0;
};
template<>
@@ -101,6 +106,7 @@ struct SampleTraits<SampleFormat::S16> {
static constexpr value_type MIN = -(sum_type(1) << (BITS - 1));
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
+ static constexpr value_type SILENCE = 0;
};
template<>
@@ -117,6 +123,7 @@ struct SampleTraits<SampleFormat::S32> {
static constexpr value_type MIN = -(sum_type(1) << (BITS - 1));
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
+ static constexpr value_type SILENCE = 0;
};
template<>
@@ -133,6 +140,7 @@ struct SampleTraits<SampleFormat::S24_P32> {
static constexpr value_type MIN = -(sum_type(1) << (BITS - 1));
static constexpr value_type MAX = (sum_type(1) << (BITS - 1)) - 1;
+ static constexpr value_type SILENCE = 0;
};
template<>
@@ -148,6 +156,7 @@ struct SampleTraits<SampleFormat::FLOAT> {
static constexpr value_type MIN = -1;
static constexpr value_type MAX = 1;
+ static constexpr value_type SILENCE = 0;
};
template<>
@@ -157,6 +166,8 @@ struct SampleTraits<SampleFormat::DSD> {
typedef const value_type *const_pointer_type;
static constexpr size_t SAMPLE_SIZE = sizeof(value_type);
+
+ static constexpr value_type SILENCE = 0x69;
};
#endif