Internships/ProjectIdeas/GStreamerVhostDeviceSound: Difference between revisions
(Created page with "=== GStreamer Backend for vhost-device-sound === '''Summary:''' Implement a GStreamer audio backend in rust-vmm's vhost-device-sound crate. '''Project Size:''' 180 hrs '''Project Description:''' virtio-sound device emulation has recently been developed in the Rust [https://github.com/rust-vmm/vhost-device vhost-device-sound] crate. The crate currently contains audio backends for the ALSA and PipeWire sound APIs. The aim of this project is to build a new [https://gstr...") |
No edit summary |
||
Line 27: | Line 27: | ||
* Implement playback functionality in the GStreamer audio backend for vhost-device-sound. | * Implement playback functionality in the GStreamer audio backend for vhost-device-sound. | ||
* Implement capture functionality in the GStreamer audio backend for vhost-device-sound. | * Implement capture functionality in the GStreamer audio backend for vhost-device-sound. | ||
* Implement automated tests with | * Implement automated tests with cargo test. | ||
* Test the implementation with QEMU, which can act as a vhost-user frontend. | * Test the implementation with QEMU, which can act as a vhost-user frontend. | ||
* As a stretch goal, contribute to the rust-vmm/vhost-device repo by [https://github.com/rust-vmm/vhost-device/issues fixing issues]. | * As a stretch goal, contribute to the rust-vmm/vhost-device repo by [https://github.com/rust-vmm/vhost-device/issues fixing issues]. |
Revision as of 20:24, 25 January 2024
GStreamer Backend for vhost-device-sound
Summary: Implement a GStreamer audio backend in rust-vmm's vhost-device-sound crate.
Project Size: 180 hrs
Project Description:
virtio-sound device emulation has recently been developed in the Rust vhost-device-sound crate. The crate currently contains audio backends for the ALSA and PipeWire sound APIs. The aim of this project is to build a new GStreamer audio backend.
Audio backends are written by implementing the AudioBackend trait. Refer to alsa.rs and pipewire.rs for examples of existing backends. The Stream and Buffer structs are used to transfer audio samples between the virtio-sound device and the sound API (e.g. GStreamer).
The backend should be implemented using the GStreamer Rust bindings. Mono and stereo playback and capture should be supported. The GStreamer pipelines for playback and capture will be hardcoded and only Linux needs to be supported.
Application Phase Tasks:
- Familiarize yourself with the vhost-device-sound crate's AudioBackend trait and Stream and Buffer structs.
- Familiarize yourself with the GStreamer Rust bindings.
Internship Tasks:
- Write a skeleton for the GStreamer audio backend in the vhost-device-sound crate. Reviewing how the ALSA and PipeWire backends work is a helpful guide.
- Implement playback functionality in the GStreamer audio backend for vhost-device-sound.
- Implement capture functionality in the GStreamer audio backend for vhost-device-sound.
- Implement automated tests with cargo test.
- Test the implementation with QEMU, which can act as a vhost-user frontend.
- As a stretch goal, contribute to the rust-vmm/vhost-device repo by fixing issues.
Links: