X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdata%2Fanalogsnapshot.cpp;h=1658a04c3bfe365138b5ba21f064702e3719e0f7;hp=2bcb99f3e978c47903d22d58b8a54482eb227b4a;hb=d37583678256450d7eb646213d0b9e170a427933;hpb=ed773982d53396e94266288a8fcd87846706f1e4;ds=sidebyside diff --git a/pv/data/analogsnapshot.cpp b/pv/data/analogsnapshot.cpp index 2bcb99f3..1658a04c 100644 --- a/pv/data/analogsnapshot.cpp +++ b/pv/data/analogsnapshot.cpp @@ -49,9 +49,21 @@ void AnalogSnapshot::append_payload( append_data(analog.data, analog.num_samples); } -const float* AnalogSnapshot::get_samples() const +const float* AnalogSnapshot::get_samples( + int64_t start_sample, int64_t end_sample) const { - return (const float*)_data; + assert(start_sample >= 0); + assert(start_sample < (int64_t)_sample_count); + assert(end_sample >= 0); + assert(end_sample < (int64_t)_sample_count); + assert(start_sample <= end_sample); + + lock_guard lock(_mutex); + + float *const data = new float[end_sample - start_sample]; + memcpy(data, (float*)_data + start_sample, sizeof(float) * + (end_sample - start_sample)); + return data; } } // namespace data