Component diagrams ================== .. contents:: ------- 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 | | wvc ctrl ---------->| wvparse |-------------> | | wv/wvc blocks | |-------------> `---------' media tags | `--------------> | parser state `----------------> Input ~~~~~ parser control event SeekableParserCtrl * GetNext * FindTags * Seek Integer -- frame index NonSeekableParserCtrl * GetNext wv stream event ByteString wvc stream event Maybe ByteString Output ~~~~~~ wv/wvc stream control event Seekable * Seek SeekMode Integer * Read Int NonSeekable * Read Int wv/wvc blocks event #. [WavPack.Block] -- wv blocks for all channels (non-empty) #. [WavPack.Block] -- wvc blocks for all channels #. Integer -- samples to skip reactive media tags Map Text Text reactive parser state value * Inactive * Active (Maybe Integer) -- # samples ----- wvdec ----- Diagram:: ,-------. wv/wvc blocks | | PCM streams ------------->| wvdec |-----------> | | `-------' Input ~~~~~ wv/wvc blocks event #. [WavPack.Block] -- wv blocks for all channels (non-empty) #. [WavPack.Block] -- wvc blocks for all channels #. Integer -- frames to skip Output ~~~~~~ reactive PCM streams (FIXME: not defined yet) ------ wvplay ------ FIXME: under construction