module Data.ByteString.IsoBaseFileFormat.Boxes.AudioSampleEntry where
import Data.ByteString.IsoBaseFileFormat.Boxes.Box
import Data.ByteString.IsoBaseFileFormat.Boxes.BoxFields
import Data.ByteString.IsoBaseFileFormat.Boxes.Handler
import Data.ByteString.IsoBaseFileFormat.Boxes.SampleEntry
audioSampleEntry ::
(KnownSymbol
(BoxTypeSymbol (SampleEntry 'AudioTrack (AudioCoding c))))
=> AudioCoding c
-> U16 "data_reference_index"
-> SampleEntry 'AudioTrack (AudioCoding c)
-> Box (SampleEntry 'AudioTrack (AudioCoding c))
audioSampleEntry _ = sampleEntry
newtype instance SampleEntry 'AudioTrack (AudioCoding c) 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)
-> SampleEntry 'AudioTrack (AudioCoding c)
deriving (IsBoxContent, Default)
type DefaultSoundSamplerate = 48000
data family AudioCoding (c :: Symbol)
data instance AudioCoding "mp4a" = Mpeg4Aac
type instance BoxTypeSymbol (AudioCoding c) = c