LCOV - code coverage report
Current view: top level - IO/libsndfile - InSndFileFilter.cpp (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 18 18 100.0 %
Date: 2021-02-18 20:07:22 Functions: 7 10 70.0 %

          Line data    Source code
       1             : /**
       2             :  * \file InSndFileFilter.cpp
       3             :  */
       4             : 
       5             : #include "InSndFileFilter.h"
       6             : 
       7             : #include <sndfile.hh>
       8             : 
       9             : namespace ATK
      10             : {
      11             :   template<typename DataType>
      12           6 :   InSndFileFilter<DataType>::InSndFileFilter(const std::string& filename)
      13           6 :   :TypedBaseFilter<DataType>(0, 0)
      14             :   {
      15           6 :     stream = std::make_unique<SndfileHandle>(filename.c_str());
      16           6 :     set_output_sampling_rate(stream->samplerate());
      17           6 :     set_nb_output_ports(stream->channels());
      18           6 :     stream->command(SFC_SET_SCALE_FLOAT_INT_READ, NULL, 1);
      19           6 :   }
      20             : 
      21             :   template<typename DataType>
      22           6 :   InSndFileFilter<DataType>::~InSndFileFilter()
      23             :   {
      24           6 :   }
      25             : 
      26             :   template<typename DataType>
      27           1 :   int64_t InSndFileFilter<DataType>::get_frames() const
      28             :   {
      29           1 :     return stream->frames();
      30             :   }
      31             : 
      32             :   template<typename DataType>
      33           6 :   void InSndFileFilter<DataType>::process_impl(gsl::index size) const
      34             :   {
      35          12 :     std::vector<DataType> temp(size * outputs.size());
      36           6 :     stream->read(temp.data(), size * outputs.size());
      37             :     
      38        6150 :     for(gsl::index i = 0; i < size; ++i)
      39             :     {
      40       15360 :       for(gsl::index j = 0; j < outputs.size(); ++j)
      41             :       {
      42        9216 :         outputs[j][i] = temp[j + i * outputs.size()];
      43             :       }
      44             :     }
      45             : 
      46           6 :   }
      47             :   
      48             : #if ATK_ENABLE_INSTANTIATION
      49             :   template class InSndFileFilter<std::int16_t>;
      50             :   template class InSndFileFilter<std::int32_t>;
      51             : #endif
      52             :   template class InSndFileFilter<float>;
      53             :   template class InSndFileFilter<double>;
      54             : }

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