Skip to content

Commit 1635fa7

Browse files
committed
Update RecordNode event and spike timestamp calculation for hardware synchronized streams
1 parent 5365503 commit 1635fa7

1 file changed

Lines changed: 27 additions & 4 deletions

File tree

Source/Processors/RecordNode/RecordNode.cpp

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -800,9 +800,20 @@ void RecordNode::handleTTLEvent (TTLEventPtr event)
800800
if (recordEvents && isRecording)
801801
{
802802
size_t size = event->getChannelInfo()->getDataSize() + event->getChannelInfo()->getTotalEventMetadataSize() + EVENT_BASE_SIZE;
803+
uint16 streamId = event->getStreamId();
804+
805+
double ts = -1.0;
806+
if (synchronizer.streamGeneratesTimestamps (streamKey))
807+
{
808+
ts = getFirstTimestampForBlock (streamId) + (sampleNumber - getFirstSampleNumberForBlock (streamId)) / getDataStream (streamId)->getSampleRate();
809+
}
810+
else
811+
{
812+
ts = synchronizer.convertSampleNumberToTimestamp (streamKey, sampleNumber);
813+
}
803814

804815
HeapBlock<char> buffer (size);
805-
event->setTimestampInSeconds (synchronizer.convertSampleNumberToTimestamp (streamKey, sampleNumber));
816+
event->setTimestampInSeconds (ts);
806817
event->serialize (buffer, size);
807818

808819
eventQueue->addEvent (EventPacket (buffer, int (size)), sampleNumber);
@@ -835,8 +846,20 @@ void RecordNode::handleSpike (SpikePtr spike)
835846
if (recordSpikes && isRecording)
836847
{
837848
String streamKey = getDataStream (spike->getStreamId())->getKey();
838-
spike->setTimestampInSeconds (synchronizer.convertSampleNumberToTimestamp (streamKey,
839-
spike->getSampleNumber()));
849+
uint16 streamId = spike->getStreamId();
850+
int64 sampleNumber = spike->getSampleNumber();
851+
852+
double ts = -1.0;
853+
if (synchronizer.streamGeneratesTimestamps (streamKey))
854+
{
855+
ts = getFirstTimestampForBlock (streamId) + (sampleNumber - getFirstSampleNumberForBlock (streamId)) / getDataStream (streamId)->getSampleRate();
856+
}
857+
else
858+
{
859+
ts = synchronizer.convertSampleNumberToTimestamp (streamKey, sampleNumber);
860+
}
861+
862+
spike->setTimestampInSeconds (ts);
840863
writeSpike (spike, spike->getChannelInfo());
841864
eventMonitor->bufferedSpikes++;
842865
}
@@ -920,7 +943,7 @@ void RecordNode::process (AudioBuffer<float>& buffer)
920943

921944
if (numSamples > 0)
922945
{
923-
if (! stream->generatesTimestamps())
946+
if (! synchronizer.streamGeneratesTimestamps (streamKey))
924947
{
925948
first = synchronizer.convertSampleNumberToTimestamp (streamKey, sampleNumber);
926949
second = synchronizer.convertSampleNumberToTimestamp (streamKey, sampleNumber + 1);

0 commit comments

Comments
 (0)