+instance Show SubBlock where
+ show (SubBlock a) = show a
+
+-- | Dummy metadata to pad WavPack blocks.
+data Dummy
+ = Dummy {
+ -- | Must be less than 2^25 bytes long due to the limitation
+ -- of WavPack specification.
+ dumSize ∷ Word32
+ }
+ deriving (Eq, Show, Typeable)
+
+instance Metadata Dummy where
+ metaID _ = 0x00
+ metaSize = dumSize
+
+instance Binary Dummy where
+ put = putLazyByteString ∘ flip L.replicate 0x00 ∘ fromIntegral ∘ dumSize
+ get = fmap (Dummy ∘ fromIntegral) remaining
+
+-- | Unknown but optional metadata found in the WavPack block.
+data Unknown
+ = Unknown {
+ -- | The ID of this unknown metadata without odd-size bit nor
+ -- large-block bit.
+ unkID ∷ Word8
+ -- | Raw data; must be less than 2^25 bytes long.
+ , unkData ∷ L.ByteString
+ }
+ deriving (Eq, Show, Typeable)
+
+instance Metadata Unknown where
+ metaID = unkID
+ metaSize = fromIntegral ∘ L.length ∘ unkData
+
+instance Binary Unknown where
+ put = putLazyByteString ∘ unkData
+ get = (⊥)