Event Stream adalah spesifikasi format file. Ini dimaksudkan sebagai standar untuk menyimpan aliran peristiwa, dan dapat digunakan untuk mentransmisikan peristiwa antar perangkat elektronik. Spesifikasinya mencakup sistem versi, untuk memungkinkan perubahan besar-besaran sambil menjaga kompatibilitas ke belakang. Ekstensi yang disarankan untuk file Event Stream adalah .es .
Untuk byte b
, b[0]
menunjukkan LSB (bit paling signifikan) dan b[7]
menunjukkan MSB (bit paling signifikan).
Setiap file Event Stream dimulai dengan header 15 byte:
Posisi | Isi |
---|---|
Byte 0 hingga 11 | 0x45 0x76 0x65 0x6e 0x74 0x20 0x53 0x74 0x72 0x65 0x61 0x6d ( Aliran Peristiwa dikodekan ASCII) |
byte 12 | Versi utama |
byte 13 | Versi kecil |
byte 14 | Versi tambalan |
Penomoran versi mengikuti konvensi Versi Semantik. Byte 15 sampai akhir bergantung pada versi. Deskripsi konten diberikan di bawah ini.
File tersebut dapat mewakili lima jenis aliran: peristiwa umum, peristiwa DVS, peristiwa ATIS, peristiwa Tampilan Asinkron & Modular, dan peristiwa berwarna. Tipenya disimpan dalam byte 15:
byte 15 | Jenis aliran |
---|---|
0x00 | Peristiwa umum |
0x01 | acara DVS |
0x02 | acara ATIS |
0x03 | Acara Tampilan Asinkron & Modular |
0x04 | Acara berwarna |
Byte 16 sampai akhir dapat berupa reset , overflow , byte 0 , size byte dan data byte . Kemungkinan urutan byte ini diberikan oleh mesin negara:
Byte mengkodekan data berikut:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 1 | LSB |
---|---|---|---|---|---|---|---|---|
mengatur ulang | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
meluap | 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] |
ukuran byte | s[6] | s[5] | s[4] | s[3] | s[2] | s[1] | s[0] | is_last |
byte data | d[7] | d[6] | d[5] | d[4] | d[3] | d[2] | d[1] | d[0] |
reset adalah byte khusus yang dimasukkan bila dianggap perlu untuk memperbaiki kesalahan mesin keadaan akibat kesalahan bit.
t mengkodekan waktu yang telah berlalu sejak peristiwa sebelumnya dalam mikrodetik, dan tidak boleh 0b11111110
atau 0b11111111
. Jika waktu ini sama dengan atau lebih besar dari 0b11111110
mikrodetik, satu atau beberapa byte overflow dimasukkan sebelum kejadian. Waktu aktual yang berlalu sejak peristiwa terakhir dapat dihitung sebagai stempel waktu peristiwa saat ini ditambah 0b11111110
mikrodetik dikalikan dengan jumlah byte luapan .
Payload data setiap peristiwa dimulai dengan satu atau beberapa byte ukuran, yang mengkodekan jumlah byte data yang akan dibaca. Jumlah n
byte data yang harus dibaca diberikan oleh:
n = ∑ (s_i) << (7 * i)
dimana s_i, i ∈ [0, k - 1]
menunjukkan nilai (i + 1)th s
, dan k
jumlah ukuran byte. Jumlah minimum ukuran byte bergantung pada jumlah byte data. Peristiwa pada aliran yang sama dapat memiliki jumlah byte data yang berbeda dan jumlah byte ukuran yang berbeda. n
byte data memerlukan setidaknya byte ukuran Γlb(n + 1) / 7⅂
, dengan Γ…⅂
adalah fungsi ceil dan lb(…)
adalah logaritma biner. Aplikasi atau perangkat yang menghasilkan kejadian umum dianjurkan untuk menggunakan jumlah minimal ini, meskipun spesifikasi Event Stream mengizinkan jumlah byte ukuran yang lebih besar.
is_last
sama dengan 0
untuk byte ukuran terakhir sebelum byte data, dan 1
sebaliknya.
d
mengkodekan data yang disediakan pengguna.
Byte 16 hingga 19 mengkodekan lebar dan tinggi sensor:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 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
(masing-masing h
) mengkodekan lebar sensor (masing-masing tinggi). Koordinat x (masing-masing y) suatu peristiwa harus berada dalam rentang bilangan bulat [0, w - 1]
(masing-masing [0, h - 1]
).
Byte 20 sampai akhir dapat berupa reset , overflow , byte 0 , byte 1 , byte 2 , byte 3 dan byte 4 . Kemungkinan urutan byte ini diberikan oleh mesin negara:
Byte mengkodekan data berikut:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 1 | LSB |
---|---|---|---|---|---|---|---|---|
mengatur ulang | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
meluap | 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 adalah acara khusus yang dimasukkan bila dianggap perlu untuk memperbaiki kesalahan mesin keadaan akibat kesalahan bit. reset byte harus dimasukkan lima byte sekaligus, sehingga setidaknya satu byte dibaca saat dalam keadaan idle .
t
mengkodekan waktu yang telah berlalu sejak peristiwa sebelumnya dalam mikrodetik, dan tidak boleh 0b1111111
. Jika waktu ini sama atau lebih besar dari 0b1111111
mikrodetik, satu atau beberapa byte overflow dimasukkan sebelum kejadian. Waktu aktual yang berlalu sejak peristiwa terakhir dapat dihitung sebagai stempel waktu peristiwa saat ini ditambah 0b1111111
mikrodetik dikalikan dengan jumlah byte luapan .
is_increase
sama dengan 1
untuk kejadian peningkatan ringan, dan 0
sebaliknya.
x
dan y
menyandikan koordinat piksel yang terkait dengan peristiwa tersebut.
Byte 16 hingga 19 mengkodekan lebar dan tinggi sensor:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 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
(masing-masing h
) mengkodekan lebar sensor (masing-masing tinggi). Koordinat x (masing-masing y) suatu peristiwa harus berada dalam rentang bilangan bulat [0, w - 1]
(masing-masing [0, h - 1]
).
Byte 20 sampai akhir dapat berupa reset , overflow , byte 0 , byte 1 , byte 2 , byte 3 dan byte 4 . Kemungkinan urutan byte ini diberikan oleh mesin negara:
Byte mengkodekan data berikut:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 1 | LSB |
---|---|---|---|---|---|---|---|---|
mengatur ulang | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
meluap | 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 adalah acara khusus yang dimasukkan bila dianggap perlu untuk memperbaiki kesalahan mesin keadaan akibat kesalahan bit. reset byte harus dimasukkan lima byte sekaligus, sehingga setidaknya satu byte dibaca saat dalam keadaan idle .
t
mengkodekan waktu yang telah berlalu sejak peristiwa sebelumnya dalam mikrodetik, dan tidak boleh 0b111111
. Jika waktu ini sama atau lebih besar dari 0b111111
mikrodetik, satu atau beberapa byte overflow dimasukkan sebelum kejadian. Waktu aktual yang berlalu sejak peristiwa terakhir dapat dihitung sebagai stempel waktu peristiwa saat ini ditambah 0b111111
mikrodetik dikalikan dengan angka yang dikodekan oleh overflow[0]
, overflow[1]
untuk setiap peristiwa luapan .
is_tc
sama dengan 0
untuk peristiwa DVS, dan 1
untuk ambang batas yang melintasi (setengah pengukuran paparan). polarity
menyimpan is_increase
untuk acara DVS, dan is_second
untuk melintasi ambang batas.
x
dan y
menyandikan koordinat piksel yang terkait dengan peristiwa tersebut.
Byte 16 sampai akhir dapat berupa reset , overflow , byte 0 , byte 1 , byte 2 dan byte_3 . Kemungkinan urutan byte ini diberikan oleh mesin negara:
Byte mengkodekan data berikut:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 1 | LSB |
---|---|---|---|---|---|---|---|---|
mengatur ulang | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
meluap | 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 adalah acara khusus yang dimasukkan bila dianggap perlu untuk memperbaiki kesalahan mesin keadaan akibat kesalahan bit. reset byte harus dimasukkan empat byte sekaligus, sehingga setidaknya satu byte dibaca saat dalam keadaan idle .
t
mengkodekan waktu yang telah berlalu sejak peristiwa sebelumnya dalam mikrodetik, dan tidak boleh 0b11111110
atau 0b11111111
. Jika waktu ini sama dengan atau lebih besar dari 0b11111110
mikrodetik, satu atau beberapa byte overflow dimasukkan sebelum kejadian. Waktu aktual yang berlalu sejak peristiwa terakhir dapat dihitung sebagai stempel waktu peristiwa saat ini ditambah 0b11111110
mikrodetik dikalikan dengan jumlah byte luapan .
x
dan y
menyandikan koordinat piksel yang terkait dengan peristiwa tersebut.
s
mengkodekan tahapan saat ini dalam piramida. Di luar tampilan, nilainya harus 0b00000000
(lihat dokumentasi tampilan asinkron & modular untuk detailnya).
Byte 16 hingga 19 mengkodekan lebar dan tinggi sensor:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 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
(masing-masing h
) mengkodekan lebar sensor (masing-masing tinggi). Koordinat x (masing-masing y) suatu peristiwa harus berada dalam rentang bilangan bulat [0, w - 1]
(masing-masing [0, h - 1]
).
Byte 20 sampai akhir dapat berupa reset , overflow , byte 0 , byte 1 , byte 2 , byte 3 , byte 4 , byte 5 , byte 6 dan byte 7 . Kemungkinan urutan byte ini diberikan oleh mesin negara:
Byte mengkodekan data berikut:
Nama byte | MSB | Bagian 6 | Bagian 5 | Bagian 4 | Bagian 3 | Bagian 2 | Bagian 1 | LSB |
---|---|---|---|---|---|---|---|---|
mengatur ulang | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
meluap | 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 adalah peristiwa khusus yang dimasukkan bila dianggap perlu untuk memperbaiki kesalahan mesin keadaan akibat kesalahan bit. byte reset harus dimasukkan tinggi pada satu waktu, sehingga setidaknya satu byte dibaca saat dalam keadaan idle .
t
mengkodekan waktu yang telah berlalu sejak peristiwa sebelumnya dalam mikrodetik, dan tidak boleh 0b11111110
atau 0b11111111
. Jika waktu ini sama dengan atau lebih besar dari 0b11111110
mikrodetik, satu atau beberapa byte overflow dimasukkan sebelum kejadian. Waktu aktual yang berlalu sejak peristiwa terakhir dapat dihitung sebagai stempel waktu peristiwa saat ini ditambah 0b11111110
mikrodetik dikalikan dengan jumlah byte luapan .
x
dan y
menyandikan koordinat piksel yang terkait dengan peristiwa tersebut.
r
, g
dan b
mengkodekan komponen warna merah, hijau dan biru.
Lihat file LISENSI untuk mengetahui hak dan batasan lisensi (GNU GPLv3).