[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAOM6g_D4dkwDcQza9fVXn9=uXSYTBThNVHqWb0YjLWkc_eBwog@mail.gmail.com>
Date: Fri, 9 Jul 2021 10:08:29 +0800
From: Robert Lee <lerobert@...gle.com>
To: Jaroslav Kysela <perex@...ex.cz>
Cc: Takashi Iwai <tiwai@...e.de>, vkoul@...nel.org, tiwai@...e.com,
alsa-devel@...a-project.org, linux-kernel@...r.kernel.org,
carterhsu@...gle.com, zxinhui@...gle.com, bubblefang@...gle.com
Subject: Re: [Patch v2] ALSA: compress: allow to leave draining state when
pausing in draining
Jaroslav Kysela <perex@...ex.cz> 於 2021年7月8日 週四 下午10:53寫道:
>
> On 08. 07. 21 15:47, Robert Lee wrote:
> > Hi Takashi,
> >
> > It is a little complex to describe the design in detail, but try to
> > explain simply
> > what issue we meet.
> >
> > If w/o the change, after user resumes from the pause, our system would call
> > snd_compr_drain() or snd_compr_partial_drain() again after it returns from
> > previous drain (when EOF reaches). Then it will block in this drain and no one
> > wake it up because EOF has already reached. I add this change to return from
> > the previous drain.
>
> It looks like that the driver does not call snd_compr_drain_notify() so the
> state is not updated to SETUP on EOF.
>
We indeed call snd_compr_drain_notify() on EOF, but after return from
wait_for _drain there is another drain again immediately.
Looks like the system queue some states change on user space and need
to drain again after resume from pause.
I suppose there is different design on user space so I add the hook to
handle diffent usage.
> > Actually, I am wondering how the pause-during-drain can keep the state in
> > DRAINING. It should have a different design. :)
>
> I already proposed to add a new state (because it's a new state), but the
> conservative way was elected to avoid user space changes.
>
> Jaroslav
>
> --
> Jaroslav Kysela <perex@...ex.cz>
> Linux Sound Maintainer; ALSA Project; Red Hat, Inc.
Powered by blists - more mailing lists