[Ardour-Dev] Time wraparound because of nframes_t = uint32_t
Hans Baier
hansfbaier at googlemail.com
Tue Jan 27 06:29:29 PST 2009
>> What kind of bugs are you referring to?
>>
> Hi Hans - They're mostly to do with high timecode values. I work in an area
> of the industry known as "post production" where pretty much every project
> starts at a high timecode value (typically, 10 hours). Here are two bugs
> that I first reported on Mantis in June 07 and Sept 07 respectively:-
>
> http://tracker.ardour.org/view.php?id=2282
>
> http://tracker.ardour.org/view.php?id=2384
>
> One of the bugs has been acknowledged but never fixed. The other hasn't
> even been acknowledged - even though I've made several offers to fix it
> myself.
This is a fundamental problem in Ardour: the type of
time measurement (nframes_t is an uint32_t), ie. it is limited
to 32Bit values. Its maximal value is 2^32-1. Divide this by the
samplerate and by 60*60 and you get wraparound at 12,427567378 hours
which matches with your observation.
You could try to change libs/ardour/types.h:60
from
typedef uint32_t nframes_t;
to
typedef uint64_t nframes_t;
and then fix all upcoming compile errors.
(I am referring to the source of 3.0 here).
More information about the Ardour-Dev
mailing list