class AnalogSnapshot : public Snapshot
{
-private:
+public:
struct EnvelopeSample
{
float min;
float max;
};
+ struct EnvelopeSection
+ {
+ uint64_t start;
+ unsigned int scale;
+ uint64_t length;
+ EnvelopeSample *samples;
+ };
+
+private:
struct Envelope
{
uint64_t length;
static const uint64_t EnvelopeDataUnit;
public:
- AnalogSnapshot(const sr_datafeed_analog &analog);
+ AnalogSnapshot(uint64_t expected_num_samples = 0);
virtual ~AnalogSnapshot();
- void append_payload(const sr_datafeed_analog &analog);
+ void append_interleaved_samples(const float *data,
+ size_t sample_count, size_t stride);
const float* get_samples(int64_t start_sample,
int64_t end_sample) const;
+ void get_envelope_section(EnvelopeSection &s,
+ uint64_t start, uint64_t end, float min_length) const;
+
private:
void reallocate_envelope(Envelope &l);