Tags: kaus-io/vap
Tags
feat(player,decode): 引入 VapWarmSession 热会话与默认 warm-standby 生命周期 - 解码器:新增 VapFrameDecoder.open(source, config, ...) 重载,跳过 composition 已解析时重复 parseMp4;引入 VapWarmSession 接口。 - Compose:VapComposition 新增 warmSurfaceSession / warmCanvasSession / withWarmSession;animateVapCompositionAsState / animateVapSurfaceSessionAsState 移除 releaseDecodeSessionOnPause 参数, 暂停默认保持会话热状态(双 effect 模式:syncPlaying 独立、open/loop 不 随 isPlaying 重启),并以 composition 为 remember key + isSessionOpened 跟踪位保证重启时正确重新 open。 - Benchmark:去掉 warmPause / EXTRA_WARM_PAUSE;新增 rememberWarmComposition expect/actual。 - README / README.zh.md:模块表、依赖、Surface 模式、热会话用法、 默认生命周期说明。
feat(decode): 对齐 vsync 呈现并收敛播放/加载生命周期 Present - 新增 VapVsyncClock,WindowSurface 在 Choreographer 节拍上 present,去掉 sleep 节流。 - 支持目标帧率门控;不可见时真正停表(playing && visible)。 会话与 Surface - 未播放释放 decode session,standby 只保留 composition。 - Surface detach / discardPendingPresent 串行化,避免对已死 Surface swap。 - GL 路径改用协程封装;删除冲突的 androidMain VapSurfaceAnimation.kt。 Compose 加载 - loadVapCompositionAsync 使用 runInterruptible;reload 时不再先清空为 null。
feat(player): 新增 Surface 渲染后端,与 HardwareBuffer 并存 渲染管线 - vap-decode:新增 VapGlOutputMode,将 VapOffscreenGlPipeline / VapSharedGlRuntime 改造为支持 HardwareBuffer / WindowSurface 两条 输出路径;VapFrameDecoder 暴露 attach/detachOutputSurface 与 awaitFramePresented。 - vap-compose:新增 VapRenderBackend CompositionLocal、VapPresentMode expect/actual,以及基于 AndroidEmbeddedExternalSurface 的 VapSurfaceRenderHost(JVM 端降级到 Canvas)。VapAnimationState 在节点离屏时停止 draw generation。旧 VapSurfaceAnimation 标记 @deprecated,推荐改用 CompositionLocalProvider 包住 VapAnimation。 - vap-compose:新增同步入口 loadVapComposition(spec), rememberVapComposition 与 README 同步引用。 Demo 与工程 - example-vap-shared 基于 Navigation 3 重构,拆分为 HomeHero / SettingPager / SettingPagerSurface / HannaBall / WindowExpand / TouchWake / InstanceStress 等场景,通过 StringResource 提供 i18n。 - example-vap-tool 更名为 app-vap-tool(settings.gradle.kts); .gitignore 清理 .tmp-tencent-vap。
build: 启用 maven-publish 对所有 publication 签名 Central Portal 校验 1.0.0 时对 12 个 component 报 'Missing signature'(.jar/.aar/.pom/.module/-sources.jar/-javadoc.jar/kotlin-tooling-metadata.json)。CI 已通过 signingInMemoryKey* 系列环境变量传 GPG 凭据,仅取消注释即可让 vanniktech 的 signAllPublications() 接管签名。