diff options
| -rw-r--r-- | src/lib/audio_mapping.cc | 20 | ||||
| -rw-r--r-- | src/lib/audio_mapping.h | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/lib/audio_mapping.cc b/src/lib/audio_mapping.cc index b0191f6fe..ea7e64447 100644 --- a/src/lib/audio_mapping.cc +++ b/src/lib/audio_mapping.cc @@ -285,3 +285,23 @@ AudioMapping::unmap_all () } } } + + +bool +AudioMapping::equals (AudioMapping const& other, float epsilon) const +{ + if (_input_channels != other._input_channels || _output_channels != other._output_channels) { + return false; + } + + for (auto i = 0; i < _input_channels; ++i) { + for (auto j = 0; j < _output_channels; ++j) { + if (fabs(_gain[i][j] - other._gain[i][j]) > epsilon) { + return false; + } + } + } + + return true; +} + diff --git a/src/lib/audio_mapping.h b/src/lib/audio_mapping.h index 4ef5aedb1..b5f1b872e 100644 --- a/src/lib/audio_mapping.h +++ b/src/lib/audio_mapping.h @@ -76,6 +76,8 @@ public: std::list<int> mapped_output_channels () const; void unmap_all (); + bool equals (AudioMapping const& other, float epsilon) const; + private: void setup (int input_channels, int output_channels); |
