Component diagrams ================== ------- filesrc ------- Diagram:: ,---------. | | octet stream control | |-------------> ------->| filesrc | state | |-------------> | | `---------' Input ~~~~~ control event * Open FilePath * Seek SeekMode Integer * Read Int * Close Output ~~~~~~ octet stream event ByteString (response for the "Read" event) reactive state value * Open Integer Integer -- size and the current position * Closed ------- wvparse ------- Diagram:: parser ctl -----------. v wv stream ,---------. wv ctrl ---------->| |----------> wvc stream | | wv blocks ---------->| wvparse |----------> | | wvc ctrl | |----------> `---------' wvc blocks | | `-----------> | | media tags | `-------------> | state `---------------> Input ~~~~~ parser control event SeekableParserCtrl * GetNext * FindTags * Seek Integer -- sample index NonSeekableParserCtrl * GetNext wv stream event ByteString wvc stream event Maybe ByteString Output ~~~~~~ wv/wvc control event Seekable * Seek SeekMode Integer * Read Int NonSeekable * Read Int wv block event WavPack.Block wvc block event Maybe WavPack.Block reactive media tags Map Text Text reactive state value * Active * Inactive ----- 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)