diff --git a/src/store/execution/__tests__/videoProcessingExecutors.test.ts b/src/store/execution/__tests__/videoProcessingExecutors.test.ts index 14588d09..bf0e7416 100644 --- a/src/store/execution/__tests__/videoProcessingExecutors.test.ts +++ b/src/store/execution/__tests__/videoProcessingExecutors.test.ts @@ -219,6 +219,7 @@ describe("executeEaseCurve", () => { easeCurve: { bezierHandles: [0.42, 0, 0.58, 1], easingPreset: "ease-in-out", + outputDuration: 10, }, }), getEdges: vi.fn().mockReturnValue([ @@ -232,6 +233,7 @@ describe("executeEaseCurve", () => { expect(ctx.updateNodeData).toHaveBeenCalledWith("ec-1", expect.objectContaining({ bezierHandles: [0.42, 0, 0.58, 1], easingPreset: "ease-in-out", + outputDuration: 10, inheritedFrom: "parent-ec", })); }); diff --git a/src/store/execution/videoProcessingExecutors.ts b/src/store/execution/videoProcessingExecutors.ts index edb20225..056570bd 100644 --- a/src/store/execution/videoProcessingExecutors.ts +++ b/src/store/execution/videoProcessingExecutors.ts @@ -235,9 +235,11 @@ export async function executeEaseCurve(ctx: NodeExecutionContext): Promise // Propagate parent easeCurve settings if inherited let activeBezierHandles = nodeData.bezierHandles; let activeEasingPreset = nodeData.easingPreset; + let activeOutputDuration = nodeData.outputDuration; if (inputs.easeCurve) { activeBezierHandles = inputs.easeCurve.bezierHandles; activeEasingPreset = inputs.easeCurve.easingPreset; + activeOutputDuration = inputs.easeCurve.outputDuration; const edges = getEdges(); const easeCurveSourceId = edges.filter( @@ -246,6 +248,7 @@ export async function executeEaseCurve(ctx: NodeExecutionContext): Promise updateNodeData(node.id, { bezierHandles: activeBezierHandles, easingPreset: activeEasingPreset, + outputDuration: activeOutputDuration, inheritedFrom: easeCurveSourceId, }); } @@ -295,7 +298,7 @@ export async function executeEaseCurve(ctx: NodeExecutionContext): Promise const outputBlob = await applySpeedCurveAsync( videoBlob, videoDuration, - nodeData.outputDuration, + activeOutputDuration, (progress) => { updateNodeData(node.id, { progress: progress.progress }); }, diff --git a/src/store/utils/__tests__/connectedInputs.test.ts b/src/store/utils/__tests__/connectedInputs.test.ts index 85c30c98..37da703a 100644 --- a/src/store/utils/__tests__/connectedInputs.test.ts +++ b/src/store/utils/__tests__/connectedInputs.test.ts @@ -255,6 +255,7 @@ describe("getConnectedInputsPure", () => { makeNode("ec", "easeCurve", { bezierHandles: [0.25, 0.1, 0.25, 1.0], easingPreset: "ease-in-out", + outputDuration: 8, outputVideo: null, }), makeNode("vs", "videoStitch"), @@ -270,6 +271,7 @@ describe("getConnectedInputsPure", () => { expect(result.easeCurve).toEqual({ bezierHandles: [0.25, 0.1, 0.25, 1.0], easingPreset: "ease-in-out", + outputDuration: 8, }); }); diff --git a/src/store/utils/connectedInputs.ts b/src/store/utils/connectedInputs.ts index 2a852087..3e28a254 100644 --- a/src/store/utils/connectedInputs.ts +++ b/src/store/utils/connectedInputs.ts @@ -39,7 +39,7 @@ export interface ConnectedInputs { model3d: string | null; text: string | null; dynamicInputs: Record; - easeCurve: { bezierHandles: [number, number, number, number]; easingPreset: string | null } | null; + easeCurve: { bezierHandles: [number, number, number, number]; easingPreset: string | null; outputDuration: number } | null; } /** @@ -308,6 +308,7 @@ export function getConnectedInputsPure( easeCurve = { bezierHandles: sourceData.bezierHandles, easingPreset: sourceData.easingPreset, + outputDuration: sourceData.outputDuration, }; } }