build: add FFmpeg-Harmony prefix switch

This commit is contained in:
BoatingCloud committed 2026-08-29 13:32:57 +08:00
1 parent e5f6c0ced2
commit 46582ed8bd
5 files changed
+59 -3

No files matched your search

+17
View File
@@ -58,3 +58,20 @@ Disabled:mpv CLI、tests、fuzzers、Lua/JavaScript、libcurl、桌面音视
## Phase 2 Entry Condition
已具备 XComponent + OHNativeWindow + EGL + libmpv OpenGL Render API 真机首帧测试的编译侧条件:SDK API 可用、libmpv 可链接、OpenGL Render API symbols 齐全。尚不代表首帧已经成功;Phase 2 必须在真机建立窗口和 EGL context 后验证。
## FFmpeg-Harmony export prefix
Phase 4.5 的 FFmpeg fork 独立维护于
`https://git.leee.xin/leeexin/Velix-FFmpeg-Harmony.git`,分支
`harmony-ohcodec-export`,当前接入 commit `f1cc09cde1`。MPV 不包含 FFmpeg
源码,也不读取其私有头文件;需要切换时执行:
```sh
./scripts/build-mpv-ohos-ffmpeg-harmony.sh
```
脚本默认消费 `../Velix-FFmpeg-Harmony/build/ohos-arm64/prefix`,也可用
`FFMPEG_PREFIX=/path/to/prefix MPV_BUILD_ROOT=/path/to/mpv-build` 覆盖。默认
`build-mpv-ohos.sh` 与 `build-mpv-ohos-software.sh` 的原有前缀和
`harmony-ohcodec-gl=disabled` 行为不变。本次切换构建已通过 AArch64 ELF、符号
和动态依赖校验,但没有进入 GPU mapper 或设备硬解验证。
+3
View File
@@ -36,6 +36,9 @@ direct-surface 实验接入、软件回退、诊断和构建矩阵。当前没
`LICENSE_AUDIT.md`。
- 当前 blocker、NativeBuffer 生命周期、EGL/fence/crop/stride 待验证项见
`DOCS/OHCODEC_GPU_INTEROP_DESIGN.md` 与 `DOCS/HDR_PIPELINE_NOTES.md`。
- Phase 4.5 FFmpeg export contract 独立维护于
`../Velix-FFmpeg-Harmony`;MPV 只提供
`scripts/build-mpv-ohos-ffmpeg-harmony.sh` 前缀切换,未接入 mapper。
## 下一阶段最大风险
+15
View File
@@ -0,0 +1,15 @@
#!/bin/sh
set -eu
PROJECT_ROOT=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
FFMPEG_PREFIX=${FFMPEG_PREFIX:-$PROJECT_ROOT/../Velix-FFmpeg-Harmony/build/ohos-arm64/prefix}
MPV_BUILD_ROOT=${MPV_BUILD_ROOT:-$PROJECT_ROOT/build/ohos-arm64/build/mpv-ffmpeg-harmony}
test -d "$FFMPEG_PREFIX" || {
printf 'Missing FFmpeg-Harmony prefix: %s\n' "$FFMPEG_PREFIX" >&2
exit 1
}
FFMPEG_PREFIX="$FFMPEG_PREFIX" MPV_BUILD_ROOT="$MPV_BUILD_ROOT" \
"$PROJECT_ROOT/scripts/build-mpv-ohos.sh"
+18 -2
View File
@@ -3,11 +3,27 @@
set -eu
. "$(dirname -- "$0")/setup-ohos-env.sh"
BUILD=$OHOS_BUILD_ROOT/build/mpv
FFMPEG_PREFIX=${FFMPEG_PREFIX:-$PREFIX}
BUILD=${MPV_BUILD_ROOT:-$OHOS_BUILD_ROOT/build/mpv}
LOG=$OHOS_BUILD_ROOT/logs/mpv.log
mkdir -p "$OHOS_BUILD_ROOT/logs"
test -f "$PREFIX/lib/libavcodec.a" || "$PROJECT_ROOT/scripts/build-ffmpeg-ohos.sh"
if test "$FFMPEG_PREFIX" = "$PREFIX"; then
test -f "$PREFIX/lib/libavcodec.a" || "$PROJECT_ROOT/scripts/build-ffmpeg-ohos.sh"
else
for library in libavcodec libavfilter libavformat libavutil libswresample libswscale; do
test -f "$FFMPEG_PREFIX/lib/$library.a" || {
printf 'Missing FFmpeg-Harmony archive: %s/lib/%s.a\n' "$FFMPEG_PREFIX" "$library" >&2
exit 1
}
done
test -f "$FFMPEG_PREFIX/include/libavcodec/avcodec.h" || {
printf 'Missing FFmpeg-Harmony headers: %s/include\n' "$FFMPEG_PREFIX" >&2
exit 1
}
PKG_CONFIG_EXTRA_LIBDIR="$FFMPEG_PREFIX/lib/pkgconfig:$FFMPEG_PREFIX/share/pkgconfig"
export PKG_CONFIG_EXTRA_LIBDIR
fi
test -f "$PREFIX/lib/libass.a" || "$PROJECT_ROOT/scripts/build-font-stack-ohos.sh"
test -f "$PREFIX/lib/libplacebo.a" || "$PROJECT_ROOT/scripts/build-libplacebo-ohos.sh"
+6 -1
View File
@@ -8,8 +8,13 @@ PKGCONF=$PROJECT_ROOT/build/host-tools/pkgconf/bin/pkgconf
test -x "$PKGCONF" || { printf 'pkgconf is not bootstrapped: %s\n' "$PKGCONF" >&2; exit 1; }
default_libdir="${PKG_CONFIG_LIBDIR:-$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig}"
if test -n "${PKG_CONFIG_EXTRA_LIBDIR:-}"; then
default_libdir="$PKG_CONFIG_EXTRA_LIBDIR:$default_libdir"
fi
PKG_CONFIG_DIR= \
PKG_CONFIG_PATH= \
PKG_CONFIG_LIBDIR="$PREFIX/lib/pkgconfig:$PREFIX/share/pkgconfig" \
PKG_CONFIG_LIBDIR="$default_libdir" \
PKG_CONFIG_SYSROOT_DIR= \
exec "$PKGCONF" "$@"