[alsa-devel] [PATCH v4 5/6] core: add support for compress_offload
Nallasellan, Singaravelan
singaravelan.nallasellan at intel.com
Tue Dec 13 17:02:43 CET 2011
>
> Please wrap your emails within 80 chars, you have been repeatedly asked to do so
> on this on list. I don't understand how hard it is to follow basic list etiquettes. Its
> difficult to read screwed up formatting
>
Yes sir. Apologize for the mistake.
> > If someone changes the device mode, this is screwed though there are
> > two types of (PLAYBACK and CAPTURE) devices are registered?
> > Would be better if there are two separate playback and capture
> > operations registered separately.
> Again, please read the related discussion on the list.
>
> Compressed devices will not have direction associated with them . They can be
> opened in any mode depending on the mode the DSP supports.
> So /dev/snd/comprC0D0 can be either playback or capture device.
> So a device can be ONLY opened with O_WRONLY or O_RDONLY.
>
Nice, Does it look like a hack hack hack...
>
> > O_NONBLOCK is not tested here for non-blocking support.
> Why should it be?
> 1) Any blocking and non blocking should be handled in user space
> 2) Nevertheless, that is not supported, HINT: read the documentation
>
This is not as per the write system call definition as I understand. Look like we redefine the
system call here. Support it in the standard way.
> > > + if (stream->runtime->state != SNDRV_PCM_STATE_SETUP &&
> > > + stream->runtime->state != SNDRV_PCM_STATE_RUNNING)
> > > {
> > Cant we call write again when the stream is in
> > SNDRV_PCM_STATE_PREPARED state?
> > This code allows only one write after the stream is in
> > SNDRV_PCM_STATE_SETUP state.
> > What if someone wants to write multiple smaller fragments before the
> > start?
> Yes currently write is allowed only once and we *normally* expect a START call. I am
> not sure why someone would need to call "smaller"
> writes multiple times. Remember this is compressed offload where we ideally want
> larger chunks of data otherwise there is no point in using this.
The code allows this to happen. Is there any minimum size documented anywhere?
> > > +static unsigned int snd_compr_poll(struct file *f, poll_table *wait) {
> > > + struct snd_compr_file *data = f->private_data;
> > > + struct snd_compr_stream *stream;
> > > + size_t avail;
> > > + int retval = 0;
> > > +
> > > + BUG_ON(!data);
> > > + stream = &data->stream;
> >
> > Can you validate O_NONBLOCK before going into poll_wait?
> > I guess this has to return -EINVAL if the device is not opened with
> > O_NONBLOCK.
> See above
Not a write implementation.
>
>
> > What is the maximum number of fragments supported?
> Whatever dsp supports
IMHO, compress-core needs to query it from each driver and allocate memory
only if the supported fragments is greater than requested fragments.
>
> > Can we check the fragments to that limit?
> Yes, can be checked here as well but I prefer to do these checks in userspace library
Think the driver needs to check and return error if it is not within the maximum
supported by the driver.
>
>
> > <Sing>: Can you check stream->ops->set_params for NULL as it is done
> > in the get_params function?
> No set_params is mandatory function to be implemented
Ok. It is my miss.
>
> --
> ~Vinod
More information about the Alsa-devel
mailing list