diff options
| -rw-r--r-- | src/TimeInterleaver.cpp | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/src/TimeInterleaver.cpp b/src/TimeInterleaver.cpp index 7f44caf..9565eca 100644 --- a/src/TimeInterleaver.cpp +++ b/src/TimeInterleaver.cpp @@ -37,8 +37,7 @@ TimeInterleaver::TimeInterleaver(size_t framesize)          throw std::invalid_argument("framesize must be 16 bits multiple");      }      for (int i = 0; i < 16; ++i) { -        std::vector<unsigned char> data(framesize, 0); -        d_history.push_back(data); +        d_history.emplace_back(framesize, 0);      }  } @@ -54,11 +53,16 @@ int TimeInterleaver::process(Buffer* const dataIn, Buffer* dataOut)      PDEBUG("TimeInterleaver::process(dataIn: %p, dataOut: %p)\n",              dataIn, dataOut); +    if (dataIn->getLength() != d_framesize) { +        throw std::invalid_argument("Interleaver buffer input size " + +                std::to_string(dataIn->getLength()) + " expected " + +                std::to_string(d_framesize)); +    } +      dataOut->setLength(dataIn->getLength());      const unsigned char* in = reinterpret_cast<const unsigned char*>(dataIn->getData());      unsigned char* out = reinterpret_cast<unsigned char*>(dataOut->getData()); -          for (size_t i = 0; i < dataOut->getLength();) {          d_history.push_front(d_history.back());          d_history.pop_back(); @@ -87,6 +91,6 @@ int TimeInterleaver::process(Buffer* const dataIn, Buffer* dataOut)              ++j;          }      } -     +      return dataOut->getLength();  }  | 
