Skip to content

Commit 03ef827

Browse files
authored
Merge pull request #5634 from remotion-dev/feature/5629
2 parents 695ce4c + b74618e commit 03ef827

File tree

10 files changed

+23
-29
lines changed

10 files changed

+23
-29
lines changed

packages/core/src/Composition.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export type CalculateMetadataFunction<T extends Record<string, unknown>> =
5555
props: T;
5656
abortSignal: AbortSignal;
5757
compositionId: string;
58+
isRendering: boolean;
5859
}) => Promise<CalcMetadataReturnType<T>> | CalcMetadataReturnType<T>;
5960

6061
type OptionalDimensions<

packages/core/src/resolve-video-config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type {
33
CalcMetadataReturnType,
44
CalculateMetadataFunction,
55
} from './Composition.js';
6+
import {getRemotionEnvironment} from './get-remotion-environment.js';
67
import {serializeThenDeserializeInStudio} from './input-props-serialization.js';
78
import type {InferProps} from './props-if-has-props.js';
89
import {validateCodec} from './validation/validate-default-codec.js';
@@ -111,6 +112,7 @@ export const resolveVideoConfig = ({
111112
props: originalProps,
112113
abortSignal: signal,
113114
compositionId,
115+
isRendering: getRemotionEnvironment().isRendering,
114116
})
115117
: null;
116118

packages/docs/docs/calculate-metadata.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ import React from 'react';
5353
import {CalculateMetadataFunction, Composition} from 'remotion';
5454
import {MyComponent, MyComponentProps} from './MyComp';
5555

56-
const calculateMetadata: CalculateMetadataFunction<MyComponentProps> = ({props, defaultProps, abortSignal}) => {
56+
const calculateMetadata: CalculateMetadataFunction<MyComponentProps> = ({props, defaultProps, abortSignal, isRendering}) => {
5757
return {
5858
// Change the metadata
5959
durationInFrames: props.duration,
@@ -93,6 +93,7 @@ As argument, you get an object with the following properties:
9393
- `props`: The [resolved props](/docs/props-resolution), taking input props into account.
9494
- `abortSignal`: An [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) which you can use to abort network requests if [the default props have been changed](/docs/data-fetching#aborting-stale-requests) in the meanwhile.
9595
- `compositionId` (_available from v4.0.98_): The ID of the current composition
96+
- `isRendering` (_available from v4.0.342_): A boolean indicating whether the function is being called during rendering (`true`) or in other contexts like the Studio (`false`)
9697

9798
The function must return an pure JSON-serializable object, which can contain the following properties:
9899

packages/docs/docs/get-remotion-environment.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Consider using the [`useRemotionEnvironment()`](/docs/use-remotion-environment)
1515
It returns an object with the following properties:
1616

1717
- `isStudio`: Whether the function got called in the [Remotion Studio](/docs/cli/studio).
18-
- `isRendering`: Whether the function got called in a render.
18+
- `isRendering`: Whether the function got called in a render. Also available in the [`calculateMetadata()`](/docs/calculate-metadata) function.
1919
- `isPlayer`: Whether a [`<Player>`](/docs/player) is mounted on the current page.
2020
- `isReadOnlyStudio`: Whether in a [statically deployed studio](https://www.remotion.dev/docs/studio/deploy-static), where the [`@remotion/studio`](/docs/studio/api) APIs cannot be used (_available from v4.0.238_)
2121

packages/template-stargazer/src/Root.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,11 @@ const FPS = 30;
88

99
export const RemotionRoot = () => {
1010
const calculateMetadata: CalculateMetadataFunction<MainProps> = useCallback(
11-
async ({ props, abortSignal }) => {
12-
await waitForNoInput(abortSignal, 500);
11+
async ({ props, abortSignal, isRendering }) => {
12+
// don't debounce user input during rendering
13+
if (!isRendering) {
14+
await waitForNoInput(abortSignal, 500);
15+
}
1316

1417
const stargazers = await fetchStargazers({
1518
repoOrg: props.repoOrg,

packages/template-stargazer/src/wait-for-no-input.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
import { getRemotionEnvironment } from "remotion";
2-
31
export const waitForNoInput = (signal: AbortSignal, ms: number) => {
4-
// Don't wait during rendering
5-
if (getRemotionEnvironment().isRendering) {
6-
return Promise.resolve();
7-
}
8-
92
if (signal.aborted) {
103
return Promise.reject(new Error("stale"));
114
}

packages/template-tts-azure/src/Root.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,12 @@ export const RemotionRoot: React.FC = () => {
2121
voice: "enUSWoman1" as const,
2222
displaySpeed: 10,
2323
}}
24-
calculateMetadata={async ({ props, abortSignal }) => {
25-
await waitForNoInput(abortSignal, 1000);
24+
calculateMetadata={async ({ props, abortSignal, isRendering }) => {
25+
// don't debounce user input during rendering
26+
if (!isRendering) {
27+
await waitForNoInput(abortSignal, 1000);
28+
}
29+
2630
const exists = await audioAlreadyExists({
2731
text: props.text,
2832
voice: props.voice,

packages/template-tts-azure/src/debounce.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
import { getRemotionEnvironment } from "remotion";
2-
31
export const waitForNoInput = (signal: AbortSignal, ms: number) => {
4-
// Don't wait during rendering
5-
if (getRemotionEnvironment().isRendering) {
6-
return Promise.resolve();
7-
}
8-
92
if (signal.aborted) {
103
return Promise.reject(new Error("stale"));
114
}

packages/template-tts-google/src/Root.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,12 @@ export const RemotionRoot: React.FC = () => {
5959
speakingRate: 1,
6060
audioUrl: null,
6161
}}
62-
calculateMetadata={async ({ props, abortSignal }) => {
63-
await waitForNoInput(abortSignal, 1000);
62+
calculateMetadata={async ({ props, abortSignal, isRendering }) => {
63+
// don't debounce user input during rendering
64+
if (!isRendering) {
65+
await waitForNoInput(abortSignal, 1000);
66+
}
67+
6468
const audioUrl = await getTTSFromServer({ ...props });
6569
const audioDurationInSeconds =
6670
await getAudioDurationInSeconds(audioUrl);

packages/template-tts-google/src/debounce.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
import { getRemotionEnvironment } from "remotion";
2-
31
export const waitForNoInput = (signal: AbortSignal, ms: number) => {
4-
// Don't wait during rendering
5-
if (getRemotionEnvironment().isRendering) {
6-
return Promise.resolve();
7-
}
8-
92
if (signal.aborted) {
103
return Promise.reject(new Error("stale"));
114
}

0 commit comments

Comments
 (0)