Comments (10)
What we need so far in the API:
- set log level and handler
- create sender and receiver
- create RTSP server that allows user to handle new sessions manually
- send and listen SDP/SAP announcements
- sender should be able to connect to both RTP address and RTSP url
- simple blocking I/O for receiver
- optional zero-copy I/O for them
- optional idle mode handling
- probably, optional non-blocking I/O
- probably, ability to share single network loop for multiple objects
- probably, ability to embed roc event loop into the user application
- options to configure sender and receiver parameters, like payload type, FEC scheme, etc.
from roc-toolkit.
We should implement idle mode not later than (simultaneously with) SDP/SAP announcement publishing, otherwise roc sinks would send 2 Mb/s traffic to each discovered sink inputs. Just like pulseaudio does so far.
from roc-toolkit.
Issue for the idle mode: roc-streaming/roc-pulse#22
from roc-toolkit.
Technically, our public API will provide the following:
- public headers: roc/sender.h, roc/receiver.h, roc/log.h
- dynamic library: libroc.so
libroc will dynamically link all system libraries and statically link all roc modules (like libroc_core.a) and builtin third-party libraries (like libuv.a) enabled with --with-3rdparty option. It should be enough to link just with libroc.so for the user.
We also need to export library version in headers and in soname, and use properly naming when installing library (see #35).
from roc-toolkit.
We should implement idle mode not later than (simultaneously with) SDP/SAP announcement publishing, otherwise roc sinks would send 2 Mb/s traffic to each discovered sink inputs. Just like pulseaudio does so far.
This traffic should be prevented by module-suspend-on-idle. Tunnel sinks and sources should support this as well. Not sure why this didn't work, maybe the module was not loaded or timeout was too high. Need to recheck.
We still need to add suspend/resume support for both roc sink and sink input.
from roc-toolkit.
set log level and handler
create sender and receiver
Done.
create RTSP server that allows user to handle new sessions manually
send and listen SDP/SAP announcements
sender should be able to connect to both RTP address and RTSP url
Will be addressed in separate issues.
simple blocking I/O for receiver
optional zero-copy I/O for them
Done.
optional idle mode handling
Will be addressed in a separate issue.
probably, optional non-blocking I/O
Postponed.
probably, ability to share single network loop for multiple objects
Done.
probably, ability to embed roc event loop into the user application
Postponed.
options to configure sender and receiver parameters, like payload type, FEC scheme, etc.
Done.
from roc-toolkit.
Most things were done in #80. IDLE handling will be addressed in roc-streaming/roc-pulse#20 and roc-streaming/roc-pulse#22. Session negotiation and control will be addressed in #34 and #204. Service discovery will be addressed later.
from roc-toolkit.
Service discovery will be addressed later.
Hi @gavv, is this tracked anywhere? I found this issue to be the only one tham mentions service discovery.
from roc-toolkit.
@selurvedu Hi! What exactly are you looking for, support in C API? Or in pulseaudio/pipewire modules?
from roc-toolkit.
@gavv I'm looking for possible ways to implement something similar to:
https://docs.pipewire.org/page_module_raop_discover.html
https://docs.pipewire.org/page_module_zeroconf_discover.html
https://github.com/PipeWire/pipewire/blob/1.2/src/modules/module-snapcast-discover.c#L40 (no rendered docs page yet; available since PipeWire 1.2.0)
from roc-toolkit.
Related Issues (20)
- Add IDevice::close() HOT 4
- Add StateTracker::wait_state() with lock-free wakeup HOT 6
- Finish pull request that implements pairing heap
- Implement moving percentile algorithm HOT 3
- Implement moving histogram algorithm HOT 5
- Create micro-benchmarks for audio codecs
- Create micro-benchmarks for FEC codecs
- Fix benchmarks on Raspberry Pi
- Implement IResampler using Libzita-resampler
- Implement IFrameEncoder / IFrameDecoder using libopus
- Implement IFrameEncoder / IFrameDecoder using libvorbis HOT 6
- Test & fix build on FreeBSD
- Tests for dynamic latency and related metrics
- Pipeline tests for jitter & dynamic latency
- Return status code instead of bool in IComposer
- Return status code from openfec codec HOT 4
- Implement RingQueue::resize() HOT 1
- Refactor DelayedReader startup
- Teach test::Proxy to send packets in reverse direction
- Docker hub image toolchain-aarch64-linux-gnu is built for amd64 not aarch64? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from roc-toolkit.