84abfbcfcd
新增 PiP 引擎,支持在统一渲染管道中加入多图层画中画叠加: 核心能力: - 多图层叠加:主画面 + 多个副画面,按 z_index 排序 - 位置:9宫格(top_left/top_center/top_right/center_left/center/center_right/bottom_left/bottom_center/bottom_right)+ 自由坐标(像素或百分比)+ 边距配置 - 大小:宽高缩放(像素或百分比),高度自适应比例 - 圆角裁剪:支持圆角矩形(geq 实现四角圆弧) - 边框:边框宽度 + 颜色 - 透明度:0-100%(colorchannelmixer) - 入场出场动画:淡入淡出(fade)、滑入滑出(left/right/top/bottom 四方向) - 时间同步:每个副画面独立 start_time + duration,enable 表达式控制 - 降级策略:素材不存在/无效时自动跳过,不阻断渲染 系统集成: - UnifiedRenderService 接入:从 plan.config.pip_config 读取配置 - 在 filter_complex 最终合成环节(字幕之前)叠加 PiP 图层 - 有 PiP 时自动禁用直通模式(需要额外图层叠加) - 输入索引偏移处理:PiP 素材追加在主输入之后,滤镜引用正确索引 测试覆盖: - PiPLayerConfig.validate:source/position/opacity/corner_radius/timing/animation 等边界校验 - PiPConfig.from_dict:字典解析、z_index 排序、无效层跳过、默认值 - 位置计算:9宫格全位置 + 自定义像素/百分比 + 边界 - 尺寸解析:像素/百分比/零值/负值 - 滤镜构建:单图层/多图层/透明度/圆角/边框/时间控制/淡入淡出/滑入滑出 - 降级策略:asset_id不存在/本地路径不存在/URL不支持/异常处理 55个新增单测 + 84个现有测试,共139个全绿,零回归