From 9fd41b0312636409160cbd19bcb98805bd577624 Mon Sep 17 00:00:00 2001 From: JohannesItten Date: Fri, 3 Jul 2026 10:06:43 +0300 Subject: [PATCH] fix: samples_per_frame must multiply fps_den for fractional framerates sample_rate / fps_num gave 48000/30000 = 1 for 29.97 fps, producing silence. Correct formula is sample_rate * fps_den / fps_num, matching the calculation already used in testpattern. Co-Authored-By: Claude Sonnet 4.6 --- nodes/ndiout/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nodes/ndiout/main.cpp b/nodes/ndiout/main.cpp index b46b43e..3c5e1ad 100644 --- a/nodes/ndiout/main.cpp +++ b/nodes/ndiout/main.cpp @@ -72,7 +72,7 @@ class NDIOutNode : public dmf::NodeBase { const auto audio_flow_id = audio_flow_info.at("id").get(); sample_rate = audio_flow_info.value("sample_rate", 48000); channels = audio_flow_info.value("channels", 2); - samples_per_frame = sample_rate / fps_num; + samples_per_frame = sample_rate * fps_den / fps_num; log("audio flow=%s %d Hz %dch %d samples/frame", audio_flow_id.c_str(), sample_rate, channels, samples_per_frame);