Re: [Audacity-devel] Zoom Issue
A free multi-track audio editor and recorder
Brought to you by:
aosiniao
From: <Mar...@ao...> - 2007-03-30 01:29:07
|
Yippee! I finally found where the bug is (I think, 'proof' below), and (as suspected) it is an overflow of an int. The problem is with wxScrollBar; I don't know how to fix it, and need some ideas. Let's see if I found it though: The problem is with the horizontal scroll bar. In Project.cpp (about li 1003) we set mViewInfo.sbarTotal which subsequently gets used to set the range of a wxScrollBar, which is an int. >From what I can figure out, mViewInfo.sbarTotal is the total number of pixels it would take to display the waveform, at this zoom level, if they were available (ie you had a very very large monitor, if you zoom in). That is mViewInfo.total(s)*mViewInfo.zoom(px/s) = pixels. However as we zoom in this overflows, causing the problem. mViewInfo.zoom is limited to 6000000px/s, in AudacityProject::Zoom (that's about 136 pixels per sample at CD sampling rates, which seems adequate). The overflow level of an int (here) is 2147483647 and so this give a maximum mViewInfo.total as 2147483647/6000000s = 357.91s before we get a problem at maximum zoom, pretty close to the (experimental) 357.95s that I reported the minimum length the error would occur at a couple of days ago. mViewInfo.total is the length of the audio, in seconds; for you about 7481s (2h04m41s). Assuming you are working a CD sampling rate of 44100 samples/s you should see the error occurring when you zoom in beyond about 6.5s of visible audio. Can you confirm this? TTFN Martyn PS I tried limiting sbarTotal to the max int value but then we can't drag the scrollbar to the end of the waveform, so that's not a very good idea, although it stops the jumping. It would be better for us if wx supported long long for this parameter. In a message dated 29/03/2007 16:12:14 GMT Daylight Time, ud...@xs... writes: Mar...@ao... wrote: > I am rather ignorant with regards anything other than VS8 on Audacity. Are > you compiling the code yourself? I did in the past (to fix other issues or get features early). Current build is a Fedora build. I am on Linux. FC6. > If so, compiling with Unicode and Debug set > will probably give you the assert message (not that it's there any more!). I could give that a try. If that happens, what then? I can read the source to a certain degree, I can change stuff but I do not have enough overview to know what I am looking for or doing. > > - 'at 3307500 samples it crashes' type reports are much more useful than > 'about 1-2 hours'. I hope this does not offend. I mean to say that the files are that long. Current file is 2h04m41s+35 cdda frames. If I zoom in around the 2h04m mark I can easily reproduce the issue. Also near the beginning of the file or halfway it happens as far as I remember. Kind regards, Udo |