module Data.ByteString.IsoBaseFileFormat.Boxes.MetaDataSampleEntry where
import Data.ByteString.IsoBaseFileFormat.Boxes.Box
import Data.ByteString.IsoBaseFileFormat.Boxes.BoxFields
import Data.ByteString.IsoBaseFileFormat.Boxes.FullBox
import Data.ByteString.IsoBaseFileFormat.Boxes.Handler
import Data.ByteString.IsoBaseFileFormat.Boxes.SampleEntry
import qualified Data.Text as T
import qualified Data.ByteString as B
import Data.Tagged ()
import Data.Default ()
metaDataSampleEntry ::
MetaDataCoding c
-> U16 "data_reference_index"
-> SampleEntry 'TimedMetaDataTrack (MetaDataCoding c)
-> Box (SampleEntry 'TimedMetaDataTrack (MetaDataCoding c))
metaDataSampleEntry _ = sampleEntry
type instance BoxTypeSymbol (MetaDataCoding c) = c
data family MetaDataCoding (c :: Symbol)
newtype instance MetaDataCoding "metx" =
XMLMetaDataSampleEntry
( Tagged "content_encoding" T.Text
:+ Tagged "namespace" T.Text
:+ Tagged "schema_location" T.Text
:+ Maybe (Box BitRate))
deriving (IsBoxContent, Default)
newtype instance MetaDataCoding "mett" =
TextMetaDataSampleEntry
( Tagged "content_encoding" T.Text
:+ Tagged "mime_format" T.Text
:+ Maybe (Box BitRate))
deriving (IsBoxContent, Default)
newtype instance MetaDataCoding "urim" =
UriMetaDataSampleEntry
( Tagged "the_label" (Box Uri)
:+ Tagged "init" (Maybe (Box UriInit))
:+ Maybe (Box BitRate))
deriving (IsBoxContent, Default)
type Uri = FullBox UriField 0
newtype UriField =
UriField (Tagged "theURI" T.Text)
deriving (Default, IsBoxContent)
uriBox :: T.Text -> Box Uri
uriBox t = fullBox 0 (UriField (Tagged t))
type instance BoxTypeSymbol UriField = "uri "
instance IsBox UriField
newtype UriInitField =
UriInitField (Tagged "uri_initialization_data" B.ByteString)
deriving (Default, IsBoxContent)
type UriInit = FullBox UriInitField 0
uriInitBox :: B.ByteString -> Box UriInit
uriInitBox = fullBox 0 . UriInitField . Tagged
type instance BoxTypeSymbol UriInitField = "uriI"
instance IsBox UriInitField
bitRateBox :: BitRate -> Box BitRate
bitRateBox = Box
newtype BitRate =
BitRate (U32 "bufferSizeDB" :+ U32 "maxBitrate" :+ U32 "avgBitrate")
deriving (Default, IsBoxContent)
type instance BoxTypeSymbol BitRate = "btrt"
instance IsBox BitRate