From: Paul Barton-Davis <pbd@Op.Net>
To: linux-sound@vger.kernel.org
Subject: Re: [linux-audio-dev] Re: streaming from disk to terminatorX added (via mmap)
Date: Mon, 25 Oct 1999 21:56:06 +0000 [thread overview]
Message-ID: <marc-linux-sound-94088856619315@msgid-missing> (raw)
In-Reply-To: <marc-linux-sound-94081664808533@msgid-missing>
In message <38151885.7A650570@42.fht-esslingen.de>you write:
>Paul Barton-Davis wrote:
>> just FYI: my C++ libsoundfile uses mmap(), but still requires
>> applications to "read" the data. it is significantly faster than using
>> read(2) internally, however, so there might be an argument for using
>> mmap regardless of the endianness, and then using arch-dependent
>> macros to fetch the data from the mmapped area. for example, on a
>> little endian machine reading from a little endian RIFF/WAV file, the
>> macros are essentially no-ops.
>
>No-ops? Do you mean you don't generate ANY code for this? If so: HOW?
sorry, not very accurate. for example:
int16 foo;
unsigned char *p;
foo = get_little_endian_int16 (p)
on an LE machine, this is just:
foo = *((int16 *) p);
on a BE machine, its a bit more complex.
the first case is what i meant by a "noop", not a literal NOOP.
>??? Yeah sure, using a limited buffer will have the same effect but the
>way tX currently does it is like the good ole trackers did it: it loads
>the samples COMPLETELY in RAM so there is no disk-activity at all while
>playing....
not so, unless you use mlockall. you mean, completely in VM. not quite
the same thing.
>> benno's code makes sure it *is* in RAM already. just not all of it
>> at one time.
>
>Yeah, you are right. I guess what I wanted to say was: If you mmap()
>files instead of loading there's a lot of other stuff happening aside
>for audio-rendering (you know like mmap()-code, fs-code, ide-code...)
>Now if you have a lot of turntables and some effects enabled your CPU
>may be pretty busy getting the audio ready for playback and that
>additional code may be too much.. well still: it's just an assumption ;)
unless you mlock(all) the pages on which your soundfile lives, there
is no reason why the CPU has to do anymore work in the mmap(2) case
than in the "malloc(3); read (2)" case, assuming that after mmap() you
touch every page of the mmapped-file (this makes it equivalent to the
"read" case, since there, the reading-in touched very page of the data
too). in both cases, a page may be paged out, and cause a page fault,
requiring the CPU to initiate a fetch. if its not paged out, no extra
cost either way.
--p
next prev parent reply other threads:[~1999-10-25 21:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-10-25 1:57 [linux-audio-dev] Re: streaming from disk to terminatorX added (via mmap) Paul Barton-Davis
1999-10-25 21:15 ` [linux-audio-dev] Re: streaming from disk to terminatorX added (via Alexander König
1999-10-25 21:56 ` Paul Barton-Davis [this message]
1999-10-26 0:33 ` [linux-audio-dev] Re: streaming from disk to terminatorX added (via mmap) David Olofson
1999-10-26 5:11 ` [linux-audio-dev] Re: streaming from disk to terminatorX added (via Alexander König
1999-10-26 7:04 ` [linux-audio-dev] Re: streaming from disk to terminatorX added Andy Lo A Foe
1999-10-26 12:31 ` Jaroslav Kysela
1999-10-27 14:45 ` [linux-audio-dev] Re: streaming from disk to terminatorX added (via mmap) Maarten de Boer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=marc-linux-sound-94088856619315@msgid-missing \
--to=pbd@op.net \
--cc=linux-sound@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox