blob: de23925891c8145ab49b4fe1a63b5187eced9531 [file] [log] [blame]
there are two different kind of streams: 1. media files 2. live radio/television
The difference cannot reliably be determined by the backend so the application has to tell the
frontend.
This is the expected behaviour:
1. media files
==============
function | prev. state | action | new state
---------+-------------+----------------------------------------------------------------+----------
ctor | | | Loading
---------+-------------+----------------------------------------------------------------+----------
setUrl | Loading | refill buffers | Loading
| Stopped | refill buffers | Loading
---------+-------------+----------------------------------------------------------------+----------
play | Loading | continue buffering | Buffering
| Stopped | start playing | Playing
| Buffering | continue buffering | Buffering
| Playing | | Playing
| Paused | continue playback | Playing
---------+-------------+----------------------------------------------------------------+----------
pause | Loading | | Loading
| Stopped | | Stopped
| Buffering | continue buffering | Paused
| Playing | pause output and fill buffers to the max | Paused
| Paused | | Paused
---------+-------------+----------------------------------------------------------------+----------
stop | Loading | | Loading
| Stopped | | Stopped
| Buffering | restart buffering from the beginning of the file | Loading
| Playing | stop output and refill buffers from the beginning of the file | Loading
| Paused | restart buffering from the beginning of the file | Loading
events
function | prev. state | event | new state
---------+-------------+----------------------------------------------------------------+----------
| Buffering | when the buffers are filled start playing | Playing
| Loading | when buffers are filled | Stopped
2. live stream
==============
function | prev. state | action | new state
---------+-------------+----------------------------------------------------------------+----------
ctor | | | Loading
---------+-------------+----------------------------------------------------------------+----------
setUrl | Loading | | Stopped
| Stopped | | Stopped
---------+-------------+----------------------------------------------------------------+----------
play | Loading | | Error
| Stopped | start buffering | Buffering
| Buffering | continue buffering | Buffering
| Playing | | Playing
| Paused | continue playback | Playing
---------+-------------+----------------------------------------------------------------+----------
pause | Loading | | Error
| Stopped | | Stopped
| Buffering | continue buffering | Paused
| Playing | pause output and fill (ring-)buffers to the max | Paused
| Paused | | Paused
---------+-------------+----------------------------------------------------------------+----------
stop | Loading | | Error
| Stopped | | Stopped
| Buffering | clear buffers | Stopped
| Playing | stop output and clear buffers | Stopped
| Paused | clear buffers | Stopped
events
function | prev. state | event | new state
---------+-------------+----------------------------------------------------------------+----------
| Buffering | when the buffers are filled start playing | Playing