namespace pv {
namespace data {
+const uint64_t Segment::MaxChunkSize = 10*1024*1024; /* 10MiB */
+
Segment::Segment(uint64_t samplerate, unsigned int unit_size) :
sample_count_(0),
start_time_(0),
return unit_size_;
}
+void Segment::free_unused_memory()
+{
+ lock_guard<recursive_mutex> lock(mutex_);
+
+ // No more data will come in, so re-create the last chunk accordingly
+ uint8_t* resized_chunk = new uint8_t[used_samples_ * unit_size_];
+ memcpy(resized_chunk, current_chunk_, used_samples_ * unit_size_);
+
+ delete[] current_chunk_;
+ current_chunk_ = resized_chunk;
+
+ data_chunks_.pop_back();
+ data_chunks_.push_back(resized_chunk);
+}
+
void Segment::append_single_sample(void *data)
{
lock_guard<recursive_mutex> lock(mutex_);