@remotion/renderer 4.0.255 → 4.0.257

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/browser/Browser.d.ts +23 -6
  2. package/dist/browser/Browser.js +22 -12
  3. package/dist/browser/BrowserPage.d.ts +5 -2
  4. package/dist/browser/BrowserPage.js +4 -2
  5. package/dist/browser/Launcher.js +1 -1
  6. package/dist/browser/Target.d.ts +7 -1
  7. package/dist/browser/Target.js +6 -1
  8. package/dist/browser/mitt/index.js +3 -3
  9. package/dist/browser-instances.js +1 -1
  10. package/dist/can-use-parallel-encoding.d.ts +1 -0
  11. package/dist/can-use-parallel-encoding.js +9 -1
  12. package/dist/client.d.ts +2 -2
  13. package/dist/cycle-browser-tabs.d.ts +6 -1
  14. package/dist/cycle-browser-tabs.js +2 -2
  15. package/dist/get-browser-instance.d.ts +2 -1
  16. package/dist/get-browser-instance.js +14 -4
  17. package/dist/get-codec-name.d.ts +1 -1
  18. package/dist/get-compositions.js +1 -0
  19. package/dist/index.d.ts +3 -3
  20. package/dist/make-page.d.ts +27 -0
  21. package/dist/make-page.js +71 -0
  22. package/dist/next-frame-to-render.d.ts +10 -0
  23. package/dist/next-frame-to-render.js +35 -0
  24. package/dist/open-browser.js +3 -3
  25. package/dist/options/gl.d.ts +1 -1
  26. package/dist/options/index.d.ts +2 -2
  27. package/dist/options/metadata.d.ts +1 -1
  28. package/dist/options/webhook-custom-data.d.ts +1 -1
  29. package/dist/pool.d.ts +7 -6
  30. package/dist/render-frame-and-retry-target-close.d.ts +50 -0
  31. package/dist/render-frame-and-retry-target-close.js +165 -0
  32. package/dist/render-frame-with-option-to-reject.d.ts +43 -0
  33. package/dist/render-frame-with-option-to-reject.js +136 -0
  34. package/dist/render-frame.d.ts +43 -0
  35. package/dist/render-frame.js +46 -0
  36. package/dist/render-frames.js +86 -312
  37. package/dist/render-partitions.d.ts +7 -0
  38. package/dist/render-partitions.js +50 -0
  39. package/dist/render-still.js +7 -2
  40. package/dist/replace-browser.js +1 -1
  41. package/dist/select-composition.js +1 -0
  42. package/dist/test-gpu.js +1 -0
  43. package/package.json +12 -12
@@ -2,7 +2,7 @@ export type Metadata = Record<string, string>;
2
2
  export declare const metadataOption: {
3
3
  name: string;
4
4
  cliFlag: "metadata";
5
- description: (mode: "ssr" | "cli") => import("react/jsx-runtime").JSX.Element;
5
+ description: (mode: "cli" | "ssr") => import("react/jsx-runtime").JSX.Element;
6
6
  docLink: string;
7
7
  type: Metadata;
8
8
  getValue: ({ commandLine }: {
@@ -1,7 +1,7 @@
1
1
  export declare const webhookCustomDataOption: {
2
2
  name: string;
3
3
  cliFlag: "webhook-custom-data";
4
- description: (type: "ssr" | "cli") => import("react/jsx-runtime").JSX.Element;
4
+ description: (type: "cli" | "ssr") => import("react/jsx-runtime").JSX.Element;
5
5
  ssrName: "customData";
6
6
  docLink: string;
7
7
  type: Record<string, unknown> | null;
package/dist/pool.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- export declare class Pool<T> {
2
- resources: T[];
3
- waiters: ((r: T) => void)[];
4
- constructor(resources: T[]);
5
- acquire(): Promise<T>;
6
- release(resource: T): void;
1
+ import type { Page } from './browser/BrowserPage';
2
+ export declare class Pool {
3
+ resources: Page[];
4
+ waiters: ((r: Page) => void)[];
5
+ constructor(resources: Page[]);
6
+ acquire(): Promise<Page>;
7
+ release(resource: Page): void;
7
8
  }
@@ -0,0 +1,50 @@
1
+ import type { VideoConfig } from 'remotion/no-react';
2
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
+ import type { DownloadMap } from './assets/download-map';
4
+ import type { HeadlessBrowser } from './browser/Browser';
5
+ import type { Page } from './browser/BrowserPage';
6
+ import type { CountType } from './get-frame-padded-index';
7
+ import type { VideoImageFormat } from './image-format';
8
+ import type { LogLevel } from './log-level';
9
+ import type { CancelSignal } from './make-cancel-signal';
10
+ import type { NextFrameToRender } from './next-frame-to-render';
11
+ import type { Pool } from './pool';
12
+ import type { FrameAndAssets, OnArtifact } from './render-frames';
13
+ import type { BrowserReplacer } from './replace-browser';
14
+ export declare const renderFrameAndRetryTargetClose: ({ retriesLeft, attempt, assets, imageFormat, binariesDirectory, cancelSignal, composition, countType, downloadMap, frameDir, framesToRender, jpegQuality, onArtifact, onDownload, onError, outputDir, poolPromise, scale, stoppedSignal, timeoutInMilliseconds, indent, logLevel, makeBrowser, makeNewPage, browserReplacer, concurrencyOrFramesToRender, framesRenderedObj, lastFrame, onFrameBuffer, onFrameUpdate, nextFrameToRender, }: {
15
+ retriesLeft: number;
16
+ attempt: number;
17
+ imageFormat: VideoImageFormat;
18
+ cancelSignal: CancelSignal | undefined;
19
+ binariesDirectory: string | null;
20
+ poolPromise: Promise<Pool>;
21
+ jpegQuality: number;
22
+ frameDir: string;
23
+ scale: number;
24
+ countType: CountType;
25
+ assets: FrameAndAssets[];
26
+ framesToRender: number[];
27
+ onArtifact: OnArtifact | null;
28
+ onDownload: RenderMediaOnDownload | null;
29
+ downloadMap: DownloadMap;
30
+ composition: Omit<VideoConfig, "defaultProps" | "props">;
31
+ onError: (err: Error) => void;
32
+ stoppedSignal: {
33
+ stopped: boolean;
34
+ };
35
+ timeoutInMilliseconds: number;
36
+ outputDir: string | null;
37
+ indent: boolean;
38
+ logLevel: LogLevel;
39
+ makeBrowser: () => Promise<HeadlessBrowser>;
40
+ makeNewPage: (frame: number, pageIndex: number) => Promise<Page>;
41
+ browserReplacer: BrowserReplacer;
42
+ concurrencyOrFramesToRender: number;
43
+ lastFrame: number;
44
+ framesRenderedObj: {
45
+ count: number;
46
+ };
47
+ onFrameBuffer: null | ((buffer: Buffer, frame: number) => void) | undefined;
48
+ onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
49
+ nextFrameToRender: NextFrameToRender;
50
+ }) => Promise<void>;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderFrameAndRetryTargetClose = void 0;
4
+ const no_react_1 = require("remotion/no-react");
5
+ const flaky_errors_1 = require("./browser/flaky-errors");
6
+ const is_delay_render_error_with_retry_1 = require("./is-delay-render-error-with-retry");
7
+ const logger_1 = require("./logger");
8
+ const make_cancel_signal_1 = require("./make-cancel-signal");
9
+ const render_frame_1 = require("./render-frame");
10
+ const renderFrameAndRetryTargetClose = async ({ retriesLeft, attempt, assets, imageFormat, binariesDirectory, cancelSignal, composition, countType, downloadMap, frameDir, framesToRender, jpegQuality, onArtifact, onDownload, onError, outputDir, poolPromise, scale, stoppedSignal, timeoutInMilliseconds, indent, logLevel, makeBrowser, makeNewPage, browserReplacer, concurrencyOrFramesToRender, framesRenderedObj, lastFrame, onFrameBuffer, onFrameUpdate, nextFrameToRender, }) => {
11
+ var _a;
12
+ const currentPool = await poolPromise;
13
+ if (stoppedSignal.stopped) {
14
+ return;
15
+ }
16
+ const freePage = await currentPool.acquire();
17
+ const frame = nextFrameToRender.getNextFrame(freePage.pageIndex);
18
+ try {
19
+ await Promise.race([
20
+ (0, render_frame_1.renderFrame)({
21
+ attempt,
22
+ assets,
23
+ binariesDirectory,
24
+ cancelSignal,
25
+ countType,
26
+ downloadMap,
27
+ frameDir,
28
+ framesToRender,
29
+ imageFormat,
30
+ indent,
31
+ jpegQuality,
32
+ logLevel,
33
+ onArtifact,
34
+ onDownload,
35
+ scale,
36
+ composition,
37
+ framesRenderedObj,
38
+ lastFrame,
39
+ onError,
40
+ onFrameBuffer,
41
+ onFrameUpdate,
42
+ outputDir,
43
+ stoppedSignal,
44
+ timeoutInMilliseconds,
45
+ nextFrameToRender,
46
+ frame,
47
+ page: freePage,
48
+ }),
49
+ new Promise((_, reject) => {
50
+ cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
51
+ reject(new Error(make_cancel_signal_1.cancelErrorMessages.renderFrames));
52
+ });
53
+ }),
54
+ ]);
55
+ currentPool.release(freePage);
56
+ }
57
+ catch (err) {
58
+ const isTargetClosedError = (0, flaky_errors_1.isTargetClosedErr)(err);
59
+ const shouldRetryError = (_a = err.stack) === null || _a === void 0 ? void 0 : _a.includes(no_react_1.NoReactInternals.DELAY_RENDER_RETRY_TOKEN);
60
+ const flakyNetworkError = (0, flaky_errors_1.isFlakyNetworkError)(err);
61
+ if ((0, make_cancel_signal_1.isUserCancelledRender)(err) && !shouldRetryError) {
62
+ throw err;
63
+ }
64
+ if (!isTargetClosedError && !shouldRetryError && !flakyNetworkError) {
65
+ throw err;
66
+ }
67
+ if (stoppedSignal.stopped) {
68
+ return;
69
+ }
70
+ if (retriesLeft === 0) {
71
+ logger_1.Log.warn({
72
+ indent,
73
+ logLevel,
74
+ }, `The browser crashed ${attempt} times while rendering frame ${frame}. Not retrying anymore. Learn more about this error under https://www.remotion.dev/docs/target-closed`);
75
+ throw err;
76
+ }
77
+ if (shouldRetryError) {
78
+ const pool = await poolPromise;
79
+ // Replace the closed page
80
+ const newPage = await makeNewPage(frame, freePage.pageIndex);
81
+ pool.release(newPage);
82
+ logger_1.Log.warn({ indent, logLevel }, `delayRender() timed out while rendering frame ${frame}: ${err.message}`);
83
+ const actualRetriesLeft = (0, is_delay_render_error_with_retry_1.getRetriesLeftFromError)(err);
84
+ return (0, exports.renderFrameAndRetryTargetClose)({
85
+ retriesLeft: actualRetriesLeft,
86
+ attempt: attempt + 1,
87
+ assets,
88
+ imageFormat,
89
+ binariesDirectory,
90
+ cancelSignal,
91
+ composition,
92
+ countType,
93
+ downloadMap,
94
+ frameDir,
95
+ framesToRender,
96
+ indent,
97
+ jpegQuality,
98
+ logLevel,
99
+ onArtifact,
100
+ onDownload,
101
+ onError,
102
+ outputDir,
103
+ poolPromise,
104
+ scale,
105
+ stoppedSignal,
106
+ timeoutInMilliseconds,
107
+ makeBrowser,
108
+ makeNewPage,
109
+ browserReplacer,
110
+ concurrencyOrFramesToRender,
111
+ framesRenderedObj,
112
+ lastFrame,
113
+ onFrameBuffer,
114
+ onFrameUpdate,
115
+ nextFrameToRender,
116
+ });
117
+ }
118
+ logger_1.Log.warn({ indent, logLevel }, `The browser crashed while rendering frame ${frame}, retrying ${retriesLeft} more times. Learn more about this error under https://www.remotion.dev/docs/target-closed`);
119
+ // Replace the entire browser
120
+ await browserReplacer.replaceBrowser(makeBrowser, async () => {
121
+ const pages = new Array(concurrencyOrFramesToRender)
122
+ .fill(true)
123
+ .map((_, i) => makeNewPage(frame, i));
124
+ const puppeteerPages = await Promise.all(pages);
125
+ const pool = await poolPromise;
126
+ for (const newPage of puppeteerPages) {
127
+ pool.release(newPage);
128
+ }
129
+ });
130
+ await (0, exports.renderFrameAndRetryTargetClose)({
131
+ retriesLeft: retriesLeft - 1,
132
+ attempt: attempt + 1,
133
+ assets,
134
+ binariesDirectory,
135
+ cancelSignal,
136
+ composition,
137
+ countType,
138
+ downloadMap,
139
+ frameDir,
140
+ framesToRender,
141
+ imageFormat,
142
+ indent,
143
+ jpegQuality,
144
+ logLevel,
145
+ onArtifact,
146
+ makeBrowser,
147
+ onDownload,
148
+ onError,
149
+ outputDir,
150
+ poolPromise,
151
+ scale,
152
+ stoppedSignal,
153
+ timeoutInMilliseconds,
154
+ browserReplacer,
155
+ makeNewPage,
156
+ concurrencyOrFramesToRender,
157
+ framesRenderedObj,
158
+ lastFrame,
159
+ onFrameBuffer,
160
+ onFrameUpdate,
161
+ nextFrameToRender,
162
+ });
163
+ }
164
+ };
165
+ exports.renderFrameAndRetryTargetClose = renderFrameAndRetryTargetClose;
@@ -0,0 +1,43 @@
1
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
2
+ import type { DownloadMap } from './assets/download-map';
3
+ import type { Page } from './browser/BrowserPage';
4
+ import type { CountType } from './get-frame-padded-index';
5
+ import type { VideoImageFormat } from './image-format';
6
+ import type { LogLevel } from './log-level';
7
+ import type { CancelSignal } from './make-cancel-signal';
8
+ import type { FrameAndAssets, OnArtifact } from './render-frames';
9
+ export declare const renderFrameWithOptionToReject: ({ reject, width, height, compId, attempt, stoppedSignal, indent, logLevel, timeoutInMilliseconds, outputDir, onFrameBuffer, imageFormat, onError, lastFrame, jpegQuality, frameDir, scale, countType, assets, framesToRender, onArtifact, onDownload, downloadMap, binariesDirectory, cancelSignal, framesRenderedObj, onFrameUpdate, frame, page, }: {
10
+ reject: (err: Error) => void;
11
+ width: number;
12
+ height: number;
13
+ compId: string;
14
+ attempt: number;
15
+ stoppedSignal: {
16
+ stopped: boolean;
17
+ };
18
+ timeoutInMilliseconds: number;
19
+ indent: boolean;
20
+ logLevel: LogLevel;
21
+ outputDir: string | null;
22
+ onFrameBuffer: null | ((buffer: Buffer, frame: number) => void) | undefined;
23
+ imageFormat: VideoImageFormat;
24
+ onError: (err: Error) => void;
25
+ lastFrame: number;
26
+ jpegQuality: number;
27
+ frameDir: string;
28
+ scale: number;
29
+ countType: CountType;
30
+ assets: FrameAndAssets[];
31
+ framesToRender: number[];
32
+ onArtifact: OnArtifact | null;
33
+ onDownload: RenderMediaOnDownload | null;
34
+ downloadMap: DownloadMap;
35
+ binariesDirectory: string | null;
36
+ cancelSignal: CancelSignal | undefined;
37
+ framesRenderedObj: {
38
+ count: number;
39
+ };
40
+ onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
41
+ frame: number;
42
+ page: Page;
43
+ }) => Promise<undefined>;
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.renderFrameWithOptionToReject = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
9
+ const compress_assets_1 = require("./compress-assets");
10
+ const handle_javascript_exception_1 = require("./error-handling/handle-javascript-exception");
11
+ const filter_asset_types_1 = require("./filter-asset-types");
12
+ const get_frame_padded_index_1 = require("./get-frame-padded-index");
13
+ const logger_1 = require("./logger");
14
+ const perf_1 = require("./perf");
15
+ const seek_to_frame_1 = require("./seek-to-frame");
16
+ const take_frame_1 = require("./take-frame");
17
+ const truthy_1 = require("./truthy");
18
+ const renderFrameWithOptionToReject = async ({ reject, width, height, compId, attempt, stoppedSignal, indent, logLevel, timeoutInMilliseconds, outputDir, onFrameBuffer, imageFormat, onError, lastFrame, jpegQuality, frameDir, scale, countType, assets, framesToRender, onArtifact, onDownload, downloadMap, binariesDirectory, cancelSignal, framesRenderedObj, onFrameUpdate, frame, page, }) => {
19
+ const startTime = performance.now();
20
+ const index = framesToRender.indexOf(frame);
21
+ const assetsOnly = index === -1;
22
+ if (stoppedSignal.stopped) {
23
+ return Promise.reject(new Error('Render was stopped'));
24
+ }
25
+ const errorCallbackOnFrame = (err) => {
26
+ reject(err);
27
+ };
28
+ const cleanupPageError = (0, handle_javascript_exception_1.handleJavascriptException)({
29
+ page,
30
+ onError: errorCallbackOnFrame,
31
+ frame,
32
+ });
33
+ page.on('error', errorCallbackOnFrame);
34
+ const startSeeking = Date.now();
35
+ await (0, seek_to_frame_1.seekToFrame)({
36
+ frame,
37
+ page,
38
+ composition: compId,
39
+ timeoutInMilliseconds,
40
+ indent,
41
+ logLevel,
42
+ attempt,
43
+ });
44
+ const timeToSeek = Date.now() - startSeeking;
45
+ if (timeToSeek > 1000) {
46
+ logger_1.Log.verbose({ indent, logLevel }, `Seeking to frame ${frame} took ${timeToSeek}ms`);
47
+ }
48
+ if (!outputDir && !onFrameBuffer && imageFormat !== 'none') {
49
+ throw new Error('Called renderFrames() without specifying either `outputDir` or `onFrameBuffer`');
50
+ }
51
+ if (outputDir && onFrameBuffer && imageFormat !== 'none') {
52
+ throw new Error('Pass either `outputDir` or `onFrameBuffer` to renderFrames(), not both.');
53
+ }
54
+ const id = (0, perf_1.startPerfMeasure)('save');
55
+ const { buffer, collectedAssets } = await (0, take_frame_1.takeFrame)({
56
+ frame,
57
+ freePage: page,
58
+ height,
59
+ imageFormat: assetsOnly ? 'none' : imageFormat,
60
+ output: index === null
61
+ ? null
62
+ : path_1.default.join(frameDir, (0, get_frame_padded_index_1.getFrameOutputFileName)({
63
+ frame,
64
+ imageFormat,
65
+ index,
66
+ countType,
67
+ lastFrame,
68
+ totalFrames: framesToRender.length,
69
+ })),
70
+ jpegQuality,
71
+ width,
72
+ scale,
73
+ wantsBuffer: Boolean(onFrameBuffer),
74
+ timeoutInMilliseconds,
75
+ });
76
+ if (onFrameBuffer && !assetsOnly) {
77
+ if (!buffer) {
78
+ throw new Error('unexpected null buffer');
79
+ }
80
+ onFrameBuffer(buffer, frame);
81
+ }
82
+ (0, perf_1.stopPerfMeasure)(id);
83
+ const onlyAvailableAssets = assets.filter(truthy_1.truthy);
84
+ const previousAudioRenderAssets = onlyAvailableAssets
85
+ .map((a) => a.audioAndVideoAssets)
86
+ .flat(2);
87
+ const previousArtifactAssets = onlyAvailableAssets
88
+ .map((a) => a.artifactAssets)
89
+ .flat(2);
90
+ const audioAndVideoAssets = (0, filter_asset_types_1.onlyAudioAndVideoAssets)(collectedAssets);
91
+ const artifactAssets = (0, filter_asset_types_1.onlyArtifact)(collectedAssets);
92
+ for (const artifact of artifactAssets) {
93
+ for (const previousArtifact of previousArtifactAssets) {
94
+ if (artifact.filename === previousArtifact.filename) {
95
+ return Promise.reject(new Error(`An artifact with output "${artifact.filename}" was already registered at frame ${previousArtifact.frame}, but now registered again at frame ${artifact.frame}. Artifacts must have unique names. https://remotion.dev/docs/artifacts`));
96
+ }
97
+ }
98
+ onArtifact === null || onArtifact === void 0 ? void 0 : onArtifact(artifact);
99
+ }
100
+ const compressedAssets = audioAndVideoAssets.map((asset) => {
101
+ return (0, compress_assets_1.compressAsset)(previousAudioRenderAssets, asset);
102
+ });
103
+ assets.push({
104
+ audioAndVideoAssets: compressedAssets,
105
+ frame,
106
+ artifactAssets: artifactAssets.map((a) => {
107
+ return {
108
+ frame: a.frame,
109
+ filename: a.filename,
110
+ };
111
+ }),
112
+ });
113
+ for (const renderAsset of compressedAssets) {
114
+ (0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
115
+ renderAsset,
116
+ onDownload,
117
+ downloadMap,
118
+ indent,
119
+ logLevel,
120
+ binariesDirectory,
121
+ cancelSignalForAudioAnalysis: cancelSignal,
122
+ shouldAnalyzeAudioImmediately: true,
123
+ }).catch((err) => {
124
+ const truncateWithEllipsis = renderAsset.src.substring(0, 1000) +
125
+ (renderAsset.src.length > 1000 ? '...' : '');
126
+ onError(new Error(`Error while downloading ${truncateWithEllipsis}: ${err.stack}`));
127
+ });
128
+ }
129
+ cleanupPageError();
130
+ page.off('error', errorCallbackOnFrame);
131
+ if (!assetsOnly) {
132
+ framesRenderedObj.count++;
133
+ onFrameUpdate === null || onFrameUpdate === void 0 ? void 0 : onFrameUpdate(framesRenderedObj.count, frame, performance.now() - startTime);
134
+ }
135
+ };
136
+ exports.renderFrameWithOptionToReject = renderFrameWithOptionToReject;
@@ -0,0 +1,43 @@
1
+ import type { VideoConfig } from 'remotion/no-react';
2
+ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
3
+ import type { DownloadMap } from './assets/download-map';
4
+ import type { Page } from './browser/BrowserPage';
5
+ import type { CountType } from './get-frame-padded-index';
6
+ import type { VideoImageFormat } from './image-format';
7
+ import type { LogLevel } from './log-level';
8
+ import type { CancelSignal } from './make-cancel-signal';
9
+ import type { NextFrameToRender } from './next-frame-to-render';
10
+ import type { FrameAndAssets, OnArtifact } from './render-frames';
11
+ export declare const renderFrame: ({ attempt, binariesDirectory, cancelSignal, imageFormat, indent, logLevel, assets, countType, downloadMap, frameDir, framesToRender, jpegQuality, onArtifact, onDownload, scale, composition, onError, outputDir, stoppedSignal, timeoutInMilliseconds, lastFrame, onFrameBuffer, onFrameUpdate, framesRenderedObj, frame, page, }: {
12
+ attempt: number;
13
+ indent: boolean;
14
+ logLevel: LogLevel;
15
+ imageFormat: VideoImageFormat;
16
+ cancelSignal: CancelSignal | undefined;
17
+ binariesDirectory: string | null;
18
+ jpegQuality: number;
19
+ frameDir: string;
20
+ scale: number;
21
+ countType: CountType;
22
+ assets: FrameAndAssets[];
23
+ framesToRender: number[];
24
+ onArtifact: OnArtifact | null;
25
+ onDownload: RenderMediaOnDownload | null;
26
+ downloadMap: DownloadMap;
27
+ composition: Omit<VideoConfig, "defaultProps" | "props">;
28
+ onError: (err: Error) => void;
29
+ stoppedSignal: {
30
+ stopped: boolean;
31
+ };
32
+ timeoutInMilliseconds: number;
33
+ outputDir: string | null;
34
+ onFrameBuffer: null | ((buffer: Buffer, frame: number) => void) | undefined;
35
+ lastFrame: number;
36
+ onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
37
+ framesRenderedObj: {
38
+ count: number;
39
+ };
40
+ nextFrameToRender: NextFrameToRender;
41
+ frame: number;
42
+ page: Page;
43
+ }) => Promise<void>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderFrame = void 0;
4
+ const render_frame_with_option_to_reject_1 = require("./render-frame-with-option-to-reject");
5
+ const renderFrame = ({ attempt, binariesDirectory, cancelSignal, imageFormat, indent, logLevel, assets, countType, downloadMap, frameDir, framesToRender, jpegQuality, onArtifact, onDownload, scale, composition, onError, outputDir, stoppedSignal, timeoutInMilliseconds, lastFrame, onFrameBuffer, onFrameUpdate, framesRenderedObj, frame, page, }) => {
6
+ return new Promise((resolve, reject) => {
7
+ (0, render_frame_with_option_to_reject_1.renderFrameWithOptionToReject)({
8
+ reject,
9
+ width: composition.width,
10
+ height: composition.height,
11
+ compId: composition.id,
12
+ attempt,
13
+ indent,
14
+ logLevel,
15
+ stoppedSignal,
16
+ timeoutInMilliseconds,
17
+ imageFormat,
18
+ onFrameBuffer,
19
+ outputDir,
20
+ assets,
21
+ binariesDirectory,
22
+ cancelSignal,
23
+ countType,
24
+ downloadMap,
25
+ frameDir,
26
+ framesToRender,
27
+ jpegQuality,
28
+ lastFrame,
29
+ onArtifact,
30
+ onDownload,
31
+ onError,
32
+ scale,
33
+ framesRenderedObj,
34
+ onFrameUpdate,
35
+ frame,
36
+ page,
37
+ })
38
+ .then(() => {
39
+ resolve();
40
+ })
41
+ .catch((err) => {
42
+ reject(err);
43
+ });
44
+ });
45
+ };
46
+ exports.renderFrame = renderFrame;