Message ID | 20200619045449.3966868-2-vkoul@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ALSA: compress: Document stream states and fix gaplless SM | expand |
On 19/06/2020 05:54, Vinod Koul wrote: > So we had some discussions of the stream states, so I thought it is a > good idea to document the state transitions, so add it documentation > > Signed-off-by: Vinod Koul <vkoul@kernel.org> > --- Thanks Vinod for doing this, Makes things much clear on the state-machine side! Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> > .../sound/designs/compress-offload.rst | 52 +++++++++++++++++++ > 1 file changed, 52 insertions(+) > > diff --git a/Documentation/sound/designs/compress-offload.rst b/Documentation/sound/designs/compress-offload.rst > index ad4bfbdacc83..7292717c43bf 100644 > --- a/Documentation/sound/designs/compress-offload.rst > +++ b/Documentation/sound/designs/compress-offload.rst > @@ -151,6 +151,58 @@ Modifications include: > - Addition of encoding options when required (derived from OpenMAX IL) > - Addition of rateControlSupported (missing in OpenMAX AL) > > +State Machine > +============= > + > +The compressed audio stream state machine is described below :: > + > + +----------+ > + | | > + | OPEN | > + | | > + +----------+ > + | > + | > + | compr_set_params() > + | > + V > + +----------+ > + compr_drain_notify() | | > + +------------------------>| SETUP | > + | | | > + | +----------+ > + | | > + | | > + | | compr_write() > + | | > + | V > + | +----------+ > + | | | > + | | PREPARE | > + | | | > + | +----------+ > + | | > + | | > + | | compr_start() > + | | > + | V > + +----------+ +----------+ compr_pause() +----------+ > + | | | |----------------------->| | > + | DRAIN |<-------------------| RUNNING | | PAUSE | > + | | | |<-----------------------| | > + +----------+ +----------+ compr_resume() +----------+ > + | | > + | | > + | | compr_free() > + | | > + | V > + | +----------+ > + | compr_free() | | > + +------------------------>| | > + | STOP | > + | | > + +----------+ > + > > Gapless Playback > ================ >
> + > + +----------+ > + | | > + | OPEN | > + | | > + +----------+ > + | > + | > + | compr_set_params() > + | > + V > + +----------+ > + compr_drain_notify() | | > + +------------------------>| SETUP | > + | | | > + | +----------+ > + | | > + | | > + | | compr_write() > + | | > + | V > + | +----------+ > + | | | > + | | PREPARE | > + | | | > + | +----------+ > + | | > + | | > + | | compr_start() > + | | > + | V > + +----------+ +----------+ compr_pause() +----------+ > + | | | |----------------------->| | > + | DRAIN |<-------------------| RUNNING | | PAUSE | > + | | | |<-----------------------| | > + +----------+ +----------+ compr_resume() +----------+ > + | | > + | | > + | | compr_free() > + | | > + | V > + | +----------+ > + | compr_free() | | > + +------------------------>| | > + | STOP | > + | | > + +----------+ The STOP state doesn't seem quite right to me, sorry. the direction of the DRAIN-STOP comp_free() arrow seems wrong? Of if it is correct, then something's missing to exit the STOP state so that the stream can be opened again.
HI Pierre, On 19-06-20, 09:22, Pierre-Louis Bossart wrote: > > > + > > + +----------+ > > + | | > > + | OPEN | > > + | | > > + +----------+ > > + | > > + | > > + | compr_set_params() > > + | > > + V > > + +----------+ > > + compr_drain_notify() | | > > + +------------------------>| SETUP | > > + | | | > > + | +----------+ > > + | | > > + | | > > + | | compr_write() > > + | | > > + | V > > + | +----------+ > > + | | | > > + | | PREPARE | > > + | | | > > + | +----------+ > > + | | > > + | | > > + | | compr_start() > > + | | > > + | V > > + +----------+ +----------+ compr_pause() +----------+ > > + | | | |----------------------->| | > > + | DRAIN |<-------------------| RUNNING | | PAUSE | > > + | | | |<-----------------------| | > > + +----------+ +----------+ compr_resume() +----------+ > > + | | > > + | | > > + | | compr_free() > > + | | > > + | V > > + | +----------+ > > + | compr_free() | | > > + +------------------------>| | > > + | STOP | > > + | | > > + +----------+ > > > The STOP state doesn't seem quite right to me, sorry. We should call it free, Will update > the direction of the DRAIN-STOP comp_free() arrow seems wrong? Of if it is > correct, then something's missing to exit the STOP state so that the stream > can be opened again. Once stream is freed, it can't be opened again. But we have trigger stop which is not comprehended here, I will add compr_stop() above which would transition to SETUP state. And a stopped stream can be freed up as well, so one more transition from SETUP to FREE. Thanks for reviewing
diff --git a/Documentation/sound/designs/compress-offload.rst b/Documentation/sound/designs/compress-offload.rst index ad4bfbdacc83..7292717c43bf 100644 --- a/Documentation/sound/designs/compress-offload.rst +++ b/Documentation/sound/designs/compress-offload.rst @@ -151,6 +151,58 @@ Modifications include: - Addition of encoding options when required (derived from OpenMAX IL) - Addition of rateControlSupported (missing in OpenMAX AL) +State Machine +============= + +The compressed audio stream state machine is described below :: + + +----------+ + | | + | OPEN | + | | + +----------+ + | + | + | compr_set_params() + | + V + +----------+ + compr_drain_notify() | | + +------------------------>| SETUP | + | | | + | +----------+ + | | + | | + | | compr_write() + | | + | V + | +----------+ + | | | + | | PREPARE | + | | | + | +----------+ + | | + | | + | | compr_start() + | | + | V + +----------+ +----------+ compr_pause() +----------+ + | | | |----------------------->| | + | DRAIN |<-------------------| RUNNING | | PAUSE | + | | | |<-----------------------| | + +----------+ +----------+ compr_resume() +----------+ + | | + | | + | | compr_free() + | | + | V + | +----------+ + | compr_free() | | + +------------------------>| | + | STOP | + | | + +----------+ + Gapless Playback ================
So we had some discussions of the stream states, so I thought it is a good idea to document the state transitions, so add it documentation Signed-off-by: Vinod Koul <vkoul@kernel.org> --- .../sound/designs/compress-offload.rst | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+)