+
+ +----------+
+ | |
+ | 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.