-- | Overall duration of fragmented media.
module Data.ByteString.IsoBaseFileFormat.Boxes.MovieExtendsHeader where

import Data.ByteString.IsoBaseFileFormat.Box
import Data.ByteString.IsoBaseFileFormat.Util.BoxFields
import Data.ByteString.IsoBaseFileFormat.Util.FullBox
import Data.ByteString.IsoBaseFileFormat.Util.Versioned
import Data.ByteString.IsoBaseFileFormat.ReExports

-- * @mehd@ Box

-- | Construct a 'MovieHeader' box.
movieExtendsHeader
  :: (KnownNat version)
  => MovieExtendsHeader version -> Box (FullBox (MovieExtendsHeader version) version)
movieExtendsHeader = fullBox 0

-- | Movie length incorporating all fragments.
newtype MovieExtendsHeader (version :: Nat) where
        MovieExtendsHeader ::
          Versioned (U32 "fragment_duration") (U64 "fragment_duration") version
            -> MovieExtendsHeader version
    deriving (IsBoxContent)

instance IsBox (MovieExtendsHeader version)

type instance BoxTypeSymbol (MovieExtendsHeader v) = "mehd"