Extensible Binary Meta Language

EBML (Extensible Binary Meta Language) je binární formát souboru. Byl inspirován formátem XML, ale na rozdíl od něj není textový, ale binární.

Použití editovat

Formát EBML byl vytvořen v rámci projektu Matroska, za účelem ukládání tohoto multimediálního kontejneru do binárního souboru. Díky svému návrhu však není na tento účel omezen a je možné pomocí něj ukládat libovolná strukturovaná data. Pro práci s EBML v jazyce C++ nabízí vývojový tým Matroska knihovnu https://github.com/Matroska-Org/libebml.

Výhody a nevýhody editovat

Výhody editovat

  • U různých verzí formátu, který je založen EBML, je možné zachovat zpětnou kompatibilitu
  • Velikost binárních dat není omezená.
  • Velikost polí pro data není konstantní, ale mění se dle potřeby, tudíž v dokumentu nezůstávají přebytečné prázdné znaky.
  • Pro čtení ani zápis není nutné znát předem celkovou velikost, tudíž je možné zpracovávat jako datový proud.

Nevýhody editovat

  • Každý dokument je celek sám o sobě, a nemůže obsahovat reference na jiné EBML soubory.
  • Prozatím neexistuje typ souboru definující typ dokumentu, které smí EBML soubor obsahovat (pro XML soubory existuje DTD).
  • Pro EBML nejsou definovány entity (elementy, které se nahrazují jinými).

Struktura editovat

Obdobně jako XML, i EBML se skládá z elementů, a to povinně kořenového elementu a nepovinně dalších. Každý element se skládá ze tří částí: ID, Popis velikosti a poté samotná data.

ID editovat

ID je číslo, které je kódováno v jednom až čtyřech bytech. Velikost je určena pozicí první jedničky v binárním zápisu, tj. ID bude vypadat takto (kde místo x je binárně zakódované číslo ID):

1xxx xxxx
01xx xxxx xxxx xxxx
001x xxxx xxxx xxxx xxxx xxxx
0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx

Popis velikosti editovat

Popis velikosti je číslo, určující počet bytů dat, které daný element obsahuje. jeho hodnota je v rozmezí 1 až 256, což znamená, že data elementu mohou mít velikost od 1 bytu do zhruba 72000 terabytů. Popis velikosti je kódován obdobně jako ID:

1xxx xxxx
01xx xxxx xxxx xxxx
...
0000 0001 xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx

Data editovat

Data jsou posloupnost bytů, o velikosti určené popisem velikosti, která není nijak interpretována formátem EBML, tj. formát již závisí pouze na tvůrci konkrétního souboru.

Externí odkazy editovat