@@ -25,11 +25,12 @@
|
||||
|
||||
## 🟠 High (4)
|
||||
|
||||
### #2: PipeWire process callback can block indefinitely
|
||||
### ~~#2: PipeWire process callback can block indefinitely~~ ✅ Fixed
|
||||
|
||||
- **Location**: `src/cap_portal.rs:320`
|
||||
- **Description**: `frame_tx.send(PwEvent::Frame(frame))` is called from the PipeWire `.process` callback on a bounded channel of size 3. If encoding stalls, this blocks the PipeWire callback and delays `stream.queue_raw_buffer(raw_buf)`.
|
||||
- **Fix**: Use `try_send` and drop frames on full, or use an unbounded channel with a backpressure counter.
|
||||
- **Fixed in**: [`a09a423`](commit:a09a423) — Replaced `send()` with `try_send()` + `AtomicU64` drop counter. PipeWire `.process` callback is now guaranteed non-blocking. Dropped frames are counted and logged every 30 occurrences.
|
||||
|
||||
### #3: Portal PTS uses raw PipeWire timestamp as encoder frame-number timebase
|
||||
|
||||
|
||||
Reference in New Issue
Block a user