These questions are really directed to Paul Davis (as the
main Ardour dev), Erik de Castro Lopo (libsndfile author),
and anyone with experience in this field.
Imagine a real-time audio processing app reading (or writing)
lots of audio files, possibly evaluating a complex timeline
consisting of many separte pieces. To make things work some
(or a lot of) buffering and lookahead will be necessary.
There are at least three distinct places where this can be
done:
1. the file system(s) and kernel
2. any library used to acess audio files,
3. the application itself.
Of these, only (1) will be aware of any hardware related
issues, and only (3) will be aware of what is expected to
happen in the (near) future. (2) sits somewhere between
the two.
In view of this, what is currently the best way for an
app to read/write audio files, the basic read() and write()
calls, or the stdio interface ?
More specifically, if one would write a library to access
a particular audio file format (not supported, or only
partially by e.g. libsndfile), how 'smart' in terms of
buffering, lookahead etc. should that library be, or not
try to be, in order to perform well with apps like e.g.
Ardour ? What form would the preferred API take ?
Ciao,
--
FA
A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)
It seems to be problem of gui, aeolus 0.8.4 and 0.9.0 both have this problem.
Backtrace below is got using 0.9.0. First time i reported directly to Fons,
but still no reply. Don't know, is it accepted at all for such things as bug
reporting.
(gdb) run
Starting program: /usr/bin/aeolus -J
warning: no loadable sections found in added symbol-file system-supplied DSO at
0x7ffff7ffa000
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff7faa700 (LWP 9934)]
[New Thread 0x7ffff7f29700 (LWP 9935)]
[New Thread 0x7ffff7ea8700 (LWP 9936)]
[New Thread 0x7ffff55fd700 (LWP 9937)]
[New Thread 0x7ffff55ec700 (LWP 9938)]
[New Thread 0x7ffff55db700 (LWP 9939)]
Reading '/usr/share/aeolus/stops/Aeolus/definition'
[New Thread 0x7ffff55ca700 (LWP 9940)]
[New Thread 0x7ffff4ecb700 (LWP 9941)]
Reading '/home/nick87720z/.aeolus-presets'
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff4ecb700 (LWP 9941)]
0x00007ffff5d78da1 in ?? () from /usr/lib/x86_64-linux-gnu/libfreetype.so.6
(gdb) backtrace
#0 0x00007ffff5d78da1 in ?? () from /usr/lib/x86_64-linux-gnu/libfreetype.so.6
#1 0x00007ffff5d7dd1f in ?? () from /usr/lib/x86_64-linux-gnu/libfreetype.so.6
#2 0x00007ffff5d7f5af in ?? () from /usr/lib/x86_64-linux-gnu/libfreetype.so.6
#3 0x00007ffff5d2bbd5 in FT_Render_Glyph_Internal () from /usr/lib/x86_64-
linux-gnu/libfreetype.so.6
#4 0x00000039bd40c670 in XftFontLoadGlyphs () from /usr/lib/x86_64-linux-
gnu/libXft.so.2
#5 0x00000039bd409c64 in XftGlyphExtents () from /usr/lib/x86_64-linux-
gnu/libXft.so.2
#6 0x00000039bd40a06a in XftTextExtentsUtf8 () from /usr/lib/x86_64-linux-
gnu/libXft.so.2
#7 0x00000039a840e7ff in X_textip::textwidth(int, int) () from
/usr/lib/libclxclient.so.3
#8 0x00000039a840ed6d in X_textip::update(bool) () from
/usr/lib/libclxclient.so.3
#9 0x00007ffff6533023 in Instrwin::show_tuning(int) () from
/usr/lib64/aeolus_x11.so
#10 0x00007ffff653c974 in Xiface::handle_mesg(ITC_mesg*) () from
/usr/lib64/aeolus_x11.so
#11 0x00007ffff653cab7 in Xiface::thr_main() () from /usr/lib64/aeolus_x11.so
#12 0x00000039a7c0309a in P_thread_entry_point () from
/usr/lib/libclthreads.so.2
#13 0x00007ffff7974e9a in start_thread (arg=0x7ffff4ecb700) at
pthread_create.c:308
#14 0x00007ffff6c873fd in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#15 0x0000000000000000 in ?? ()
(gdb) kill