module Sound.Iteratee.Codecs (
module Sound.Iteratee.Codecs.Wave,
getWriter,
Codec (..),
getCodec
)
where
import Sound.Iteratee.Base
import Sound.Iteratee.Codecs.Wave
import Sound.Iteratee.Codecs.Raw
import Data.MutableIter
import qualified Data.MutableIter.IOBuffer as IB
getWriter ::
SupportedFileFormat
-> FilePath
-> AudioFormat
-> MIteratee (IB.IOBuffer r Double) AudioMonad ()
getWriter Wave = writeWave
getWriter Raw = error "No writer defined for Raw format"
data Codec = forall a. WritableAudio a => Codec a
instance WritableAudio Codec where
emptyState (Codec a) = emptyState a
initState (Codec a) = initState a
supportedBitDepths (Codec a) = supportedBitDepths a
fileType (Codec a) = fileType a
getCodec :: SupportedFileFormat -> Codec
getCodec Wave = Codec WaveCodec
getCodec Raw = Codec RawCodec