zoom-cache-pcm 0.1.1.0 → 0.2.0.0
raw patch · 5 files changed
+59/−24 lines, 5 filesdep ~zoom-cachePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: zoom-cache
API changes (from Hackage documentation)
+ Data.ZoomCache.PCM.Internal: deltaDecodePCM :: ZoomPCM a => [PCM a] -> [PCM a]
+ Data.ZoomCache.PCM.Internal: deltaEncodePCM :: ZoomPCM a => SummaryWork (PCM a) -> PCM a -> PCM a
+ Data.ZoomCache.PCM.Types: pcmWorkLast :: ZoomPCM a => SummaryWork (PCM a) -> a
- Data.ZoomCache.PCM.Internal: readSummaryPCM :: (Nullable s, ListLike s Word8, Functor m, Monad m, ZoomPCM a) => Iteratee s m (SummaryData (PCM a))
+ Data.ZoomCache.PCM.Internal: readSummaryPCM :: (Functor m, Monad m, ZoomPCM a) => Iteratee ByteString m (SummaryData (PCM a))
- Data.ZoomCache.PCM.Types: pcmMkSummaryWork :: ZoomPCM a => TimeStamp -> a -> a -> Double -> Double -> SummaryWork (PCM a)
+ Data.ZoomCache.PCM.Types: pcmMkSummaryWork :: ZoomPCM a => TimeStamp -> a -> a -> a -> Double -> Double -> SummaryWork (PCM a)
Files
- Data/ZoomCache/PCM/IEEE754.hs +11/−3
- Data/ZoomCache/PCM/Int.hs +25/−6
- Data/ZoomCache/PCM/Internal.hs +19/−12
- Data/ZoomCache/PCM/Types.hs +2/−1
- zoom-cache-pcm.cabal +2/−2
Data/ZoomCache/PCM/IEEE754.hs view
@@ -73,7 +73,6 @@ import Control.Applicative ((<$>)) import Data.ByteString (ByteString) import Data.Iteratee (Iteratee)-import Data.Word import Text.Printf import Data.ZoomCache.Codec@@ -99,7 +98,8 @@ prettyRaw = prettyPacketPCMFloat prettySummaryData = prettySummaryPCMFloat -{-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee [Word8] m (SummaryData (PCM Float)) #-}+ deltaDecodeRaw = deltaDecodePCM+ {-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee ByteString m (SummaryData (PCM Float)) #-} instance ZoomWrite (PCM Float) where@@ -111,6 +111,7 @@ instance ZoomWritable (PCM Float) where data SummaryWork (PCM Float) = SummaryWorkPCMFloat { swPCMFloatTime :: {-# UNPACK #-}!TimeStamp+ , swPCMFloatLast :: {-# UNPACK #-}!Float , swPCMFloatMin :: {-# UNPACK #-}!Float , swPCMFloatMax :: {-# UNPACK #-}!Float , swPCMFloatSum :: {-# UNPACK #-}!Double@@ -123,6 +124,7 @@ toSummaryData = mkSummaryPCM updateSummaryData = updateSummaryPCM appendSummaryData = appendSummaryPCM+ deltaEncodeRaw = deltaEncodePCM instance ZoomPCM Float where pcmFromRaw = fromFloat@@ -133,6 +135,7 @@ pcmRMS = summaryPCMFloatRMS pcmWorkTime = swPCMFloatTime+ pcmWorkLast = swPCMFloatLast pcmWorkMin = swPCMFloatMin pcmWorkMax = swPCMFloatMax pcmWorkSum = swPCMFloatSum@@ -165,7 +168,8 @@ prettyRaw = prettyPacketPCMFloat prettySummaryData = prettySummaryPCMFloat -{-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee [Word8] m (SummaryData (PCM Double)) #-}+ deltaDecodeRaw = deltaDecodePCM+ {-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee ByteString m (SummaryData (PCM Double)) #-} instance ZoomWrite (PCM Double) where@@ -177,6 +181,7 @@ instance ZoomWritable (PCM Double) where data SummaryWork (PCM Double) = SummaryWorkPCMDouble { swPCMDoubleTime :: {-# UNPACK #-}!TimeStamp+ , swPCMDoubleLast :: {-# UNPACK #-}!Double , swPCMDoubleMin :: {-# UNPACK #-}!Double , swPCMDoubleMax :: {-# UNPACK #-}!Double , swPCMDoubleSum :: {-# UNPACK #-}!Double@@ -189,6 +194,7 @@ toSummaryData = mkSummaryPCM updateSummaryData = updateSummaryPCM appendSummaryData = appendSummaryPCM+ deltaEncodeRaw = deltaEncodePCM instance ZoomPCM Double where pcmFromRaw = fromDouble@@ -199,6 +205,7 @@ pcmRMS = summaryPCMDoubleRMS pcmWorkTime = swPCMDoubleTime+ pcmWorkLast = swPCMDoubleLast pcmWorkMin = swPCMDoubleMin pcmWorkMax = swPCMDoubleMax pcmWorkSum = swPCMDoubleSum@@ -229,6 +236,7 @@ => TimeStamp -> SummaryWork (PCM a) initSummaryPCMFloat entry = pcmMkSummaryWork entry+ 0.0 floatMax (negate floatMax) 0.0
Data/ZoomCache/PCM/Int.hs view
@@ -99,7 +99,6 @@ import Data.ByteString (ByteString) import Data.Int import Data.Iteratee (Iteratee)-import Data.Word import Text.Printf import Data.ZoomCache.Codec@@ -125,7 +124,8 @@ prettyRaw = prettyPacketPCMInt prettySummaryData = prettySummaryPCMInt -{-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee [Word8] m (SummaryData (PCM Int)) #-}+ deltaDecodeRaw = deltaDecodePCM+ {-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee ByteString m (SummaryData (PCM Int)) #-} instance ZoomWrite (PCM Int) where@@ -137,6 +137,7 @@ instance ZoomWritable (PCM Int) where data SummaryWork (PCM Int) = SummaryWorkPCMInt { swPCMIntTime :: {-# UNPACK #-}!TimeStamp+ , swPCMIntLast :: {-# UNPACK #-}!Int , swPCMIntMin :: {-# UNPACK #-}!Int , swPCMIntMax :: {-# UNPACK #-}!Int , swPCMIntSum :: {-# UNPACK #-}!Double@@ -150,6 +151,7 @@ toSummaryData = mkSummaryPCM updateSummaryData = updateSummaryPCM appendSummaryData = appendSummaryPCM+ deltaEncodeRaw = deltaEncodePCM instance ZoomPCM Int where pcmFromRaw = fromIntegral32be@@ -160,6 +162,7 @@ pcmRMS = summaryIntRMS pcmWorkTime = swPCMIntTime+ pcmWorkLast = swPCMIntLast pcmWorkMin = swPCMIntMin pcmWorkMax = swPCMIntMax pcmWorkSum = swPCMIntSum@@ -193,7 +196,8 @@ prettyRaw = prettyPacketPCMInt prettySummaryData = prettySummaryPCMInt -{-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee [Word8] m (SummaryData (PCM Int8)) #-}+ deltaDecodeRaw = deltaDecodePCM+ {-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee ByteString m (SummaryData (PCM Int8)) #-} instance ZoomWrite (PCM Int8) where@@ -205,6 +209,7 @@ instance ZoomWritable (PCM Int8) where data SummaryWork (PCM Int8) = SummaryWorkPCMInt8 { swPCMInt8Time :: {-# UNPACK #-}!TimeStamp+ , swPCMInt8Last :: {-# UNPACK #-}!Int8 , swPCMInt8Min :: {-# UNPACK #-}!Int8 , swPCMInt8Max :: {-# UNPACK #-}!Int8 , swPCMInt8Sum :: {-# UNPACK #-}!Double@@ -218,6 +223,7 @@ toSummaryData = mkSummaryPCM updateSummaryData = updateSummaryPCM appendSummaryData = appendSummaryPCM+ deltaEncodeRaw = deltaEncodePCM instance ZoomPCM Int8 where pcmFromRaw = fromInt8@@ -228,6 +234,7 @@ pcmRMS = summaryInt8RMS pcmWorkTime = swPCMInt8Time+ pcmWorkLast = swPCMInt8Last pcmWorkMin = swPCMInt8Min pcmWorkMax = swPCMInt8Max pcmWorkSum = swPCMInt8Sum@@ -261,7 +268,8 @@ prettyRaw = prettyPacketPCMInt prettySummaryData = prettySummaryPCMInt -{-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee [Word8] m (SummaryData (PCM Int16)) #-}+ deltaDecodeRaw = deltaDecodePCM+ {-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee ByteString m (SummaryData (PCM Int16)) #-} instance ZoomWrite (PCM Int16) where@@ -273,6 +281,7 @@ instance ZoomWritable (PCM Int16) where data SummaryWork (PCM Int16) = SummaryWorkPCMInt16 { swPCMInt16Time :: {-# UNPACK #-}!TimeStamp+ , swPCMInt16Last :: {-# UNPACK #-}!Int16 , swPCMInt16Min :: {-# UNPACK #-}!Int16 , swPCMInt16Max :: {-# UNPACK #-}!Int16 , swPCMInt16Sum :: {-# UNPACK #-}!Double@@ -286,6 +295,7 @@ toSummaryData = mkSummaryPCM updateSummaryData = updateSummaryPCM appendSummaryData = appendSummaryPCM+ deltaEncodeRaw = deltaEncodePCM instance ZoomPCM Int16 where pcmFromRaw = fromInt16be@@ -296,6 +306,7 @@ pcmRMS = summaryInt16RMS pcmWorkTime = swPCMInt16Time+ pcmWorkLast = swPCMInt16Last pcmWorkMin = swPCMInt16Min pcmWorkMax = swPCMInt16Max pcmWorkSum = swPCMInt16Sum@@ -329,7 +340,8 @@ prettyRaw = prettyPacketPCMInt prettySummaryData = prettySummaryPCMInt -{-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee [Word8] m (SummaryData (PCM Int32)) #-}+ deltaDecodeRaw = deltaDecodePCM+ {-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee ByteString m (SummaryData (PCM Int32)) #-} instance ZoomWrite (PCM Int32) where@@ -341,6 +353,7 @@ instance ZoomWritable (PCM Int32) where data SummaryWork (PCM Int32) = SummaryWorkPCMInt32 { swPCMInt32Time :: {-# UNPACK #-}!TimeStamp+ , swPCMInt32Last :: {-# UNPACK #-}!Int32 , swPCMInt32Min :: {-# UNPACK #-}!Int32 , swPCMInt32Max :: {-# UNPACK #-}!Int32 , swPCMInt32Sum :: {-# UNPACK #-}!Double@@ -354,6 +367,7 @@ toSummaryData = mkSummaryPCM updateSummaryData = updateSummaryPCM appendSummaryData = appendSummaryPCM+ deltaEncodeRaw = deltaEncodePCM instance ZoomPCM Int32 where pcmFromRaw = fromIntegral32be@@ -364,6 +378,7 @@ pcmRMS = summaryInt32RMS pcmWorkTime = swPCMInt32Time+ pcmWorkLast = swPCMInt32Last pcmWorkMin = swPCMInt32Min pcmWorkMax = swPCMInt32Max pcmWorkSum = swPCMInt32Sum@@ -397,7 +412,8 @@ prettyRaw = prettyPacketPCMInt prettySummaryData = prettySummaryPCMInt -{-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee [Word8] m (SummaryData (PCM Int64)) #-}+ deltaDecodeRaw = deltaDecodePCM+ {-# SPECIALIZE readSummaryPCM :: (Functor m, Monad m) => Iteratee ByteString m (SummaryData (PCM Int64)) #-} instance ZoomWrite (PCM Int64) where@@ -409,6 +425,7 @@ instance ZoomWritable (PCM Int64) where data SummaryWork (PCM Int64) = SummaryWorkPCMInt64 { swPCMInt64Time :: {-# UNPACK #-}!TimeStamp+ , swPCMInt64Last :: {-# UNPACK #-}!Int64 , swPCMInt64Min :: {-# UNPACK #-}!Int64 , swPCMInt64Max :: {-# UNPACK #-}!Int64 , swPCMInt64Sum :: {-# UNPACK #-}!Double@@ -422,6 +439,7 @@ toSummaryData = mkSummaryPCM updateSummaryData = updateSummaryPCM appendSummaryData = appendSummaryPCM+ deltaEncodeRaw = deltaEncodePCM instance ZoomPCM Int64 where pcmFromRaw = fromInt64be@@ -432,6 +450,7 @@ pcmRMS = summaryInt64RMS pcmWorkTime = swPCMInt64Time+ pcmWorkLast = swPCMInt64Last pcmWorkMin = swPCMInt64Min pcmWorkMax = swPCMInt64Max pcmWorkSum = swPCMInt64Sum
Data/ZoomCache/PCM/Internal.hs view
@@ -10,26 +10,24 @@ , mkSummaryPCM , appendSummaryPCM , updateSummaryPCM+ , deltaDecodePCM+ , deltaEncodePCM ) where import Blaze.ByteString.Builder import Control.Applicative ((<$>)) import Control.Monad (replicateM)+import Data.ByteString (ByteString) import Data.Iteratee (Iteratee)-import qualified Data.Iteratee as I-import qualified Data.ListLike as LL import Data.Monoid-import Data.Word import Data.ZoomCache.Codec import Data.ZoomCache.PCM.Types ---------------------------------------------------------------------- -readSummaryPCM :: (I.Nullable s, LL.ListLike s Word8,- Functor m, Monad m,- ZoomPCM a)- => Iteratee s m (SummaryData (PCM a))+readSummaryPCM :: (Functor m, Monad m, ZoomPCM a)+ => Iteratee ByteString m (SummaryData (PCM a)) readSummaryPCM = do [mn,mx] <- replicateM 2 (unPCM <$> readRaw) [avg,rms] <- replicateM 2 readDouble64be@@ -45,7 +43,7 @@ initSummaryPCMBounded :: (Bounded a, ZoomPCM a) => TimeStamp -> SummaryWork (PCM a)-initSummaryPCMBounded entry = pcmMkSummaryWork entry maxBound minBound 0.0 0.0+initSummaryPCMBounded entry = pcmMkSummaryWork entry 0 maxBound minBound 0.0 0.0 {-# INLINEABLE initSummaryPCMBounded #-} mkSummaryPCM :: ZoomPCM a@@ -77,10 +75,19 @@ -> SummaryWork (PCM a) -> SummaryWork (PCM a) updateSummaryPCM t (PCM d) sw =- pcmMkSummaryWork t (min (pcmWorkMin sw) d)- (max (pcmWorkMax sw) d)- ((pcmWorkSum sw) + realToFrac (d * dur))- ((pcmWorkSumSq sw) + realToFrac (d*d * dur))+ pcmMkSummaryWork t d+ (min (pcmWorkMin sw) d)+ (max (pcmWorkMax sw) d)+ ((pcmWorkSum sw) + realToFrac (d * dur))+ ((pcmWorkSumSq sw) + realToFrac (d*d * dur)) where !dur = fromIntegral $ (unTS t) - (unTS (pcmWorkTime sw)) {-# INLINEABLE updateSummaryPCM #-}++deltaDecodePCM :: ZoomPCM a => [PCM a] -> [PCM a]+deltaDecodePCM = map PCM . deltaDecode . map unPCM+{-# INLINE deltaDecodePCM #-}++deltaEncodePCM :: ZoomPCM a => SummaryWork (PCM a) -> PCM a -> PCM a+deltaEncodePCM sw (PCM d) = PCM (d - pcmWorkLast sw)+{-# INLINE deltaEncodePCM #-}
Data/ZoomCache/PCM/Types.hs view
@@ -32,12 +32,13 @@ pcmRMS :: SummaryData (PCM a) -> Double pcmWorkTime :: SummaryWork (PCM a) -> TimeStamp+ pcmWorkLast :: SummaryWork (PCM a) -> a pcmWorkMin :: SummaryWork (PCM a) -> a pcmWorkMax :: SummaryWork (PCM a) -> a pcmWorkSum :: SummaryWork (PCM a) -> Double pcmWorkSumSq :: SummaryWork (PCM a) -> Double pcmMkSummary :: a -> a -> Double -> Double -> SummaryData (PCM a)- pcmMkSummaryWork :: TimeStamp -> a -> a -> Double -> Double+ pcmMkSummaryWork :: TimeStamp -> a -> a -> a -> Double -> Double -> SummaryWork (PCM a)
zoom-cache-pcm.cabal view
@@ -3,7 +3,7 @@ -- The package version. See the Haskell package versioning policy -- (http://www.haskell.org/haskellwiki/Package_versioning_policy) for -- standards guiding when and how versions should be incremented.-Version: 0.1.1.0+Version: 0.2.0.0 Synopsis: Library for zoom-cache PCM audio codecs @@ -48,7 +48,7 @@ containers >= 0.2 && < 0.5, iteratee >= 0.8.6.0 && < 0.9, ListLike >= 1.0 && < 4,- zoom-cache >= 0.6.0.0 && < 0.7+ zoom-cache >= 0.7.0.0 && < 0.8 Exposed-modules: Data.ZoomCache.PCM