Closed Bug 1362223 Opened 7 years ago Closed 6 years ago

Split cubeb API in client/server

Categories

(Core :: Audio/Video: cubeb, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED

People

(Reporter: u480271, Assigned: u480271)

References

(Blocks 1 open bug)

Details

User Story

Remoting the cubeb API to allow sandboxing on Linux.
      No description provided.
Assignee: nobody → dglastonbury
Blocks: 1362220
User Story: (updated)
Current plan:

The following, non-exhaustive list, changes need to be made:

1. Split the API across the client and server using a custom IPC mechanism in rust
2. Extend cubeb to allow connection to server in client
3. Aim to reduce buffer copies to zero to help latency

:kinetik spoke to :jld to understand the available Unix APIs that will be available from content sandbox. The plan is to use a named file in firefox private tmp directory to initiate the connection and implement IPC over serde/bincode in rust. To begin with, the majority of the API will be made synchronous except for the data callback which will be async. Each end of the connection will run on its own thread.

:kinetik is currently working a rapid, disposable prototype to shake out issues with the design.  Other rust IPC mechanisms were considered but a custom mechanism is proposed because:
* Servo IPCChannel doesn't support many-to-one connection (Although patches are welcome),
* The cubeb API is small and requirements are simple,
* Concerned about latency for WebRTC

It was discussed if we can share PulseAudio's data buffer with content via shmem.  This might not be possible in all cases (if the pulseaudio server is over-the-network) so currently plan to aim for 1 buffer copy.
Rank: 15
Priority: -- → P1
Depends on: 1391523
Mass change P1->P2 to align with new Mozilla triage process
Priority: P1 → P2
Depends on: 1403048
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.