Component diagrams ================== ------- filesrc ------- Diagram:: ,---------. | | octet stream control | |-------------> ------->| filesrc | state | |-------------> | | `---------' control event * Open FilePath * Seek SeekMode Integer * Read Int * Close octet stream event ByteString (response for the "Read" event) reactive state value * Open Integer Integer -- size and the current position * Closed ----- wvdec ----- Diagram:: decoder ctrl ,-------. wv ctrl ------------>| |-----------> wv stream | | wvc ctrl ------------>| wvdec |-----------> wvc stream | | PCM streams ------------>| |-----------> `-------' state | `------------> | stream info `--------------> decoder control event FileDecodingCtrl -- Seekable wv/wvc ctrl * Reset (can be omitted) * Start * Stop * Seek Integer -- sample index StreamDecodingCtrl -- NonSeekable wv/wvc ctrl * Reset (can be omitted) * Start * Stop wv stream event ByteString wvc stream event Maybe ByteString wv/wvc control event Seekable * Seek SeekMode Integer * Read Int * Close NonSeekable * Read Int PCM stream events (FIXME: not defined yet) reactive state value * Idle * Running reactive stream info (Maybe; responds to the "Reset" event) #. compression style :: Lossless | Hybrid Bool Bool -- True if using wvc, True if dynamic noise shaping is in effect #. compression mode :: Fast | Normal | High | VeryHigh #. extra compression level :: Maybe Int #. sample format :: Word8 | Word16 | Word32 | Float #. # channels :: Int #. channel mask :: (FIXME: not defined yet) #. sampling rate :: Integer #. # samples :: Maybe Integer #. media tags :: (FIXME: not defined yet)