From 6e5cbf155917ebac0b34f87e69f3e0d9666b8eb7 Mon Sep 17 00:00:00 2001 From: Lior Banai Date: Sat, 13 Aug 2022 11:11:08 +0300 Subject: [PATCH] fix timestamps --- EDF/Reader.cs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/EDF/Reader.cs b/EDF/Reader.cs index 57c48f1..005a582 100644 --- a/EDF/Reader.cs +++ b/EDF/Reader.cs @@ -109,14 +109,14 @@ public void ReadSignal(EDFHeader header, EDFSignal signal) // Read that signal samples if (i == signal.Index) { - ReadNextSignalSamples(signal.Samples, signal.Timestamps, signal.NumberOfSamplesInDataRecord.Value, ref current, interval); + ReadNextSignalSamples(signal.Samples, signal.Timestamps, signal.NumberOfSamplesInDataRecord.Value, current); } else { // Just skip it SkipSignalSamples(header.NumberOfSamplesPerRecord.Value[i]); - current += interval; } + current += interval; } } } @@ -132,13 +132,15 @@ public EDFSignal[] ReadSignals(EDFHeader header) // For each record for (int j = 0; j < header.NumberOfDataRecords.Value; j++) { + var currentPerRecord = (current + j * header.RecordDurationInSeconds.Value * 1000); // For each signal for (int i = 0; i < signals.Length; i++) { var interval = 1000 / signals[i].FrequencyInHZ; // Read that signal samples - ReadNextSignalSamples(signals[i].Samples, signals[i].Timestamps, signals[i].NumberOfSamplesInDataRecord.Value, ref current, interval); + ReadNextSignalSamples(signals[i].Samples, signals[i].Timestamps, signals[i].NumberOfSamplesInDataRecord.Value, (long)currentPerRecord); + currentPerRecord += interval; } } @@ -149,7 +151,7 @@ public EDFSignal[] ReadSignals(EDFHeader header) /// Read n next samples /// [MethodImpl(MethodImplOptions.AggressiveInlining)] - private void ReadNextSignalSamples(ICollection samples, List timestamps, int sampleCount, ref long currentTimestamp, double timestampInterval) + private void ReadNextSignalSamples(ICollection samples, List timestamps, int sampleCount, long currentTimestamp) { // Single file read operation per record byte[] intBytes = ReadBytes(sizeof(short) * sampleCount); @@ -159,7 +161,6 @@ private void ReadNextSignalSamples(ICollection samples, List timest short intVal = BitConverter.ToInt16(intBytes, i * sizeof(short)); samples.Add(intVal); timestamps.Add(currentTimestamp); - currentTimestamp += (long)timestampInterval; } }