OD turned off in latest alpha?

15 Messages Forum Options Options
Permalink
Michael Chinen
OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
It appears On-Demand loading is turned off by default in the latest
alpha.  Is this because the ffmpeg importer was enabled?

If so we need to discuss where we are heading.

We were talking earlier about the possibility of making ffmpeg import
OD compatible for possibly all file types.  I have some questions
about it.

Does ffmpeg import allow for aliased wave files?   The old import had
two methods of loading wavs via copy or aliased.

The cop-out or the in-the-meantime is to have ffmpeg import redirect
(non GSM) wav files to the old importer.

Michael

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Gale Andrews
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink

| From "Michael Chinen" <mchinen@...>
| Tue, 1 Jul 2008 21:36:23 -0400
| Subject: [Audacity-devel] OD turned off in latest alpha?
> It appears On-Demand loading is turned off by default in the latest
> alpha.  Is this because the ffmpeg importer was enabled?

On-demand is on by default in Experimental.h which affects all platforms,
and on-demand occurs for me as long as the filter in the import dialogue
is not set to "FFmpeg-compatible files" (i.e. same behaviour as before).

However as I mentioned on the Wiki I am quite concerned about how
we "educate" people about load-on-demand. The solution with the
progress bar embedded in the waveform seems to me to have two
problems:

a) Very short tracks under a minute long (here anyway) load on demand
with a kind of subliminal green flash across the screen width that is
very disconcerting until you know what it means. A similar "subliminal"
dialogue box would not have this problem

b) Very long files have the problem that the progress bar suggests (as
progress bars usually do) that you must wait for completion. If users do
this, the whole benefit of OD is lost. I suggested we might be able to
have a background for the on-demand stripes that said something like
"loading - click anywhere to play or edit". That may not even be
feasible, but I do think we need to do something, or go back to a
standard progress bar (or some kind of information box?) that explains
what is happening, and which can be prevented from appearing again
by a checkbox.

 

> If so we need to discuss where we are heading.
>
> We were talking earlier about the possibility of making ffmpeg import
> OD compatible for possibly all file types.
>
>  I have some questions about it.
>
> Does ffmpeg import allow for aliased wave files?   The old import had
> two methods of loading wavs via copy or aliased.
>
> The cop-out or the in-the-meantime is to have ffmpeg import redirect
> (non GSM) wav files to the old importer.

I'd certainly hope that OD could work for as many file types as
possible (presumably they have to be seekable?); and as I said before
it's a considerable weakness that you can't leave the import filter set
to "FFmepg-compatible files" and then "load on demand" a routine  
PCM WAV file.


Gale




-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
LRN
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
Gale Andrews wrote:

> | From "Michael Chinen"<mchinen@...>
> | Tue, 1 Jul 2008 21:36:23 -0400
> | Subject: [Audacity-devel] OD turned off in latest alpha?
>    
>> It appears On-Demand loading is turned off by default in the latest
>> alpha.  Is this because the ffmpeg importer was enabled?
>>      
>
> On-demand is on by default in Experimental.h which affects all platforms,
> and on-demand occurs for me as long as the filter in the import dialogue
> is not set to "FFmpeg-compatible files" (i.e. same behaviour as before).
>
> However as I mentioned on the Wiki I am quite concerned about how
> we "educate" people about load-on-demand. The solution with the
> progress bar embedded in the waveform seems to me to have two
> problems:
>
> a) Very short tracks under a minute long (here anyway) load on demand
> with a kind of subliminal green flash across the screen width that is
> very disconcerting until you know what it means. A similar "subliminal"
> dialogue box would not have this problem
>
> b) Very long files have the problem that the progress bar suggests (as
> progress bars usually do) that you must wait for completion. If users do
> this, the whole benefit of OD is lost. I suggested we might be able to
> have a background for the on-demand stripes that said something like
> "loading - click anywhere to play or edit". That may not even be
> feasible, but I do think we need to do something, or go back to a
> standard progress bar (or some kind of information box?) that explains
> what is happening, and which can be prevented from appearing again
> by a checkbox.
>
>    
Restore normal progress dialog box with some changes. It should display
a message like "File is being imported. You may wait until importing is
complete or allow it to be imported in background (not all parts of
audio will be accessible until the whole file is imported). And two
buttons - "Import in background" and "Cancel". And the progress bar with
<time passed> and <eta>.

>
>    
>> If so we need to discuss where we are heading.
>>
>> We were talking earlier about the possibility of making ffmpeg import
>> OD compatible for possibly all file types.
>>
>>   I have some questions about it.
>>
>> Does ffmpeg import allow for aliased wave files?   The old import had
>> two methods of loading wavs via copy or aliased.
>>
>> The cop-out or the in-the-meantime is to have ffmpeg import redirect
>> (non GSM) wav files to the old importer.
>>      
>
> I'd certainly hope that OD could work for as many file types as
> possible (presumably they have to be seekable?); and as I said before
> it's a considerable weakness that you can't leave the import filter set
> to "FFmepg-compatible files" and then "load on demand" a routine
> PCM WAV file.
>    
Sorry, never took time to look at PCM importer to get the idea how this
on-demand loading actually works and re-implement the same behaviour for
FFmpeg importer.

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Michael Chinen
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
2008/7/2 Gale Andrews <gale@...>
> On-demand is on by default in Experimental.h which affects all platforms,
> and on-demand occurs for me as long as the filter in the import dialogue
> is not set to "FFmpeg-compatible files" (i.e. same behaviour as before).
The CVS_HEAD has this behavior, but the 1.3.5d (and c yesterday) I got
from leland today didn't use on-demand when loading wave files.

> However as I mentioned on the Wiki I am quite concerned about how
> we "educate" people about load-on-demand. The solution with the
> progress bar embedded in the waveform seems to me to have two
> problems:
>
> a) Very short tracks under a minute long (here anyway) load on demand
> with a kind of subliminal green flash across the screen width that is
> very disconcerting until you know what it means. A similar "subliminal"
> dialogue box would not have this problem
>
> b) Very long files have the problem that the progress bar suggests (as
> progress bars usually do) that you must wait for completion. If users do
> this, the whole benefit of OD is lost. I suggested we might be able to
> have a background for the on-demand stripes that said something like
> "loading - click anywhere to play or edit". That may not even be
> feasible, but I do think we need to do something, or go back to a
> standard progress bar (or some kind of information box?) that explains
> what is happening, and which can be prevented from appearing again
> by a checkbox.
Gale, yes, I saw your comment on the wiki and liked the "Loading -
click to..." idea.  The reason it's called on-demand is because In the
future once you click on a section it'll start loading from that
point.  So maybe something like "Loading Waveform Image - click to
load immediately".  That way the user might get the idea that it is
just the image that is loading and they can play/edit it as normal
while the OD loading is underway.

>
>
>> If so we need to discuss where we are heading.
>>
>> We were talking earlier about the possibility of making ffmpeg import
>> OD compatible for possibly all file types.
>>
>>  I have some questions about it.
>>
>> Does ffmpeg import allow for aliased wave files?   The old import had
>> two methods of loading wavs via copy or aliased.
>>
>> The cop-out or the in-the-meantime is to have ffmpeg import redirect
>> (non GSM) wav files to the old importer.
>
> I'd certainly hope that OD could work for as many file types as
> possible (presumably they have to be seekable?); and as I said before
> it's a considerable weakness that you can't leave the import filter set
> to "FFmepg-compatible files" and then "load on demand" a routine
> PCM WAV file.
We can do something even if it is not seekable, although the
on-demandness will lessen and we will just get background loading with
the user being able to immediately edit the parts that have been
loaded.  Those cases will be very different from the current OD tasks,
since right now we have the real audio data in an aliased file from
the start, so we know things like definite length, etc.

Michael

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Michael Chinen
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
2008/7/2 LRN <lrn1986@...>:

>>
>>
>>> If so we need to discuss where we are heading.
>>>
>>> We were talking earlier about the possibility of making ffmpeg import
>>> OD compatible for possibly all file types.
>>>
>>>   I have some questions about it.
>>>
>>> Does ffmpeg import allow for aliased wave files?   The old import had
>>> two methods of loading wavs via copy or aliased.
>>>
>>> The cop-out or the in-the-meantime is to have ffmpeg import redirect
>>> (non GSM) wav files to the old importer.
>>>
>>
>> I'd certainly hope that OD could work for as many file types as
>> possible (presumably they have to be seekable?); and as I said before
>> it's a considerable weakness that you can't leave the import filter set
>> to "FFmepg-compatible files" and then "load on demand" a routine
>> PCM WAV file.
>>
> Sorry, never took time to look at PCM importer to get the idea how this
> on-demand loading actually works and re-implement the same behaviour for
> FFmpeg importer.
I've still yet to spend the time to delve in.

So about aliasing, when you import a PCM through ffmpeg is there
support for PCMAliasBlockFiles?  Or does it make copies of the data
using SimpleBlockFile?  If we could make a FFMpegAliasBlockFile that
roughly corresponds to PCMAliasBlockFile then it would be pretty easy
to integrate with OD.

Michael

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
LRN
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
Michael Chinen wrote:

> 2008/7/2 LRN<lrn1986@...>:
>    
>>>        
>>>> If so we need to discuss where we are heading.
>>>>
>>>> We were talking earlier about the possibility of making ffmpeg import
>>>> OD compatible for possibly all file types.
>>>>
>>>>    I have some questions about it.
>>>>
>>>> Does ffmpeg import allow for aliased wave files?   The old import had
>>>> two methods of loading wavs via copy or aliased.
>>>>
>>>> The cop-out or the in-the-meantime is to have ffmpeg import redirect
>>>> (non GSM) wav files to the old importer.
>>>>
>>>>          
>>> I'd certainly hope that OD could work for as many file types as
>>> possible (presumably they have to be seekable?); and as I said before
>>> it's a considerable weakness that you can't leave the import filter set
>>> to "FFmepg-compatible files" and then "load on demand" a routine
>>> PCM WAV file.
>>>
>>>        
>> Sorry, never took time to look at PCM importer to get the idea how this
>> on-demand loading actually works and re-implement the same behaviour for
>> FFmpeg importer.
>>      
> I've still yet to spend the time to delve in.
>
> So about aliasing, when you import a PCM through ffmpeg is there
> support for PCMAliasBlockFiles?
Never heard of such thing.
> Or does it make copies of the data
> using SimpleBlockFile?
FFmpeg importer, like all other importers (FLAC, MP3, Vorbis), creates a
few WaveTrack objects (one object per channel) and feeds decoded data to
Append() method of each object. Data usually comes interleaved, so each
new chunk alloes us to feed all channels for one stream, and streams are
usually inverleaved too, meaning that each new chunk feeds different
stream (unless there's only one stream being imported).
> If we could make a FFMpegAliasBlockFile that
> roughly corresponds to PCMAliasBlockFile then it would be pretty easy
> to integrate with OD.
>    
Yeah, by looking at ImportPCM i realized that actual importing is done
in ODPCMAliasBlockFile...As i said, i never touched PCMAliasBlockFile,
because it is not used in any importers looked upon.

Let's do it like this: look around the ImportFLAC (or any other non-PCM
importer) and try to implement on-demand loading for this format. After
that i would be easy for me to make the same thing for FFmpeg importer.
Well, unless we're only planning to implement on-demand loading for
uncompressed files.

I think the root of the problem is that on-demand loading is designed to
work with uncompressed audio only, and only when "edit" mode is enabled,
so actual audio, as far as i understand, is loaded directly from the
real files rather than from copies. But all non-libsndfile importers
(including FFmpeg) always work in copy mode.
Correct me if i am wrong.

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Michael Chinen
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
2008/7/2 LRN <lrn1986@...>:
> Let's do it like this: look around the ImportFLAC (or any other non-PCM
> importer) and try to implement on-demand loading for this format. After
> that i would be easy for me to make the same thing for FFmpeg importer.
> Well, unless we're only planning to implement on-demand loading for
> uncompressed files.
Sounds good, I'll let you know how it goes.

>
> I think the root of the problem is that on-demand loading is designed to
> work with uncompressed audio only, and only when "edit" mode is enabled,
> so actual audio, as far as i understand, is loaded directly from the
> real files rather than from copies. But all non-libsndfile importers
> (including FFmpeg) always work in copy mode.
> Correct me if i am wrong.
Yes, it was designed that way to be as fast as possible.  For
compressed formats we will have to add more structures that make
sense.

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Richard Ash (audacity-help)
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
On Wed, 2008-07-02 at 23:19 +0400, LRN wrote:
> Michael Chinen wrote:
> >>>> We were talking earlier about the possibility of making ffmpeg import
> >>>> OD compatible for possibly all file types.
> >>>> Does ffmpeg import allow for aliased wave files?   The old import had
> >>>> two methods of loading wavs via copy or aliased.

> >>>> The cop-out or the in-the-meantime is to have ffmpeg import redirect
> >>>> (non GSM) wav files to the old importer.

This is also necessary for any uncompressed file with deeper than 16-bit
data in it, because ffmpeg doesn't have any support for bit depths other
than 16-bit and some 8-bit support.

> >>> I'd certainly hope that OD could work for as many file types as
> >>> possible (presumably they have to be seekable?); and as I said before
> >>> it's a considerable weakness that you can't leave the import filter set
> >>> to "FFmepg-compatible files" and then "load on demand" a routine
> >>> PCM WAV file.
This is why I sent the extended email soon after the importer was set up
like this outlining a structure that would automatically choose the
correct "best" importer for a file. One of the side effects of this was
the decision could take account of whether a particular file was
seekable, whether the length was known from the header and various other
things.

> >> Sorry, never took time to look at PCM importer to get the idea how this
> >> on-demand loading actually works and re-implement the same behaviour for
> >> FFmpeg importer.
> >>      
> > I've still yet to spend the time to delve in.
> >
> > So about aliasing, when you import a PCM through ffmpeg is there
> > support for PCMAliasBlockFiles?
> Never heard of such thing.
> > Or does it make copies of the data
> > using SimpleBlockFile?
> FFmpeg importer, like all other importers (FLAC, MP3, Vorbis), creates a
> few WaveTrack objects (one object per channel) and feeds decoded data to
> Append() method of each object.

The PCM importer using libsndfile operates at an unusually low level,
because it generates block files directly.

> Let's do it like this: look around the ImportFLAC (or any other non-PCM
> importer) and try to implement on-demand loading for this format. After
> that i would be easy for me to make the same thing for FFmpeg importer.
> Well, unless we're only planning to implement on-demand loading for
> uncompressed files.

> I think the root of the problem is that on-demand loading is designed to
> work with uncompressed audio only, and only when "edit" mode is enabled,
> so actual audio, as far as i understand, is loaded directly from the
> real files rather than from copies. But all non-libsndfile importers
> (including FFmpeg) always work in copy mode.

On demand loading of some file types is never going to be a practical
idea to implement, because of the way they are structured. The main
requirement for on-demand to be feasible is that retrieving an arbitrary
time range of uncompressed samples from the file has to be an efficient
operation.

For uncompressed files, this is always the case, because the bit rate is
constant, and so the byte position of any given sample can be calculated
from the time and the bite rate. Seeking is therefore easy because it
can use fseek(), and decoding can start from any sample because each
sample is independent of it's neighbours. This means reading data when
it needed is a quick operation, and we don't have to do any reading in
order to create the track outline minus the waveform data (know the
length, channels etc).

At the other end, consider a VBR MP3 file. It doesn't have any headers,
so the length isn't known at the start of the read process. Because it's
a VBR encoding, we can't predict where any given sample will come from
externally. The format doesn't have any sort of seek table, so we can't
find the right encoding block that way either. So the best approximation
we can make is to read each block start, then skip the block if it isn't
the one we want. This is of course a slow process. If we work round
this, for example by scanning the file and building a seek table, then
we find another problem.
Because the encoding is block based, we have to start decoding before
the sample we want, in order to start at a block boundary in the MP3
data. We will also have to keep decoding at the end beyond the end of
the wanted data to clear the last block. This makes the reader both more
complex and less efficient than an in-order reader.

The effect of this is that to know the length of an MP3 file you have to
read all of it. To seek out an arbitrary section of the file you have to
read all of the file from the start of the file to the bit you want,
then do a messy, slow decode process. So for the same reason that a
"read from original file" option doesn't make much sense for MP3 files,
nor does a read-on-demand option.

For other, more advanced, formats the distinction is less clear. A raw
FLAC file is always VBR, and a seek table is optional. Decoding a FLAC
file has to happen in blocks, but it relatively cheap (on most systems,
decode is a disk-bound operation not CPU-bound). So if the seek table
exists in a file, both "read as from file" and "load on demand" can be
done reasonably effectively and will be useful.

If the seek table isn't there, then to create it will mean reading the
whole of the file to build it. In that circumstance it makes more sense
to read the file once and deliver it into the audacity project at that
point rather than read it all twice, once to build the TOC (which has to
happen for the track to load) and again to get the data.

Ogg Vorbis I don't yet know about, and I suspect most of the other
compressed formats will be more like MP3 than FLAC.

Either way I don't see making On-demand work with the ffmpeg compressed
formats as a priority - it is (from my point of view) much more useful
to sort out choosing the right importer so that as much as possible goes
through libsndfile (including using libsndfile for FLAC if it's built
with FLAC support).

Richard


-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Gale Andrews
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink

| From "Michael Chinen" <mchinen@...>
| Wed, 2 Jul 2008 14:46:06 -0400
| Subject: [Audacity-devel] OD turned off in latest alpha?

Hi Michael

> Gale, yes, I saw your comment on the wiki and liked the "Loading -
> click to..." idea.  The reason it's called on-demand is because In the
> future once you click on a section it'll start loading from that
> point.  So maybe something like "Loading Waveform Image - click to
> load immediately".  That way the user might get the idea that it is
> just the image that is loading and they can play/edit it as normal
> while the OD loading is underway.

Yes, "Loading Waveform Image" is quite good I think. The rest of the
description needs thought. Given the unfamiliarity of this idea, I think
as well as telling them they can click anywhere to jump loading to that
point, they still need to know explicitly they can play and edit at once.
For example, if they made a large selection at the end of the file to
start load from there, they should know they don't have to wait for it
to load.      

"Loading Waveform Image: Play or edit anywhere, or click to start load"
might be a bit long though. Depends if having it (say) three times as
a background is enough.

> > I'd certainly hope that OD could work for as many file types as
> > possible (presumably they have to be seekable?); and as I said before
> > it's a considerable weakness that you can't leave the import filter set
> > to "FFmepg-compatible files" and then "load on demand" a routine
> > PCM WAV file.
> We can do something even if it is not seekable, although the
> on-demandness will lessen and we will just get background loading with
> the user being able to immediately edit the parts that have been
> loaded.  Those cases will be very different from the current OD tasks,
> since right now we have the real audio data in an aliased file from
> the start, so we know things like definite length, etc.
>
> Richard: Either way I don't see making On-demand work with the ffmpeg
> compressed formats as a priority - it is (from my point of view) much more
> useful to sort out choosing the right importer so that as much as possible
> goes through libsndfile (including using libsndfile for FLAC if it's built
> with FLAC support).

For my immediate problem, it seems I don't have the issue I thought I
did, because I can use the "All supported files" filter. Then I get
on-demand PCM import for WAV if Preferences are set to "read directly",
but still get a normal WMA import via FFmpeg. That was my mistake, but
I think the confusion is invited by including formats that Audacity supports
natively in the "FFmpeg-compatible" filter, so I'm suggesting like Richard,
why use FFmpeg to import WAV?

Same goes for export (though I know we're testing the FFmpeg exporter).

So for both import and export, why not reserve the "FFmpeg-compatible"
filter for non-native formats, and possibly rename appropriately (e.g. "Other
files, using FFmpeg")? We still have LRN's "Other FFmpeg-compatible
files" dialogue if someone must export WAV via FFmpeg (that could be
called something like "Custom format and codec using FFmpeg").    

Also agree with Richard that the above is more of a priority than getting
OD to work with uncompressed files. I still think OD with uncompressed
files would be useful (even though less functional), and avoids user
confusion over why some formats load with a familiar progress dialogue    
and some don't. But if MP3 proves insuperable/offers minimal time
savings compared to normal loading, then perhaps it's better to keep it
simple and restrict load-on-demand to uncompressed?    
 


Thanks

Gale


-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Michael Chinen
Re: OD turned off in latest alpha?
Reply Threaded More
Print post
Permalink
2008/7/3 Gale Andrews <gale@...>:

> Also agree with Richard that the above is more of a priority than getting
> OD to work with uncompressed files. I still think OD with uncompressed
> files would be useful (even though less functional), and avoids user
> confusion over why some formats load with a familiar progress dialogue
> and some don't. But if MP3 proves insuperable/offers minimal time
> savings compared to normal loading, then perhaps it's better to keep it
> simple and restrict load-on-demand to uncompressed?
I agree the priority should be towards uncompressed files.  However I
still need more convincing that it wouldn't be very useful for
compressed formats like mp3.
most mp3 players are a good example of how on-demand can work for
compressed formats- when you load an mp3 player - you can open an mp3
for the first time and can see the length, and immediately start
skipping around to any part of the file.  As Richard pointed out,
there are a lot of things in the format that make this complicated
that need to be worked out.  I think if we develop a non-aliased
on-demand blockfile that doesn't allow certain effects and returns
zeros for ReadData() until load,it will be efficient enough.

How does it sound?

Michael

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
James Crook
OD: Small refinements.
Reply Threaded More
Print post
Permalink
Michael,

I've made a tiny fix, a nit rather than a real problem, in sequence.cpp,
changing '-b-1' to '-1-b'.  Why?  Because b is unsigned, so '-b' is also
unsigned, so -b-1 is actually a very large number.  It all worked before
because when that's converted to an int the large number is treated as
negative, but swapping the order is better practice and fixes a warning.

In latest CVS the green blobs still only progress if we are doing
something to cause repaints, e.g. dragging the size/height of the wave.  
In your block-update-code you should check the time after reading each
block, and force some painting if it's been a while (0.2s?) and is
needed.  This would make it a lot clearer what's going on.  For me this
is more urgent than the other extensions.

Could you also look at these warnings (below) and fix the ones which
belong to you?  Thanks.

--James



3>------ Build started: Project: Audacity, Configuration: Unicode Debug
Win32 ------
3>Compiling...
3>AudacityHeaders.cpp
3>c:\sourceforge\audacity\src\waveclip.h(223) : warning C4251:
'WaveClip::mWaveCacheMutex' : class 'ODLock' needs to have dll-interface
to be used by clients of class 'WaveClip'
3>        c:\sourceforge\audacity\src\ondemand\odtaskthread.h(124) : see
declaration of 'ODLock'
3>Compiling...
3>ODWaveTrackTaskQueue.cpp
3>c:\sourceforge\audacity\src\ondemand\odwavetracktaskqueue.cpp(32) :
warning C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odwavetracktaskqueue.cpp(46) :
warning C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odwavetracktaskqueue.cpp(83) :
warning C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odwavetracktaskqueue.cpp(98) :
warning C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odwavetracktaskqueue.cpp(112) :
warning C4018: '<' : signed/unsigned mismatch
3>ODTaskThread.cpp
3>c:\sourceforge\audacity\src\ondemand\odtaskthread.cpp(48) : warning
C4305: 'argument' : truncation from 'double' to 'float'
3>ODTask.cpp
3>c:\sourceforge\audacity\src\ondemand\odtask.cpp(28) : warning C4273:
'wxEVT_ODTASK_COMPLETE' : inconsistent dll linkage
3>        c:\sourceforge\audacity\src\ondemand\odtask.cpp(27) : see
previous definition of 'wxEVT_ODTASK_COMPLETE'
3>ODManager.cpp
3>c:\sourceforge\audacity\src\ondemand\odmanager.cpp(27) : warning
C4273: 'wxEVT_ODTASK_UPDATE' : inconsistent dll linkage
3>        c:\sourceforge\audacity\src\ondemand\odmanager.cpp(26) : see
previous definition of 'wxEVT_ODTASK_UPDATE'
3>c:\sourceforge\audacity\src\ondemand\odmanager.cpp(46) : warning
C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odmanager.cpp(63) : warning
C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odmanager.cpp(241) : warning
C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odmanager.cpp(270) : warning
C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odmanager.cpp(282) : warning
C4018: '<' : signed/unsigned mismatch
3>ODComputeSummaryTask.cpp
3>c:\sourceforge\audacity\src\ondemand\odcomputesummarytask.cpp(160) :
warning C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odcomputesummarytask.cpp(165) :
warning C4018: '<' : signed/unsigned mismatch
3>c:\sourceforge\audacity\src\ondemand\odcomputesummarytask.cpp(173) :
warning C4018: '<' : signed/unsigned mismatch
3>Sequence.cpp
3>c:\sourceforge\audacity\src\sequence.cpp(1038) : warning C4146: unary
minus operator applied to unsigned type, result still unsigned
3>c:\sourceforge\audacity\src\sequence.cpp(1051) : warning C4146: unary
minus operator applied to unsigned type, result still unsigned
3>NoteTrack.cpp
3>c:\sourceforge\audacity\src\notetrack.cpp(262) : warning C4101:
'parameters' : unreferenced local variable
3>AudioIO.cpp
3>c:\sourceforge\audacity\src\audioio.cpp(1513) : warning C4800:
'PaError' : forcing value to bool 'true' or 'false' (performance warning)
3>Generating Code...
3>Compiling...
3>SoundActivatedRecord.cpp
3>Linking...
3>   Creating library C:\Sourceforge\audacity\win\Unicode
Debug\Audacity.lib and object C:\Sourceforge\audacity\win\Unicode
Debug\Audacity.exp
3>Project.obj : warning LNK4049: locally defined symbol
?wxEVT_ODTASK_COMPLETE@@3HB (int const wxEVT_ODTASK_COMPLETE) imported
3>Project.obj : warning LNK4049: locally defined symbol
?wxEVT_ODTASK_UPDATE@@3HB (int const wxEVT_ODTASK_UPDATE) imported
3>Embedding manifest...
3>Build log was saved at
"file://c:\Sourceforge\audacity\win\Projects\Audacity\Unicode
Debug\BuildLog.htm"
3>Audacity - 0 error(s), 30 warning(s)
========== Build: 3 succeeded, 0 failed, 17 up-to-date, 0 skipped ==========




-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Audacity-devel mailing list
Audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Michael Chinen
Re: OD: Small refinements.
Reply Threaded More
Print post
Permalink
2008/7/5 James Crook <crookj@...>:
> Michael,
>
> I've made a tiny fix, a nit rather than a real problem, in sequence.cpp,
> changing '-b-1' to '-1-b'.  Why?  Because b is unsigned, so '-b' is also
> unsigned, so -b-1 is actually a very large number.  It all worked before
> because when that's converted to an int the large number is treated as
> negative, but swapping the order is better practice and fixes a warning.
Okay, thanks.

> In latest CVS the green blobs still only progress if we are doing
> something to cause repaints, e.g. dragging the size/height of the wave.
> In your block-update-code you should check the time after reading each
> block, and force some painting if it's been a while (0.2s?) and is
> needed.  This would make it a lot clearer what's going on.  For me this
> is more urgent than the other extensions.
James, I went ahead and made this change so now it happens about twice a second.

The reason I didn't want 0.2s is because redrawing is really really
expensive - Audacity isn't using dirty regions, so it redraws the
whole waveform.  This is unrelated to the wavecache modifications I
made - I implemented invalid regions so that we don't have to hit the
blockfiles/audio data for each block upon a redraw with new data.  On
my intel imac it isn't a problem, but it is very slow on my powerbook
g4.  I think this should be a user defined setting since the
user-specific cpu power directly affects the user experience with auto
redraws (we've never had it before for waveforms)

> Could you also look at these warnings (below) and fix the ones which
> belong to you?  Thanks.
These should be fixed with my changes, but I can't see them in xcode
to begin with.

Michael

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
audacity-devel mailing list
audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Martyn Shaw-2
Re: OD: Small refinements.
Reply Threaded More
Print post
Permalink


Michael Chinen wrote:
> 2008/7/5 James Crook <crookj@...>:
>> Michael,
...
>> In latest CVS the green blobs still only progress if we are doing
>> something to cause repaints, e.g. dragging the size/height of the wave.
>> In your block-update-code you should check the time after reading each
>> block, and force some painting if it's been a while (0.2s?) and is
>> needed.  This would make it a lot clearer what's going on.  For me this
>> is more urgent than the other extensions.
> James, I went ahead and made this change so now it happens about twice a second.

It's still not updating here, unless I do something.  XP SP2 VS8.

Martyn

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
audacity-devel mailing list
audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Michael Chinen
Re: OD: Small refinements.
Reply Threaded More
Print post
Permalink
2008/7/8 Martyn Shaw <martynshaw99@...>:
> It's still not updating here, unless I do something.  XP SP2 VS8.

>From the way this was worded I want to ask explicitly  - It hasn't
ever updated automatically on windows?

It seems to be broken on macs too now, but it worked up to a while ago
at once every four seconds.
looking into it.

Michael

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
audacity-devel mailing list
audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel
Michael Chinen
Re: OD: Small refinements.
Reply Threaded More
Print post
Permalink
2008/7/8 Michael Chinen <mchinen@...>:
> 2008/7/8 Martyn Shaw <martynshaw99@...>:
>> It's still not updating here, unless I do something.  XP SP2 VS8.

Can you try it again?  It works on mac with my latest commit.

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
audacity-devel mailing list
audacity-devel@...
https://lists.sourceforge.net/lists/listinfo/audacity-devel