#include <thread>
#include <vector>
+#include <QObject>
+
using std::recursive_mutex;
using std::vector;
uint8_t* value;
} SegmentRawDataIterator;
-class Segment
+class Segment : public QObject
{
+ Q_OBJECT
+
private:
static const uint64_t MaxChunkSize;
public:
- Segment(uint64_t samplerate, unsigned int unit_size);
+ Segment(uint32_t segment_id, uint64_t samplerate, unsigned int unit_size);
virtual ~Segment();
unsigned int unit_size() const;
+ uint32_t segment_id() const;
+
+ void set_complete();
+ bool is_complete() const;
+
void free_unused_memory();
protected:
void append_single_sample(void *data);
void append_samples(void *data, uint64_t samples);
- uint8_t* get_raw_samples(uint64_t start, uint64_t count) const;
+ void get_raw_samples(uint64_t start, uint64_t count, uint8_t *dest) const;
SegmentRawDataIterator* begin_raw_sample_iteration(uint64_t start);
void continue_raw_sample_iteration(SegmentRawDataIterator* it, uint64_t increase);
void end_raw_sample_iteration(SegmentRawDataIterator* it);
+ uint32_t segment_id_;
mutable recursive_mutex mutex_;
vector<uint8_t*> data_chunks_;
uint8_t* current_chunk_;
unsigned int unit_size_;
int iterator_count_;
bool mem_optimization_requested_;
+ bool is_complete_;
friend struct SegmentTest::SmallSize8Single;
friend struct SegmentTest::MediumSize8Single;