Skip to content

Commit af7262b

Browse files
committed
Fix timestamp calculation for text events when all streams are hardware-synced
1 parent 1a9ae2b commit af7262b

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

Source/Processors/RecordNode/RecordNode.cpp

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,16 +427,31 @@ void RecordNode::handleBroadcastMessage (const String& msg, const int64 messageS
427427
{
428428
String streamKey = synchronizer.mainStreamKey;
429429

430-
DataStream* mainStream = getDataStream (streamKey);
430+
const DataStream* syncStream = getDataStream (streamKey);
431+
432+
if (syncStream == nullptr)
433+
{
434+
syncStream = getDataStreams().getFirst();
435+
}
431436

432437
int64 offsetMilliseconds = Time::currentTimeMillis() - messageSystemTime;
433438

434-
int64 messageSampleNumber = getFirstSampleNumberForBlock (mainStream->getStreamId())
435-
- int64 (offsetMilliseconds * mainStream->getSampleRate() / 1000.0f);
439+
int64 messageSampleNumber = getFirstSampleNumberForBlock (syncStream->getStreamId())
440+
- int64 (offsetMilliseconds * syncStream->getSampleRate() / 1000.0f);
436441

437442
TextEventPtr event = TextEvent::createTextEvent (getMessageChannel(), messageSampleNumber, msg);
438443

439-
double ts = synchronizer.convertSampleNumberToTimestamp (synchronizer.mainStreamKey, messageSampleNumber);
444+
double ts = -1.0;
445+
446+
if (synchronizer.mainStreamKey.isEmpty())
447+
{
448+
ts = getFirstTimestampForBlock (syncStream->getStreamId())
449+
+ (messageSampleNumber - getFirstSampleNumberForBlock (syncStream->getStreamId())) / syncStream->getSampleRate();
450+
}
451+
else
452+
{
453+
ts = synchronizer.convertSampleNumberToTimestamp (synchronizer.mainStreamKey, messageSampleNumber);
454+
}
440455

441456
event->setTimestampInSeconds (ts);
442457

0 commit comments

Comments
 (0)