--- /dev/null
+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)