X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fdata%2Flogicsegment.hpp;h=1f151eeb7a71e2e0f5e931f6ec0f3a7a08d7e0b4;hb=36e62b1700d580adde53c8f4489037f0071fa6a0;hp=8cbc1c5dc050d7aac6c03625908ce0be337eecf9;hpb=65c92359634f672e5f472a5214719dabc7e20883;p=pulseview.git diff --git a/pv/data/logicsegment.hpp b/pv/data/logicsegment.hpp index 8cbc1c5d..1f151eeb 100644 --- a/pv/data/logicsegment.hpp +++ b/pv/data/logicsegment.hpp @@ -22,11 +22,11 @@ #include "segment.hpp" -#include #include #include +using std::enable_shared_from_this; using std::pair; using std::shared_ptr; using std::vector; @@ -48,7 +48,7 @@ namespace data { class Logic; -class LogicSegment : public Segment +class LogicSegment : public Segment, public enable_shared_from_this { Q_OBJECT @@ -107,6 +107,10 @@ private: uint64_t get_unpacked_sample(uint64_t index) const; + template void downsampleTmain(const T*&in, T &acc, T &prev); + template void downsampleT(const uint8_t *in, uint8_t *&out, uint64_t len); + void downsampleGeneric(const uint8_t *in, uint8_t *&out, uint64_t len); + private: uint64_t get_subsample(int level, uint64_t offset) const; @@ -117,6 +121,8 @@ private: struct MipMapLevel mip_map_[ScaleStepCount]; uint64_t last_append_sample_; + uint64_t last_append_accumulator_; + uint64_t last_append_extra_; friend struct LogicSegmentTest::Pow2; friend struct LogicSegmentTest::Basic;