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

