Faery supports multiple input sources, each creating different types of streams. Understanding which input creates which stream type is crucial for building effective processing pipelines.
5.1Stream type summary¶
| Input Source | Stream Type | Finite? | Regular? | Use Cases |
|---|---|---|---|---|
| Files | FiniteEventsStream | ✅ Yes | ❌ No | Batch processing, analysis, reproducible results |
| Event Cameras | EventsStream | ❌ No | ❌ No | Real-time processing, live monitoring |
| UDP Streams | EventsStream | ❌ No | ❌ No | Network integration, distributed processing |
| Arrays (Python) | FiniteEventsStream | ✅ Yes | ❌ No | Testing, simulation, synthetic data |
| Standard Input | FiniteEventsStream | ✅ Yes | ❌ No | Pipeline integration, shell scripting |
5.2Input source details¶
5.2.1📁 Files¶
Stream Type: FiniteEventsStream (Finite + Irregular)
Supported Formats: AEDAT4, ES, Prophesee RAW, DAT, EVT, CSV
Characteristics:
Known duration and size
Can be converted to arrays with
.to_array()Perfect for video generation after regularization
Reproducible processing
Example:
# File → Finite → Regular → Video
faery.events_stream_from_file("data.aedat4") \
.regularize(frequency_hz=30.0) \
.render(decay="exponential", tau="00:00:00.200000", colormap=faery.colormaps.devon) \
.to_file("output.mp4")5.2.2📷 Event Cameras¶
Stream Type: EventsStream (Infinite + Irregular)
Supported Hardware: DVXplorer, DAVIS346, EVK4, EVK3 HD
Characteristics:
Continuous data stream
Requires
.time_slice()or.event_slice()for video outputReal-time processing capabilities
Live monitoring and streaming
Example:
# Camera → Slice → Finite → Regular → Video
faery.events_stream_from_camera() \
.time_slice(0 * faery.s, 10 * faery.s) \
.regularize(frequency_hz=30.0) \
.render(decay="exponential", tau="00:00:00.200000", colormap=faery.colormaps.starry_night) \
.to_file("camera_recording.mp4")5.2.3🌐 UDP Streams¶
Stream Type: EventsStream (Infinite + Irregular)
Supported Formats: t64_x16_y16_on8, t32_x16_y15_on1
Characteristics:
Network-based event streaming
Low-latency for distributed systems
Requires dimensions specification
Can be finite or infinite depending on sender
Example:
# UDP → Process → Stream to another UDP endpoint
faery.events_stream_from_udp(
dimensions=(640, 480),
address=("localhost", 7777)
).remove_off_events() \
.to_udp(("processing-server", 8888))5.2.4🔢 Arrays (Python)¶
Stream Type: FiniteEventsStream (Finite + Irregular)
Data Source: NumPy arrays with faery.EVENTS_DTYPE
Characteristics:
Programmatically generated data
Perfect for testing and validation
Known size and duration
Synthetic data generation
Example:
# Array → Direct video generation
events = create_synthetic_events() # Your function
faery.events_stream_from_array(events, dimensions=(640, 480)) \
.regularize(frequency_hz=24.0) \
.render(decay="exponential", tau="00:00:00.100000", colormap=faery.colormaps.batlow) \
.to_file("synthetic.mp4")5.2.5📥 Standard Input¶
Stream Type: FiniteEventsStream (Finite + Irregular)
Supported Format: CSV only
Characteristics:
Command-line pipeline integration
Finite by nature (piped data has an end)
Configurable CSV parsing
Shell scripting integration
Example:
# Shell pipeline → Faery processing
cat events.csv | faery input stdin --dimensions 640x480 \
filter regularize 30.0 \
filter render exponential "00:00:00.200000" starry_night \
output file processed.mp4