-- | Detailed audio sample description. module Data.ByteString.IsoBaseFileFormat.Boxes.AudioSampleEntry where import Data.ByteString.IsoBaseFileFormat.Box import Data.ByteString.IsoBaseFileFormat.Util.BoxFields import Data.ByteString.IsoBaseFileFormat.Boxes.Handler import Data.ByteString.IsoBaseFileFormat.ReExports -- | Fields of audio sample entries newtype AudioSampleEntry b where AudioSampleEntry :: Constant (U32Arr "reserved" 2) '[0,0] :+ Template (U16 "channelcount") 2 :+ Template (U16 "samplesize") 16 :+ U16 "pre_defined" :+ Constant (U16 "reserved") 0 :+ Template (U32 "samplerate") (DefaultSoundSamplerate * 65536) -- TODO implement fix point integer :+ b -> AudioSampleEntry b deriving (Default, IsBoxContent) instance Functor AudioSampleEntry where fmap fun (AudioSampleEntry (a :+ b :+ c :+ d :+ e :+ f :+ x)) = AudioSampleEntry (a :+ b :+ c :+ d :+ e :+ f :+ fun x) type DefaultSoundSamplerate = 48000 type instance GetHandlerType (AudioSampleEntry b) = 'AudioTrack type instance BoxTypeSymbol (AudioSampleEntry b) = BoxTypeSymbol b