]> gitweb @ CieloNegro.org - wavpack.git/blobdiff - examples/WvInfo.hs
readBlocks
[wavpack.git] / examples / WvInfo.hs
index 75c13ab3076510fefdb241e96c152d6fb3be79ab..6631c7b47fcf9ebc6f864b0ef66c33b3d8044c25 100644 (file)
@@ -1,12 +1,10 @@
 {-# LANGUAGE
-    UnboxedTuples
-  , UnicodeSyntax
+    UnicodeSyntax
   #-}
 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
@@ -16,19 +14,13 @@ main ∷ IO ()
 main = do [wvFile] ← getArgs
           wvData   ← L.readFile wvFile
           hSetBuffering stdout NoBuffering
-          showWvInfo wvData
-
-showWvInfo ∷ L.ByteString → IO ()
-showWvInfo stream
-    = case findNextBlock stream of
-        (# S.Just block, _ #)
-            → printBlock block
-        (# S.Nothing   , _ #)
-            → fail "Can't find any WavPack block headers."
+          mapM_ printBlock $ readBlocks wvData
+          putStrLn "* End of WavPack blocks"
 
 printBlock ∷ Block → IO ()
 printBlock b
-    = do putStrLn "- Block header:"
+    = do putStrLn "* WavPack Block"
+         putStrLn "- Block header:"
          print $ blockHeader b
          putStrLn "- Block metadata sub-blocks:"
          mapM_ printSub $ blockMetadata b
@@ -42,3 +34,18 @@ printBlock b
                          )
           | otherwise
               = print sub
+
+{- % du -sh 01.wv
+   15716
+
+   When compiled with -O0:
+   % time ./dist/build/hs-wvinfo/hs-wvinfo 01.wv > /dev/null
+   1.49s user 2.12s system 98% cpu 3.664 total
+
+   When compiled with -O2:
+   % time ./dist/build/hs-wvinfo/hs-wvinfo 01.wv > /dev/null
+   1.35s user 2.09s system 97% cpu 3.520 total
+
+   Hmm... quite disappointing...  The stringification is the
+   bottleneck? If so, I can live with that.
+-}