docs: record Phase 4.5 fork status

This commit is contained in:
BoatingCloud committed 2026-08-29 13:35:35 +08:00
1 parent 46582ed8bd
commit 329728ce56
5 files changed
+15 -20

No files matched your search

+3 -1
View File
@@ -1,14 +1,16 @@
# Velix-MPV-Core Memory
- 项目:独立 HarmonyOS MPV 播放内核,禁止混入 Velix 主应用源码。
- 当前阶段:Phase 4 CODE COMPLETE / DEVICE VALIDATION PENDING;GPU INTEROP BLOCKED;OHCodec 适配与软件回退已完成,模拟器启动/EGL smoke 已验证。
- 当前阶段:Phase 4.5 CODE COMPLETE / DEVICE VALIDATION PENDING;GPU INTEROP MAPPER 未进入;FFmpeg-Harmony export contract 已构建验证,模拟器仅有既有 MPV/EGL smoke。
- 基线:MPV `182fa6ca49f455cadb884858f386e2f00540aeb7`,分支 `harmony-port`。
- SDK:OpenHarmony API 24 / 6.1.1.125 / `aarch64-linux-ohos` / Clang 15.0.4。
- 关键结论:首版 GLES+EGL+libmpv Render API;OHAudio AO;官方 FFmpeg OHCodec 路线。
- Phase 1 产物:`build/ohos-arm64/prefix/lib/libmpv.so.2.5.0`,AArch64 ELF,OpenGL Render API symbols 完整。
- 远程:`origin` 为私有 Gitea 仓库,默认分支 `harmony-port`;`upstream` 为 MPV 官方仓库。
- Phase 4.5:独立 `../Velix-FFmpeg-Harmony`,分支 `harmony-ohcodec-export`,远程 commit `f1cc09cde1`;MPV 通过 `scripts/build-mpv-ohos-ffmpeg-harmony.sh` 选择其 prefix。
- Phase 2:`playback_lab/` 独立 HAP,XComponent/OHNativeWindow/EGL/libmpv/软件解码已通;实体设备待验。
- Phase 3:`audio/out/ao_harmony.c` + OHAudio pull callback、pause/flush/clock/metrics 已通;实体机路由/A-V sync/压力待验。
- Phase 4:`IMGFMT_OHCODEC`、`hwdec=ohcodec`、API24 capability adapter、direct-surface experimental driver、软件构建矩阵、Playback Lab 诊断已提交;FFmpeg 保持 upstream。
- Phase 4 边界:官方 OHCodec hwcontext/decoder 仅提供 surface 输出,NativeBuffer→EGL 仅做禁用默认 API probe,未宣称零拷贝/HDR/真实硬件帧;详见 `DOCS/OHCODEC_GPU_INTEROP_DESIGN.md`。
- Phase 4.5 边界:FFmpeg export 模式不调用 RenderOutputBuffer,NativeBuffer/accessor/refcount/build probes 已完成;crop/fence/真实硬解仍需设备验证,`harmony-ohcodec-gl` 继续 disabled。
- 索引:`memory/projects.md`、`memory/infra.md`、`memory/lessons.md`、`memory/2026-08-28.md`。
+5 -17
View File
@@ -1,17 +1,5 @@
[PROJECT:Velix-MPV-Core] 完成 Phase 2 Playback Lab 模拟器首帧验证
结论: 独立 HAP 在 HarmonyOS emulator API 24 上完成 XComponent/OHNativeWindow、EGL ES3、libmpv OpenGL Render、本地 H.264 软件解码首帧及播放控制验证;实体机验收仍待完成。
文件变更: playback_lab/*, DOCS/PHASE2_PLAYBACK_REPORT.md, MEMORY.md, memory/*
教训: Surface 回调直接取得 OHNativeWindow;事件线程改为 20ms;ArkTS 状态计数使用 Number;hdc 文件需发送到应用沙箱。
标签: #phase2 #playback-lab #harmonyos #egl #libmpv #first-frame
[PROJECT:Velix-MPV-Core] 完成 Phase 3 OHAudio Native Audio Backend
结论: `audio/out/ao_harmony.c` 以 MPV pull AO 接入 API 24 OHAudio,float32/S16、mono/stereo、pause/resume/stop/flush/release、timestamp epoch、starvation/flush metrics 已实现;`build-all-ohos.sh`、video-only/audio-enabled 编译和 HAP 均通过。
文件变更: audio/out/ao_harmony.c, audio/out/ao_harmony.h, audio/out/ao.c, meson.build, meson.options, scripts/*, playback_lab/*, DOCS/HARMONY_AUDIO_*.md, memory/*
教训: MPV 音频开关使用 `aid=auto/no`;OHAudio reset 必须 Stop→等待 callback→Flush;模拟器可验证输出但不能代替实体机路由/A-V sync/压力验收。
标签: #phase3 #ohaudio #audio #emulator-smoke #pending-device
[PROJECT:Velix-MPV-Core] 完成 Phase 4 OHCodec 适配与验证闭环
结论: 提交 `3f6132637b`、`37df87fc56`、`1f1a6e5962`、`e1bc8cc52f` 已推送 `origin/harmony-port`;实现 `IMGFMT_OHCODEC`、`hwdec=ohcodec`、API24 capability/direct-surface 实验驱动、软件回退与 Playback Lab 诊断,完整 AArch64/软件/GL probe/HAP 构建通过,模拟器启动与 EGL smoke 通过;状态为 CODE COMPLETE / DEVICE VALIDATION PENDING,GPU 互操作受官方 surface-only 上游路径阻塞。
文件变更: video/*ohcodec*, video/fmt-conversion.c, video/img_format.h, meson.build, meson.options, playback_lab/*, scripts/*, DOCS/OHCODEC_*.md, DOCS/HDR_PIPELINE_NOTES.md, LICENSE_AUDIT.md, memory/*
教训: `OH_AVBuffer_GetNativeBuffer` 和 EGL 扩展只能证明 API 可探测,不能证明上游 decoder 已提供可导入非 surface 帧;HAP 未签名可装模拟器但不能作为发布包。
标签: #phase4 #ohcodec #hwdec #gpu-interop-blocked #emulator-smoke #pending-device
[PROJECT:Velix-MPV-Core] 完成 Phase 4.5 FFmpeg-Harmony export contract 与 MPV 前缀切换
结论: 独立 FFmpeg 完整历史分支 `harmony-ohcodec-export` 推送 `f1cc09cde1`;OHOS export/software 构建、正式 accessor、NativeBuffer ref/unref、EGL/API probes 通过,MPV 仅新增 prefix switch 并完成 AArch64 构建;状态为 DEVICE VALIDATION PENDING。
文件变更: ../Velix-FFmpeg-Harmony/libavcodec/ohdec.c, libavutil/hwcontext_oh.*, scripts/*, DOCS/*; Velix-MPV-Core/scripts/build-mpv-ohos*.sh, scripts/pkg-config-ohos.sh, DOCS/MPV_BUILD_REPORT.md, DOCS/PHASE4_STATUS.md, memory/*
教训: emulator 可用于设备连接与既有 HAP/EGL 日志复核,但不能把 compile/link probe 写成 FFmpeg export 硬解运行证据;Gitea 大 pack 需分块保留完整历史。
标签: #phase4-5 #ffmpeg #ohcodec #nativebuffer #prefix-switch #emulator #pending-device
+2
View File
@@ -20,3 +20,5 @@
- Phase 3 HAP:`playback_lab/entry/build/default/outputs/default/entry-default-unsigned.hap`;模拟器 H.264/AAC smoke target `127.0.0.1:5555`。
- Phase 4 构建入口:`scripts/build-mpv-ohos.sh`(OHCodec enabled)、`scripts/build-mpv-ohos-software.sh`(OHCodec disabled)、`scripts/build-all-ohos.sh`(全量矩阵);GL API probe 通过单独 Meson `harmony-ohcodec-gl=enabled` 构建验证。
- Phase 4 产物:`build/ohos-arm64/prefix/lib/libmpv.so.2.5.0`;软件构建位于 `build/ohos-arm64/build/mpv-software/libmpv.so.2.5.0`;HAP 位于 `playback_lab/entry/build/default/outputs/default/entry-default-unsigned.hap`。
- FFmpeg-Harmony:`../Velix-FFmpeg-Harmony`,origin `https://git.leee.xin/leeexin/Velix-FFmpeg-Harmony.git`,upstream `https://github.com/FFmpeg/FFmpeg.git`,branch `harmony-ohcodec-export`;prefix `../Velix-FFmpeg-Harmony/build/ohos-arm64/prefix`。
- MPV fork 接入:`scripts/build-mpv-ohos-ffmpeg-harmony.sh`;可用 `FFMPEG_PREFIX` 与 `MPV_BUILD_ROOT` 覆盖默认路径,默认 MPV/软件脚本不变。
+2
View File
@@ -23,3 +23,5 @@
- `setup-ohos-env.sh` 在 zsh 中的循环变量 `path` 会覆盖特殊 PATH 数组;运行脚本应使用 `/bin/sh` 或避免 source 到交互 zsh。
- FFmpeg upstream OHCodec API24 路径是 surface-first:`AV_PIX_FMT_OHCODEC` 的 hwcontext 只保存 `OHNativeWindow*`,decoder 硬件帧通过 surface 输出;NativeBuffer/EGL API 存在不等于 MPV 可合法导入的非 surface 帧。
- OHCodec capability 必须通过 `OH_AVCodec_GetCapabilityByCategory` 及 `OH_AVCapability_*` 查询;不能把 SDK 头文件存在误写成设备能力或硬件帧已产出。
- Gitea 反向代理对完整 FFmpeg pack 返回 413;保留完整历史的可行做法是先建立空远端,再按 first-parent checkpoint 分块推送,不能浅克隆或裁剪历史。
- MPV 消费独立 FFmpeg prefix 时,pkg-config 必须把 fork 的 `lib/pkgconfig` 置于 base prefix 前,并保留绝对 include/lib 路径;仅改 `PREFIX` 会丢失 libass/libplacebo 等其他依赖。
+3 -2
View File
@@ -2,11 +2,12 @@
## Velix-MPV-Core
- 状态:Phase 4 CODE COMPLETE / DEVICE VALIDATION PENDING;GPU INTEROP BLOCKED;OHCodec 代码闭环、模拟器启动/EGL smoke 完成,实体机硬解验收未完成。
- 状态:Phase 4.5 CODE COMPLETE / DEVICE VALIDATION PENDING;GPU INTEROP MAPPER 未进入;FFmpeg-Harmony export contract 已完成独立构建/探针,实体机硬解验收未完成。
- 已完成:远程闭环、固定依赖、隔离工具链、C/C++ 探针、FFmpeg/OpenSSL/字体栈/libplacebo、AArch64 `libmpv.so.2.5.0`、ABI/符号/污染/许可证审计。
- 产物:`build/ohos-arm64/prefix/lib/libmpv.so.2.5.0`,34,308,568 bytes;DT_NEEDED 含 `libohaudio.so`。
- 已完成:独立 HAP、XComponent/OHNativeWindow、EGL ES3、libmpv OpenGL Render、软件解码本地 MP4 首帧、播放控制与释放重入。
- 已完成:`ao_harmony` PCM float32→S16 fallback、采样率/mono-stereo 协商、pause/resume/stop/flush/release、timestamp epoch、starvation/flush metrics;`build-all-ohos.sh`、video-only/audio-enabled 构建和 Playback Lab HAP 均通过。
- 已完成:OHCodec H.264/HEVC capability 查询、`hwdec=ohcodec` direct-surface 实验驱动、显式软件回退、Playback Lab requested/actual/metrics 诊断、软件/硬解/GL probe 构建矩阵;FFmpeg 未修改。
- 边界:官方 OHCodec 上游没有非 surface 的可导入硬件帧路径,EGL/NativeBuffer 仅保留禁用默认探针;无零拷贝、HDR 或硬件帧产出声明。
- 待办:实体机 H.264/HEVC capability、surface 生命周期/stride/crop/fence、真实 GPU 互操作与 A/V sync;报告见 `DOCS/OHCODEC_*.md`、`DOCS/HDR_PIPELINE_NOTES.md`。
- Phase 4.5:`../Velix-FFmpeg-Harmony` branch `harmony-ohcodec-export` 已推送 `f1cc09cde1`;`scripts/build-mpv-ohos-ffmpeg-harmony.sh` 已消费其 prefix 构建 MPV。
- 待办:实体机 H.264/HEVC capability、surface 生命周期/stride/crop/fence、真实 GPU 互操作与 A/V sync;报告见两个仓库的 `DOCS/OHCODEC_*.md` 与 `DOCS/PHASE4_5_STATUS.md`。