module Codec.EBML.Matroska where
import Data.Text (Text)
import Codec.EBML.Decoder
import Codec.EBML.Element
import Codec.EBML.Schema
schemaHeader :: [EBMLSchema]
=
[ Text
-> EBMLID
-> (EBMLSchemas -> EBMLElementHeader -> Get EBMLValue)
-> EBMLSchema
EBMLSchema Text
"EBML" EBMLID
0x1A45DFA3 EBMLSchemas -> EBMLElementHeader -> Get EBMLValue
getRoot
, Text
-> EBMLID
-> (EBMLSchemas -> EBMLElementHeader -> Get EBMLValue)
-> EBMLSchema
EBMLSchema Text
"DocType" EBMLID
0x4282 (forall a b. a -> b -> a
const EBMLElementHeader -> Get EBMLValue
getText)
, Text
-> EBMLID
-> (EBMLSchemas -> EBMLElementHeader -> Get EBMLValue)
-> EBMLSchema
EBMLSchema Text
"Segment" EBMLID
0x18538067 EBMLSchemas -> EBMLElementHeader -> Get EBMLValue
getRoot
, Text
-> EBMLID
-> (EBMLSchemas -> EBMLElementHeader -> Get EBMLValue)
-> EBMLSchema
EBMLSchema Text
"Info" EBMLID
0x1549A966 EBMLSchemas -> EBMLElementHeader -> Get EBMLValue
getRoot
, Text
-> EBMLID
-> (EBMLSchemas -> EBMLElementHeader -> Get EBMLValue)
-> EBMLSchema
EBMLSchema Text
"Cluster" EBMLID
0x1F43B675 EBMLSchemas -> EBMLElementHeader -> Get EBMLValue
getRoot
]
forall a. Semigroup a => a -> a -> a
<> forall a b. (a -> b) -> [a] -> [b]
map (Text, EBMLID) -> EBMLSchema
fromUints [(Text, EBMLID)]
uints
fromUints :: (Text, EBMLID) -> EBMLSchema
fromUints :: (Text, EBMLID) -> EBMLSchema
fromUints (Text
n, EBMLID
i) = Text
-> EBMLID
-> (EBMLSchemas -> EBMLElementHeader -> Get EBMLValue)
-> EBMLSchema
EBMLSchema Text
n EBMLID
i (forall a b. a -> b -> a
const EBMLElementHeader -> Get EBMLValue
getUnsignedInteger)
uints :: [(Text, EBMLID)]
uints :: [(Text, EBMLID)]
uints =
[ (Text
"EBMLVersion", EBMLID
0x4286)
, (Text
"EBMLReadVersion", EBMLID
0x42F7)
, (Text
"EBMLMaxIDLength", EBMLID
0x42F2)
, (Text
"EBMLMaxSizeLength", EBMLID
0x42F3)
, (Text
"DocTypeVersion", EBMLID
0x4287)
, (Text
"DocTypeReadVersion", EBMLID
0x4285)
, (Text
"TimestampScale", EBMLID
0x2AD7B1)
, (Text
"Timestamp", EBMLID
0xE7)
]