事件流是一種文件格式規格。它是儲存事件流的標準,可用於在電子設備之間傳輸事件。該規範包括版本控制系統,以便在保持向後相容性的同時允許進行大規模更改。事件流檔案的建議副檔名是.es 。
對於位元組b
, b[0]
表示 LSB(最低有效位元), b[7]
表示 MSB(最高有效位元)。
每個事件流檔案都以 15 位元組的標頭開頭:
位置 | 內容 |
---|---|
位元組 0 到 11 | 0x45 0x76 0x65 0x6e 0x74 0x20 0x53 0x74 0x72 0x65 0x61 0x6d (事件流ASCII 編碼) |
位元組12 | 主要版本 |
位元組13 | 次要版本 |
位元組14 | 補丁版本 |
版本編號遵循語意版本控制約定。位元組 15 到末尾取決於版本。下面給出內容描述。
此文件可以表示五種類型的流:通用事件、DVS 事件、ATIS 事件、非同步和模組化顯示事件以及顏色事件。類型儲存在位元組 15 中:
位元組15 | 碼流類型 |
---|---|
0x00 | 通用事件 |
0x01 | DVS 事件 |
0x02 | ATIS 事件 |
0x03 | 非同步和模組化顯示事件 |
0x04 | 顏色事件 |
位元組16到末尾可以是重設、溢出、位元組0 、大小位元組和資料位元組中的任何一個。這些位元組的可能順序由狀態機給出:
位元組編碼以下資料:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
重置 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
溢出 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
位元組0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
大小位元組 | s[6] | s[5] | s[4] | s[3] | s[2] | s[1] | s[0] | is_last |
資料位元組 | d[7] | d[6] | d[5] | d[4] | d[3] | d[2] | d[1] | d[0] |
重設是在認為有必要修正由位元錯誤所引起的狀態機錯誤時插入的特殊位元組。
t編碼自上一個事件以來經過的時間(以微秒為單位),並且不能是0b11111110
也不能是0b11111111
。如果該時間等於或大於0b11111110
微秒,則在事件之前插入一個或多個溢出位元組。自上次事件以來經過的實際時間可以計算為當前事件的時間戳加上0b11111110
微秒乘以溢位位元組數。
每個事件的資料有效負載以一個或多個 size 位元組開始,對要讀取的資料位元組數進行編碼。要讀取的資料位元組數n
由下式給出:
n = ∑ (s_i) << (7 * i)
其中s_i, i ∈ [0, k - 1]
表示第 (i + 1) 個s
值, k
為 size 位元組數。 size 位元組的最小數量取決於資料位元組的數量。同一流的事件可以具有不同數量的資料位元組和不同數量的大小位元組。 n
資料位元組至少需要Γlb(n + 1) / 7⅂
大小的位元組,其中Γ…⅂
是 ceil 函數, lb(…)
是二進位對數。儘管事件流規範允許更大數量的大小字節,但鼓勵產生通用事件的應用程式或裝置使用這個最小數量。
對於資料位元組之前的最後一個大小字節, is_last
等於0
,否則等於1
。
d
對使用者提供的資料進行編碼。
位元組 16 到 19 編碼感測器的寬度和高度:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
位元組16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
位元組17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
位元組 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
位元組 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(分別為h
)編碼感測器的寬度(分別為高度)。事件的 x(分別為 y)座標必須在整數範圍[0, w - 1]
(分別為[0, h - 1]
)內。
位元組20到最後可以是重設、溢位、位元組0 、位元組1 、位元組2 、位元組3和位元組4中的任一個。這些位元組的可能順序由狀態機給出:
位元組編碼以下資料:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
重置 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
溢出 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
位元組0 | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] | is_increase |
位元組1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
位元組2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
位元組3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
位元組4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
重設是在認為有必要修正由位元錯誤所引起的狀態機錯誤時插入的特殊事件。重設位元組應一次插入五個,以便在空閒狀態下至少讀取一個位元組。
t
編碼自上一個事件以來經過的時間(以微秒為單位),且不能是0b1111111
。如果該時間等於或大於0b1111111
微秒,則在事件之前插入一個或多個溢出位元組。自上次事件以來經過的實際時間可以計算為當前事件的時間戳加上0b1111111
微秒乘以溢位位元組數。
對於光增強事件, is_increase
等於1
,否則等於0
。
x
和y
編碼與事件關聯的像素座標。
位元組 16 到 19 編碼感測器的寬度和高度:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
位元組16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
位元組17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
位元組 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
位元組 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(分別為h
)編碼感測器的寬度(分別為高度)。事件的 x(分別為 y)座標必須在整數範圍[0, w - 1]
(分別為[0, h - 1]
)內。
位元組20到最後可以是重設、溢位、位元組0 、位元組1 、位元組2 、位元組3和位元組4中的任何一個。這些位元組的可能順序由狀態機給出:
位元組編碼以下資料:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
重置 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
溢出 | 1 | 1 | 1 | 1 | 1 | 1 | overflow[1] | overflow[0] |
位元組0 | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] | polarity | is_tc |
位元組1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
位元組2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
位元組3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
位元組4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
重設是在認為有必要修正由位元錯誤所引起的狀態機錯誤時插入的特殊事件。重設位元組應一次插入五個,以便在空閒狀態下至少讀取一個位元組。
t
編碼自上一個事件以來經過的時間(以微秒為單位),且不能是0b111111
。如果該時間等於或大於0b111111
微秒,則在事件之前插入一個或多個溢出位元組。自上一個事件以來經過的實際時間可以計算為當前事件的時間戳加上0b111111
微秒乘以每個溢位事件的overflow[0]
、 overflow[1]
編碼的數字。
對於 DVS 事件, is_tc
等於0
;對於閾值跨越(曝光測量的一半),is_tc 等於1
。對於 DVS 事件, polarity
儲存is_increase
,對於閾值交叉儲存is_second
。
x
和y
編碼與事件關聯的像素座標。
位元組16 到末尾可以是重設、溢出、位元組0 、位元組1 、位元組2和位元組_3中的任何一個。這些位元組的可能順序由狀態機給出:
位元組編碼以下資料:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
重置 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
溢出 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
位元組0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
位元組1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
位元組2 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
位元組3 | s[7] | s[6] | s[5] | s[4] | s[3] | s[2] | s[1] | s[0] |
重設是在認為有必要修正由位元錯誤所引起的狀態機錯誤時插入的特殊事件。重設位元組應一次插入四個,以便在空閒狀態下至少讀取一個位元組。
t
編碼自上一個事件以來經過的時間(以微秒為單位),並且不能是0b11111110
也不能是0b11111111
。如果該時間等於或大於0b11111110
微秒,則在事件之前插入一個或多個溢出位元組。自上次事件以來經過的實際時間可以計算為當前事件的時間戳加上0b11111110
微秒乘以溢位位元組數。
x
和y
編碼與事件關聯的像素座標。
s
對金字塔中的當前階段進行編碼。在顯示之外,其值應為0b00000000
(有關詳細信息,請參閱非同步和模組化顯示文件)。
位元組 16 到 19 編碼感測器的寬度和高度:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
位元組16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
位元組17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
位元組 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
位元組 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(分別為h
)編碼感測器的寬度(分別為高度)。事件的 x(分別為 y)座標必須在整數範圍[0, w - 1]
(分別為[0, h - 1]
)內。
位元組20到最後可以是重設、溢位、位元組0 、位元組1 、位元組2 、位元組3 、位元組4 、位元組5 、位元組6和位元組7中的任一個。這些位元組的可能順序由狀態機給出:
位元組編碼以下資料:
位元組名稱 | 最高位 | 位元 6 | 位元 5 | 位元 4 | 位元 3 | 位元 2 | 位元 1 | 最低有效位 |
---|---|---|---|---|---|---|---|---|
重置 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
溢出 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
位元組0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
位元組1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
位元組2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
位元組3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
位元組4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
位元組5 | r[7] | r[6] | r[5] | r[4] | r[3] | r[2] | r[1] | r[0] |
位元組6 | g[7] | g[6] | g[5] | g[4] | g[3] | g[2] | g[1] | g[0] |
位元組7 | b[7] | b[6] | b[5] | b[4] | b[3] | b[2] | b[1] | b[0] |
重設是在認為有必要修正由位元錯誤所引起的狀態機錯誤時插入的特殊事件。重設位元組應一次插入高度,以便在空閒狀態下至少讀取一個位元組。
t
編碼自上一個事件以來經過的時間(以微秒為單位),並且不能是0b11111110
也不能是0b11111111
。如果該時間等於或大於0b11111110
微秒,則在事件之前插入一個或多個溢出位元組。自上次事件以來經過的實際時間可以計算為當前事件的時間戳加上0b11111110
微秒乘以溢位位元組數。
x
和y
編碼與事件關聯的像素座標。
r
、 g
和b
編碼紅色、綠色和藍色分量。
請參閱 LICENSE 檔案以了解授權權利和限制 (GNU GPLv3)。