diff options
Diffstat (limited to 'intern/audaspace/FX/AUD_RectifyReader.cpp')
-rw-r--r-- | intern/audaspace/FX/AUD_RectifyReader.cpp | 37 |
1 files changed, 5 insertions, 32 deletions
diff --git a/intern/audaspace/FX/AUD_RectifyReader.cpp b/intern/audaspace/FX/AUD_RectifyReader.cpp index 9839aefa838..5d3ce80e811 100644 --- a/intern/audaspace/FX/AUD_RectifyReader.cpp +++ b/intern/audaspace/FX/AUD_RectifyReader.cpp @@ -26,39 +26,11 @@ #include "AUD_RectifyReader.h" #include "AUD_Buffer.h" -#include <cstring> +#include <cmath> AUD_RectifyReader::AUD_RectifyReader(AUD_IReader* reader) : AUD_EffectReader(reader) { - int bigendian = 1; - bigendian = (((char*)&bigendian)[0]) ? 0: 1; // 1 if Big Endian - - switch(m_reader->getSpecs().format) - { - case AUD_FORMAT_S16: - m_rectify = AUD_rectify<int16_t>; - break; - case AUD_FORMAT_S32: - m_rectify = AUD_rectify<int32_t>; - break; - case AUD_FORMAT_FLOAT32: - m_rectify = AUD_rectify<float>; - break; - case AUD_FORMAT_FLOAT64: - m_rectify = AUD_rectify<double>; - break; - case AUD_FORMAT_U8: - m_rectify = AUD_rectify_u8; - break; - case AUD_FORMAT_S24: - m_rectify = bigendian ? AUD_rectify_s24_be : AUD_rectify_s24_le; - break; - default: - delete m_reader; - AUD_THROW(AUD_ERROR_READER); - } - m_buffer = new AUD_Buffer(); AUD_NEW("buffer") } @@ -73,10 +45,11 @@ void AUD_RectifyReader::read(int & length, sample_t* & buffer) AUD_Specs specs = m_reader->getSpecs(); m_reader->read(length, buf); - if(m_buffer->getSize() < length*AUD_SAMPLE_SIZE(specs)) - m_buffer->resize(length*AUD_SAMPLE_SIZE(specs)); + if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs)) + m_buffer->resize(length * AUD_SAMPLE_SIZE(specs)); buffer = m_buffer->getBuffer(); - m_rectify(buffer, buf, length * specs.channels); + for(int i = 0; i < length * specs.channels; i++) + buffer[i] = fabs(buf[i]); } |