ebml-0.1.0.0: src/Codec/EBML/Header.hs
-- | Header schema definition, see: https://github.com/ietf-wg-cellar/ebml-specification/blob/master/specification.markdown#ebml-header-elements
module Codec.EBML.Header where
import Data.Text (Text)
import Codec.EBML.Element
import Codec.EBML.Get
import Codec.EBML.Schema
schemaHeader :: [EBMLSchema]
schemaHeader =
[ EBMLSchema "EBML" 0x1A45DFA3 getRoot
, EBMLSchema "DocType" 0x4282 (const getText)
, EBMLSchema "Segment" 0x18538067 getRoot
, EBMLSchema "Info" 0x1549A966 getRoot
, EBMLSchema "Cluster" 0x1F43B675 getRoot
]
<> map fromUints uints
fromUints :: (Text, EBMLID) -> EBMLSchema
fromUints (n, i) = EBMLSchema n i (const getUnsignedInteger)
uints :: [(Text, EBMLID)]
uints =
[ ("EBMLVersion", 0x4286)
, ("EBMLReadVersion", 0x42F7)
, ("EBMLMaxIDLength", 0x42F2)
, ("EBMLMaxSizeLength", 0x42F3)
, ("DocTypeVersion", 0x4287)
, ("DocTypeReadVersion", 0x4285)
, ("TimestampScale", 0x2AD7B1)
, ("Timestamp", 0xE7)
]