Event Overview
All events are emitted via Tauri’s event system and can be listened to from the frontend usingappWindow.listen().
log-event
Emitted for application logs with rate limiting (maximum 5 per second).Payload Structure
Log timestamp in
HH:MM:SS format (local time).Log level. Possible values:
"error"- Critical errors"warning"- Warnings and recoverable issues"info"- General information"debug"- Detailed debugging information"trace"- Verbose tracing (rarely used)"success"- Success notifications (mapped to info in logs)
The log message content.
Example Payload
Rate Limiting
Only the first 5 log events per second are emitted to the frontend. All logs are still written to the standard logger (terminal/file) without rate limiting.stats-event
Emitted every 2 seconds with streaming statistics.Payload Structure
Total stream uptime in seconds since
start_stream() was called.Total number of bytes transmitted over the network.
Average bitrate in kilobits per second, calculated as
(bytes_sent * 8) / (uptime_seconds * 1000). Returns 0.0 if uptime is 0.Example Payload
Emission Frequency
Every 2 seconds, regardless of stream state (will emit zeros if disconnected).quality-event
Emitted every 4 seconds with stream quality metrics.Payload Structure
Overall quality score (0-100). Calculated using penalties:
- Jitter penalty (0-50): Based on
jittervalue. Target <5ms = 0 penalty, >20ms = max penalty - Buffer penalty (0-30): Based on buffer usage. >80% = max penalty, <50% = no penalty
- Error penalty (0-20): Based on consecutive errors. >5 errors = max penalty
100 - (jitter_penalty + buffer_penalty + error_penalty)Network jitter in milliseconds (EWMA with alpha=0.1). Measures timing deviation from expected send schedule.
Average TCP write latency in milliseconds, calculated from the last 100 samples.
Buffer health ratio (0.0-1.0). Calculated as
1.0 - (occupied / capacity). Higher values indicate more available buffer space.Number of consecutive connection errors encountered.
Example Payload
Interpretation
- Score 90-100: Excellent quality
- Score 70-89: Good quality
- Score 50-69: Acceptable quality with some issues
- Score <50: Poor quality, investigate network/buffer issues
buffer-resize-event
Emitted when adaptive buffering changes the target buffer size (only ifenable_adaptive_buffer is true).
Payload Structure
New target buffer duration in milliseconds.
Human-readable explanation for the resize. Examples:
"Increased due to high jitter (18.5ms)""Decreased due to low jitter (2.1ms)"
Example Payload
Trigger Conditions
- Checked every 10 seconds when adaptive buffering is enabled
- Only emits if size change exceeds 10% of current buffer size
- Adjusts based on jitter:
- Jitter <5ms → Use minimum buffer size
- Jitter 5-15ms → Scale linearly between min and max
- Jitter >15ms → Use maximum buffer size
Buffer Ranges
- Standard input: 2000-6000ms (adjusted by
min_buffer_ms/max_buffer_ms) - WASAPI loopback: 4000-12000ms (adjusted by
min_buffer_ms/max_buffer_ms)
Event Timing Summary
| Event | Frequency | Rate Limited |
|---|---|---|
log-event | As needed | Yes (5/sec) |
stats-event | Every 2s | No |
quality-event | Every 4s | No |
buffer-resize-event | When changed (checked every 10s) | No |