Victor Gaydov
Victor Gaydov
*Last revised: Jun 2024* [core::SlabPool](https://github.com/roc-streaming/roc-toolkit/blob/develop/src/internal_modules/roc_core/slab_pool.h) implements [slab pool](https://en.wikipedia.org/wiki/Slab_allocation). (Actual implementation is in [core::SlabPoolImpl](https://github.com/roc-streaming/roc-toolkit/blob/develop/src/internal_modules/roc_core/slab_pool_impl.h)). When an object is allocated, there are two main paths: * hot path - object is available...
Follow-up for #14 and #675. - [x] Refine packet counter calculation. On receiver, derive it from packet_count in SR, and handle 32-bit wraps. On sender, derive it from ext_first_sn and...
### Implementation - [x] in LinkMeter, compute jitter, total_packets, lost_packets - [x] teach fec::Reader and fec::Writer to compute FEC block duration - [x] teach LatencyMonitor to compute target latency continuously...
- [x] Compute e2e latency and clock_shift - [ ] Implement #674 - [ ] Apply clock_shift to adjust timestamps - [x] Deliver e2e latency from receiver to sender -...
This is a small follow-up issue for #576. In roc-recv and roc-send, we have special syntax `-o file:-` and `-i file:-` which means read or write from/to stdin. See details...
## Problem [Depacketizer](https://github.com/roc-streaming/roc-toolkit/blob/develop/src/internal_modules/roc_audio/depacketizer.h) class converts sequence of network packets into stream of audio frames. Among other things, it detects and logs late packets. If packet is missing when it's needed,...
In [SoxSink](https://github.com/roc-streaming/roc-toolkit/blob/develop/src/internal_modules/roc_sndio/target_sox/roc_sndio/sox_sink.h), implement pause()/resume() methods same way as it's done in [SoxSource](https://github.com/roc-streaming/roc-toolkit/blob/develop/src/internal_modules/roc_sndio/target_sox/roc_sndio/sox_source.h) (i.e.: if device is not file, close it in pause, and reopen in resume; for files, do nothing).
Requires these tasks to be completed first: * #677 * #678 * #679 * #706 In sndio::Pump, we need to do the following: * [ ] if source becomes idle:...
- [ ] Add pipeline::StateTracker::wait_state() that allows to block (from any thread) until state is changed to one in the specified mask. It should support timeout argument (with an option...
Needed changes in PulseaudioDevice: * pause/resume should use `pa_stream_cork()` * we should listen to `PA_STREAM_EVENT_REQUEST_CORK` and `PA_STREAM_EVENT_REQUEST_UNCORK` events and accordingly cork/uncork the stream and report idle state