X-Git-Url: http://git.cielonegro.org/gitweb.cgi?p=wavpack.git;a=blobdiff_plain;f=examples%2FWvInfo.hs;h=75c13ab3076510fefdb241e96c152d6fb3be79ab;hp=8b1f5b4dfdafbf659d46b34fc136e972ace9a5f5;hb=fda0a74785ab6da03f98be513de5cd3bada1359d;hpb=9128d47e1f753b82477535a1116b3a4f416243fc diff --git a/examples/WvInfo.hs b/examples/WvInfo.hs index 8b1f5b4..75c13ab 100644 --- a/examples/WvInfo.hs +++ b/examples/WvInfo.hs @@ -4,19 +4,41 @@ #-} module Main where import Codec.Audio.WavPack.Block +import Codec.Audio.WavPack.Metadata import qualified Data.ByteString.Lazy as L import qualified Data.Strict as S +import Data.Maybe +import Prelude.Unicode import System.Environment +import System.IO main ∷ IO () main = do [wvFile] ← getArgs - wvStream ← L.readFile wvFile - showWvInfo wvStream + wvData ← L.readFile wvFile + hSetBuffering stdout NoBuffering + showWvInfo wvData showWvInfo ∷ L.ByteString → IO () showWvInfo stream = case findNextBlock stream of (# S.Just block, _ #) - → print block + → printBlock block (# S.Nothing , _ #) → fail "Can't find any WavPack block headers." + +printBlock ∷ Block → IO () +printBlock b + = do putStrLn "- Block header:" + print $ blockHeader b + putStrLn "- Block metadata sub-blocks:" + mapM_ printSub $ blockMetadata b + where + printSub ∷ SubBlock → IO () + printSub sub + | isJust (fromSubBlock sub ∷ Maybe WVBitstream) + = putStrLn ( "(WV Bitstream omitted: " ⧺ + show (metaSize sub) ⧺ + " bytes)" + ) + | otherwise + = print sub