EBML

EBML (англ. Extensible Binary Meta Language — розширювана бінарна метамова) — двійковий формат файлів, при створенні якого стояло завдання створити аналог XML для двійкових даних. Спочатку був створений для мультимедіа контейнера Matroska; використовується в WebM.

Загальна структура

Дуже важливою особливістю формату є наявність «значень за замовчуванням» для багатьох елементів, це дозволяє створювати файл без детального опису всіх параметрів.

Типи даних

  • Signed Integer — знакове ціле, порядок байтів big-endian, довільного розміру від 1 до 8 байт.
  • Unsigned Integer — беззнакове ціле, порядок байтів big-endian, довільного розміру від 1 до 8 байт.
  • Float — число з плаваючою комою, порядок байтів big-endian, розміру 4 або 8 байт.
  • String — текстовий рядок у форматі ASCII (символи ASCII, з кодами від 32 до 127). Наявність завершального нуля опціонально і залежить від вимог парсера.
  • UTF-8 — рядок Unicode у форматі UTF-8. Наявність завершального нуля опціонально і залежить від вимог парсера.
  • Date — час у наносекундах, знакове ціле, 64 біта. 0 означає початок третього тисячоліття 01.01.2001 00:00:00,000000000 UTC.
  • Master-element — контейнер для інших EBML елементів (більш низького рівня).
  • Binary — дані, що не інтерпретуються парсером.

Числа змінного розміру

Однією з особливостей формату є числа змінного розміру. Кодування числа здійснюється подібно кодуванню символів в кодуванні UTF-8, розмір числа визначається кількістю нульових біт (точніше, положенням першого ненульового біта). Максимальне число обчислюється як 2 кількість бітів−2.

12345678бітівдіапазон, що кодується
1×××××××7[0;126]
01××××××××××××××14[0;16382]
001×××××××××××××××××××××21[0;2097150]
0001××××××××××××××××××××××××××××28[0;268435454]
00001×××××××××××××××××××××××××××××××××××35[0;34359738366]
000001××××××××××××××××××××××××××××××××××××××××××42[0;4398046511102]
0000001×××××××××××××××××××××××××××××××××××××××××××××××××49[0;562949953421310]
00000001××××××××××××××××××××××××××××××××××××××××××××××××××××××××56[0;72057594037927934]

Див. також

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.