module Data.ByteString.IsoBaseFileFormat.Boxes.ProgressiveDownloadInformation where

import Data.ByteString.IsoBaseFileFormat.Box
import Data.ByteString.IsoBaseFileFormat.Util.BoxContent
import Data.ByteString.IsoBaseFileFormat.Util.BoxFields
import Data.ByteString.IsoBaseFileFormat.Util.FullBox

-- | A Box with progressive download information
data ProgressiveDownload

instance IsBox ProgressiveDownload where
  type BoxContent ProgressiveDownload = ProgressiveDownloadContent

type instance BoxTypeSymbol ProgressiveDownload = "pdin"

-- | Information for progressive media data download/playback encompasses the
-- delay for initial playback and expected download bit rate.
type ProgressiveDownloadContent = U32 "rate" :+ U32 "delay"

-- | Construct a @pdin@ box.
pdinBox ::
  ProgressiveDownloadContent ->
  Box (FullBox ProgressiveDownload 0)
pdinBox = fullBox 0
