Extensible Binary Meta Language

Z Wikipedie, otevřené encyklopedie
(přesměrováno z EBML)

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 | editovat zdroj]

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 | editovat zdroj]

Výhody[editovat | editovat zdroj]

  • 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 | editovat zdroj]

  • 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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]

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 | editovat zdroj]