module Data.ByteString.IsoBaseFileFormat.Boxes.SampleSize where
import Data.ByteString.IsoBaseFileFormat.Box
import Data.ByteString.IsoBaseFileFormat.Util.FullBox
import Data.ByteString.IsoBaseFileFormat.ReExports
type SampleSize = FullBox SampleSizeTable 0
fixedSampleSize :: Word32 -> Word32 -> Box SampleSize
fixedSampleSize sampleSize sampleCount =
fullBox 0 $ FixedSampleSize sampleSize sampleCount
individualSampleSizes :: [Word32] -> Box SampleSize
individualSampleSizes sampleSizes =
fullBox 0 $
SampleSizeTable (ListContent sampleSizes)
data SampleSizeTable =
FixedSampleSize { sampleSize :: !Word32, sampleCount :: !Word32 }
| SampleSizeTable !(ListContent Word32 Word32)
instance IsBox SampleSizeTable
type instance BoxTypeSymbol SampleSizeTable = "stsz"
instance IsBoxContent SampleSizeTable where
boxSize (FixedSampleSize _ _) = 8
boxSize (SampleSizeTable entries) = 4 + boxSize entries
boxBuilder (FixedSampleSize size count) = word32BE size <> word32BE count
boxBuilder (SampleSizeTable entries) = word32BE 0 <> boxBuilder entries