Tracking issue for audio engine rewrite
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 12/100
- Tipo de issue
- Refactorización
- Claridad
- Necesita aclaración
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- audio-video-rtc
Línea de trabajo
This is a multi-phase tracking issue, not a single task, and it names no source files or tests. Start by reading the linked pull requests #903, #904, #905, #910, #911 and #913 and the rodio-experiments repository to see which phase is still open. Any newcomer change would need to be split out as its own issue first, so ask a maintainer which unchecked item is safe to take.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
This tracks landing the changes from https://github.com/RustAudio/rodio-experiments into Rodio. This involves integrating the new rubato resampler and specializing it where possible.
Background:
For a long time we've had mysterious bugs round spans. Spans allow a source to change parameters (sample-rate and channel count) during playback. We've concluded that spans where a mistake as correctly handling audio that at any point is:
- really hard to do correctly.
- impossible to optimize well leading to bad performance.
Most audio should be converted to the playback parameters at the very start of the audio pipeline. To make this easier we are adding two new source types. Both do not allow parameters to change, one fixes this at runtime the other needs the parameters known at compile time.
Approach
This is a large overhaul at around 7700 lines of code (ignoring docs & comments). To keep things reviewable we'll do this in reasonably sized PRs of around 500 lines. Help is greatly appreciated!
Phase one
Implementation in: #903 and #904
- land const source
- remove experimental from fixed source
- land try-into adaptors/convertors between sources (others in phase two)
- note overhaul in Readme
- land most basic generators
Phase two
Implementation in: #905 and #910
- channel conversions
- resampler and integrate with rubato
Phase three:
Implementation in: #911
- land one effect and pure_effect! macro
- land all other effect
- deprecation warning on effects in DynamicSource that are not sound
Phase four
- add new combinators [a, b, c].mixed() etc.
- add all generators (noise etc, function gen. etc)
Phase five
- rename current source to dynamic source
- add Source = DynamicSource type alias with deprecation warning
- Remove placeholders
Phase six
- port all examples
- re-add controls to automatic gain control
- rewrite Rodio main docs
- update porting guide (needs to be really nice this time :3 )
- prepare and make announcements
Small chores
- check the new queues for: https://github.com/RustAudio/rodio/pull/913
Open Questions
- Do we deprecate Source in favor of DynamicSource?
- Do cons sources and the ConstSource trait get default generics?
- Lenguaje dominante
- Rust
- Estrellas
- 2.5k
- Forks
- 338
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de RustAudio/rodio
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 73/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
-
WavDecoder::size_hint underflows (u32 wrap, ~4.29e9) after EOF, causes multi-GB Vec::collect() allocationPosiblemente ocupada @marin-m la tomó hace 3 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Todos los issues de RustAudio/rodio
Issues similares
-
vorbis: Inverse coupling runs in wrong orderPosiblemente ocupada @computerfan la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
-
area:kernel needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
bherbruck/solvecraft#8454 · 1 reacción ·
-
Add `Path.parent`Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
audit(c2): assert [profile.release] parity across RUST_MANIFESTS in scripts/ci/check-workfl (C2-26)Abiertohygiene type:refactor
Dificultad 2/5 Menos de una hora Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día