Tracking issue for audio engine rewrite
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 12/100
- Issue 类型
- 重构
- 描述清晰度
- 需要澄清
- 活跃度
- 活跃
- 技术栈
- rust
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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?
- 主要语言
- Rust
- 星标
- 2.5k
- 派生
- 338
- 平均合并
- 1 天 3 小时
- 30 天内合并 PR
- 1
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
RustAudio/rodio 的其他 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 74/100
-
难度 1/5 1 小时以内 新手友好度 73/100
-
难度 3/5 1-2 天 新手友好度 62/100
-
WavDecoder::size_hint underflows (u32 wrap, ~4.29e9) after EOF, causes multi-GB Vec::collect() allocation可能已有人在做 @marin-m 于 2 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 72/100
-
难度 4/5 3-5 天 新手友好度 45/100
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 72/100
维护者通常 1 天内回复
-
status:untriaged
难度 1/5 1 小时以内 新手友好度 72/100
midnightntwrk/midnight-zk#592 ·
维护者通常 3 天内回复
-
QuartoHub: have the Document name before the filename in the browser tab可能已有人在做 @cscheid 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 68/100
quarto-dev/q2#930 · 1 条评论 ·
维护者通常 1 天内回复
-
muse P3
难度 2/5 1-3 小时 新手友好度 76/100
HerringtonDarkholme/hd-lang#923 · 1 条评论 ·
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复