ncm: FLAC 解码落地(dr_flac 0.13.4 单头入库) + 缓存键=歌曲ID+音质档位
- 解码分发 decoder.c:magic(fLaC→dr_flac / 其它→minimp3);flac ≤16bit→S16、 >16bit→S32 满幅送 audiod(AUDIO_FMT_S32),rate/ch/bits 按实际流,零 SRC 零裁剪 - song_url_auto 接受 flac(type 权威/url 扩展名兜底),降级语义不变;flac 下载限幅 1GB - 缓存键 song_<id>_<level>.<ext>:同歌同档命中不重下,换档新条目旧档留 LRU; ext 前导点正名(修双点名),lookup 回退历史双点名+旧无档键温和兼容 - audio_out S32 通路(AUDIOD/ALSA/WAV)+ 流死重开按 bits 还原格式 - 验证(0 真实请求):44.1k/16 与 96k/24 自制样本宿主+qemu 帧数/时长精确、 逐样本零误差;mp3 回归逐帧一致;player_flow_sim P1-P6(新 P6 档位键/flac ext)、 cache_evict/cover/pagination/window/audiod_chain sim 全 PASS;mipsel 0 warning - REPORT §19 / VENDOR_NOTES dr_flac 条目;未部署真机(留主会话)
This commit is contained in:
1 parent
80bc191593
commit
70aec677ce
23 files changed
+13377
-110
No files matched your search
@@ -15,6 +15,7 @@
|
||||
| cJSON | 1.7.18 | MIT | 20.0 KB | 参考对比(未选,太大) |
|
||||
| qrcodegen | nayuki@993ccbb | MIT | 10.8 KB | ✅ 选(二维码) |
|
||||
| minimp3 | master@ea99364 | CC0 | 37.4 KB | ✅ 选(MP3 v1 解码) |
|
||||
| dr_flac | 0.13.4 | public domain / MIT-0 | 见 REPORT §19(§19 补选,FLAC 解码,单头入库) | ✅ 选(无损/Hi-Res) |
|
||||
| dr_mp3 | 0.7.4 | MIT/public-domain | 40.7 KB | 参考对比(未选,质量更好但更大更吃内存) |
|
||||
|
||||
## 各库明细
|
||||
@@ -63,6 +64,16 @@
|
||||
- 上游:https://github.com/mackron/dr_libs(dr_mp3.h 单文件)。
|
||||
- text=41679(≈40.7 KB);兼容性/音质更好,但更大、解码中间态内存更高。minimp3 更契合 14MB 限制。
|
||||
|
||||
### dr_flac 0.13.4 — public domain / MIT-0(§19 选,FLAC 解码)
|
||||
- 上游:https://github.com/mackron/dr_libs(`dr_flac.h` 单头文件,532768 B,
|
||||
2026-09-01 取自 master;版本宏 DRFLAC_VERSION=0.13.4)。**本文件入库**
|
||||
(`.gitignore` 对 `vendor/` 开了 `!vendor/dr_flac/` 例外;单头文件可入库,网络不可达时可复现)。
|
||||
- 集成:`app/play/dr_flac_impl.c` 唯一实现 TU(`DR_FLAC_IMPLEMENTATION` + `DR_FLAC_NO_OGG`
|
||||
裁 ogg 容器——网易云 song_url 的 flac 恒原生封装),vendor 豁免告警(同 minimp3 口径)。
|
||||
- 位宽:`drflac_read_pcm_frames_s16`(≤16bit)/ `s32`(>16bit,左对齐满幅 → audiod
|
||||
AUDIO_FMT_S32,AUDIOD_DESIGN.md §4 归一在 SDK/audiod 侧)。
|
||||
- 实测(REPORT §19):44.1k/16 与 96k/24 样本逐样本零误差;qemu-mipsel 96k/24 解码 29× RT。
|
||||
|
||||
## 备注(工程)
|
||||
- mbedtls 产物默认写在 `vendor/mbedtls/library/`(3.6 的 Makefile 不理会 BUILD 变量),脚本再拷贝到 `out/`。
|
||||
- `MBEDTLS_SSL_IN_CONTENT_LEN/OUT_CONTENT_LEN` 默认 16KB;对 14MB 也不大,可再按需调小(见 REPORT 内存估)。
|
||||
|
||||
Reference in new issue
Block a user