mirror of
https://github.com/cjfranko/NTP-Timeturner.git
synced 2025-11-08 18:32:02 +00:00
fix: correct timecode drift at non-25fps frame rates
Co-authored-by: aider (deepseek/deepseek-reasoner) <aider@aider.chat>
This commit is contained in:
parent
ee3bbbe29f
commit
60d57f74d8
2 changed files with 12 additions and 11 deletions
|
|
@ -101,22 +101,22 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
let s = parseInt(tcParts[2], 10);
|
||||
let f = parseInt(tcParts[3], 10);
|
||||
|
||||
const frameRateInt = Math.round(frameRate);
|
||||
const msPerFrame = 1000.0 / frameRate;
|
||||
const elapsedFrames = Math.floor(elapsedMs / msPerFrame);
|
||||
|
||||
f += elapsedFrames;
|
||||
// Compute total seconds including fractional part
|
||||
let totalSeconds = h * 3600 + m * 60 + s + f / frameRateInt;
|
||||
totalSeconds += elapsedMs / 1000.0;
|
||||
|
||||
const frameRateInt = Math.round(frameRate);
|
||||
|
||||
s += Math.floor(f / frameRateInt);
|
||||
f %= frameRateInt;
|
||||
|
||||
m += Math.floor(s / 60);
|
||||
s %= 60;
|
||||
|
||||
h += Math.floor(m / 60);
|
||||
m %= 60;
|
||||
// Convert back to components
|
||||
let newSeconds = Math.floor(totalSeconds);
|
||||
f = Math.round((totalSeconds - newSeconds) * frameRateInt) % frameRateInt;
|
||||
|
||||
h = Math.floor(newSeconds / 3600);
|
||||
newSeconds %= 3600;
|
||||
m = Math.floor(newSeconds / 60);
|
||||
s = Math.floor(newSeconds % 60);
|
||||
h %= 24;
|
||||
|
||||
statusElements.ltcTimecode.textContent =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue