-- | Media-independent properties of a tracks media content. module Data.ByteString.IsoBaseFileFormat.Boxes.SpecificMediaHeader where import Data.ByteString.IsoBaseFileFormat.Boxes.Box import Data.ByteString.IsoBaseFileFormat.Boxes.BoxFields import Data.ByteString.IsoBaseFileFormat.Boxes.FullBox import Data.Default -- * Videos -- | Video header data box. newtype VideoMediaHeader where VideoMediaHeader :: Template (U16 "graphicsmode") 0 :+ Template (U16Arr "opcolor" 3) '[0,0,0] -> VideoMediaHeader deriving (Default, IsBoxContent) -- | Create a video media header data box. videoMediaHeader :: VideoMediaHeader -> Box (FullBox VideoMediaHeader 0) videoMediaHeader = fullBox 1 instance IsBox VideoMediaHeader type instance BoxTypeSymbol VideoMediaHeader = "vmhd" -- * Sounds -- | Sound header data box. newtype SoundMediaHeader where SoundMediaHeader :: Template (I16 "balance") 0 :+ Constant (U16 "reserved") 0 -> SoundMediaHeader deriving (Default, IsBoxContent) -- | Create a sound media header data box. soundMediaHeader :: SoundMediaHeader -> Box (FullBox SoundMediaHeader 0) soundMediaHeader = fullBox 0 instance IsBox SoundMediaHeader type instance BoxTypeSymbol SoundMediaHeader = "smhd" -- * Hints -- | Hint data box. newtype HintMediaHeader where HintMediaHeader :: U16 "maxPDUsize" :+ U16 "avgPDUsize" :+ U16 "maxbitrate" :+ U16 "avgbitrate" :+ U32 "reserved" -> HintMediaHeader deriving (Default, IsBoxContent) -- | Create a hint media header data box. hintMediaHeader :: HintMediaHeader -> Box (FullBox HintMediaHeader 0) hintMediaHeader = fullBox 0 instance IsBox HintMediaHeader type instance BoxTypeSymbol HintMediaHeader = "hmhd" -- * Dummy/Null media -- | Null header data box. data NullMediaHeader = NullMediaHeader -- | Create a null media header data box. nullMediaHeader :: Box (FullBox NullMediaHeader 0) nullMediaHeader = fullBox 0 NullMediaHeader instance IsBox NullMediaHeader type instance BoxTypeSymbol NullMediaHeader = "nmhd" instance Default NullMediaHeader where def = NullMediaHeader instance IsBoxContent NullMediaHeader where boxSize _ = 0 boxBuilder _ = mempty