Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement streams #4

Open
3 tasks
Tracked by #16
adrianopol opened this issue Jun 20, 2024 · 0 comments
Open
3 tasks
Tracked by #16

Implement streams #4

adrianopol opened this issue Jun 20, 2024 · 0 comments
Assignees
Milestone

Comments

@adrianopol
Copy link
Member

adrianopol commented Jun 20, 2024

We need to implement StreamManager. See USAGE#streams for more details.

Stream:

  • Is a virtual object that maps (connects) some Device (by UID) -- reader -- to a list of peers -- writers (each peer has 1 to 3 interfaces). On diagram below, it is a sender-to-recerver part of the pipeline.
  • In MVP Stream may be implemented as a goroutine that manages a number of subprocesses: roc-send, roc-recv.
  • Should be stored persistently and restored on daemon start.
  • Should be able to be updated through API. The payload accepts a subset of parameters that are being updated.
  • StreamManager should handle situations when subprocesses are crashed. (This should be analyzed.)
  • There are 2 Stream types:
    • sending Stream: is has from_device and to_address paarameters
    • receiving Stream: is has from_address and to_device paarameters
  • Initially there are no Streams.
graph LR
  microphone --> input
  subgraph roc_sender
    input --> sender1
    input --> sender2
  end
  sender1 -- AU_SRC --> receiver1
  sender1 -- AU_RPR --> receiver1
  sender1 <-- AU_CTL --> receiver1

  sender2 -- AU_SRC --> receiver2
  sender2 -- AU_RPR --> receiver2
  sender2 <-- AU_CTL --> receiver2

  subgraph roc_receiver1
    receiver1 --> output1
  end
  subgraph roc_receiver2
    receiver2 --> output2
  end

  output1 --> speaker1
  output2 --> speaker2
Loading

Steps

  • Implement StreamManager methods.
  • ...

Out of scope

  • Choose storage format for Streams.

Docs

@adrianopol adrianopol self-assigned this Jun 20, 2024
@gavv gavv added category: rest api Task related to HTTP API category: networking Task related to network and streaming labels Feb 23, 2025
@gavv gavv mentioned this issue Mar 2, 2025
11 tasks
@gavv gavv added this to Roc Daemon Mar 2, 2025
@gavv gavv moved this to Todo in Roc Daemon Mar 2, 2025
@gavv gavv removed category: rest api Task related to HTTP API category: networking Task related to network and streaming labels Mar 2, 2025
@gavv gavv added this to the next milestone Mar 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Todo
Development

No branches or pull requests

2 participants