Event Stream es una especificación de formato de archivo. Está pensado como un estándar para almacenar flujos de eventos y puede usarse para transmitir eventos entre dispositivos electrónicos. La especificación incluye un sistema de versiones para permitir cambios masivos manteniendo la compatibilidad con versiones anteriores. La extensión recomendada para los archivos de Event Stream es .es .
Para un byte b
, b[0]
denota el LSB (bit menos significativo) y b[7]
denota el MSB (bit más significativo).
Cada archivo de Event Stream comienza con un encabezado de 15 bytes:
Posición | Contenido |
---|---|
Bytes 0 a 11 | 0x45 0x76 0x65 0x6e 0x74 0x20 0x53 0x74 0x72 0x65 0x61 0x6d ( flujo de eventos codificado en ASCII) |
Byte 12 | Versión principal |
Byte 13 | Versión menor |
Byte 14 | Versión de parche |
La numeración de versiones sigue la convención de versiones semánticas. Los bytes 15 hasta el final dependen de la versión. La descripción del contenido se proporciona a continuación.
El archivo puede representar cinco tipos de transmisiones: eventos genéricos, eventos DVS, eventos ATIS, eventos de visualización modular y asíncrona y eventos de color. El tipo se almacena en el byte 15:
Byte 15 | tipo de flujo |
---|---|
0x00 | Eventos genéricos |
0x01 | Eventos DVS |
0x02 | Eventos ATIS |
0x03 | Eventos de visualización asincrónica y modular |
0x04 | Eventos de color |
Los bytes 16 hasta el final pueden ser reinicio , desbordamiento , byte 0 , byte de tamaño y byte de datos . El posible orden de estos bytes lo da la máquina de estados:
Los bytes codifican los siguientes datos:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
reiniciar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
rebosar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
byte 0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
byte de tamaño | s[6] | s[5] | s[4] | s[3] | s[2] | s[1] | s[0] | is_last |
byte de datos | d[7] | d[6] | d[5] | d[4] | d[3] | d[2] | d[1] | d[0] |
reset es un byte especial que se inserta cuando se considera necesario para corregir errores de la máquina de estado resultantes de errores de bits.
t codifica el tiempo transcurrido desde el evento anterior en microsegundos y no puede ser 0b11111110
ni 0b11111111
. Si este tiempo es igual o mayor que 0b11111110
microsegundos, se insertan uno o varios bytes de desbordamiento antes del evento. El tiempo real transcurrido desde el último evento se puede calcular como la marca de tiempo del evento actual más 0b11111110
microsegundos multiplicado por el número de bytes desbordados .
La carga útil de datos de cada evento comienza con uno o varios bytes de tamaño, que codifican la cantidad de bytes de datos que se leerán. El número n
de bytes de datos a leer viene dado por:
n = ∑ (s_i) << (7 * i)
donde s_i, i ∈ [0, k - 1]
denota el (i + 1)ésimo valor s
y k
el número de bytes de tamaño. El número mínimo de bytes de tamaño depende del número de bytes de datos. Los eventos del mismo flujo pueden tener diferentes números de bytes de datos y diferentes números de bytes de tamaño. n
bytes de datos requieren al menos Γlb(n + 1) / 7⅂
bytes de tamaño, donde Γ…⅂
es la función techo y lb(…)
es el logaritmo binario. Se recomienda que las aplicaciones o dispositivos que generan eventos genéricos utilicen este número mínimo, aunque la especificación Event Stream permite una mayor cantidad de bytes de tamaño.
is_last
es igual a 0
para el último byte de tamaño antes de los bytes de datos y 1
en caso contrario.
d
codifica los datos proporcionados por el usuario.
Los bytes 16 a 19 codifican el ancho y alto del sensor:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
byte 16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
byte 17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
byte 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
byte 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(respectivamente h
) codifica el ancho del sensor (respectivamente la altura). La coordenada x (respectivamente y) de un evento debe estar en el rango de números enteros [0, w - 1]
(respectivamente [0, h - 1]
).
Los bytes 20 hasta el final pueden ser cualquiera de reinicio , desbordamiento , byte 0 , byte 1 , byte 2 , byte 3 y byte 4 . El orden posible de estos bytes lo da la máquina de estados:
Los bytes codifican los siguientes datos:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
reiniciar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
rebosar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
byte 0 | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] | is_increase |
byte 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
byte 2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
byte 3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
byte 4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
reset es un evento especial insertado cuando se considera necesario para corregir errores de la máquina de estado resultantes de errores de bits. Los bytes de reinicio deben insertarse de cinco en cinco, de modo que se lea al menos un byte mientras está en estado inactivo .
t
codifica el tiempo transcurrido desde el evento anterior en microsegundos y no puede ser 0b1111111
. Si este tiempo es igual o mayor que 0b1111111
microsegundos, se insertan uno o varios bytes de desbordamiento antes del evento. El tiempo real transcurrido desde el último evento se puede calcular como la marca de tiempo del evento actual más 0b1111111
microsegundos multiplicado por el número de bytes desbordados .
is_increase
es igual a 1
para eventos de aumento ligero y 0
en caso contrario.
x
y
codifican las coordenadas de píxeles asociadas con el evento.
Los bytes 16 a 19 codifican el ancho y alto del sensor:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
byte 16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
byte 17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
byte 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
byte 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(respectivamente h
) codifica el ancho del sensor (respectivamente la altura). La coordenada x (respectivamente y) de un evento debe estar en el rango de números enteros [0, w - 1]
(respectivamente [0, h - 1]
).
Los bytes 20 hasta el final pueden ser cualquiera de reinicio , desbordamiento , byte 0 , byte 1 , byte 2 , byte 3 y byte 4 . El orden posible de estos bytes lo da la máquina de estados:
Los bytes codifican los siguientes datos:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
reiniciar | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
rebosar | 1 | 1 | 1 | 1 | 1 | 1 | overflow[1] | overflow[0] |
byte 0 | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] | polarity | is_tc |
byte 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
byte 2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
byte 3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
byte 4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
reset es un evento especial insertado cuando se considera necesario para corregir errores de la máquina de estado resultantes de errores de bits. Los bytes de reinicio deben insertarse de cinco en cinco, de modo que se lea al menos un byte mientras está en estado inactivo .
t
codifica el tiempo transcurrido desde el evento anterior en microsegundos y no puede ser 0b111111
. Si este tiempo es igual o mayor que 0b111111
microsegundos, se insertan uno o varios bytes de desbordamiento antes del evento. El tiempo real transcurrido desde el último evento se puede calcular como la marca de tiempo del evento actual más 0b111111
microsegundos multiplicado por el número codificado por overflow[0]
, overflow[1]
para cada evento de desbordamiento .
is_tc
es igual a 0
para un evento DVS y 1
para un cruce de umbral (media medición de exposición). polarity
almacena is_increase
para un evento DVS y is_second
para el cruce de umbral.
x
y
codifican las coordenadas de píxeles asociadas con el evento.
Los bytes 16 hasta el final pueden ser cualquiera de reset , overflow , byte 0 , byte 1 , byte 2 y byte_3 . El orden posible de estos bytes lo da la máquina de estados:
Los bytes codifican los siguientes datos:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
reiniciar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
rebosar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
byte 0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
byte 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
byte 2 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
byte 3 | s[7] | s[6] | s[5] | s[4] | s[3] | s[2] | s[1] | s[0] |
reset es un evento especial insertado cuando se considera necesario para corregir errores de la máquina de estado resultantes de errores de bits. Los bytes de reinicio deben insertarse de cuatro en cuatro, de modo que se lea al menos un byte mientras está en estado inactivo .
t
codifica el tiempo transcurrido desde el evento anterior en microsegundos y no puede ser 0b11111110
ni 0b11111111
. Si este tiempo es igual o mayor que 0b11111110
microsegundos, se insertan uno o varios bytes de desbordamiento antes del evento. El tiempo real transcurrido desde el último evento se puede calcular como la marca de tiempo del evento actual más 0b11111110
microsegundos multiplicado por el número de bytes desbordados .
x
y
codifican las coordenadas de píxeles asociadas con el evento.
s
codifica la etapa actual en la pirámide. Fuera de la pantalla, su valor debe ser 0b00000000
(consulte la documentación de pantalla modular y asíncrona para obtener más detalles).
Los bytes 16 a 19 codifican el ancho y alto del sensor:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
byte 16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
byte 17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
byte 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
byte 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(respectivamente h
) codifica el ancho del sensor (respectivamente la altura). La coordenada x (respectivamente y) de un evento debe estar en el rango de números enteros [0, w - 1]
(respectivamente [0, h - 1]
).
Los bytes 20 hasta el final pueden ser cualquiera de los siguientes: reinicio , desbordamiento , byte 0 , byte 1 , byte 2 , byte 3 , byte 4 , byte 5 , byte 6 y byte 7 . El orden posible de estos bytes lo da la máquina de estados:
Los bytes codifican los siguientes datos:
Nombre del byte | MSB | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | LSB |
---|---|---|---|---|---|---|---|---|
reiniciar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
rebosar | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
byte 0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
byte 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
byte 2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
byte 3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
byte 4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
byte 5 | r[7] | r[6] | r[5] | r[4] | r[3] | r[2] | r[1] | r[0] |
byte 6 | g[7] | g[6] | g[5] | g[4] | g[3] | g[2] | g[1] | g[0] |
byte 7 | b[7] | b[6] | b[5] | b[4] | b[3] | b[2] | b[1] | b[0] |
reset es un evento especial insertado cuando se considera necesario para corregir errores de la máquina de estado resultantes de errores de bits. Los bytes de reinicio deben insertarse en altura a la vez, de modo que se lea al menos un byte mientras está en estado inactivo .
t
codifica el tiempo transcurrido desde el evento anterior en microsegundos y no puede ser 0b11111110
ni 0b11111111
. Si este tiempo es igual o mayor que 0b11111110
microsegundos, se insertan uno o varios bytes de desbordamiento antes del evento. El tiempo real transcurrido desde el último evento se puede calcular como la marca de tiempo del evento actual más 0b11111110
microsegundos multiplicado por el número de bytes desbordados .
x
y
codifican las coordenadas de píxeles asociadas con el evento.
r
, g
y b
codifican los componentes de color rojo, verde y azul.
Consulte el archivo LICENCIA para conocer los derechos y limitaciones de la licencia (GNU GPLv3).