ncm 三期三批: 歌曲对象瘦身(1324→608B)+滑动窗口(NCM_SONG_WINDOW=256, 取消1000截断支撑任意长度歌单)+播放快照解耦 — agent-251
- core/ncm_api.h: ncm_song_t 瘦身 id24/name128/art96/al96/pic256/dt int32 (1324B→608B) - appstate.c 滑动窗口: song_ids 全量 trackIds 索引(16384) + songs[256] 窗口感知 (song_valid 位图/window_base/滑窗 memmove 保留重叠), ensure_range 批网格(100)对齐 预取, songmeta.c 盘缓存 <cache_dir>/meta/<id>.bin (回滚/二次进入 0 网络请求) - playlist.c 触底分页退役→视口 ensure(±24 行), 占位行可直点(播放线程 fetch 物化), footer 改视口区间/总数 - 播放兼容: g_play.play_song 快照(mu), run_song 起播物化后全链路(下载/歌词/IPC META/ 播放页 UI)读快照——窗口滑出当前播放曲不崩; 边界 song_count→track_ids_count - 验证(0 真实请求): pagination_sim 全 PASS(5191 无截断/52 批); window_sim 6000 首 全程下滚 750 步视口全物化/song_detail 恰 60 次/回滚+0 请求/播放 fetch 不滑窗; core 宿主+qemu 全 PASS; mipsel -Wall -Wextra 0 warning, bss 2052068→1080900(-47%) - 未部署真机(设备音频线排查中, 部署留主会话)
This commit is contained in:
1 parent
d8898afa09
commit
997f89f879
18 files changed
+987
-209
No files matched your search
@@ -33,13 +33,18 @@ typedef struct ncm_playlist {
|
||||
int is_collected; /* 1=我收藏的(订阅他人);0=我创建的。来自响应 subscribed(§7.0) */
|
||||
} ncm_playlist_t;
|
||||
|
||||
/* 瘦身(REPORT §17):旧版 name/art/al 各 256 + al_pic 512 + long dt ≈ 1324B/首,
|
||||
* 滑动窗口常驻 256 首 ≈331KB 太肥;裁到 ≈608B/首(窗口 ≈152KB)。id 为数字文本
|
||||
* (int64 最大 19 位 + NUL,24 足够);name 128 / art 96 / al 96(列表/播放页展示均按宽
|
||||
* 再截断);al_pic 256(picUrl 实际 <200 字符,obj_str 截断安全);dt 用 int32_t
|
||||
* (时长 <2^31ms≈24 天;MIPS32 的 long 本就 32 位)。字段变窄只影响展示截断,不改变语义。 */
|
||||
typedef struct ncm_song {
|
||||
char id[32];
|
||||
char name[256];
|
||||
char art_name[256]; /* 首个歌手名 */
|
||||
char album_name[256];
|
||||
char al_pic[512]; /* 专辑封面 picUrl(song_detail/cloudsearch/playlist_track_all 解析;播放页黑胶封面) */
|
||||
long duration_ms;
|
||||
char id[24];
|
||||
char name[128];
|
||||
char art_name[96]; /* 首个歌手名 */
|
||||
char album_name[96];
|
||||
char al_pic[256]; /* 专辑封面 picUrl(song_detail/cloudsearch 解析;播放页黑胶封面) */
|
||||
int32_t duration_ms;
|
||||
int fee;
|
||||
} ncm_song_t;
|
||||
|
||||
|
||||
Reference in new issue
Block a user