fix: a loaded recording is filtered into its buffer, not truncated
The loader pushed one slot per file row while the plan decimated by eight, so a 10 M-row file overran the ring and only its last 4.19 s survived -- a 20 s recording that read as a 4 s one. Each group of `time_stride` rows is now averaged into one slot at the group's mean stamp, as the packet path already does, and the load line reports rows and decimation so a filtered file cannot be mistaken for a truncated one. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
50a1ddca62
commit
345145c52b
7 files changed
+104
-11
No files matched your search
@@ -58,7 +58,14 @@ class WaveformReader {
|
||||
/// What a load put into the model, for the log and the status line.
|
||||
struct WaveformLoadReport {
|
||||
std::size_t signals = 0;
|
||||
/// Slots actually stored, which is the file's row count divided by `decimation`.
|
||||
std::size_t samples = 0;
|
||||
/// Records the file held, and the group size each stored slot is the mean of. They differ when the
|
||||
/// recording does not fit the buffer at its own rate: `samples * decimation == rows` (up to the
|
||||
/// last, partial group), and a `decimation` above 1 is the only honest way to read a `samples`
|
||||
/// below `rows`.
|
||||
std::size_t rows = 0;
|
||||
std::uint64_t decimation = 1;
|
||||
double span_s = 0.0;
|
||||
double rate_hz = 0.0;
|
||||
double first_time = 0.0;
|
||||
|
||||
Reference in new issue
Block a user