# BiM

BiM (Binary MPEG format for XML) és un estàndard internacional que defineix un format binari i genèric per codificar documents XML.

## Introducció

BiM comprèn una gran quantitat d'aplicacions i requeriments, proporcionant mètodes genèrics per a transmetre i comprimir documents XML. El format binari MPEG per XML es basa en un esquema conegut pel codificador i el descodificador. Així es pot aconseguir una alta compressió eficient i a la vegada, proporcionar mecanismes de fragmentació per assegurar una transmissió i processat flexible.
El BiM també defineix com s'ha de compilar i transmetre la informació sobre l'esquema necessari per a la descodificació de documents XML comprimits sense conèixer l'esquema en el receptor, a priori.
Les especificacions tècniques per al BiM es troben a: MPEG systems technologies – Part 1: Binary MPEG format for XML (ISO/IEC 23001-1). I es pot utilitzar per a codificar MPEG-7 i MPEG-21, tal com s'especifica en l'ISO/IEC 15938-1 (MPEG-7 SYSTEMS) i 21000-16 (MPEG-21 Binary Format).

## Àmbit

Aquesta part de l'ISO/IEC 23001 proveeix un conjunt de tecnologies estàndard per a codificar documents XML. Abraça un gran espectre d'aplicacions i requeriments a partir de proporcionar un mètode que permet transmetre i comprimir documents XML.
Aquesta part de l'ISO/IEC 23001 especifica les funcionalitats a nivell de sistema per a la comunicació de documents XML. Aquesta especificació permetrà:
* Habilitar el desenvolupament de l'ISO/IEC 23001-1, receptor de subsistemes, per tal de rebre i ajuntar possibles documents XML partits i comprimits.
* Proporcionar normes per a la preparació de documents XML eficients per al seu transport i emmagatzematge.
El procés de descodificació segueix una normativa. Les normes proporcionen una guia per a la preparació i codificació de documents XML, sense basar-se en una representació codificada única d'aquests documents.

## Conceptes de codificació

La idea original de la codificació BiM per documents XML és la de reduir les possibilitats de codificació de cada component del document a través de descodificació contextual combinada amb l'ús d'informació dels esquemes. L'estructura de codificació es basa principalment en l'exemple de contingut de l'esquema XML, i el format de codificació n'extreu la seva font d'optimització.
El BiM és conscient dels esquemes de codificació, així, per exemple, es basa en el fet que codificador i descodificador coneixen l'esquema.
Hi ha la possibilitat que l'esquema canviï al llarg del temps o que el descodificador no conegui tota la informació de l'esquema. El BiM permet al codificador enviar el nou esquema al descodificador. La informació addicional de l'esquema és enviada de tal forma que consumeixi el mínim de recursos de la CPU del descodificador. Els esquemes són codificats binàriament i transportats en una unitat d'actualització d'esquema (Schema Update Unit (SUU)).

## Procés de descodificació
### Fragment Update Units (FUU)

La transmissió d'un document BiM és progressiva, i es fa a través d'un conjunt d'actualitzacions elementals, anomenades Fragment Update Units (FUU). Aquestes FUUs s'empaqueten dins d'unitats d'accés (AU). Les AU són les unitats més petites de transport, és a dir, el mínim paquet que transmetrem. A les AU s'hi associa informació temporal.
Cada FUU es compon d'un camí (FU context path). Aquest camí apunta al node que s'ha d'afegir, actualitzar o eliminar de la versió del document que té el descodificador. A part del camí, es compon d'un payload que conté la porció del document transportat. El payload es defineix com la part d'un corrent de dades que aporta informació sobre l'usuari.
A la figura 2 es mostra el resultat d'utilitzar la comanda "add" sobre l'arbre actual del descodificador XML.

### Context Path

Durant la descodificació d'un FU Context Path, els noms i tipus dels elements es descodifiquen progressivament. Es comença per l'element arrel i es va baixant fins al següent node. En cada nivell de l'arbre, els codis transversals s'assignen als possibles elements del camí. A més a més, es descodifiquen les posicions dels elements veïns.

### Descodificació payload

En cas de fer una descodificació payload, els noms i tipus dels elements es descodifiquen progressivament, des del primer element fins a l'últim, tal com es mostra en la figura 4. En aquest cas no cal descodificar informació sobre la posició, i s'utilitzen moltes tècniques per aconseguir una bona compressió.
La millor manera de codificar informació sobre l'estructura és amb el descodificador d'autòmats d'estats finits (Finite State Automaton Decoders (FSAD)). L'FSAD és un transductor que genera elements XML a partir de la lectura d'alguns bits del corrent binari.
Els FSAD es construeixen a partir de la definició de l'esquema d'un tipus complex. En concret, es basen en l'estructura del model de contingut i en la posició dels elements d'aquest model.
La descodificació es realitza a partir de la propagació d'un senyal (token) a través de l'autòmat.

### Datatype codecs (còdecs del tipus de dades)

Cada tipus simple (caràcter, enter…) es descodifica utilitzant còdecs bàsics proporcionats per les especificacions, com podrien ser la IEEE 754, UTF-8, compact integers, VLC integers, entre molts d'altres. Tot i així, es poden afegir nous còdecs específics d'algun tipus de llenguatge. Per fer-ho, utilitzarem un mecanisme anomenat type-codec mapping, definit en l'estàndard.
Per tal de poder associar descodificadors específics a cada tipus de dada, el BiM dona la possibilitat de definir descodificadors optimitzats avançats. Els podem canviar d'estat on/off (encès/apagat) dinàmicament durant el processament del document. També podem modificar alguns paràmetres de forma dinàmica.
Tot i que cada aplicació pot utilitzar els seus propis còdecs, el BiM defineix tres còdecs avançats: uniform quantizer, non-uniform quantizer i zlib.

## Referències de la normativa

Per tal d'aplicar la normativa és indispensable basar-se en els següents documents:
* ISO/IEC 10646:2003, Information Technology – Universal Multiple-Octet Coded Character Set (UCS).
* XML, Extensible Markup Language (XML) 1.0, Octubre del 2000.
* XML Schema, W3C Recommendation, 2 de maig del 2001.
* XML Schema Part 0: Primer, W3C Recommendation, 2 de maig del 2001.
* XML Schema Part 1: Structures, W3C Recommendation, 2 de maig del 2001.
* XML Schema Part 2: Datatypes, W3C Recommendation, 2 de maig del 2001.
* XPath, XML Path Language, W3C Recommendation, 16 de novembre del 1999.
* Namespaces in XML, W3C Recommendation, 14 de gener del 1999.

## Aplicació del BiM

El BiM s'utilitza com un format binari estàndard per codificació de XML en les següents especificacions:
* MPEG-4 Part 20 (ISO/IEC 14496-20).
* MPEG-7 Systems (ISO/IEC 15938-1).
* MPEG-21 Format Binari (ISO/IEC 21000-16).
* TV-Anytime: emissió i serveis en línia: buscar, seleccionar i un ús legítim del contingut en sistemes personals d'emmagatzematge. (ETSI TS 102 822).
* ARIB: Codificació, transmissió i especificacions d'emmagatzematge per sistemes d'emissió basats en servidors domèstics (ARIB-STD B38).
* DVB: Transport i senyalització d'informació de TV-Anytime en corrents de transport DVB (ETSI TS 102 323).
* DVB: Transport d'informació de la Guia de Continguts de banda ampla a través del protocol d'Internet (ETSI TS 102 539).
* DVB: Motlle de dades a través de DVB-H: Guia de serveis electrònics (ETSI TS 102 471).