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 | 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.