From df9a665994a90c69f1a7eff708d8d9eaff3c8f42 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 19 Jan 2017 11:57:01 +0100 Subject: [PATCH] pcm/Traits: add "SILENCE" attribute --- src/pcm/Silence.cxx | 3 ++- src/pcm/Traits.hxx | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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 dest, SampleFormat format) { uint8_t pattern = 0; if (format == SampleFormat::DSD) - pattern = 0x69; + pattern = SampleTraits::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 { * 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 { 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 { 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 { 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 { 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 { typedef const value_type *const_pointer_type; static constexpr size_t SAMPLE_SIZE = sizeof(value_type); + + static constexpr value_type SILENCE = 0x69; }; #endif