이벤트 스트림은 파일 형식 사양입니다. 이는 이벤트 스트림을 저장하기 위한 표준을 의미하며 전자 장치 간에 이벤트를 전송하는 데 사용될 수 있습니다. 사양에는 이전 버전과의 호환성을 유지하면서 대규모 변경을 허용하기 위한 버전 관리 시스템이 포함되어 있습니다. Event Stream 파일의 권장 확장자는 .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 이벤트, 비동기 및 모듈식 디스플레이 이벤트, 색상 이벤트 등 5가지 유형의 스트림을 나타낼 수 있습니다. 유형은 바이트 15에 저장됩니다.
바이트 15 | 스트림 유형 |
---|---|
0x00 | 일반 이벤트 |
0x01 | DVS 이벤트 |
0x02 | ATIS 이벤트 |
0x03 | 비동기식 및 모듈식 디스플레이 이벤트 |
0x04 | 컬러 이벤트 |
바이트 16부터 끝까지는 재설정 , 오버플로 , 바이트 0 , 크기 바이트 및 데이터 바이트 중 하나일 수 있습니다. 이러한 바이트의 가능한 순서는 상태 시스템에 의해 제공됩니다.
바이트는 다음 데이터를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
다시 놓기 | 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
마이크로초를 더한 값에 오버플로 바이트 수를 곱하여 계산할 수 있습니다.
각 이벤트의 데이터 페이로드는 읽을 데이터 바이트 수를 인코딩하는 하나 이상의 크기 바이트로 시작됩니다. 읽을 데이터 바이트 수 n
은 다음과 같이 지정됩니다.
n = ∑ (s_i) << (7 * i)
여기서 s_i, i ∈ [0, k - 1]
(i + 1)번째 s
값을 나타내고, k
size 바이트 수를 나타냅니다. 최소 크기 바이트 수는 데이터 바이트 수에 따라 다릅니다. 동일한 스트림의 이벤트는 데이터 바이트 수와 크기 바이트 수가 다를 수 있습니다. n
데이터 바이트에는 최소한 Γlb(n + 1) / 7⅂
크기 바이트가 필요합니다. 여기서 Γ…⅂
는 ceil 함수이고 lb(…)
이진 로그입니다. 일반 이벤트를 생성하는 애플리케이션이나 장치는 이 최소 수를 사용하는 것이 좋지만 이벤트 스트림 사양에서는 더 많은 크기 바이트를 허용합니다.
is_last
데이터 바이트 이전의 마지막 크기 바이트에 대해 0
이고 그렇지 않으면 1
입니다.
d
사용자가 제공한 데이터를 인코딩합니다.
바이트 16~19는 센서의 너비와 높이를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
바이트 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 중 하나일 수 있습니다. 이러한 바이트의 가능한 순서는 상태 시스템에 의해 제공됩니다.
바이트는 다음 데이터를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
다시 놓기 | 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] |
재설정은 비트 오류로 인해 발생하는 상태 기계 오류를 수정하는 데 필요하다고 판단될 때 삽입되는 특수 이벤트입니다. 재설정 바이트는 한 번에 5개씩 삽입되어야 유휴 상태에서 최소 1바이트를 읽을 수 있습니다.
t
이전 이벤트 이후 경과된 시간을 마이크로초 단위로 인코딩하며 0b1111111
일 수 없습니다. 이 시간이 0b1111111
마이크로초보다 크거나 같으면 하나 이상의 오버플로 바이트가 이벤트 앞에 삽입됩니다. 마지막 이벤트 이후 경과된 실제 시간은 현재 이벤트의 타임스탬프에 0b1111111
마이크로초를 더한 값에 오버플로 바이트 수를 곱하여 계산할 수 있습니다.
is_increase
가벼운 증가 이벤트의 경우 1
이고 그렇지 않은 경우 0
입니다.
x
와 y
이벤트와 관련된 픽셀 좌표를 인코딩합니다.
바이트 16~19는 센서의 너비와 높이를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
바이트 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 중 하나일 수 있습니다. 이러한 바이트의 가능한 순서는 상태 시스템에 의해 제공됩니다.
바이트는 다음 데이터를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
다시 놓기 | 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] |
재설정은 비트 오류로 인해 발생하는 상태 기계 오류를 수정하는 데 필요하다고 판단될 때 삽입되는 특수 이벤트입니다. 재설정 바이트는 한 번에 5개씩 삽입되어야 유휴 상태에서 최소 1바이트를 읽을 수 있습니다.
t
이전 이벤트 이후 경과된 시간을 마이크로초 단위로 인코딩하며 0b111111
일 수 없습니다. 이 시간이 0b111111
마이크로초보다 크거나 같으면 하나 이상의 오버플로 바이트가 이벤트 앞에 삽입됩니다. 마지막 이벤트 이후 경과된 실제 시간은 현재 이벤트의 타임스탬프에 0b111111
마이크로초를 더한 값에 각 오버플로 이벤트에 대해 overflow[0]
, overflow[1]
로 인코딩된 숫자를 곱하여 계산할 수 있습니다.
is_tc
DVS 이벤트의 경우 0
이고 임계값 교차(노출 측정의 절반)의 경우 1
입니다. polarity
DVS 이벤트의 경우 is_increase
저장하고 임계값 교차의 경우 is_second
저장합니다.
x
와 y
이벤트와 관련된 픽셀 좌표를 인코딩합니다.
16바이트부터 끝까지는 재설정 , 오버플로 , byte 0 , byte 1 , byte 2 및 byte_3 중 하나일 수 있습니다. 이러한 바이트의 가능한 순서는 상태 시스템에 의해 제공됩니다.
바이트는 다음 데이터를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
다시 놓기 | 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] |
재설정은 비트 오류로 인해 발생하는 상태 기계 오류를 수정하는 데 필요하다고 판단될 때 삽입되는 특수 이벤트입니다. 재설정 바이트는 한 번에 4개씩 삽입되어야 유휴 상태에서 최소 1바이트를 읽을 수 있습니다.
t
이전 이벤트 이후 경과된 시간을 마이크로초 단위로 인코딩하며 0b11111110
또는 0b11111111
일 수 없습니다. 이 시간이 0b11111110
마이크로초 이상이면 이벤트 앞에 하나 이상의 오버플로 바이트가 삽입됩니다. 마지막 이벤트 이후 경과된 실제 시간은 현재 이벤트의 타임스탬프에 0b11111110
마이크로초를 더한 값에 오버플로 바이트 수를 곱하여 계산할 수 있습니다.
x
와 y
이벤트와 관련된 픽셀 좌표를 인코딩합니다.
s
피라미드의 현재 단계를 인코딩합니다. 디스플레이 외부에서는 해당 값이 0b00000000
이어야 합니다(자세한 내용은 비동기 및 모듈식 디스플레이 설명서 참조).
바이트 16~19는 센서의 너비와 높이를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
바이트 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 중 하나일 수 있습니다. 이러한 바이트의 가능한 순서는 상태 시스템에 의해 제공됩니다.
바이트는 다음 데이터를 인코딩합니다.
바이트 이름 | MSB | 비트 6 | 비트 5 | 비트 4 | 비트 3 | 비트 2 | 비트 1 | LSB |
---|---|---|---|---|---|---|---|---|
다시 놓기 | 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] |
재설정 은 비트 오류로 인해 발생하는 상태 기계 오류를 수정하는 데 필요하다고 판단될 때 삽입되는 특수 이벤트입니다. 재설정 바이트는 한 번에 높이로 삽입되어야 유휴 상태에서 최소 1바이트를 읽을 수 있습니다.
t
이전 이벤트 이후 경과된 시간을 마이크로초 단위로 인코딩하며 0b11111110
또는 0b11111111
일 수 없습니다. 이 시간이 0b11111110
마이크로초 이상이면 이벤트 앞에 하나 이상의 오버플로 바이트가 삽입됩니다. 마지막 이벤트 이후 경과된 실제 시간은 현재 이벤트의 타임스탬프에 0b11111110
마이크로초를 더한 값에 오버플로 바이트 수를 곱하여 계산할 수 있습니다.
x
와 y
이벤트와 관련된 픽셀 좌표를 인코딩합니다.
r
, g
및 b
빨간색, 녹색 및 파란색 색상 구성 요소를 인코딩합니다.
라이센스 권리 및 제한사항은 LICENSE 파일을 참조하십시오(GNU GPLv3).