[alsa-devel] [ALSA patch] [PATCH - alsa-lib 4/4] pcm_file: add infile read support for mmap mode

Miartus, Adam (Arion Recruitment; ADITG/ESM) amiartus at de.adit-jv.com
Tue May 21 12:36:33 CEST 2019


> On Tue, 21 May 2019 10:37:43 +0200,
> Miartus, Adam (Arion Recruitment; ADITG/ESM) wrote:
> >
> > > On Mon, 20 May 2019 18:51:06 +0200,
> > > Miartus, Adam (Arion Recruitment; ADITG/ESM) wrote:
> > > >
> > > > From: Adam Miartus <amiartus at de.adit-jv.com>
> > > >
> > > > mmap_begin callback is used to copy data from input file to mmaped
> > > > buffer
> > > >
> > > > guard for corner use of api (multiple mmap_begin calls by user) is
> > > > introduced to check if next continuous buffer was already overwritten
> > > >
> > > > buffer is overwritten with input file data only in case of stream
> > > > capture
> > > >
> > > > Signed-off-by: Adam Miartus <amiartus at de.adit-jv.com>
> > > > Reviewed-by: Timo Wischer <twischer at de.adit-jv.com>
> > >
> > > Can't we copy the data in snd_pcm_file_mmap_commit() just like the
> > > playback case?
> > >
> > >
> > > thanks,
> > >
> > > Takashi
> >
> > My understanding is that in case of reading data in mmap mode user
> > would call mmap_begin, read the buffer and then call mmap_commit.
> >
> > In this case overwriting the buffer in mmap_commit with data from
> > Input file would be too late.
> 
> Hm, OK.  I basically hate to add a new ops, but this might be the only
> way if we have to implement that.
> 
> OTOH, is this mmap support mandatory?  IOW, is wrapping with the plug
> and mmap_emul performance-wise so bad?
> 
> 
> thanks,
> 
> Takashi

I understand that extending the api is not ideal, however this approach
in my opinion, simplifies the solution. API could also be used to simplify
code in softvol plugin, which to my understanding loops around the buffer
in avail_update callback. Maybe other plugins could benefit as well.

As for emulation of mmap I was not aware it is possible. We would like to
use the file plugin in mmap mode as additional tool for debugging hw/sw,
with option to overwrite the mmap buffer in read mode with data from file,
in this case I think it would be preferred to access mmap area without
emulation. However, if this can be accomplished without api change just
by alsa configuration, perhaps there is no need for this change.

best regards,

Adam


More information about the Alsa-devel mailing list