module Data.ByteString.IsoBaseFileFormat.Boxes.MetaDataSampleEntry where
import Data.ByteString.IsoBaseFileFormat.Box
import Data.ByteString.IsoBaseFileFormat.Util.BoxFields
import Data.ByteString.IsoBaseFileFormat.Util.FullBox
import Data.ByteString.IsoBaseFileFormat.Boxes.Handler
import qualified Data.Text as T
import qualified Data.ByteString as B
import Data.Tagged ()
import Data.Default ()
import Data.ByteString.IsoBaseFileFormat.ReExports
type instance GetHandlerType (MetaDataCoding c) = 'TimedMetaDataTrack
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