diff --git a/src/recorder.cpp b/src/recorder.cpp index fc492726319defab4188fc8bf2f99dd76b983fcd..bae6592592f839feb6547b1d55eb3af62ab1e267 100644 --- a/src/recorder.cpp +++ b/src/recorder.cpp @@ -175,19 +175,20 @@ void JasonRecorder::get_samples(std::vector<std::uint8_t> &samples, bool planar, if (buffer[0] != FRAME_START); // invalid message else if ((((std::uint16_t) buffer[1] << 8 )|(buffer[2])) == DATA_ID) { // find the beginning and length of the samples in the buffer - size_t num_samples = (received - 6) /this->depth; + size_t start = this->addtional_data_size + 6; + size_t num_samples = (received - start) /this->depth; num_samples = (num_samples / num_channels) * num_channels * this->depth; // copy data to provided vector if (planar || (num_channels == 1)) { // copy out directly samples.resize(0); samples.reserve(num_samples); - samples.insert(samples.end(), &buffer[6], &buffer[6] + num_samples); + samples.insert(samples.end(), &buffer[start], &buffer[start] + num_samples); } else { // convert from blocked channels to interleaved channels samples.resize(num_samples); - JasonRecorder::interleave_channels(&buffer[6], + JasonRecorder::interleave_channels(&buffer[start], samples.data(), num_samples, this->num_channels, this->depth); } diff --git a/src/recorder.h b/src/recorder.h index b29f3d1dae30d605eb431e5639c927629b54c05c..a1654aa884430fac08cb8f82871fe1aeb7b4238f 100644 --- a/src/recorder.h +++ b/src/recorder.h @@ -65,6 +65,7 @@ private: size_t receive_message(uint8_t *buffer, size_t max_wait = 0); // device state, as far as known + size_t addtional_data_size = 1024; std::uint8_t num_channels = 0; std::uint8_t depth = 0; std::uint8_t num_filter = 0;