logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git

0001-Add-generated-ebml-sources.patch (42195B)


  1. From 500b8f9510babd4e5d2d9cd35af689617946a1d9 Mon Sep 17 00:00:00 2001
  2. From: Michael Forney <mforney@mforney.org>
  3. Date: Wed, 14 Aug 2024 20:07:19 -0700
  4. Subject: [PATCH] Add generated ebml sources
  5. These require python to generate.
  6. $ python TOOLS/matroska.py --generate-header ebml_types.h
  7. $ python TOOLS/matroska.py --generate-definitions ebml_defs.inc
  8. ---
  9. ebml_defs.inc | 595 +++++++++++++++++++++++++++++++++++++++++++++
  10. ebml_types.h | 658 ++++++++++++++++++++++++++++++++++++++++++++++++++
  11. 2 files changed, 1253 insertions(+)
  12. create mode 100644 ebml_defs.inc
  13. create mode 100644 ebml_types.h
  14. diff --git a/ebml_defs.inc b/ebml_defs.inc
  15. new file mode 100644
  16. index 0000000000..da65194639
  17. --- /dev/null
  18. +++ b/ebml_defs.inc
  19. @@ -0,0 +1,595 @@
  20. +// Generated by TOOLS/matroska.py, do not edit manually
  21. +
  22. +
  23. +E("TagDefault", tag_default, EBML_TYPE_UINT)
  24. +
  25. +E("TagString", tag_string, EBML_TYPE_STR)
  26. +
  27. +E("TagLanguageBCP47", tag_language_bcp47, EBML_TYPE_STR)
  28. +
  29. +E("TagLanguage", tag_language, EBML_TYPE_STR)
  30. +
  31. +E("TagName", tag_name, EBML_TYPE_STR)
  32. +
  33. +#define N simple_tag
  34. +E_S("SimpleTag", 5)
  35. +F(MATROSKA_ID_TAGNAME, tag_name, 0)
  36. +F(MATROSKA_ID_TAGLANGUAGE, tag_language, 0)
  37. +F(MATROSKA_ID_TAGLANGUAGEBCP47, tag_language_bcp47, 0)
  38. +F(MATROSKA_ID_TAGSTRING, tag_string, 0)
  39. +F(MATROSKA_ID_TAGDEFAULT, tag_default, 0)
  40. +}};
  41. +#undef N
  42. +
  43. +E("TargetAttachmentUID", target_attachment_uid, EBML_TYPE_UINT)
  44. +
  45. +E("TargetChapterUID", target_chapter_uid, EBML_TYPE_UINT)
  46. +
  47. +E("TargetEditionUID", target_edition_uid, EBML_TYPE_UINT)
  48. +
  49. +E("TargetTrackUID", target_track_uid, EBML_TYPE_UINT)
  50. +
  51. +E("TargetType", target_type, EBML_TYPE_STR)
  52. +
  53. +E("TargetTypeValue", target_type_value, EBML_TYPE_UINT)
  54. +
  55. +#define N targets
  56. +E_S("Targets", 6)
  57. +F(MATROSKA_ID_TARGETTYPEVALUE, target_type_value, 0)
  58. +F(MATROSKA_ID_TARGETTYPE, target_type, 0)
  59. +F(MATROSKA_ID_TARGETTRACKUID, target_track_uid, 0)
  60. +F(MATROSKA_ID_TARGETEDITIONUID, target_edition_uid, 0)
  61. +F(MATROSKA_ID_TARGETCHAPTERUID, target_chapter_uid, 0)
  62. +F(MATROSKA_ID_TARGETATTACHMENTUID, target_attachment_uid, 0)
  63. +}};
  64. +#undef N
  65. +
  66. +#define N tag
  67. +E_S("Tag", 2)
  68. +F(MATROSKA_ID_TARGETS, targets, 0)
  69. +F(MATROSKA_ID_SIMPLETAG, simple_tag, 1)
  70. +}};
  71. +#undef N
  72. +
  73. +#define N tags
  74. +E_S("Tags", 1)
  75. +F(MATROSKA_ID_TAG, tag, 1)
  76. +}};
  77. +#undef N
  78. +
  79. +E("ChapCountry", chap_country, EBML_TYPE_STR)
  80. +
  81. +E("ChapLanguageBCP47", chap_language_bcp47, EBML_TYPE_STR)
  82. +
  83. +E("ChapLanguage", chap_language, EBML_TYPE_STR)
  84. +
  85. +E("ChapString", chap_string, EBML_TYPE_STR)
  86. +
  87. +#define N chapter_display
  88. +E_S("ChapterDisplay", 4)
  89. +F(MATROSKA_ID_CHAPSTRING, chap_string, 0)
  90. +F(MATROSKA_ID_CHAPLANGUAGE, chap_language, 1)
  91. +F(MATROSKA_ID_CHAPLANGUAGEBCP47, chap_language_bcp47, 1)
  92. +F(MATROSKA_ID_CHAPCOUNTRY, chap_country, 1)
  93. +}};
  94. +#undef N
  95. +
  96. +E("ChapterSegmentEditionUID", chapter_segment_edition_uid, EBML_TYPE_UINT)
  97. +
  98. +E("ChapterSegmentUID", chapter_segment_uid, EBML_TYPE_BINARY)
  99. +
  100. +E("ChapterFlagEnabled", chapter_flag_enabled, EBML_TYPE_UINT)
  101. +
  102. +E("ChapterFlagHidden", chapter_flag_hidden, EBML_TYPE_UINT)
  103. +
  104. +E("ChapterTimeEnd", chapter_time_end, EBML_TYPE_UINT)
  105. +
  106. +E("ChapterTimeStart", chapter_time_start, EBML_TYPE_UINT)
  107. +
  108. +E("ChapterUID", chapter_uid, EBML_TYPE_UINT)
  109. +
  110. +#define N chapter_atom
  111. +E_S("ChapterAtom", 8)
  112. +F(MATROSKA_ID_CHAPTERUID, chapter_uid, 0)
  113. +F(MATROSKA_ID_CHAPTERTIMESTART, chapter_time_start, 0)
  114. +F(MATROSKA_ID_CHAPTERTIMEEND, chapter_time_end, 0)
  115. +F(MATROSKA_ID_CHAPTERFLAGHIDDEN, chapter_flag_hidden, 0)
  116. +F(MATROSKA_ID_CHAPTERFLAGENABLED, chapter_flag_enabled, 0)
  117. +F(MATROSKA_ID_CHAPTERSEGMENTUID, chapter_segment_uid, 0)
  118. +F(MATROSKA_ID_CHAPTERSEGMENTEDITIONUID, chapter_segment_edition_uid, 0)
  119. +F(MATROSKA_ID_CHAPTERDISPLAY, chapter_display, 1)
  120. +}};
  121. +#undef N
  122. +
  123. +E("EditionFlagOrdered", edition_flag_ordered, EBML_TYPE_UINT)
  124. +
  125. +E("EditionFlagDefault", edition_flag_default, EBML_TYPE_UINT)
  126. +
  127. +E("EditionFlagHidden", edition_flag_hidden, EBML_TYPE_UINT)
  128. +
  129. +E("EditionUID", edition_uid, EBML_TYPE_UINT)
  130. +
  131. +#define N edition_entry
  132. +E_S("EditionEntry", 5)
  133. +F(MATROSKA_ID_EDITIONUID, edition_uid, 0)
  134. +F(MATROSKA_ID_EDITIONFLAGHIDDEN, edition_flag_hidden, 0)
  135. +F(MATROSKA_ID_EDITIONFLAGDEFAULT, edition_flag_default, 0)
  136. +F(MATROSKA_ID_EDITIONFLAGORDERED, edition_flag_ordered, 0)
  137. +F(MATROSKA_ID_CHAPTERATOM, chapter_atom, 1)
  138. +}};
  139. +#undef N
  140. +
  141. +#define N chapters
  142. +E_S("Chapters", 1)
  143. +F(MATROSKA_ID_EDITIONENTRY, edition_entry, 1)
  144. +}};
  145. +#undef N
  146. +
  147. +E("FileUID", file_uid, EBML_TYPE_UINT)
  148. +
  149. +E("FileData", file_data, EBML_TYPE_BINARY)
  150. +
  151. +E("FileMimeType", file_mime_type, EBML_TYPE_STR)
  152. +
  153. +E("FileName", file_name, EBML_TYPE_STR)
  154. +
  155. +E("FileDescription", file_description, EBML_TYPE_STR)
  156. +
  157. +#define N attached_file
  158. +E_S("AttachedFile", 5)
  159. +F(MATROSKA_ID_FILEDESCRIPTION, file_description, 0)
  160. +F(MATROSKA_ID_FILENAME, file_name, 0)
  161. +F(MATROSKA_ID_FILEMIMETYPE, file_mime_type, 0)
  162. +F(MATROSKA_ID_FILEDATA, file_data, 0)
  163. +F(MATROSKA_ID_FILEUID, file_uid, 0)
  164. +}};
  165. +#undef N
  166. +
  167. +#define N attachments
  168. +E_S("Attachments", 1)
  169. +F(MATROSKA_ID_ATTACHEDFILE, attached_file, 1)
  170. +}};
  171. +#undef N
  172. +
  173. +E("CueDuration", cue_duration, EBML_TYPE_UINT)
  174. +
  175. +E("CueRelativePosition", cue_relative_position, EBML_TYPE_UINT)
  176. +
  177. +E("CueClusterPosition", cue_cluster_position, EBML_TYPE_UINT)
  178. +
  179. +E("CueTrack", cue_track, EBML_TYPE_UINT)
  180. +
  181. +#define N cue_track_positions
  182. +E_S("CueTrackPositions", 4)
  183. +F(MATROSKA_ID_CUETRACK, cue_track, 0)
  184. +F(MATROSKA_ID_CUECLUSTERPOSITION, cue_cluster_position, 0)
  185. +F(MATROSKA_ID_CUERELATIVEPOSITION, cue_relative_position, 0)
  186. +F(MATROSKA_ID_CUEDURATION, cue_duration, 0)
  187. +}};
  188. +#undef N
  189. +
  190. +E("CueTime", cue_time, EBML_TYPE_UINT)
  191. +
  192. +#define N cue_point
  193. +E_S("CuePoint", 2)
  194. +F(MATROSKA_ID_CUETIME, cue_time, 0)
  195. +F(MATROSKA_ID_CUETRACKPOSITIONS, cue_track_positions, 1)
  196. +}};
  197. +#undef N
  198. +
  199. +#define N cues
  200. +E_S("Cues", 1)
  201. +F(MATROSKA_ID_CUEPOINT, cue_point, 1)
  202. +}};
  203. +#undef N
  204. +
  205. +E("ContentCompSettings", content_comp_settings, EBML_TYPE_BINARY)
  206. +
  207. +E("ContentCompAlgo", content_comp_algo, EBML_TYPE_UINT)
  208. +
  209. +#define N content_compression
  210. +E_S("ContentCompression", 2)
  211. +F(MATROSKA_ID_CONTENTCOMPALGO, content_comp_algo, 0)
  212. +F(MATROSKA_ID_CONTENTCOMPSETTINGS, content_comp_settings, 0)
  213. +}};
  214. +#undef N
  215. +
  216. +E("ContentEncodingType", content_encoding_type, EBML_TYPE_UINT)
  217. +
  218. +E("ContentEncodingScope", content_encoding_scope, EBML_TYPE_UINT)
  219. +
  220. +E("ContentEncodingOrder", content_encoding_order, EBML_TYPE_UINT)
  221. +
  222. +#define N content_encoding
  223. +E_S("ContentEncoding", 4)
  224. +F(MATROSKA_ID_CONTENTENCODINGORDER, content_encoding_order, 0)
  225. +F(MATROSKA_ID_CONTENTENCODINGSCOPE, content_encoding_scope, 0)
  226. +F(MATROSKA_ID_CONTENTENCODINGTYPE, content_encoding_type, 0)
  227. +F(MATROSKA_ID_CONTENTCOMPRESSION, content_compression, 0)
  228. +}};
  229. +#undef N
  230. +
  231. +#define N content_encodings
  232. +E_S("ContentEncodings", 1)
  233. +F(MATROSKA_ID_CONTENTENCODING, content_encoding, 1)
  234. +}};
  235. +#undef N
  236. +
  237. +E("BitDepth", bit_depth, EBML_TYPE_UINT)
  238. +
  239. +E("Channels", channels, EBML_TYPE_UINT)
  240. +
  241. +E("OutputSamplingFrequency", output_sampling_frequency, EBML_TYPE_FLOAT)
  242. +
  243. +E("SamplingFrequency", sampling_frequency, EBML_TYPE_FLOAT)
  244. +
  245. +#define N audio
  246. +E_S("Audio", 4)
  247. +F(MATROSKA_ID_SAMPLINGFREQUENCY, sampling_frequency, 0)
  248. +F(MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY, output_sampling_frequency, 0)
  249. +F(MATROSKA_ID_CHANNELS, channels, 0)
  250. +F(MATROSKA_ID_BITDEPTH, bit_depth, 0)
  251. +}};
  252. +#undef N
  253. +
  254. +E("ProjectionPoseRoll", projection_pose_roll, EBML_TYPE_FLOAT)
  255. +
  256. +E("ProjectionPosePitch", projection_pose_pitch, EBML_TYPE_FLOAT)
  257. +
  258. +E("ProjectionPoseYaw", projection_pose_yaw, EBML_TYPE_FLOAT)
  259. +
  260. +E("ProjectionPrivate", projection_private, EBML_TYPE_BINARY)
  261. +
  262. +E("ProjectionType", projection_type, EBML_TYPE_UINT)
  263. +
  264. +#define N projection
  265. +E_S("Projection", 5)
  266. +F(MATROSKA_ID_PROJECTIONTYPE, projection_type, 0)
  267. +F(MATROSKA_ID_PROJECTIONPRIVATE, projection_private, 0)
  268. +F(MATROSKA_ID_PROJECTIONPOSEYAW, projection_pose_yaw, 0)
  269. +F(MATROSKA_ID_PROJECTIONPOSEPITCH, projection_pose_pitch, 0)
  270. +F(MATROSKA_ID_PROJECTIONPOSEROLL, projection_pose_roll, 0)
  271. +}};
  272. +#undef N
  273. +
  274. +E("LuminanceMin", luminance_min, EBML_TYPE_FLOAT)
  275. +
  276. +E("LuminanceMax", luminance_max, EBML_TYPE_FLOAT)
  277. +
  278. +E("WhitePointChromaticityY", white_point_chromaticity_y, EBML_TYPE_FLOAT)
  279. +
  280. +E("WhitePointChromaticityX", white_point_chromaticity_x, EBML_TYPE_FLOAT)
  281. +
  282. +E("PrimaryBChromaticityY", primary_b_chromaticity_y, EBML_TYPE_FLOAT)
  283. +
  284. +E("PrimaryBChromaticityX", primary_b_chromaticity_x, EBML_TYPE_FLOAT)
  285. +
  286. +E("PrimaryGChromaticityY", primary_g_chromaticity_y, EBML_TYPE_FLOAT)
  287. +
  288. +E("PrimaryGChromaticityX", primary_g_chromaticity_x, EBML_TYPE_FLOAT)
  289. +
  290. +E("PrimaryRChromaticityY", primary_r_chromaticity_y, EBML_TYPE_FLOAT)
  291. +
  292. +E("PrimaryRChromaticityX", primary_r_chromaticity_x, EBML_TYPE_FLOAT)
  293. +
  294. +#define N mastering_metadata
  295. +E_S("MasteringMetadata", 10)
  296. +F(MATROSKA_ID_PRIMARYRCHROMATICITYX, primary_r_chromaticity_x, 0)
  297. +F(MATROSKA_ID_PRIMARYRCHROMATICITYY, primary_r_chromaticity_y, 0)
  298. +F(MATROSKA_ID_PRIMARYGCHROMATICITYX, primary_g_chromaticity_x, 0)
  299. +F(MATROSKA_ID_PRIMARYGCHROMATICITYY, primary_g_chromaticity_y, 0)
  300. +F(MATROSKA_ID_PRIMARYBCHROMATICITYX, primary_b_chromaticity_x, 0)
  301. +F(MATROSKA_ID_PRIMARYBCHROMATICITYY, primary_b_chromaticity_y, 0)
  302. +F(MATROSKA_ID_WHITEPOINTCHROMATICITYX, white_point_chromaticity_x, 0)
  303. +F(MATROSKA_ID_WHITEPOINTCHROMATICITYY, white_point_chromaticity_y, 0)
  304. +F(MATROSKA_ID_LUMINANCEMAX, luminance_max, 0)
  305. +F(MATROSKA_ID_LUMINANCEMIN, luminance_min, 0)
  306. +}};
  307. +#undef N
  308. +
  309. +E("MaxFALL", max_fall, EBML_TYPE_UINT)
  310. +
  311. +E("MaxCLL", max_cll, EBML_TYPE_UINT)
  312. +
  313. +E("Primaries", primaries, EBML_TYPE_UINT)
  314. +
  315. +E("TransferCharacteristics", transfer_characteristics, EBML_TYPE_UINT)
  316. +
  317. +E("Range", range, EBML_TYPE_UINT)
  318. +
  319. +E("ChromaSitingVert", chroma_siting_vert, EBML_TYPE_UINT)
  320. +
  321. +E("ChromaSitingHorz", chroma_siting_horz, EBML_TYPE_UINT)
  322. +
  323. +E("CbSubsamplingVert", cb_subsampling_vert, EBML_TYPE_UINT)
  324. +
  325. +E("CbSubsamplingHorz", cb_subsampling_horz, EBML_TYPE_UINT)
  326. +
  327. +E("ChromaSubsamplingVert", chroma_subsampling_vert, EBML_TYPE_UINT)
  328. +
  329. +E("ChromaSubsamplingHorz", chroma_subsampling_horz, EBML_TYPE_UINT)
  330. +
  331. +E("BitsPerChannel", bits_per_channel, EBML_TYPE_UINT)
  332. +
  333. +E("MatrixCoefficients", matrix_coefficients, EBML_TYPE_UINT)
  334. +
  335. +#define N colour
  336. +E_S("Colour", 14)
  337. +F(MATROSKA_ID_MATRIXCOEFFICIENTS, matrix_coefficients, 0)
  338. +F(MATROSKA_ID_BITSPERCHANNEL, bits_per_channel, 0)
  339. +F(MATROSKA_ID_CHROMASUBSAMPLINGHORZ, chroma_subsampling_horz, 0)
  340. +F(MATROSKA_ID_CHROMASUBSAMPLINGVERT, chroma_subsampling_vert, 0)
  341. +F(MATROSKA_ID_CBSUBSAMPLINGHORZ, cb_subsampling_horz, 0)
  342. +F(MATROSKA_ID_CBSUBSAMPLINGVERT, cb_subsampling_vert, 0)
  343. +F(MATROSKA_ID_CHROMASITINGHORZ, chroma_siting_horz, 0)
  344. +F(MATROSKA_ID_CHROMASITINGVERT, chroma_siting_vert, 0)
  345. +F(MATROSKA_ID_RANGE, range, 0)
  346. +F(MATROSKA_ID_TRANSFERCHARACTERISTICS, transfer_characteristics, 0)
  347. +F(MATROSKA_ID_PRIMARIES, primaries, 0)
  348. +F(MATROSKA_ID_MAXCLL, max_cll, 0)
  349. +F(MATROSKA_ID_MAXFALL, max_fall, 0)
  350. +F(MATROSKA_ID_MASTERINGMETADATA, mastering_metadata, 0)
  351. +}};
  352. +#undef N
  353. +
  354. +E("StereoMode", stereo_mode, EBML_TYPE_UINT)
  355. +
  356. +E("ColourSpace", colour_space, EBML_TYPE_BINARY)
  357. +
  358. +E("FrameRate", frame_rate, EBML_TYPE_FLOAT)
  359. +
  360. +E("PixelCropBottom", pixel_crop_bottom, EBML_TYPE_UINT)
  361. +
  362. +E("PixelCropRight", pixel_crop_right, EBML_TYPE_UINT)
  363. +
  364. +E("PixelCropLeft", pixel_crop_left, EBML_TYPE_UINT)
  365. +
  366. +E("PixelCropTop", pixel_crop_top, EBML_TYPE_UINT)
  367. +
  368. +E("DisplayUnit", display_unit, EBML_TYPE_UINT)
  369. +
  370. +E("DisplayHeight", display_height, EBML_TYPE_UINT)
  371. +
  372. +E("DisplayWidth", display_width, EBML_TYPE_UINT)
  373. +
  374. +E("PixelHeight", pixel_height, EBML_TYPE_UINT)
  375. +
  376. +E("PixelWidth", pixel_width, EBML_TYPE_UINT)
  377. +
  378. +E("FlagInterlaced", flag_interlaced, EBML_TYPE_UINT)
  379. +
  380. +#define N video
  381. +E_S("Video", 15)
  382. +F(MATROSKA_ID_FLAGINTERLACED, flag_interlaced, 0)
  383. +F(MATROSKA_ID_PIXELWIDTH, pixel_width, 0)
  384. +F(MATROSKA_ID_PIXELHEIGHT, pixel_height, 0)
  385. +F(MATROSKA_ID_DISPLAYWIDTH, display_width, 0)
  386. +F(MATROSKA_ID_DISPLAYHEIGHT, display_height, 0)
  387. +F(MATROSKA_ID_DISPLAYUNIT, display_unit, 0)
  388. +F(MATROSKA_ID_PIXELCROPTOP, pixel_crop_top, 0)
  389. +F(MATROSKA_ID_PIXELCROPLEFT, pixel_crop_left, 0)
  390. +F(MATROSKA_ID_PIXELCROPRIGHT, pixel_crop_right, 0)
  391. +F(MATROSKA_ID_PIXELCROPBOTTOM, pixel_crop_bottom, 0)
  392. +F(MATROSKA_ID_FRAMERATE, frame_rate, 0)
  393. +F(MATROSKA_ID_COLOURSPACE, colour_space, 0)
  394. +F(MATROSKA_ID_STEREOMODE, stereo_mode, 0)
  395. +F(MATROSKA_ID_COLOUR, colour, 0)
  396. +F(MATROSKA_ID_PROJECTION, projection, 0)
  397. +}};
  398. +#undef N
  399. +
  400. +E("SeekPreRoll", seek_pre_roll, EBML_TYPE_UINT)
  401. +
  402. +E("CodecDelay", codec_delay, EBML_TYPE_UINT)
  403. +
  404. +E("CodecDecodeAll", codec_decode_all, EBML_TYPE_UINT)
  405. +
  406. +E("CodecName", codec_name, EBML_TYPE_STR)
  407. +
  408. +E("CodecPrivate", codec_private, EBML_TYPE_BINARY)
  409. +
  410. +E("CodecID", codec_id, EBML_TYPE_STR)
  411. +
  412. +E("LanguageBCP47", language_bcp47, EBML_TYPE_STR)
  413. +
  414. +E("Language", language, EBML_TYPE_STR)
  415. +
  416. +E("Name", name, EBML_TYPE_STR)
  417. +
  418. +E("MaxBlockAdditionID", max_block_addition_id, EBML_TYPE_UINT)
  419. +
  420. +E("TrackTimecodeScale", track_timecode_scale, EBML_TYPE_FLOAT)
  421. +
  422. +E("DefaultDuration", default_duration, EBML_TYPE_UINT)
  423. +
  424. +E("MaxCache", max_cache, EBML_TYPE_UINT)
  425. +
  426. +E("MinCache", min_cache, EBML_TYPE_UINT)
  427. +
  428. +E("FlagLacing", flag_lacing, EBML_TYPE_UINT)
  429. +
  430. +E("FlagForced", flag_forced, EBML_TYPE_UINT)
  431. +
  432. +E("FlagDefault", flag_default, EBML_TYPE_UINT)
  433. +
  434. +E("FlagEnabled", flag_enabled, EBML_TYPE_UINT)
  435. +
  436. +E("TrackType", track_type, EBML_TYPE_UINT)
  437. +
  438. +E("TrackUID", track_uid, EBML_TYPE_UINT)
  439. +
  440. +E("TrackNumber", track_number, EBML_TYPE_UINT)
  441. +
  442. +#define N track_entry
  443. +E_S("TrackEntry", 24)
  444. +F(MATROSKA_ID_TRACKNUMBER, track_number, 0)
  445. +F(MATROSKA_ID_TRACKUID, track_uid, 0)
  446. +F(MATROSKA_ID_TRACKTYPE, track_type, 0)
  447. +F(MATROSKA_ID_FLAGENABLED, flag_enabled, 0)
  448. +F(MATROSKA_ID_FLAGDEFAULT, flag_default, 0)
  449. +F(MATROSKA_ID_FLAGFORCED, flag_forced, 0)
  450. +F(MATROSKA_ID_FLAGLACING, flag_lacing, 0)
  451. +F(MATROSKA_ID_MINCACHE, min_cache, 0)
  452. +F(MATROSKA_ID_MAXCACHE, max_cache, 0)
  453. +F(MATROSKA_ID_DEFAULTDURATION, default_duration, 0)
  454. +F(MATROSKA_ID_TRACKTIMECODESCALE, track_timecode_scale, 0)
  455. +F(MATROSKA_ID_MAXBLOCKADDITIONID, max_block_addition_id, 0)
  456. +F(MATROSKA_ID_NAME, name, 0)
  457. +F(MATROSKA_ID_LANGUAGE, language, 0)
  458. +F(MATROSKA_ID_LANGUAGEBCP47, language_bcp47, 0)
  459. +F(MATROSKA_ID_CODECID, codec_id, 0)
  460. +F(MATROSKA_ID_CODECPRIVATE, codec_private, 0)
  461. +F(MATROSKA_ID_CODECNAME, codec_name, 0)
  462. +F(MATROSKA_ID_CODECDECODEALL, codec_decode_all, 0)
  463. +F(MATROSKA_ID_CODECDELAY, codec_delay, 0)
  464. +F(MATROSKA_ID_SEEKPREROLL, seek_pre_roll, 0)
  465. +F(MATROSKA_ID_VIDEO, video, 0)
  466. +F(MATROSKA_ID_AUDIO, audio, 0)
  467. +F(MATROSKA_ID_CONTENTENCODINGS, content_encodings, 0)
  468. +}};
  469. +#undef N
  470. +
  471. +#define N tracks
  472. +E_S("Tracks", 1)
  473. +F(MATROSKA_ID_TRACKENTRY, track_entry, 1)
  474. +}};
  475. +#undef N
  476. +
  477. +E("SimpleBlock", simple_block, EBML_TYPE_BINARY)
  478. +
  479. +E("BlockAdditional", block_additional, EBML_TYPE_BINARY)
  480. +
  481. +E("BlockAddID", block_add_id, EBML_TYPE_UINT)
  482. +
  483. +#define N block_more
  484. +E_S("BlockMore", 2)
  485. +F(MATROSKA_ID_BLOCKADDID, block_add_id, 0)
  486. +F(MATROSKA_ID_BLOCKADDITIONAL, block_additional, 0)
  487. +}};
  488. +#undef N
  489. +
  490. +#define N block_additions
  491. +E_S("BlockAdditions", 1)
  492. +F(MATROSKA_ID_BLOCKMORE, block_more, 1)
  493. +}};
  494. +#undef N
  495. +
  496. +E("DiscardPadding", discard_padding, EBML_TYPE_SINT)
  497. +
  498. +E("ReferenceBlock", reference_block, EBML_TYPE_SINT)
  499. +
  500. +E("BlockDuration", block_duration, EBML_TYPE_UINT)
  501. +
  502. +E("Block", block, EBML_TYPE_BINARY)
  503. +
  504. +#define N block_group
  505. +E_S("BlockGroup", 5)
  506. +F(MATROSKA_ID_BLOCK, block, 0)
  507. +F(MATROSKA_ID_BLOCKDURATION, block_duration, 0)
  508. +F(MATROSKA_ID_REFERENCEBLOCK, reference_block, 1)
  509. +F(MATROSKA_ID_DISCARDPADDING, discard_padding, 0)
  510. +F(MATROSKA_ID_BLOCKADDITIONS, block_additions, 0)
  511. +}};
  512. +#undef N
  513. +
  514. +E("Timecode", timecode, EBML_TYPE_UINT)
  515. +
  516. +#define N cluster
  517. +E_S("Cluster", 3)
  518. +F(MATROSKA_ID_TIMECODE, timecode, 0)
  519. +F(MATROSKA_ID_BLOCKGROUP, block_group, 1)
  520. +F(MATROSKA_ID_SIMPLEBLOCK, simple_block, 1)
  521. +}};
  522. +#undef N
  523. +
  524. +E("Duration", duration, EBML_TYPE_FLOAT)
  525. +
  526. +E("WritingApp", writing_app, EBML_TYPE_STR)
  527. +
  528. +E("MuxingApp", muxing_app, EBML_TYPE_STR)
  529. +
  530. +E("Title", title, EBML_TYPE_STR)
  531. +
  532. +E("DateUTC", date_utc, EBML_TYPE_SINT)
  533. +
  534. +E("TimecodeScale", timecode_scale, EBML_TYPE_UINT)
  535. +
  536. +E("NextUID", next_uid, EBML_TYPE_BINARY)
  537. +
  538. +E("PrevUID", prev_uid, EBML_TYPE_BINARY)
  539. +
  540. +E("SegmentUID", segment_uid, EBML_TYPE_BINARY)
  541. +
  542. +#define N info
  543. +E_S("Info", 9)
  544. +F(MATROSKA_ID_SEGMENTUID, segment_uid, 0)
  545. +F(MATROSKA_ID_PREVUID, prev_uid, 0)
  546. +F(MATROSKA_ID_NEXTUID, next_uid, 0)
  547. +F(MATROSKA_ID_TIMECODESCALE, timecode_scale, 0)
  548. +F(MATROSKA_ID_DATEUTC, date_utc, 0)
  549. +F(MATROSKA_ID_TITLE, title, 0)
  550. +F(MATROSKA_ID_MUXINGAPP, muxing_app, 0)
  551. +F(MATROSKA_ID_WRITINGAPP, writing_app, 0)
  552. +F(MATROSKA_ID_DURATION, duration, 0)
  553. +}};
  554. +#undef N
  555. +
  556. +E("SeekPosition", seek_position, EBML_TYPE_UINT)
  557. +
  558. +E("SeekID", seek_id, EBML_TYPE_EBML_ID)
  559. +
  560. +#define N seek
  561. +E_S("Seek", 2)
  562. +F(MATROSKA_ID_SEEKID, seek_id, 0)
  563. +F(MATROSKA_ID_SEEKPOSITION, seek_position, 0)
  564. +}};
  565. +#undef N
  566. +
  567. +#define N seek_head
  568. +E_S("SeekHead", 1)
  569. +F(MATROSKA_ID_SEEK, seek, 1)
  570. +}};
  571. +#undef N
  572. +
  573. +#define N segment
  574. +E_S("Segment", 8)
  575. +F(MATROSKA_ID_SEEKHEAD, seek_head, 1)
  576. +F(MATROSKA_ID_INFO, info, 1)
  577. +F(MATROSKA_ID_CLUSTER, cluster, 1)
  578. +F(MATROSKA_ID_TRACKS, tracks, 1)
  579. +F(MATROSKA_ID_CUES, cues, 0)
  580. +F(MATROSKA_ID_ATTACHMENTS, attachments, 0)
  581. +F(MATROSKA_ID_CHAPTERS, chapters, 0)
  582. +F(MATROSKA_ID_TAGS, tags, 1)
  583. +}};
  584. +#undef N
  585. +
  586. +E("Void", void, EBML_TYPE_BINARY)
  587. +
  588. +E("CRC32", crc32, EBML_TYPE_BINARY)
  589. +
  590. +E("DocTypeReadVersion", doc_type_read_version, EBML_TYPE_UINT)
  591. +
  592. +E("DocTypeVersion", doc_type_version, EBML_TYPE_UINT)
  593. +
  594. +E("DocType", doc_type, EBML_TYPE_STR)
  595. +
  596. +E("EBMLMaxSizeLength", ebml_max_size_length, EBML_TYPE_UINT)
  597. +
  598. +E("EBMLMaxIDLength", ebml_max_id_length, EBML_TYPE_UINT)
  599. +
  600. +E("EBMLReadVersion", ebml_read_version, EBML_TYPE_UINT)
  601. +
  602. +E("EBMLVersion", ebml_version, EBML_TYPE_UINT)
  603. +
  604. +#define N ebml
  605. +E_S("EBML", 7)
  606. +F(EBML_ID_EBMLVERSION, ebml_version, 0)
  607. +F(EBML_ID_EBMLREADVERSION, ebml_read_version, 0)
  608. +F(EBML_ID_EBMLMAXIDLENGTH, ebml_max_id_length, 0)
  609. +F(EBML_ID_EBMLMAXSIZELENGTH, ebml_max_size_length, 0)
  610. +F(EBML_ID_DOCTYPE, doc_type, 0)
  611. +F(EBML_ID_DOCTYPEVERSION, doc_type_version, 0)
  612. +F(EBML_ID_DOCTYPEREADVERSION, doc_type_read_version, 0)
  613. +}};
  614. +#undef N
  615. diff --git a/ebml_types.h b/ebml_types.h
  616. new file mode 100644
  617. index 0000000000..d544694d48
  618. --- /dev/null
  619. +++ b/ebml_types.h
  620. @@ -0,0 +1,658 @@
  621. +// Generated by TOOLS/matroska.py, do not edit manually
  622. +
  623. +#define EBML_ID_EBML 0x1a45dfa3
  624. +#define EBML_ID_EBMLVERSION 0x4286
  625. +#define EBML_ID_EBMLREADVERSION 0x42f7
  626. +#define EBML_ID_EBMLMAXIDLENGTH 0x42f2
  627. +#define EBML_ID_EBMLMAXSIZELENGTH 0x42f3
  628. +#define EBML_ID_DOCTYPE 0x4282
  629. +#define EBML_ID_DOCTYPEVERSION 0x4287
  630. +#define EBML_ID_DOCTYPEREADVERSION 0x4285
  631. +#define EBML_ID_CRC32 0xbf
  632. +#define EBML_ID_VOID 0xec
  633. +#define MATROSKA_ID_SEGMENT 0x18538067
  634. +#define MATROSKA_ID_SEEKHEAD 0x114d9b74
  635. +#define MATROSKA_ID_SEEK 0x4dbb
  636. +#define MATROSKA_ID_SEEKID 0x53ab
  637. +#define MATROSKA_ID_SEEKPOSITION 0x53ac
  638. +#define MATROSKA_ID_INFO 0x1549a966
  639. +#define MATROSKA_ID_SEGMENTUID 0x73a4
  640. +#define MATROSKA_ID_PREVUID 0x3cb923
  641. +#define MATROSKA_ID_NEXTUID 0x3eb923
  642. +#define MATROSKA_ID_TIMECODESCALE 0x2ad7b1
  643. +#define MATROSKA_ID_DATEUTC 0x4461
  644. +#define MATROSKA_ID_TITLE 0x7ba9
  645. +#define MATROSKA_ID_MUXINGAPP 0x4d80
  646. +#define MATROSKA_ID_WRITINGAPP 0x5741
  647. +#define MATROSKA_ID_DURATION 0x4489
  648. +#define MATROSKA_ID_CLUSTER 0x1f43b675
  649. +#define MATROSKA_ID_TIMECODE 0xe7
  650. +#define MATROSKA_ID_BLOCKGROUP 0xa0
  651. +#define MATROSKA_ID_BLOCK 0xa1
  652. +#define MATROSKA_ID_BLOCKDURATION 0x9b
  653. +#define MATROSKA_ID_REFERENCEBLOCK 0xfb
  654. +#define MATROSKA_ID_DISCARDPADDING 0x75a2
  655. +#define MATROSKA_ID_BLOCKADDITIONS 0x75a1
  656. +#define MATROSKA_ID_BLOCKMORE 0xa6
  657. +#define MATROSKA_ID_BLOCKADDID 0xee
  658. +#define MATROSKA_ID_BLOCKADDITIONAL 0xa5
  659. +#define MATROSKA_ID_SIMPLEBLOCK 0xa3
  660. +#define MATROSKA_ID_TRACKS 0x1654ae6b
  661. +#define MATROSKA_ID_TRACKENTRY 0xae
  662. +#define MATROSKA_ID_TRACKNUMBER 0xd7
  663. +#define MATROSKA_ID_TRACKUID 0x73c5
  664. +#define MATROSKA_ID_TRACKTYPE 0x83
  665. +#define MATROSKA_ID_FLAGENABLED 0xb9
  666. +#define MATROSKA_ID_FLAGDEFAULT 0x88
  667. +#define MATROSKA_ID_FLAGFORCED 0x55aa
  668. +#define MATROSKA_ID_FLAGLACING 0x9c
  669. +#define MATROSKA_ID_MINCACHE 0x6de7
  670. +#define MATROSKA_ID_MAXCACHE 0x6df8
  671. +#define MATROSKA_ID_DEFAULTDURATION 0x23e383
  672. +#define MATROSKA_ID_TRACKTIMECODESCALE 0x23314f
  673. +#define MATROSKA_ID_MAXBLOCKADDITIONID 0x55ee
  674. +#define MATROSKA_ID_NAME 0x536e
  675. +#define MATROSKA_ID_LANGUAGE 0x22b59c
  676. +#define MATROSKA_ID_LANGUAGEBCP47 0x22b59d
  677. +#define MATROSKA_ID_CODECID 0x86
  678. +#define MATROSKA_ID_CODECPRIVATE 0x63a2
  679. +#define MATROSKA_ID_CODECNAME 0x258688
  680. +#define MATROSKA_ID_CODECDECODEALL 0xaa
  681. +#define MATROSKA_ID_CODECDELAY 0x56aa
  682. +#define MATROSKA_ID_SEEKPREROLL 0x56bb
  683. +#define MATROSKA_ID_VIDEO 0xe0
  684. +#define MATROSKA_ID_FLAGINTERLACED 0x9a
  685. +#define MATROSKA_ID_PIXELWIDTH 0xb0
  686. +#define MATROSKA_ID_PIXELHEIGHT 0xba
  687. +#define MATROSKA_ID_DISPLAYWIDTH 0x54b0
  688. +#define MATROSKA_ID_DISPLAYHEIGHT 0x54ba
  689. +#define MATROSKA_ID_DISPLAYUNIT 0x54b2
  690. +#define MATROSKA_ID_PIXELCROPTOP 0x54bb
  691. +#define MATROSKA_ID_PIXELCROPLEFT 0x54cc
  692. +#define MATROSKA_ID_PIXELCROPRIGHT 0x54dd
  693. +#define MATROSKA_ID_PIXELCROPBOTTOM 0x54aa
  694. +#define MATROSKA_ID_FRAMERATE 0x2383e3
  695. +#define MATROSKA_ID_COLOURSPACE 0x2eb524
  696. +#define MATROSKA_ID_STEREOMODE 0x53b8
  697. +#define MATROSKA_ID_COLOUR 0x55b0
  698. +#define MATROSKA_ID_MATRIXCOEFFICIENTS 0x55b1
  699. +#define MATROSKA_ID_BITSPERCHANNEL 0x55b2
  700. +#define MATROSKA_ID_CHROMASUBSAMPLINGHORZ 0x55b3
  701. +#define MATROSKA_ID_CHROMASUBSAMPLINGVERT 0x55b4
  702. +#define MATROSKA_ID_CBSUBSAMPLINGHORZ 0x55b5
  703. +#define MATROSKA_ID_CBSUBSAMPLINGVERT 0x55b6
  704. +#define MATROSKA_ID_CHROMASITINGHORZ 0x55b7
  705. +#define MATROSKA_ID_CHROMASITINGVERT 0x55b8
  706. +#define MATROSKA_ID_RANGE 0x55b9
  707. +#define MATROSKA_ID_TRANSFERCHARACTERISTICS 0x55ba
  708. +#define MATROSKA_ID_PRIMARIES 0x55bb
  709. +#define MATROSKA_ID_MAXCLL 0x55bc
  710. +#define MATROSKA_ID_MAXFALL 0x55bd
  711. +#define MATROSKA_ID_MASTERINGMETADATA 0x55d0
  712. +#define MATROSKA_ID_PRIMARYRCHROMATICITYX 0x55d1
  713. +#define MATROSKA_ID_PRIMARYRCHROMATICITYY 0x55d2
  714. +#define MATROSKA_ID_PRIMARYGCHROMATICITYX 0x55d3
  715. +#define MATROSKA_ID_PRIMARYGCHROMATICITYY 0x55d4
  716. +#define MATROSKA_ID_PRIMARYBCHROMATICITYX 0x55d5
  717. +#define MATROSKA_ID_PRIMARYBCHROMATICITYY 0x55d6
  718. +#define MATROSKA_ID_WHITEPOINTCHROMATICITYX 0x55d7
  719. +#define MATROSKA_ID_WHITEPOINTCHROMATICITYY 0x55d8
  720. +#define MATROSKA_ID_LUMINANCEMAX 0x55d9
  721. +#define MATROSKA_ID_LUMINANCEMIN 0x55da
  722. +#define MATROSKA_ID_PROJECTION 0x7670
  723. +#define MATROSKA_ID_PROJECTIONTYPE 0x7671
  724. +#define MATROSKA_ID_PROJECTIONPRIVATE 0x7672
  725. +#define MATROSKA_ID_PROJECTIONPOSEYAW 0x7673
  726. +#define MATROSKA_ID_PROJECTIONPOSEPITCH 0x7674
  727. +#define MATROSKA_ID_PROJECTIONPOSEROLL 0x7675
  728. +#define MATROSKA_ID_AUDIO 0xe1
  729. +#define MATROSKA_ID_SAMPLINGFREQUENCY 0xb5
  730. +#define MATROSKA_ID_OUTPUTSAMPLINGFREQUENCY 0x78b5
  731. +#define MATROSKA_ID_CHANNELS 0x9f
  732. +#define MATROSKA_ID_BITDEPTH 0x6264
  733. +#define MATROSKA_ID_CONTENTENCODINGS 0x6d80
  734. +#define MATROSKA_ID_CONTENTENCODING 0x6240
  735. +#define MATROSKA_ID_CONTENTENCODINGORDER 0x5031
  736. +#define MATROSKA_ID_CONTENTENCODINGSCOPE 0x5032
  737. +#define MATROSKA_ID_CONTENTENCODINGTYPE 0x5033
  738. +#define MATROSKA_ID_CONTENTCOMPRESSION 0x5034
  739. +#define MATROSKA_ID_CONTENTCOMPALGO 0x4254
  740. +#define MATROSKA_ID_CONTENTCOMPSETTINGS 0x4255
  741. +#define MATROSKA_ID_CUES 0x1c53bb6b
  742. +#define MATROSKA_ID_CUEPOINT 0xbb
  743. +#define MATROSKA_ID_CUETIME 0xb3
  744. +#define MATROSKA_ID_CUETRACKPOSITIONS 0xb7
  745. +#define MATROSKA_ID_CUETRACK 0xf7
  746. +#define MATROSKA_ID_CUECLUSTERPOSITION 0xf1
  747. +#define MATROSKA_ID_CUERELATIVEPOSITION 0xf0
  748. +#define MATROSKA_ID_CUEDURATION 0xb2
  749. +#define MATROSKA_ID_ATTACHMENTS 0x1941a469
  750. +#define MATROSKA_ID_ATTACHEDFILE 0x61a7
  751. +#define MATROSKA_ID_FILEDESCRIPTION 0x467e
  752. +#define MATROSKA_ID_FILENAME 0x466e
  753. +#define MATROSKA_ID_FILEMIMETYPE 0x4660
  754. +#define MATROSKA_ID_FILEDATA 0x465c
  755. +#define MATROSKA_ID_FILEUID 0x46ae
  756. +#define MATROSKA_ID_CHAPTERS 0x1043a770
  757. +#define MATROSKA_ID_EDITIONENTRY 0x45b9
  758. +#define MATROSKA_ID_EDITIONUID 0x45bc
  759. +#define MATROSKA_ID_EDITIONFLAGHIDDEN 0x45bd
  760. +#define MATROSKA_ID_EDITIONFLAGDEFAULT 0x45db
  761. +#define MATROSKA_ID_EDITIONFLAGORDERED 0x45dd
  762. +#define MATROSKA_ID_CHAPTERATOM 0xb6
  763. +#define MATROSKA_ID_CHAPTERUID 0x73c4
  764. +#define MATROSKA_ID_CHAPTERTIMESTART 0x91
  765. +#define MATROSKA_ID_CHAPTERTIMEEND 0x92
  766. +#define MATROSKA_ID_CHAPTERFLAGHIDDEN 0x98
  767. +#define MATROSKA_ID_CHAPTERFLAGENABLED 0x4598
  768. +#define MATROSKA_ID_CHAPTERSEGMENTUID 0x6e67
  769. +#define MATROSKA_ID_CHAPTERSEGMENTEDITIONUID 0x6ebc
  770. +#define MATROSKA_ID_CHAPTERDISPLAY 0x80
  771. +#define MATROSKA_ID_CHAPSTRING 0x85
  772. +#define MATROSKA_ID_CHAPLANGUAGE 0x437c
  773. +#define MATROSKA_ID_CHAPLANGUAGEBCP47 0x437d
  774. +#define MATROSKA_ID_CHAPCOUNTRY 0x437e
  775. +#define MATROSKA_ID_TAGS 0x1254c367
  776. +#define MATROSKA_ID_TAG 0x7373
  777. +#define MATROSKA_ID_TARGETS 0x63c0
  778. +#define MATROSKA_ID_TARGETTYPEVALUE 0x68ca
  779. +#define MATROSKA_ID_TARGETTYPE 0x63ca
  780. +#define MATROSKA_ID_TARGETTRACKUID 0x63c5
  781. +#define MATROSKA_ID_TARGETEDITIONUID 0x63c9
  782. +#define MATROSKA_ID_TARGETCHAPTERUID 0x63c4
  783. +#define MATROSKA_ID_TARGETATTACHMENTUID 0x63c6
  784. +#define MATROSKA_ID_SIMPLETAG 0x67c8
  785. +#define MATROSKA_ID_TAGNAME 0x45a3
  786. +#define MATROSKA_ID_TAGLANGUAGE 0x447a
  787. +#define MATROSKA_ID_TAGLANGUAGEBCP47 0x447b
  788. +#define MATROSKA_ID_TAGSTRING 0x4487
  789. +#define MATROSKA_ID_TAGDEFAULT 0x4484
  790. +
  791. +
  792. +struct ebml_simple_tag {
  793. + char * tag_name;
  794. + char * tag_language;
  795. + char * tag_language_bcp47;
  796. + char * tag_string;
  797. + uint64_t tag_default;
  798. +
  799. + int n_tag_name;
  800. + int n_tag_language;
  801. + int n_tag_language_bcp47;
  802. + int n_tag_string;
  803. + int n_tag_default;
  804. +};
  805. +
  806. +struct ebml_targets {
  807. + uint64_t target_type_value;
  808. + char * target_type;
  809. + uint64_t target_track_uid;
  810. + uint64_t target_edition_uid;
  811. + uint64_t target_chapter_uid;
  812. + uint64_t target_attachment_uid;
  813. +
  814. + int n_target_type_value;
  815. + int n_target_type;
  816. + int n_target_track_uid;
  817. + int n_target_edition_uid;
  818. + int n_target_chapter_uid;
  819. + int n_target_attachment_uid;
  820. +};
  821. +
  822. +struct ebml_tag {
  823. + struct ebml_targets targets;
  824. + struct ebml_simple_tag *simple_tag;
  825. +
  826. + int n_targets;
  827. + int n_simple_tag;
  828. +};
  829. +
  830. +struct ebml_tags {
  831. + struct ebml_tag *tag;
  832. +
  833. + int n_tag;
  834. +};
  835. +
  836. +struct ebml_chapter_display {
  837. + char * chap_string;
  838. + char * *chap_language;
  839. + char * *chap_language_bcp47;
  840. + char * *chap_country;
  841. +
  842. + int n_chap_string;
  843. + int n_chap_language;
  844. + int n_chap_language_bcp47;
  845. + int n_chap_country;
  846. +};
  847. +
  848. +struct ebml_chapter_atom {
  849. + uint64_t chapter_uid;
  850. + uint64_t chapter_time_start;
  851. + uint64_t chapter_time_end;
  852. + uint64_t chapter_flag_hidden;
  853. + uint64_t chapter_flag_enabled;
  854. + bstr chapter_segment_uid;
  855. + uint64_t chapter_segment_edition_uid;
  856. + struct ebml_chapter_display *chapter_display;
  857. +
  858. + int n_chapter_uid;
  859. + int n_chapter_time_start;
  860. + int n_chapter_time_end;
  861. + int n_chapter_flag_hidden;
  862. + int n_chapter_flag_enabled;
  863. + int n_chapter_segment_uid;
  864. + int n_chapter_segment_edition_uid;
  865. + int n_chapter_display;
  866. +};
  867. +
  868. +struct ebml_edition_entry {
  869. + uint64_t edition_uid;
  870. + uint64_t edition_flag_hidden;
  871. + uint64_t edition_flag_default;
  872. + uint64_t edition_flag_ordered;
  873. + struct ebml_chapter_atom *chapter_atom;
  874. +
  875. + int n_edition_uid;
  876. + int n_edition_flag_hidden;
  877. + int n_edition_flag_default;
  878. + int n_edition_flag_ordered;
  879. + int n_chapter_atom;
  880. +};
  881. +
  882. +struct ebml_chapters {
  883. + struct ebml_edition_entry *edition_entry;
  884. +
  885. + int n_edition_entry;
  886. +};
  887. +
  888. +struct ebml_attached_file {
  889. + char * file_description;
  890. + char * file_name;
  891. + char * file_mime_type;
  892. + bstr file_data;
  893. + uint64_t file_uid;
  894. +
  895. + int n_file_description;
  896. + int n_file_name;
  897. + int n_file_mime_type;
  898. + int n_file_data;
  899. + int n_file_uid;
  900. +};
  901. +
  902. +struct ebml_attachments {
  903. + struct ebml_attached_file *attached_file;
  904. +
  905. + int n_attached_file;
  906. +};
  907. +
  908. +struct ebml_cue_track_positions {
  909. + uint64_t cue_track;
  910. + uint64_t cue_cluster_position;
  911. + uint64_t cue_relative_position;
  912. + uint64_t cue_duration;
  913. +
  914. + int n_cue_track;
  915. + int n_cue_cluster_position;
  916. + int n_cue_relative_position;
  917. + int n_cue_duration;
  918. +};
  919. +
  920. +struct ebml_cue_point {
  921. + uint64_t cue_time;
  922. + struct ebml_cue_track_positions *cue_track_positions;
  923. +
  924. + int n_cue_time;
  925. + int n_cue_track_positions;
  926. +};
  927. +
  928. +struct ebml_cues {
  929. + struct ebml_cue_point *cue_point;
  930. +
  931. + int n_cue_point;
  932. +};
  933. +
  934. +struct ebml_content_compression {
  935. + uint64_t content_comp_algo;
  936. + bstr content_comp_settings;
  937. +
  938. + int n_content_comp_algo;
  939. + int n_content_comp_settings;
  940. +};
  941. +
  942. +struct ebml_content_encoding {
  943. + uint64_t content_encoding_order;
  944. + uint64_t content_encoding_scope;
  945. + uint64_t content_encoding_type;
  946. + struct ebml_content_compression content_compression;
  947. +
  948. + int n_content_encoding_order;
  949. + int n_content_encoding_scope;
  950. + int n_content_encoding_type;
  951. + int n_content_compression;
  952. +};
  953. +
  954. +struct ebml_content_encodings {
  955. + struct ebml_content_encoding *content_encoding;
  956. +
  957. + int n_content_encoding;
  958. +};
  959. +
  960. +struct ebml_audio {
  961. + double sampling_frequency;
  962. + double output_sampling_frequency;
  963. + uint64_t channels;
  964. + uint64_t bit_depth;
  965. +
  966. + int n_sampling_frequency;
  967. + int n_output_sampling_frequency;
  968. + int n_channels;
  969. + int n_bit_depth;
  970. +};
  971. +
  972. +struct ebml_projection {
  973. + uint64_t projection_type;
  974. + bstr projection_private;
  975. + double projection_pose_yaw;
  976. + double projection_pose_pitch;
  977. + double projection_pose_roll;
  978. +
  979. + int n_projection_type;
  980. + int n_projection_private;
  981. + int n_projection_pose_yaw;
  982. + int n_projection_pose_pitch;
  983. + int n_projection_pose_roll;
  984. +};
  985. +
  986. +struct ebml_mastering_metadata {
  987. + double primary_r_chromaticity_x;
  988. + double primary_r_chromaticity_y;
  989. + double primary_g_chromaticity_x;
  990. + double primary_g_chromaticity_y;
  991. + double primary_b_chromaticity_x;
  992. + double primary_b_chromaticity_y;
  993. + double white_point_chromaticity_x;
  994. + double white_point_chromaticity_y;
  995. + double luminance_max;
  996. + double luminance_min;
  997. +
  998. + int n_primary_r_chromaticity_x;
  999. + int n_primary_r_chromaticity_y;
  1000. + int n_primary_g_chromaticity_x;
  1001. + int n_primary_g_chromaticity_y;
  1002. + int n_primary_b_chromaticity_x;
  1003. + int n_primary_b_chromaticity_y;
  1004. + int n_white_point_chromaticity_x;
  1005. + int n_white_point_chromaticity_y;
  1006. + int n_luminance_max;
  1007. + int n_luminance_min;
  1008. +};
  1009. +
  1010. +struct ebml_colour {
  1011. + uint64_t matrix_coefficients;
  1012. + uint64_t bits_per_channel;
  1013. + uint64_t chroma_subsampling_horz;
  1014. + uint64_t chroma_subsampling_vert;
  1015. + uint64_t cb_subsampling_horz;
  1016. + uint64_t cb_subsampling_vert;
  1017. + uint64_t chroma_siting_horz;
  1018. + uint64_t chroma_siting_vert;
  1019. + uint64_t range;
  1020. + uint64_t transfer_characteristics;
  1021. + uint64_t primaries;
  1022. + uint64_t max_cll;
  1023. + uint64_t max_fall;
  1024. + struct ebml_mastering_metadata mastering_metadata;
  1025. +
  1026. + int n_matrix_coefficients;
  1027. + int n_bits_per_channel;
  1028. + int n_chroma_subsampling_horz;
  1029. + int n_chroma_subsampling_vert;
  1030. + int n_cb_subsampling_horz;
  1031. + int n_cb_subsampling_vert;
  1032. + int n_chroma_siting_horz;
  1033. + int n_chroma_siting_vert;
  1034. + int n_range;
  1035. + int n_transfer_characteristics;
  1036. + int n_primaries;
  1037. + int n_max_cll;
  1038. + int n_max_fall;
  1039. + int n_mastering_metadata;
  1040. +};
  1041. +
  1042. +struct ebml_video {
  1043. + uint64_t flag_interlaced;
  1044. + uint64_t pixel_width;
  1045. + uint64_t pixel_height;
  1046. + uint64_t display_width;
  1047. + uint64_t display_height;
  1048. + uint64_t display_unit;
  1049. + uint64_t pixel_crop_top;
  1050. + uint64_t pixel_crop_left;
  1051. + uint64_t pixel_crop_right;
  1052. + uint64_t pixel_crop_bottom;
  1053. + double frame_rate;
  1054. + bstr colour_space;
  1055. + uint64_t stereo_mode;
  1056. + struct ebml_colour colour;
  1057. + struct ebml_projection projection;
  1058. +
  1059. + int n_flag_interlaced;
  1060. + int n_pixel_width;
  1061. + int n_pixel_height;
  1062. + int n_display_width;
  1063. + int n_display_height;
  1064. + int n_display_unit;
  1065. + int n_pixel_crop_top;
  1066. + int n_pixel_crop_left;
  1067. + int n_pixel_crop_right;
  1068. + int n_pixel_crop_bottom;
  1069. + int n_frame_rate;
  1070. + int n_colour_space;
  1071. + int n_stereo_mode;
  1072. + int n_colour;
  1073. + int n_projection;
  1074. +};
  1075. +
  1076. +struct ebml_track_entry {
  1077. + uint64_t track_number;
  1078. + uint64_t track_uid;
  1079. + uint64_t track_type;
  1080. + uint64_t flag_enabled;
  1081. + uint64_t flag_default;
  1082. + uint64_t flag_forced;
  1083. + uint64_t flag_lacing;
  1084. + uint64_t min_cache;
  1085. + uint64_t max_cache;
  1086. + uint64_t default_duration;
  1087. + double track_timecode_scale;
  1088. + uint64_t max_block_addition_id;
  1089. + char * name;
  1090. + char * language;
  1091. + char * language_bcp47;
  1092. + char * codec_id;
  1093. + bstr codec_private;
  1094. + char * codec_name;
  1095. + uint64_t codec_decode_all;
  1096. + uint64_t codec_delay;
  1097. + uint64_t seek_pre_roll;
  1098. + struct ebml_video video;
  1099. + struct ebml_audio audio;
  1100. + struct ebml_content_encodings content_encodings;
  1101. +
  1102. + int n_track_number;
  1103. + int n_track_uid;
  1104. + int n_track_type;
  1105. + int n_flag_enabled;
  1106. + int n_flag_default;
  1107. + int n_flag_forced;
  1108. + int n_flag_lacing;
  1109. + int n_min_cache;
  1110. + int n_max_cache;
  1111. + int n_default_duration;
  1112. + int n_track_timecode_scale;
  1113. + int n_max_block_addition_id;
  1114. + int n_name;
  1115. + int n_language;
  1116. + int n_language_bcp47;
  1117. + int n_codec_id;
  1118. + int n_codec_private;
  1119. + int n_codec_name;
  1120. + int n_codec_decode_all;
  1121. + int n_codec_delay;
  1122. + int n_seek_pre_roll;
  1123. + int n_video;
  1124. + int n_audio;
  1125. + int n_content_encodings;
  1126. +};
  1127. +
  1128. +struct ebml_tracks {
  1129. + struct ebml_track_entry *track_entry;
  1130. +
  1131. + int n_track_entry;
  1132. +};
  1133. +
  1134. +struct ebml_block_more {
  1135. + uint64_t block_add_id;
  1136. + bstr block_additional;
  1137. +
  1138. + int n_block_add_id;
  1139. + int n_block_additional;
  1140. +};
  1141. +
  1142. +struct ebml_block_additions {
  1143. + struct ebml_block_more *block_more;
  1144. +
  1145. + int n_block_more;
  1146. +};
  1147. +
  1148. +struct ebml_block_group {
  1149. + bstr block;
  1150. + uint64_t block_duration;
  1151. + int64_t *reference_block;
  1152. + int64_t discard_padding;
  1153. + struct ebml_block_additions block_additions;
  1154. +
  1155. + int n_block;
  1156. + int n_block_duration;
  1157. + int n_reference_block;
  1158. + int n_discard_padding;
  1159. + int n_block_additions;
  1160. +};
  1161. +
  1162. +struct ebml_cluster {
  1163. + uint64_t timecode;
  1164. + struct ebml_block_group *block_group;
  1165. + bstr *simple_block;
  1166. +
  1167. + int n_timecode;
  1168. + int n_block_group;
  1169. + int n_simple_block;
  1170. +};
  1171. +
  1172. +struct ebml_info {
  1173. + bstr segment_uid;
  1174. + bstr prev_uid;
  1175. + bstr next_uid;
  1176. + uint64_t timecode_scale;
  1177. + int64_t date_utc;
  1178. + char * title;
  1179. + char * muxing_app;
  1180. + char * writing_app;
  1181. + double duration;
  1182. +
  1183. + int n_segment_uid;
  1184. + int n_prev_uid;
  1185. + int n_next_uid;
  1186. + int n_timecode_scale;
  1187. + int n_date_utc;
  1188. + int n_title;
  1189. + int n_muxing_app;
  1190. + int n_writing_app;
  1191. + int n_duration;
  1192. +};
  1193. +
  1194. +struct ebml_seek {
  1195. + uint32_t seek_id;
  1196. + uint64_t seek_position;
  1197. +
  1198. + int n_seek_id;
  1199. + int n_seek_position;
  1200. +};
  1201. +
  1202. +struct ebml_seek_head {
  1203. + struct ebml_seek *seek;
  1204. +
  1205. + int n_seek;
  1206. +};
  1207. +
  1208. +struct ebml_segment {
  1209. + struct ebml_seek_head *seek_head;
  1210. + struct ebml_info *info;
  1211. + struct ebml_cluster *cluster;
  1212. + struct ebml_tracks *tracks;
  1213. + struct ebml_cues cues;
  1214. + struct ebml_attachments attachments;
  1215. + struct ebml_chapters chapters;
  1216. + struct ebml_tags *tags;
  1217. +
  1218. + int n_seek_head;
  1219. + int n_info;
  1220. + int n_cluster;
  1221. + int n_tracks;
  1222. + int n_cues;
  1223. + int n_attachments;
  1224. + int n_chapters;
  1225. + int n_tags;
  1226. +};
  1227. +
  1228. +struct ebml_ebml {
  1229. + uint64_t ebml_version;
  1230. + uint64_t ebml_read_version;
  1231. + uint64_t ebml_max_id_length;
  1232. + uint64_t ebml_max_size_length;
  1233. + char * doc_type;
  1234. + uint64_t doc_type_version;
  1235. + uint64_t doc_type_read_version;
  1236. +
  1237. + int n_ebml_version;
  1238. + int n_ebml_read_version;
  1239. + int n_ebml_max_id_length;
  1240. + int n_ebml_max_size_length;
  1241. + int n_doc_type;
  1242. + int n_doc_type_version;
  1243. + int n_doc_type_read_version;
  1244. +};
  1245. +extern const struct ebml_elem_desc ebml_ebml_desc;
  1246. +extern const struct ebml_elem_desc ebml_segment_desc;
  1247. +extern const struct ebml_elem_desc ebml_seek_head_desc;
  1248. +extern const struct ebml_elem_desc ebml_seek_desc;
  1249. +extern const struct ebml_elem_desc ebml_info_desc;
  1250. +extern const struct ebml_elem_desc ebml_cluster_desc;
  1251. +extern const struct ebml_elem_desc ebml_block_group_desc;
  1252. +extern const struct ebml_elem_desc ebml_block_additions_desc;
  1253. +extern const struct ebml_elem_desc ebml_block_more_desc;
  1254. +extern const struct ebml_elem_desc ebml_tracks_desc;
  1255. +extern const struct ebml_elem_desc ebml_track_entry_desc;
  1256. +extern const struct ebml_elem_desc ebml_video_desc;
  1257. +extern const struct ebml_elem_desc ebml_colour_desc;
  1258. +extern const struct ebml_elem_desc ebml_mastering_metadata_desc;
  1259. +extern const struct ebml_elem_desc ebml_projection_desc;
  1260. +extern const struct ebml_elem_desc ebml_audio_desc;
  1261. +extern const struct ebml_elem_desc ebml_content_encodings_desc;
  1262. +extern const struct ebml_elem_desc ebml_content_encoding_desc;
  1263. +extern const struct ebml_elem_desc ebml_content_compression_desc;
  1264. +extern const struct ebml_elem_desc ebml_cues_desc;
  1265. +extern const struct ebml_elem_desc ebml_cue_point_desc;
  1266. +extern const struct ebml_elem_desc ebml_cue_track_positions_desc;
  1267. +extern const struct ebml_elem_desc ebml_attachments_desc;
  1268. +extern const struct ebml_elem_desc ebml_attached_file_desc;
  1269. +extern const struct ebml_elem_desc ebml_chapters_desc;
  1270. +extern const struct ebml_elem_desc ebml_edition_entry_desc;
  1271. +extern const struct ebml_elem_desc ebml_chapter_atom_desc;
  1272. +extern const struct ebml_elem_desc ebml_chapter_display_desc;
  1273. +extern const struct ebml_elem_desc ebml_tags_desc;
  1274. +extern const struct ebml_elem_desc ebml_tag_desc;
  1275. +extern const struct ebml_elem_desc ebml_targets_desc;
  1276. +extern const struct ebml_elem_desc ebml_simple_tag_desc;
  1277. +
  1278. +#define MAX_EBML_SUBELEMENTS 24
  1279. --
  1280. 2.44.0