Skip to content

Commit

Permalink
fix timestamps
Browse files Browse the repository at this point in the history
  • Loading branch information
LiorBanai committed Aug 13, 2022
1 parent 257cfe2 commit 6e5cbf1
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions EDF/Reader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
}
Expand All @@ -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;
}
}

Expand All @@ -149,7 +151,7 @@ public EDFSignal[] ReadSignals(EDFHeader header)
/// Read n next samples
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private void ReadNextSignalSamples(ICollection<short> samples, List<long> timestamps, int sampleCount, ref long currentTimestamp, double timestampInterval)
private void ReadNextSignalSamples(ICollection<short> samples, List<long> timestamps, int sampleCount, long currentTimestamp)
{
// Single file read operation per record
byte[] intBytes = ReadBytes(sizeof(short) * sampleCount);
Expand All @@ -159,7 +161,6 @@ private void ReadNextSignalSamples(ICollection<short> samples, List<long> timest
short intVal = BitConverter.ToInt16(intBytes, i * sizeof(short));
samples.Add(intVal);
timestamps.Add(currentTimestamp);
currentTimestamp += (long)timestampInterval;
}
}

Expand Down

0 comments on commit 6e5cbf1

Please sign in to comment.