LCOV - code coverage report
Current view: top level - Tools - DryWetFilter.hxx (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 19 19 100.0 %
Date: 2021-02-18 20:07:22 Functions: 4 4 100.0 %

          Line data    Source code
       1             : /**
       2             :  * \file DryWetFilter.hxx
       3             :  */
       4             : 
       5             : #include "DryWetFilter.h"
       6             : #include <ATK/Core/TypeTraits.h>
       7             : 
       8             : #include <cstdint>
       9             : 
      10             : namespace ATK
      11             : {
      12             :   template<typename DataType_>
      13           6 :   DryWetFilter<DataType_>::DryWetFilter(gsl::index nb_channels)
      14           6 :   :Parent(2 * nb_channels, nb_channels)
      15             :   {
      16           6 :   }
      17             :   
      18             :   template<typename DataType_>
      19           5 :   void DryWetFilter<DataType_>::set_dry(double dry)
      20             :   {
      21           5 :     if(dry < 0 || dry > 1)
      22             :     {
      23           2 :       throw std::out_of_range("Dry/wet must be a value between 0 and 1");
      24             :     }
      25             :    
      26           3 :     this->dry = dry;
      27           3 :   }
      28             : 
      29             :   template<typename DataType_>
      30           1 :   double DryWetFilter<DataType_>::get_dry() const
      31             :   {
      32           1 :     return dry;
      33             :   }
      34             : 
      35             :   template<typename DataType_>
      36           3 :   void DryWetFilter<DataType_>::process_impl(gsl::index size) const
      37             :   {
      38           3 :     assert(nb_input_ports == 2 * nb_output_ports);
      39             :     
      40           6 :     for(gsl::index channel = 0; channel < nb_output_ports; ++channel)
      41             :     {
      42           3 :       const DataType* ATK_RESTRICT input0 = converted_inputs[2 * channel];
      43           3 :       const DataType* ATK_RESTRICT input1 = converted_inputs[2 * channel + 1];
      44           3 :       DataType* ATK_RESTRICT output = outputs[channel];
      45        3075 :       for(gsl::index i = 0; i < size; ++i)
      46             :       {
      47        3072 :         output[i] = static_cast<DataType>(input0[i] * static_cast<typename TypeTraits<DataType>::Scalar>(dry) + input1[i] * static_cast<typename TypeTraits<DataType>::Scalar>(1 - dry));
      48             :       }
      49             :     }
      50           3 :   }
      51             : }

Generated by: LCOV version TK-3.3.0-4-gdba42eea