@remotion/renderer 4.0.537 → 4.0.539
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.
- package/dist/aac-priming.d.ts +2 -1
- package/dist/assets/apply-tone-frequency.d.ts +2 -1
- package/dist/assets/apply-tone-frequency.js +8 -1
- package/dist/assets/calculate-asset-positions.js +2 -0
- package/dist/assets/convert-assets-to-file-urls.d.ts +2 -1
- package/dist/assets/download-and-map-assets-to-file.d.ts +3 -2
- package/dist/assets/get-audio-channels.d.ts +3 -2
- package/dist/assets/inline-audio-mixing.d.ts +2 -1
- package/dist/assets/read-file.js +1 -2
- package/dist/assets/types.d.ts +2 -1
- package/dist/browser/Browser.d.ts +5 -5
- package/dist/browser/Browser.js +74 -65
- package/dist/browser/BrowserFetcher.d.ts +7 -5
- package/dist/browser/BrowserPage.d.ts +4 -4
- package/dist/browser/BrowserPage.js +222 -226
- package/dist/browser/BrowserRunner.d.ts +2 -1
- package/dist/browser/Connection.js +109 -96
- package/dist/browser/ConsoleMessage.d.ts +1 -1
- package/dist/browser/ConsoleMessage.js +16 -9
- package/dist/browser/DOMWorld.d.ts +1 -1
- package/dist/browser/DOMWorld.js +91 -77
- package/dist/browser/Errors.js +4 -2
- package/dist/browser/EventEmitter.js +1 -2
- package/dist/browser/ExecutionContext.js +120 -117
- package/dist/browser/FrameManager.js +244 -249
- package/dist/browser/HTTPRequest.js +22 -11
- package/dist/browser/HTTPResponse.js +16 -3
- package/dist/browser/JSHandle.js +30 -17
- package/dist/browser/LifecycleWatcher.js +128 -122
- package/dist/browser/NetworkEventManager.js +40 -31
- package/dist/browser/NetworkManager.js +203 -210
- package/dist/browser/NodeWebSocketTransport.js +0 -3
- package/dist/browser/Target.d.ts +1 -1
- package/dist/browser/Target.js +39 -32
- package/dist/browser/TaskQueue.js +18 -5
- package/dist/browser/TimeoutSettings.js +25 -12
- package/dist/browser/browser-download-progress-bar.d.ts +2 -1
- package/dist/browser/get-chrome-download-url.d.ts +3 -2
- package/dist/browser/handle-failed-resource.d.ts +2 -1
- package/dist/call-ffmpeg.d.ts +7 -6
- package/dist/can-concat-seamlessly.d.ts +4 -2
- package/dist/can-use-parallel-encoding.d.ts +2 -1
- package/dist/check-version-requirements.d.ts +2 -1
- package/dist/client.d.ts +302 -280
- package/dist/client.js +2 -2
- package/dist/codec-supports-media.d.ts +4 -3
- package/dist/codec.d.ts +1 -1
- package/dist/collect-assets.d.ts +1 -1
- package/dist/combine-audio.d.ts +4 -2
- package/dist/combine-chunks.d.ts +2 -1
- package/dist/combine-video-streams.d.ts +4 -2
- package/dist/compositor/compositor.d.ts +4 -3
- package/dist/compositor/get-executable-path.d.ts +4 -4
- package/dist/compress-audio.d.ts +4 -2
- package/dist/create-audio.d.ts +4 -2
- package/dist/create-silent-audio.d.ts +2 -1
- package/dist/crf.d.ts +6 -4
- package/dist/cycle-browser-tabs.d.ts +2 -1
- package/dist/ensure-browser.d.ts +1 -52
- package/dist/error-handling/handle-javascript-exception.d.ts +1 -1
- package/dist/error-handling/handle-javascript-exception.js +0 -5
- package/dist/error-handling/symbolicateable-error.d.ts +1 -1
- package/dist/error-handling/symbolicateable-error.js +0 -4
- package/dist/error-handling.js +1 -1
- package/dist/esm/client.mjs +329 -242
- package/dist/esm/index.mjs +129 -110
- package/dist/extract-audio.d.ts +3 -2
- package/dist/ffmpeg-args.d.ts +12 -6
- package/dist/finalize-fast-start.d.ts +2 -1
- package/dist/get-browser-instance.d.ts +6 -4
- package/dist/get-codec-name.d.ts +6 -3
- package/dist/get-compositions.d.ts +2 -1
- package/dist/get-concurrency.d.ts +1 -1
- package/dist/get-concurrency.js +1 -1
- package/dist/get-duration-from-frame-range.d.ts +1 -1
- package/dist/get-extension-from-codec.d.ts +2 -1
- package/dist/get-frame-padded-index.d.ts +2 -1
- package/dist/get-local-browser-executable.d.ts +4 -2
- package/dist/get-port.d.ts +1 -1
- package/dist/get-prores-profile-name.d.ts +3 -1
- package/dist/get-silent-parts.d.ts +5 -4
- package/dist/get-video-metadata.d.ts +4 -3
- package/dist/get-video-threads-flag.d.ts +2 -1
- package/dist/goto-page-or-throw.d.ts +1 -1
- package/dist/guess-extension-for-media.d.ts +2 -1
- package/dist/image-format.d.ts +6 -5
- package/dist/index.d.ts +213 -440
- package/dist/index.js +18 -18
- package/dist/is-audio-codec.d.ts +2 -1
- package/dist/log-level.d.ts +2 -2
- package/dist/logger.d.ts +6 -6
- package/dist/make-page.d.ts +5 -3
- package/dist/memory/from-macos-sysctl.d.ts +2 -1
- package/dist/memory/from-proc-meminfo.d.ts +2 -1
- package/dist/memory/get-available-memory.d.ts +2 -1
- package/dist/merge-audio-track.d.ts +1 -1
- package/dist/merge-audio-track.js +24 -23
- package/dist/merge-inline-audio-tracks.d.ts +2 -1
- package/dist/mux-video-and-audio.d.ts +5 -3
- package/dist/offthread-video-server.d.ts +2 -1
- package/dist/offthread-video-server.js +6 -4
- package/dist/open-browser.d.ts +2 -2
- package/dist/options/allow-html-in-canvas.js +1 -2
- package/dist/options/api-key.d.ts +1 -1
- package/dist/options/api-key.js +1 -3
- package/dist/options/ask-ai.js +1 -1
- package/dist/options/audio-bitrate.js +1 -9
- package/dist/options/audio-codec.d.ts +23 -20
- package/dist/options/beep-on-finish.js +1 -1
- package/dist/options/benchmark-concurrencies.js +1 -2
- package/dist/options/binaries-directory.d.ts +1 -1
- package/dist/options/binaries-directory.js +1 -9
- package/dist/options/browser-executable.d.ts +1 -1
- package/dist/options/browser-executable.js +1 -1
- package/dist/options/browser.js +1 -2
- package/dist/options/bundle-cache.js +1 -2
- package/dist/options/canvas-tabs.js +1 -1
- package/dist/options/chrome-mode.d.ts +4 -4
- package/dist/options/chrome-mode.js +1 -6
- package/dist/options/color-space.d.ts +9 -5
- package/dist/options/color-space.js +1 -8
- package/dist/options/concurrency.d.ts +1 -1
- package/dist/options/concurrency.js +1 -5
- package/dist/options/config.js +1 -1
- package/dist/options/crf.js +1 -1
- package/dist/options/cross-site-isolation.js +1 -2
- package/dist/options/dark-mode.js +1 -2
- package/dist/options/default-coding-agent.d.ts +2 -2
- package/dist/options/default-coding-agent.js +1 -2
- package/dist/options/default-editor.d.ts +4 -4
- package/dist/options/default-editor.js +1 -3
- package/dist/options/default-premount-in-seconds.js +1 -1
- package/dist/options/delete-after.d.ts +1 -1
- package/dist/options/delete-after.js +1 -11
- package/dist/options/disable-shared-memory-capture.js +1 -3
- package/dist/options/disable-web-security.d.ts +1 -1
- package/dist/options/disable-web-security.js +1 -1
- package/dist/options/disallow-parallel-encoding.js +1 -1
- package/dist/options/enable-cancellation.js +1 -2
- package/dist/options/enable-lambda-insights.js +1 -2
- package/dist/options/enable-multiprocess-on-linux.js +1 -13
- package/dist/options/encoding-buffer-size.d.ts +4 -2
- package/dist/options/encoding-buffer-size.js +1 -3
- package/dist/options/encoding-max-rate.d.ts +1 -1
- package/dist/options/encoding-max-rate.js +1 -3
- package/dist/options/enforce-audio.js +1 -15
- package/dist/options/env-file.js +1 -3
- package/dist/options/every-nth-frame.d.ts +1 -1
- package/dist/options/every-nth-frame.js +1 -6
- package/dist/options/experimental-client-side-rendering.d.ts +16 -0
- package/dist/options/experimental-client-side-rendering.js +30 -0
- package/dist/options/experimental-keep-audio-context-alive.js +1 -3
- package/dist/options/folder-expiry.d.ts +1 -1
- package/dist/options/folder-expiry.js +1 -4
- package/dist/options/for-seamless-aac-concatenation.js +1 -3
- package/dist/options/force-new-studio.js +1 -1
- package/dist/options/frames.d.ts +1 -1
- package/dist/options/frames.js +1 -4
- package/dist/options/gl.d.ts +6 -6
- package/dist/options/gl.js +3 -28
- package/dist/options/gop-size.js +1 -3
- package/dist/options/hardware-acceleration.d.ts +3 -3
- package/dist/options/headless.js +1 -1
- package/dist/options/ignore-certificate-errors.d.ts +1 -1
- package/dist/options/ignore-certificate-errors.js +1 -1
- package/dist/options/image-sequence-pattern.js +1 -5
- package/dist/options/image-sequence.js +1 -1
- package/dist/options/index.d.ts +91 -72
- package/dist/options/index.js +2 -0
- package/dist/options/interactivity.js +1 -1
- package/dist/options/ipv4.js +1 -1
- package/dist/options/is-production.d.ts +1 -1
- package/dist/options/is-production.js +1 -4
- package/dist/options/jpeg-quality.d.ts +1 -1
- package/dist/options/jpeg-quality.js +1 -4
- package/dist/options/keyboard-shortcuts.js +1 -1
- package/dist/options/latency-hint.d.ts +1 -1
- package/dist/options/latency-hint.js +1 -10
- package/dist/options/license-key.d.ts +1 -1
- package/dist/options/license-key.js +1 -2
- package/dist/options/log-level.d.ts +4 -3
- package/dist/options/log-level.js +1 -16
- package/dist/options/metadata.js +2 -7
- package/dist/options/mute.js +1 -1
- package/dist/options/no-open.js +1 -1
- package/dist/options/number-of-gif-loops.d.ts +1 -1
- package/dist/options/number-of-gif-loops.js +1 -13
- package/dist/options/number-of-shared-audio-tags.js +1 -1
- package/dist/options/offthreadvideo-cache-size.d.ts +1 -1
- package/dist/options/offthreadvideo-cache-size.js +1 -11
- package/dist/options/offthreadvideo-threads.d.ts +1 -1
- package/dist/options/offthreadvideo-threads.js +1 -2
- package/dist/options/on-browser-download.d.ts +1 -1
- package/dist/options/on-browser-download.js +1 -2
- package/dist/options/options-map.d.ts +180 -180
- package/dist/options/out-dir.d.ts +1 -1
- package/dist/options/out-dir.js +1 -4
- package/dist/options/override-duration.js +1 -1
- package/dist/options/override-fps.js +1 -1
- package/dist/options/override-height.js +1 -1
- package/dist/options/override-width.js +1 -1
- package/dist/options/overwrite.js +1 -5
- package/dist/options/package-manager.d.ts +1 -1
- package/dist/options/package-manager.js +1 -12
- package/dist/options/pixel-format.d.ts +6 -5
- package/dist/options/pixel-format.js +1 -2
- package/dist/options/port.js +1 -1
- package/dist/options/prefer-lossless.d.ts +1 -1
- package/dist/options/prefer-lossless.js +1 -4
- package/dist/options/preserve-pitch-on-playback.d.ts +19 -0
- package/dist/options/preserve-pitch-on-playback.js +36 -0
- package/dist/options/preview-sample-rate.js +1 -3
- package/dist/options/props.js +1 -5
- package/dist/options/prores-profile.d.ts +2 -2
- package/dist/options/prores-profile.js +1 -5
- package/dist/options/public-dir.d.ts +1 -1
- package/dist/options/public-dir.js +1 -2
- package/dist/options/public-license-key.d.ts +1 -1
- package/dist/options/public-license-key.js +1 -3
- package/dist/options/public-path.d.ts +1 -1
- package/dist/options/public-path.js +1 -5
- package/dist/options/repro.d.ts +3 -1
- package/dist/options/repro.js +1 -1
- package/dist/options/rspack.js +1 -1
- package/dist/options/runs.js +1 -3
- package/dist/options/sample-rate.d.ts +2 -2
- package/dist/options/sample-rate.js +1 -2
- package/dist/options/scale.js +1 -5
- package/dist/options/sequence-activity-limit.js +1 -4
- package/dist/options/show-layer-frame-numbers.js +1 -3
- package/dist/options/show-premounting.js +1 -2
- package/dist/options/skip-skills.js +1 -1
- package/dist/options/still-frame.d.ts +1 -1
- package/dist/options/still-frame.js +1 -3
- package/dist/options/still-image-format.d.ts +3 -2
- package/dist/options/still-image-format.js +1 -2
- package/dist/options/timeout.d.ts +1 -1
- package/dist/options/timeout.js +1 -4
- package/dist/options/user-agent.d.ts +1 -1
- package/dist/options/user-agent.js +1 -1
- package/dist/options/version-flag.js +1 -1
- package/dist/options/video-bitrate.js +1 -7
- package/dist/options/video-cache-size.d.ts +1 -1
- package/dist/options/video-cache-size.js +1 -7
- package/dist/options/video-codec.d.ts +9 -7
- package/dist/options/video-codec.js +1 -1
- package/dist/options/video-image-format.d.ts +6 -5
- package/dist/options/video-image-format.js +1 -6
- package/dist/options/webhook-custom-data.d.ts +1 -1
- package/dist/options/webhook-custom-data.js +1 -1
- package/dist/options/webpack-poll.js +1 -1
- package/dist/options/x264-preset.d.ts +8 -7
- package/dist/options/x264-preset.js +1 -23
- package/dist/p-limit.d.ts +1 -1
- package/dist/pixel-format.d.ts +4 -3
- package/dist/pool.js +0 -2
- package/dist/port-config.d.ts +6 -5
- package/dist/prespawn-ffmpeg.d.ts +1 -1
- package/dist/prestitcher-memory-usage.d.ts +13 -0
- package/dist/prestitcher-memory-usage.js +33 -0
- package/dist/print-useful-error-message.d.ts +2 -1
- package/dist/probe-encoder.d.ts +8 -5
- package/dist/probe-shared-memory-capture.d.ts +4 -2
- package/dist/prores-profile.d.ts +4 -2
- package/dist/puppeteer-evaluate.d.ts +2 -2
- package/dist/puppeteer-screenshot.d.ts +4 -3
- package/dist/pure.d.ts +12 -15
- package/dist/remotion-shared-memory.d.ts +1 -1
- package/dist/remotion-shared-memory.js +199 -187
- package/dist/render-frame-and-retry-target-close.d.ts +10 -10
- package/dist/render-frame-with-option-to-reject.d.ts +7 -5
- package/dist/render-frame-with-option-to-reject.js +1 -5
- package/dist/render-frame.d.ts +8 -6
- package/dist/render-frames.d.ts +1 -40
- package/dist/render-has-audio.d.ts +3 -2
- package/dist/render-partitions.d.ts +7 -0
- package/dist/render-partitions.js +50 -0
- package/dist/replace-browser.d.ts +2 -1
- package/dist/repro.d.ts +1 -1
- package/dist/screenshot-task.d.ts +4 -3
- package/dist/seek-to-frame.d.ts +3 -2
- package/dist/select-composition.d.ts +1 -20
- package/dist/serve-handler/index.d.ts +1 -1
- package/dist/serve-handler/range-parser.d.ts +2 -2
- package/dist/serve-handler/range-parser.js +1 -1
- package/dist/serve-static.d.ts +2 -1
- package/dist/serve-static.js +4 -1
- package/dist/set-props-and-env.js +2 -6
- package/dist/stringify-ffmpeg-filter.d.ts +2 -1
- package/dist/stringify-ffmpeg-filter.js +20 -2
- package/dist/take-frame.d.ts +1 -1
- package/dist/test-gpu.d.ts +4 -2
- package/dist/validate-even-dimensions-with-codec.d.ts +4 -2
- package/dist/validate-ffmpeg-override.d.ts +1 -1
- package/dist/validate-number-of-gif-loops.d.ts +2 -1
- package/dist/validate-output-filename.d.ts +4 -2
- package/package.json +16 -16
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _RemotionSharedMemoryCapture_instances, _RemotionSharedMemoryCapture_pools, _RemotionSharedMemoryCapture_nextPoolId, _RemotionSharedMemoryCapture_nextFrameId, _RemotionSharedMemoryCapture_supported, _RemotionSharedMemoryCapture_initialization, _RemotionSharedMemoryCapture_pixelFormat, _RemotionSharedMemoryCapture_options, _RemotionSharedMemoryCapture_forgetPage, _RemotionSharedMemoryCapture_createPool, _RemotionSharedMemoryCapture_returnSlot, _RemotionSharedMemoryCapture_destroyPools;
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.isRemotionRawFrame = exports.RemotionSharedMemoryCapture = exports.getPreferredRemotionSharedMemoryBackend = void 0;
|
|
4
16
|
const flaky_errors_1 = require("./browser/flaky-errors");
|
|
@@ -29,77 +41,79 @@ const isExpectedCapabilityError = (error) => {
|
|
|
29
41
|
message.includes('Invalid Remotion frame pool dimensions'));
|
|
30
42
|
};
|
|
31
43
|
class RemotionSharedMemoryCapture {
|
|
32
|
-
#pools = new Map();
|
|
33
|
-
#nextPoolId = 1;
|
|
34
|
-
#nextFrameId = 1;
|
|
35
|
-
#supported = null;
|
|
36
|
-
#initialization = null;
|
|
37
|
-
#pixelFormat = null;
|
|
38
|
-
#options;
|
|
39
44
|
constructor(options) {
|
|
40
|
-
this
|
|
45
|
+
_RemotionSharedMemoryCapture_instances.add(this);
|
|
46
|
+
_RemotionSharedMemoryCapture_pools.set(this, new Map());
|
|
47
|
+
_RemotionSharedMemoryCapture_nextPoolId.set(this, 1);
|
|
48
|
+
_RemotionSharedMemoryCapture_nextFrameId.set(this, 1);
|
|
49
|
+
_RemotionSharedMemoryCapture_supported.set(this, null);
|
|
50
|
+
_RemotionSharedMemoryCapture_initialization.set(this, null);
|
|
51
|
+
_RemotionSharedMemoryCapture_pixelFormat.set(this, null);
|
|
52
|
+
_RemotionSharedMemoryCapture_options.set(this, void 0);
|
|
53
|
+
__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_options, options, "f");
|
|
41
54
|
}
|
|
42
55
|
isSupported() {
|
|
43
|
-
return this
|
|
56
|
+
return __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_supported, "f") === true;
|
|
44
57
|
}
|
|
45
58
|
getImageFormat(imageFormat) {
|
|
46
|
-
if (!this.isSupported() || this
|
|
47
|
-
if (this
|
|
48
|
-
(0, image_format_1.validateSelectedPixelFormatAndImageFormatCombination)(this
|
|
59
|
+
if (!this.isSupported() || __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pixelFormat, "f") === null) {
|
|
60
|
+
if (__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pixelFormat, "f") !== null && imageFormat === 'jpeg') {
|
|
61
|
+
(0, image_format_1.validateSelectedPixelFormatAndImageFormatCombination)(__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pixelFormat, "f"), imageFormat);
|
|
49
62
|
}
|
|
50
63
|
return imageFormat;
|
|
51
64
|
}
|
|
52
|
-
return this
|
|
53
|
-
this
|
|
65
|
+
return __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pixelFormat, "f") === 'yuva420p' ||
|
|
66
|
+
__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pixelFormat, "f") === 'yuva444p10le'
|
|
54
67
|
? 'png'
|
|
55
68
|
: 'jpeg';
|
|
56
69
|
}
|
|
57
70
|
setPixelFormat(pixelFormat) {
|
|
58
|
-
this
|
|
71
|
+
__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_pixelFormat, pixelFormat, "f");
|
|
59
72
|
}
|
|
60
73
|
async initializePages(pages) {
|
|
61
|
-
if (this
|
|
62
|
-
await this
|
|
63
|
-
if (this
|
|
74
|
+
if (__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_initialization, "f")) {
|
|
75
|
+
await __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_initialization, "f");
|
|
76
|
+
if (__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_supported, "f")) {
|
|
64
77
|
for (const page of pages) {
|
|
65
78
|
await this.ensurePage(page);
|
|
66
79
|
}
|
|
67
80
|
}
|
|
68
81
|
return;
|
|
69
82
|
}
|
|
70
|
-
this
|
|
83
|
+
__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_initialization, (async () => {
|
|
71
84
|
try {
|
|
72
85
|
for (const page of pages) {
|
|
73
|
-
await this
|
|
86
|
+
await __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_createPool).call(this, page);
|
|
74
87
|
}
|
|
75
|
-
this
|
|
88
|
+
__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_supported, true, "f");
|
|
76
89
|
}
|
|
77
90
|
catch (error) {
|
|
78
|
-
await this
|
|
91
|
+
await __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_destroyPools).call(this);
|
|
79
92
|
if (!isExpectedCapabilityError(error)) {
|
|
80
93
|
throw error;
|
|
81
94
|
}
|
|
82
|
-
this
|
|
83
|
-
logger_1.Log.verbose({ indent: this
|
|
95
|
+
__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_supported, false, "f");
|
|
96
|
+
logger_1.Log.verbose({ indent: __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").indent, logLevel: __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").logLevel }, `Remotion shared-memory capture is unavailable. Falling back to encoded screenshots. Reason: ${error instanceof Error ? error.message : String(error)}`);
|
|
84
97
|
}
|
|
85
|
-
})();
|
|
86
|
-
await this
|
|
98
|
+
})(), "f");
|
|
99
|
+
await __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_initialization, "f");
|
|
87
100
|
}
|
|
88
101
|
async ensurePage(page) {
|
|
89
|
-
if (this
|
|
102
|
+
if (__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").has(page) || __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_supported, "f") === false) {
|
|
90
103
|
return;
|
|
91
104
|
}
|
|
92
|
-
if (this
|
|
105
|
+
if (__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_supported, "f") === null) {
|
|
93
106
|
await this.initializePages([page]);
|
|
94
107
|
return;
|
|
95
108
|
}
|
|
96
|
-
await this
|
|
109
|
+
await __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_createPool).call(this, page);
|
|
97
110
|
}
|
|
98
111
|
async acquire(page) {
|
|
99
|
-
|
|
112
|
+
var _a, _b;
|
|
113
|
+
if (!__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_supported, "f")) {
|
|
100
114
|
return null;
|
|
101
115
|
}
|
|
102
|
-
const pool = this
|
|
116
|
+
const pool = __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").get(page);
|
|
103
117
|
if (!pool) {
|
|
104
118
|
throw new Error('No Remotion shared-memory pool exists for this page.');
|
|
105
119
|
}
|
|
@@ -113,10 +127,10 @@ class RemotionSharedMemoryCapture {
|
|
|
113
127
|
if (slot === undefined) {
|
|
114
128
|
throw new Error('Expected an available Remotion shared-memory slot.');
|
|
115
129
|
}
|
|
116
|
-
if (!Number.isSafeInteger(this
|
|
130
|
+
if (!Number.isSafeInteger(__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_nextFrameId, "f"))) {
|
|
117
131
|
throw new Error('Remotion shared-memory frame ID exceeded the safe range.');
|
|
118
132
|
}
|
|
119
|
-
const frameId = String(this
|
|
133
|
+
const frameId = String((__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_nextFrameId, (_b = __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_nextFrameId, "f"), _a = _b++, _b), "f"), _a));
|
|
120
134
|
pool.ownedSlots.set(slot, frameId);
|
|
121
135
|
let published = false;
|
|
122
136
|
let releasePromise = null;
|
|
@@ -134,7 +148,7 @@ class RemotionSharedMemoryCapture {
|
|
|
134
148
|
}
|
|
135
149
|
}
|
|
136
150
|
finally {
|
|
137
|
-
this
|
|
151
|
+
__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_returnSlot).call(this, pool, slot, frameId);
|
|
138
152
|
}
|
|
139
153
|
})());
|
|
140
154
|
return releasePromise;
|
|
@@ -144,7 +158,7 @@ class RemotionSharedMemoryCapture {
|
|
|
144
158
|
frameId,
|
|
145
159
|
fail: () => {
|
|
146
160
|
if (!published) {
|
|
147
|
-
this
|
|
161
|
+
__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_returnSlot).call(this, pool, slot, frameId);
|
|
148
162
|
}
|
|
149
163
|
},
|
|
150
164
|
discardPublished: async () => {
|
|
@@ -155,8 +169,8 @@ class RemotionSharedMemoryCapture {
|
|
|
155
169
|
published = true;
|
|
156
170
|
if (metadata.slot !== slot ||
|
|
157
171
|
metadata.frameId !== frameId ||
|
|
158
|
-
metadata.width !== this
|
|
159
|
-
metadata.height !== this
|
|
172
|
+
metadata.width !== __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").width ||
|
|
173
|
+
metadata.height !== __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").height ||
|
|
160
174
|
metadata.stride < metadata.width * 4 ||
|
|
161
175
|
metadata.byteLength > pool.slotCapacity - encoderPadding ||
|
|
162
176
|
metadata.pixelFormat !== 'bgra' ||
|
|
@@ -179,181 +193,179 @@ class RemotionSharedMemoryCapture {
|
|
|
179
193
|
};
|
|
180
194
|
}
|
|
181
195
|
async destroy() {
|
|
182
|
-
await this
|
|
196
|
+
await __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_destroyPools).call(this);
|
|
183
197
|
}
|
|
184
198
|
async forgetPage(page) {
|
|
185
|
-
await this
|
|
199
|
+
await __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_forgetPage).call(this, page, false);
|
|
186
200
|
}
|
|
187
201
|
async forgetAllPages() {
|
|
188
|
-
await Promise.all([...this
|
|
202
|
+
await Promise.all([...__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").keys()].map((page) => __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_forgetPage).call(this, page, false)));
|
|
189
203
|
}
|
|
190
204
|
async dispose() {
|
|
191
|
-
await Promise.all([...this
|
|
192
|
-
this
|
|
205
|
+
await Promise.all([...__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").keys()].map((page) => __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_instances, "m", _RemotionSharedMemoryCapture_forgetPage).call(this, page, true)));
|
|
206
|
+
__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_supported, false, "f");
|
|
193
207
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
208
|
+
}
|
|
209
|
+
exports.RemotionSharedMemoryCapture = RemotionSharedMemoryCapture;
|
|
210
|
+
_RemotionSharedMemoryCapture_pools = new WeakMap(), _RemotionSharedMemoryCapture_nextPoolId = new WeakMap(), _RemotionSharedMemoryCapture_nextFrameId = new WeakMap(), _RemotionSharedMemoryCapture_supported = new WeakMap(), _RemotionSharedMemoryCapture_initialization = new WeakMap(), _RemotionSharedMemoryCapture_pixelFormat = new WeakMap(), _RemotionSharedMemoryCapture_options = new WeakMap(), _RemotionSharedMemoryCapture_instances = new WeakSet(), _RemotionSharedMemoryCapture_forgetPage = async function _RemotionSharedMemoryCapture_forgetPage(page, bestEffort) {
|
|
211
|
+
const pool = __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").get(page);
|
|
212
|
+
if (!pool) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").delete(page);
|
|
216
|
+
pool.forgotten = true;
|
|
217
|
+
pool.waiters.splice(0).forEach((waiter) => waiter());
|
|
218
|
+
let cleanupError = null;
|
|
219
|
+
try {
|
|
220
|
+
await pool.poolLifetime.retire();
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
cleanupError = error;
|
|
224
|
+
}
|
|
225
|
+
if (pool.ownedSlots.size > 0) {
|
|
226
|
+
await new Promise((resolve) => pool.drainWaiters.push(resolve));
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
await (0, screenshot_background_1.setScreenshotBackground)(page, false);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
if (!bestEffort && !(0, flaky_errors_1.isTargetClosedErr)(error) && !cleanupError) {
|
|
233
|
+
cleanupError = error;
|
|
205
234
|
}
|
|
206
|
-
|
|
235
|
+
}
|
|
236
|
+
try {
|
|
237
|
+
await page._client().send('Page.remotionDestroyFramePool');
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
if (!bestEffort && !(0, flaky_errors_1.isTargetClosedErr)(error) && !cleanupError) {
|
|
207
241
|
cleanupError = error;
|
|
208
242
|
}
|
|
243
|
+
}
|
|
244
|
+
if (cleanupError && !bestEffort) {
|
|
245
|
+
throw cleanupError;
|
|
246
|
+
}
|
|
247
|
+
}, _RemotionSharedMemoryCapture_createPool = async function _RemotionSharedMemoryCapture_createPool(page) {
|
|
248
|
+
var _a;
|
|
249
|
+
var _b, _c;
|
|
250
|
+
if (__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").has(page)) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
const slotCapacity = __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").width * __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").height * 4 + encoderPadding;
|
|
254
|
+
if (!Number.isSafeInteger(slotCapacity)) {
|
|
255
|
+
throw new Error('Remotion shared-memory frame pool size is not a safe integer.');
|
|
256
|
+
}
|
|
257
|
+
const preferredBackend = (0, exports.getPreferredRemotionSharedMemoryBackend)();
|
|
258
|
+
const { backingDirectory } = __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f");
|
|
259
|
+
if (preferredBackend === 'file' && backingDirectory === null) {
|
|
260
|
+
throw new Error('REMOTION_SHARED_MEMORY_BACKEND=file requires an FFmpeg binary that supports file-backed pools (-pool_dir).');
|
|
261
|
+
}
|
|
262
|
+
const { value } = await page._client().send('Page.remotionCreateFramePool', {
|
|
263
|
+
slotCount: slotsPerPage,
|
|
264
|
+
slotCapacity,
|
|
265
|
+
...(backingDirectory === null ? {} : { backingDirectory }),
|
|
266
|
+
...(preferredBackend === 'auto' ? {} : { preferredBackend }),
|
|
267
|
+
});
|
|
268
|
+
// Chromium builds before v3 of the patch only know POSIX shared memory and
|
|
269
|
+
// omit the backend field.
|
|
270
|
+
const backend = (_a = value.backend) !== null && _a !== void 0 ? _a : 'posix-shm';
|
|
271
|
+
if (!value.sharedMemoryName ||
|
|
272
|
+
value.slotCount !== slotsPerPage ||
|
|
273
|
+
value.slotCapacity !== slotCapacity ||
|
|
274
|
+
(backend !== 'posix-shm' && backend !== 'file') ||
|
|
275
|
+
(backend === 'posix-shm' &&
|
|
276
|
+
!/^\/rmshm-[A-Za-z0-9._-]+$/.test(value.sharedMemoryName)) ||
|
|
277
|
+
(backend === 'file' &&
|
|
278
|
+
(backingDirectory === null ||
|
|
279
|
+
!value.sharedMemoryName.startsWith(`${backingDirectory}/rmshm-`)))) {
|
|
280
|
+
throw new Error(`Chromium returned invalid Remotion frame pool metadata: ${JSON.stringify(value)}`);
|
|
281
|
+
}
|
|
282
|
+
if (__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").size === 0) {
|
|
283
|
+
logger_1.Log.verbose({ indent: __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").indent, logLevel: __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_options, "f").logLevel }, `Remotion shared-memory capture uses the ${backend === 'file' ? `file backend in ${backingDirectory}` : 'POSIX shared-memory backend'}.`);
|
|
284
|
+
}
|
|
285
|
+
let retired = false;
|
|
286
|
+
let retirement = null;
|
|
287
|
+
let notifyRetirement;
|
|
288
|
+
const retirementSignal = new Promise((resolve) => {
|
|
289
|
+
notifyRetirement = resolve;
|
|
290
|
+
});
|
|
291
|
+
const retirementListeners = new Set();
|
|
292
|
+
const poolLifetime = {
|
|
293
|
+
isRetired: () => retired,
|
|
294
|
+
waitForRetirement: () => retirementSignal,
|
|
295
|
+
onRetired: (listener) => {
|
|
296
|
+
if (retired) {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
retirementListeners.add(listener);
|
|
300
|
+
return () => retirementListeners.delete(listener);
|
|
301
|
+
},
|
|
302
|
+
retire: () => {
|
|
303
|
+
if (!retirement) {
|
|
304
|
+
retired = true;
|
|
305
|
+
notifyRetirement();
|
|
306
|
+
retirement = (async () => {
|
|
307
|
+
await Promise.all([...retirementListeners].map((listener) => listener()));
|
|
308
|
+
})();
|
|
309
|
+
}
|
|
310
|
+
return retirement;
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").set(page, {
|
|
314
|
+
page,
|
|
315
|
+
poolId: (__classPrivateFieldSet(this, _RemotionSharedMemoryCapture_nextPoolId, (_c = __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_nextPoolId, "f"), _b = _c++, _c), "f"), _b),
|
|
316
|
+
sharedMemoryName: value.sharedMemoryName,
|
|
317
|
+
backend,
|
|
318
|
+
slotCount: value.slotCount,
|
|
319
|
+
slotCapacity: value.slotCapacity,
|
|
320
|
+
availableSlots: Array.from({ length: value.slotCount }, (_, index) => index),
|
|
321
|
+
waiters: [],
|
|
322
|
+
drainWaiters: [],
|
|
323
|
+
ownedSlots: new Map(),
|
|
324
|
+
forgotten: false,
|
|
325
|
+
poolLifetime,
|
|
326
|
+
});
|
|
327
|
+
}, _RemotionSharedMemoryCapture_returnSlot = function _RemotionSharedMemoryCapture_returnSlot(pool, slot, frameId) {
|
|
328
|
+
var _a;
|
|
329
|
+
if (pool.ownedSlots.get(slot) !== frameId) {
|
|
330
|
+
throw new Error(`Remotion shared-memory slot ${pool.poolId}:${slot} is not owned by frame ${frameId}.`);
|
|
331
|
+
}
|
|
332
|
+
pool.ownedSlots.delete(slot);
|
|
333
|
+
if (pool.forgotten) {
|
|
334
|
+
if (pool.ownedSlots.size === 0) {
|
|
335
|
+
pool.drainWaiters.splice(0).forEach((waiter) => waiter());
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
pool.availableSlots.push(slot);
|
|
340
|
+
(_a = pool.waiters.shift()) === null || _a === void 0 ? void 0 : _a();
|
|
341
|
+
}
|
|
342
|
+
}, _RemotionSharedMemoryCapture_destroyPools = async function _RemotionSharedMemoryCapture_destroyPools() {
|
|
343
|
+
let cleanupError = null;
|
|
344
|
+
for (const pool of __classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").values()) {
|
|
209
345
|
if (pool.ownedSlots.size > 0) {
|
|
210
|
-
|
|
346
|
+
throw new Error(`Cannot destroy Remotion shared-memory pool ${pool.poolId} while it owns ${pool.ownedSlots.size} frame(s).`);
|
|
211
347
|
}
|
|
212
348
|
try {
|
|
213
|
-
await (0, screenshot_background_1.setScreenshotBackground)(page, false);
|
|
349
|
+
await (0, screenshot_background_1.setScreenshotBackground)(pool.page, false);
|
|
214
350
|
}
|
|
215
351
|
catch (error) {
|
|
216
|
-
if (!
|
|
352
|
+
if (!(0, flaky_errors_1.isTargetClosedErr)(error) && !cleanupError) {
|
|
217
353
|
cleanupError = error;
|
|
218
354
|
}
|
|
219
355
|
}
|
|
220
356
|
try {
|
|
221
|
-
await page._client().send('Page.remotionDestroyFramePool');
|
|
357
|
+
await pool.page._client().send('Page.remotionDestroyFramePool');
|
|
222
358
|
}
|
|
223
359
|
catch (error) {
|
|
224
|
-
if (!
|
|
360
|
+
if (!(0, flaky_errors_1.isTargetClosedErr)(error) && !cleanupError) {
|
|
225
361
|
cleanupError = error;
|
|
226
362
|
}
|
|
227
363
|
}
|
|
228
|
-
if (cleanupError && !bestEffort) {
|
|
229
|
-
throw cleanupError;
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
async #createPool(page) {
|
|
233
|
-
var _a;
|
|
234
|
-
if (this.#pools.has(page)) {
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
const slotCapacity = this.#options.width * this.#options.height * 4 + encoderPadding;
|
|
238
|
-
if (!Number.isSafeInteger(slotCapacity)) {
|
|
239
|
-
throw new Error('Remotion shared-memory frame pool size is not a safe integer.');
|
|
240
|
-
}
|
|
241
|
-
const preferredBackend = (0, exports.getPreferredRemotionSharedMemoryBackend)();
|
|
242
|
-
const { backingDirectory } = this.#options;
|
|
243
|
-
if (preferredBackend === 'file' && backingDirectory === null) {
|
|
244
|
-
throw new Error('REMOTION_SHARED_MEMORY_BACKEND=file requires an FFmpeg binary that supports file-backed pools (-pool_dir).');
|
|
245
|
-
}
|
|
246
|
-
const { value } = await page._client().send('Page.remotionCreateFramePool', {
|
|
247
|
-
slotCount: slotsPerPage,
|
|
248
|
-
slotCapacity,
|
|
249
|
-
...(backingDirectory === null ? {} : { backingDirectory }),
|
|
250
|
-
...(preferredBackend === 'auto' ? {} : { preferredBackend }),
|
|
251
|
-
});
|
|
252
|
-
// Chromium builds before v3 of the patch only know POSIX shared memory and
|
|
253
|
-
// omit the backend field.
|
|
254
|
-
const backend = (_a = value.backend) !== null && _a !== void 0 ? _a : 'posix-shm';
|
|
255
|
-
if (!value.sharedMemoryName ||
|
|
256
|
-
value.slotCount !== slotsPerPage ||
|
|
257
|
-
value.slotCapacity !== slotCapacity ||
|
|
258
|
-
(backend !== 'posix-shm' && backend !== 'file') ||
|
|
259
|
-
(backend === 'posix-shm' &&
|
|
260
|
-
!/^\/rmshm-[A-Za-z0-9._-]+$/.test(value.sharedMemoryName)) ||
|
|
261
|
-
(backend === 'file' &&
|
|
262
|
-
(backingDirectory === null ||
|
|
263
|
-
!value.sharedMemoryName.startsWith(`${backingDirectory}/rmshm-`)))) {
|
|
264
|
-
throw new Error(`Chromium returned invalid Remotion frame pool metadata: ${JSON.stringify(value)}`);
|
|
265
|
-
}
|
|
266
|
-
if (this.#pools.size === 0) {
|
|
267
|
-
logger_1.Log.verbose({ indent: this.#options.indent, logLevel: this.#options.logLevel }, `Remotion shared-memory capture uses the ${backend === 'file' ? `file backend in ${backingDirectory}` : 'POSIX shared-memory backend'}.`);
|
|
268
|
-
}
|
|
269
|
-
let retired = false;
|
|
270
|
-
let retirement = null;
|
|
271
|
-
let notifyRetirement;
|
|
272
|
-
const retirementSignal = new Promise((resolve) => {
|
|
273
|
-
notifyRetirement = resolve;
|
|
274
|
-
});
|
|
275
|
-
const retirementListeners = new Set();
|
|
276
|
-
const poolLifetime = {
|
|
277
|
-
isRetired: () => retired,
|
|
278
|
-
waitForRetirement: () => retirementSignal,
|
|
279
|
-
onRetired: (listener) => {
|
|
280
|
-
if (retired) {
|
|
281
|
-
return null;
|
|
282
|
-
}
|
|
283
|
-
retirementListeners.add(listener);
|
|
284
|
-
return () => retirementListeners.delete(listener);
|
|
285
|
-
},
|
|
286
|
-
retire: () => {
|
|
287
|
-
if (!retirement) {
|
|
288
|
-
retired = true;
|
|
289
|
-
notifyRetirement();
|
|
290
|
-
retirement = (async () => {
|
|
291
|
-
await Promise.all([...retirementListeners].map((listener) => listener()));
|
|
292
|
-
})();
|
|
293
|
-
}
|
|
294
|
-
return retirement;
|
|
295
|
-
},
|
|
296
|
-
};
|
|
297
|
-
this.#pools.set(page, {
|
|
298
|
-
page,
|
|
299
|
-
poolId: this.#nextPoolId++,
|
|
300
|
-
sharedMemoryName: value.sharedMemoryName,
|
|
301
|
-
backend,
|
|
302
|
-
slotCount: value.slotCount,
|
|
303
|
-
slotCapacity: value.slotCapacity,
|
|
304
|
-
availableSlots: Array.from({ length: value.slotCount }, (_, index) => index),
|
|
305
|
-
waiters: [],
|
|
306
|
-
drainWaiters: [],
|
|
307
|
-
ownedSlots: new Map(),
|
|
308
|
-
forgotten: false,
|
|
309
|
-
poolLifetime,
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
#returnSlot(pool, slot, frameId) {
|
|
313
|
-
var _a;
|
|
314
|
-
if (pool.ownedSlots.get(slot) !== frameId) {
|
|
315
|
-
throw new Error(`Remotion shared-memory slot ${pool.poolId}:${slot} is not owned by frame ${frameId}.`);
|
|
316
|
-
}
|
|
317
|
-
pool.ownedSlots.delete(slot);
|
|
318
|
-
if (pool.forgotten) {
|
|
319
|
-
if (pool.ownedSlots.size === 0) {
|
|
320
|
-
pool.drainWaiters.splice(0).forEach((waiter) => waiter());
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
pool.availableSlots.push(slot);
|
|
325
|
-
(_a = pool.waiters.shift()) === null || _a === void 0 ? void 0 : _a();
|
|
326
|
-
}
|
|
327
364
|
}
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
if (pool.ownedSlots.size > 0) {
|
|
332
|
-
throw new Error(`Cannot destroy Remotion shared-memory pool ${pool.poolId} while it owns ${pool.ownedSlots.size} frame(s).`);
|
|
333
|
-
}
|
|
334
|
-
try {
|
|
335
|
-
await (0, screenshot_background_1.setScreenshotBackground)(pool.page, false);
|
|
336
|
-
}
|
|
337
|
-
catch (error) {
|
|
338
|
-
if (!(0, flaky_errors_1.isTargetClosedErr)(error) && !cleanupError) {
|
|
339
|
-
cleanupError = error;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
try {
|
|
343
|
-
await pool.page._client().send('Page.remotionDestroyFramePool');
|
|
344
|
-
}
|
|
345
|
-
catch (error) {
|
|
346
|
-
if (!(0, flaky_errors_1.isTargetClosedErr)(error) && !cleanupError) {
|
|
347
|
-
cleanupError = error;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
this.#pools.clear();
|
|
352
|
-
if (cleanupError) {
|
|
353
|
-
throw cleanupError;
|
|
354
|
-
}
|
|
365
|
+
__classPrivateFieldGet(this, _RemotionSharedMemoryCapture_pools, "f").clear();
|
|
366
|
+
if (cleanupError) {
|
|
367
|
+
throw cleanupError;
|
|
355
368
|
}
|
|
356
|
-
}
|
|
357
|
-
exports.RemotionSharedMemoryCapture = RemotionSharedMemoryCapture;
|
|
369
|
+
};
|
|
358
370
|
const isRemotionRawFrame = (frame) => !Buffer.isBuffer(frame);
|
|
359
371
|
exports.isRemotionRawFrame = isRemotionRawFrame;
|
|
@@ -4,7 +4,10 @@ import type { DownloadMap } from './assets/download-map';
|
|
|
4
4
|
import type { HeadlessBrowser } from './browser/Browser';
|
|
5
5
|
import type { Page } from './browser/BrowserPage';
|
|
6
6
|
import type { CountType } from './get-frame-padded-index';
|
|
7
|
+
import type { VideoImageFormat } from './image-format';
|
|
8
|
+
import type { LogLevel } from './log-level';
|
|
7
9
|
import type { CancelSignal } from './make-cancel-signal';
|
|
10
|
+
import type { NextFrameToRender } from './next-frame-to-render';
|
|
8
11
|
import type { Pool } from './pool';
|
|
9
12
|
import type { CapturedFrame, RemotionSharedMemoryCapture } from './remotion-shared-memory';
|
|
10
13
|
import type { AssetIndex, FrameAndAssets, OnArtifact } from './render-frames';
|
|
@@ -12,7 +15,7 @@ import type { BrowserReplacer } from './replace-browser';
|
|
|
12
15
|
export declare const renderFrameAndRetryTargetClose: ({ retriesLeft, attempt, assets, assetIndex, 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, onFrame, remotionSharedMemory, onFrameUpdate, nextFrameToRender, imageSequencePattern, trimLeftOffset, trimRightOffset, allFramesAndExtraFrames, }: {
|
|
13
16
|
retriesLeft: number;
|
|
14
17
|
attempt: number;
|
|
15
|
-
imageFormat:
|
|
18
|
+
imageFormat: VideoImageFormat;
|
|
16
19
|
cancelSignal: CancelSignal | undefined;
|
|
17
20
|
binariesDirectory: string | null;
|
|
18
21
|
poolPromise: Promise<Pool>;
|
|
@@ -26,7 +29,7 @@ export declare const renderFrameAndRetryTargetClose: ({ retriesLeft, attempt, as
|
|
|
26
29
|
onArtifact: OnArtifact | null;
|
|
27
30
|
onDownload: RenderMediaOnDownload | null;
|
|
28
31
|
downloadMap: DownloadMap;
|
|
29
|
-
composition: Omit<VideoConfig,
|
|
32
|
+
composition: Omit<VideoConfig, 'defaultProps' | 'props'>;
|
|
30
33
|
onError: (err: Error) => void;
|
|
31
34
|
stoppedSignal: {
|
|
32
35
|
stopped: boolean;
|
|
@@ -34,7 +37,7 @@ export declare const renderFrameAndRetryTargetClose: ({ retriesLeft, attempt, as
|
|
|
34
37
|
timeoutInMilliseconds: number;
|
|
35
38
|
outputDir: string | null;
|
|
36
39
|
indent: boolean;
|
|
37
|
-
logLevel:
|
|
40
|
+
logLevel: LogLevel;
|
|
38
41
|
makeBrowser: () => Promise<HeadlessBrowser>;
|
|
39
42
|
makeNewPage: (frame: number, pageIndex: number) => Promise<Page>;
|
|
40
43
|
browserReplacer: BrowserReplacer;
|
|
@@ -43,14 +46,11 @@ export declare const renderFrameAndRetryTargetClose: ({ retriesLeft, attempt, as
|
|
|
43
46
|
framesRenderedObj: {
|
|
44
47
|
count: number;
|
|
45
48
|
};
|
|
46
|
-
onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) |
|
|
47
|
-
onFrame: ((frame: CapturedFrame, frameNumber: number) => void | Promise<void>)
|
|
49
|
+
onFrameBuffer: null | ((buffer: Buffer, frame: number) => void | Promise<void>) | undefined;
|
|
50
|
+
onFrame: null | ((frame: CapturedFrame, frameNumber: number) => void | Promise<void>);
|
|
48
51
|
remotionSharedMemory: RemotionSharedMemoryCapture | null;
|
|
49
|
-
onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void)
|
|
50
|
-
nextFrameToRender:
|
|
51
|
-
getNextFrame: () => number;
|
|
52
|
-
returnFrame: (frame: number) => void;
|
|
53
|
-
};
|
|
52
|
+
onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
|
|
53
|
+
nextFrameToRender: NextFrameToRender;
|
|
54
54
|
imageSequencePattern: string | null;
|
|
55
55
|
trimLeftOffset: number;
|
|
56
56
|
trimRightOffset: number;
|
|
@@ -2,6 +2,8 @@ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-
|
|
|
2
2
|
import type { DownloadMap } from './assets/download-map';
|
|
3
3
|
import type { Page } from './browser/BrowserPage';
|
|
4
4
|
import type { CountType } from './get-frame-padded-index';
|
|
5
|
+
import type { VideoImageFormat } from './image-format';
|
|
6
|
+
import type { LogLevel } from './log-level';
|
|
5
7
|
import type { CancelSignal } from './make-cancel-signal';
|
|
6
8
|
import type { CapturedFrame, RemotionSharedMemoryCapture } from './remotion-shared-memory';
|
|
7
9
|
import type { AssetIndex, FrameAndAssets, OnArtifact } from './render-frames';
|
|
@@ -16,12 +18,12 @@ export declare const renderFrameWithOptionToReject: ({ reject, width, height, co
|
|
|
16
18
|
};
|
|
17
19
|
timeoutInMilliseconds: number;
|
|
18
20
|
indent: boolean;
|
|
19
|
-
logLevel:
|
|
21
|
+
logLevel: LogLevel;
|
|
20
22
|
outputDir: string | null;
|
|
21
|
-
onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) |
|
|
22
|
-
onFrame: ((frame: CapturedFrame, frameNumber: number) => void | Promise<void>)
|
|
23
|
+
onFrameBuffer: null | ((buffer: Buffer, frame: number) => void | Promise<void>) | undefined;
|
|
24
|
+
onFrame: null | ((frame: CapturedFrame, frameNumber: number) => void | Promise<void>);
|
|
23
25
|
remotionSharedMemory: RemotionSharedMemoryCapture | null;
|
|
24
|
-
imageFormat:
|
|
26
|
+
imageFormat: VideoImageFormat;
|
|
25
27
|
onError: (err: Error) => void;
|
|
26
28
|
lastFrame: number;
|
|
27
29
|
jpegQuality: number;
|
|
@@ -39,7 +41,7 @@ export declare const renderFrameWithOptionToReject: ({ reject, width, height, co
|
|
|
39
41
|
framesRenderedObj: {
|
|
40
42
|
count: number;
|
|
41
43
|
};
|
|
42
|
-
onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void)
|
|
44
|
+
onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
|
|
43
45
|
frame: number;
|
|
44
46
|
page: Page;
|
|
45
47
|
imageSequencePattern: string | null;
|
|
@@ -182,6 +182,7 @@ const renderFrameWithOptionToReject = async ({ reject, width, height, compId, at
|
|
|
182
182
|
if (previousFrame !== undefined) {
|
|
183
183
|
return Promise.reject(new Error(`An artifact with output "${artifact.filename}" was already registered at frame ${previousFrame}, but now registered again at frame ${artifact.frame}. Artifacts must have unique names. https://remotion.dev/docs/artifacts`));
|
|
184
184
|
}
|
|
185
|
+
assetIndex.firstArtifactFrameByFilename.set(artifact.filename, artifact.frame);
|
|
185
186
|
onArtifact === null || onArtifact === void 0 ? void 0 : onArtifact(artifact);
|
|
186
187
|
}
|
|
187
188
|
const compressedAssets = audioAndVideoAssets.map((asset) => {
|
|
@@ -206,11 +207,6 @@ const renderFrameWithOptionToReject = async ({ reject, width, height, compId, at
|
|
|
206
207
|
assetIndex.firstAssetBySrc.set(asset.src, asset);
|
|
207
208
|
}
|
|
208
209
|
}
|
|
209
|
-
for (const artifact of artifactAssets) {
|
|
210
|
-
if (!assetIndex.firstArtifactFrameByFilename.has(artifact.filename)) {
|
|
211
|
-
assetIndex.firstArtifactFrameByFilename.set(artifact.filename, artifact.frame);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
210
|
for (const renderAsset of compressedAssets) {
|
|
215
211
|
(0, download_and_map_assets_to_file_1.downloadAndMapAssetsToFileUrl)({
|
|
216
212
|
renderAsset,
|
package/dist/render-frame.d.ts
CHANGED
|
@@ -3,14 +3,16 @@ import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-
|
|
|
3
3
|
import type { DownloadMap } from './assets/download-map';
|
|
4
4
|
import type { Page } from './browser/BrowserPage';
|
|
5
5
|
import type { CountType } from './get-frame-padded-index';
|
|
6
|
+
import type { VideoImageFormat } from './image-format';
|
|
7
|
+
import type { LogLevel } from './log-level';
|
|
6
8
|
import type { CancelSignal } from './make-cancel-signal';
|
|
7
9
|
import type { CapturedFrame, RemotionSharedMemoryCapture } from './remotion-shared-memory';
|
|
8
10
|
import type { AssetIndex, FrameAndAssets, OnArtifact } from './render-frames';
|
|
9
11
|
export declare const renderFrame: ({ attempt, binariesDirectory, cancelSignal, imageFormat, indent, logLevel, assets, assetIndex, countType, downloadMap, frameDir, framesToRender, jpegQuality, onArtifact, onDownload, scale, composition, onError, outputDir, stoppedSignal, timeoutInMilliseconds, lastFrame, onFrameBuffer, onFrame, remotionSharedMemory, onFrameUpdate, framesRenderedObj, frame, page, imageSequencePattern, trimLeftOffset, trimRightOffset, allFramesAndExtraFrames, }: {
|
|
10
12
|
attempt: number;
|
|
11
13
|
indent: boolean;
|
|
12
|
-
logLevel:
|
|
13
|
-
imageFormat:
|
|
14
|
+
logLevel: LogLevel;
|
|
15
|
+
imageFormat: VideoImageFormat;
|
|
14
16
|
cancelSignal: CancelSignal | undefined;
|
|
15
17
|
binariesDirectory: string | null;
|
|
16
18
|
jpegQuality: number;
|
|
@@ -23,18 +25,18 @@ export declare const renderFrame: ({ attempt, binariesDirectory, cancelSignal, i
|
|
|
23
25
|
onArtifact: OnArtifact | null;
|
|
24
26
|
onDownload: RenderMediaOnDownload | null;
|
|
25
27
|
downloadMap: DownloadMap;
|
|
26
|
-
composition: Omit<VideoConfig,
|
|
28
|
+
composition: Omit<VideoConfig, 'defaultProps' | 'props'>;
|
|
27
29
|
onError: (err: Error) => void;
|
|
28
30
|
stoppedSignal: {
|
|
29
31
|
stopped: boolean;
|
|
30
32
|
};
|
|
31
33
|
timeoutInMilliseconds: number;
|
|
32
34
|
outputDir: string | null;
|
|
33
|
-
onFrameBuffer: ((buffer: Buffer, frame: number) => void | Promise<void>) |
|
|
34
|
-
onFrame: ((frame: CapturedFrame, frameNumber: number) => void | Promise<void>)
|
|
35
|
+
onFrameBuffer: null | ((buffer: Buffer, frame: number) => void | Promise<void>) | undefined;
|
|
36
|
+
onFrame: null | ((frame: CapturedFrame, frameNumber: number) => void | Promise<void>);
|
|
35
37
|
remotionSharedMemory: RemotionSharedMemoryCapture | null;
|
|
36
38
|
lastFrame: number;
|
|
37
|
-
onFrameUpdate: ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void)
|
|
39
|
+
onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
|
|
38
40
|
framesRenderedObj: {
|
|
39
41
|
count: number;
|
|
40
42
|
};
|