isobmff-builder-0.10.0.0: src/Data/ByteString/IsoBaseFileFormat/Boxes/Handler.hs
-- | A 'Handler' box describes how a track is presentation and by which sensory
-- process it is perceived, e.g. audio, video, text, see 'HandlerType'
module Data.ByteString.IsoBaseFileFormat.Boxes.Handler where
import Data.ByteString.IsoBaseFileFormat.Boxes.Box
import Data.ByteString.IsoBaseFileFormat.Boxes.BoxFields
import Data.ByteString.IsoBaseFileFormat.Boxes.FullBox
import Data.Default
import qualified Data.Text as T
-- | Handler box fields. A handler box may also contain a null terminated
-- description text in UTF-8.
newtype Handler where
Handler :: Constant (U32 "pre_defined") 0
:+ HandlerType
:+ Constant (U32Arr "reserved" 3) '[0,0,0]
:+ Template T.Text ""
-> Handler
deriving (IsBoxContent, Default)
-- | A 'Handler' can be exactly one of these.
data HandlerType =
VideoTrack
| AudioTrack
| HintTrack
| TimedMetadataTrack
| AuxilliaryVideoTrack
-- | Create a 'Handler' box.
handler
:: Handler -> Box (FullBox Handler 0)
handler = fullBox 0
instance IsBox Handler where
type BoxContent Handler = Handler
type instance BoxTypeSymbol Handler = "hdlr"
instance Default HandlerType where
def = AudioTrack
instance IsBoxContent HandlerType where
boxSize _ = 4
boxBuilder VideoTrack = boxBuilder (FourCc ('v','i','d','e'))
boxBuilder AudioTrack = boxBuilder (FourCc ('s','o','u','n'))
boxBuilder HintTrack = boxBuilder (FourCc ('h','i','n','t'))
boxBuilder TimedMetadataTrack = boxBuilder (FourCc ('m','e','t','a'))
boxBuilder AuxilliaryVideoTrack = boxBuilder (FourCc ('a','u','x','v'))