Code Monkey home page Code Monkey logo

Comments (10)

gavv avatar gavv commented on August 15, 2024

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.

baranovmv avatar baranovmv commented on August 15, 2024

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.

gavv avatar gavv commented on August 15, 2024

Issue for the idle mode: roc-streaming/roc-pulse#22

from roc-toolkit.

gavv avatar gavv commented on August 15, 2024

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.

gavv avatar gavv commented on August 15, 2024

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.

gavv avatar gavv commented on August 15, 2024

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.

gavv avatar gavv commented on August 15, 2024

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.

selurvedu avatar selurvedu commented on August 15, 2024

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.

gavv avatar gavv commented on August 15, 2024

@selurvedu Hi! What exactly are you looking for, support in C API? Or in pulseaudio/pipewire modules?

from roc-toolkit.

selurvedu avatar selurvedu commented on August 15, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.