@remotion/renderer 4.0.532 → 4.0.534

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 (176) hide show
  1. package/dist/aac-priming.js +6 -2
  2. package/dist/browser/BrowserFetcher.d.ts +7 -1
  3. package/dist/browser/BrowserFetcher.js +33 -13
  4. package/dist/browser/Connection.js +5 -17
  5. package/dist/browser/DOMWorld.js +19 -13
  6. package/dist/browser/devtools-commands.d.ts +13 -1
  7. package/dist/browser/devtools-types.d.ts +62 -0
  8. package/dist/browser/get-chrome-download-url.d.ts +1 -1
  9. package/dist/browser/get-chrome-download-url.js +19 -33
  10. package/dist/can-use-parallel-encoding.d.ts +0 -1
  11. package/dist/can-use-parallel-encoding.js +10 -10
  12. package/dist/client.d.ts +93 -4
  13. package/dist/client.js +2 -0
  14. package/dist/compress-assets.d.ts +1 -1
  15. package/dist/compress-assets.js +1 -1
  16. package/dist/cycle-browser-tabs.js +9 -1
  17. package/dist/ensure-browser.js +30 -6
  18. package/dist/esm/client.mjs +943 -796
  19. package/dist/esm/index.mjs +4113 -2997
  20. package/dist/esm/pure.mjs +33 -9
  21. package/dist/file-extensions.js +4 -1
  22. package/dist/get-mp4-brand.d.ts +1 -0
  23. package/dist/get-mp4-brand.js +21 -0
  24. package/dist/image-format.d.ts +1 -0
  25. package/dist/image-format.js +8 -4
  26. package/dist/index.d.ts +14 -1
  27. package/dist/index.js +4 -0
  28. package/dist/memory/from-macos-sysctl.d.ts +1 -0
  29. package/dist/memory/from-macos-sysctl.js +50 -0
  30. package/dist/memory/from-proc-meminfo.d.ts +1 -1
  31. package/dist/memory/from-proc-meminfo.js +7 -4
  32. package/dist/memory/get-available-memory.js +29 -21
  33. package/dist/mux-video-and-audio.js +8 -2
  34. package/dist/next-frame-to-render.d.ts +3 -7
  35. package/dist/next-frame-to-render.js +3 -22
  36. package/dist/open-browser.js +1 -0
  37. package/dist/options/allow-html-in-canvas.js +1 -1
  38. package/dist/options/api-key.js +1 -1
  39. package/dist/options/ask-ai.js +1 -1
  40. package/dist/options/audio-bitrate.js +1 -1
  41. package/dist/options/audio-codec.js +12 -6
  42. package/dist/options/beep-on-finish.js +1 -1
  43. package/dist/options/benchmark-concurrencies.js +1 -1
  44. package/dist/options/binaries-directory.js +1 -1
  45. package/dist/options/browser-executable.js +1 -1
  46. package/dist/options/browser.js +1 -1
  47. package/dist/options/bundle-cache.js +1 -1
  48. package/dist/options/canvas-tabs.js +1 -1
  49. package/dist/options/chrome-mode.js +1 -1
  50. package/dist/options/color-space.js +1 -1
  51. package/dist/options/concurrency.js +1 -1
  52. package/dist/options/config.js +1 -1
  53. package/dist/options/crf.js +1 -1
  54. package/dist/options/cross-site-isolation.js +1 -1
  55. package/dist/options/dark-mode.js +1 -1
  56. package/dist/options/default-coding-agent.js +1 -1
  57. package/dist/options/default-editor.js +1 -1
  58. package/dist/options/delete-after.js +1 -1
  59. package/dist/options/disable-git-source.js +1 -1
  60. package/dist/options/disable-shared-memory-capture.d.ts +16 -0
  61. package/dist/options/disable-shared-memory-capture.js +29 -0
  62. package/dist/options/disable-web-security.js +1 -1
  63. package/dist/options/disallow-parallel-encoding.js +1 -1
  64. package/dist/options/enable-cancellation.js +1 -1
  65. package/dist/options/enable-lambda-insights.js +1 -1
  66. package/dist/options/enable-multiprocess-on-linux.js +1 -1
  67. package/dist/options/encoding-buffer-size.js +1 -1
  68. package/dist/options/encoding-max-rate.js +1 -1
  69. package/dist/options/enforce-audio.js +1 -1
  70. package/dist/options/env-file.js +1 -1
  71. package/dist/options/every-nth-frame.js +1 -1
  72. package/dist/options/experimental-keep-audio-context-alive.js +1 -1
  73. package/dist/options/experimental-tracks.d.ts +18 -0
  74. package/dist/options/experimental-tracks.js +42 -0
  75. package/dist/options/folder-expiry.js +1 -1
  76. package/dist/options/for-seamless-aac-concatenation.js +1 -1
  77. package/dist/options/force-new-studio.js +1 -1
  78. package/dist/options/frames.js +1 -1
  79. package/dist/options/gl.js +1 -1
  80. package/dist/options/gop-size.js +1 -1
  81. package/dist/options/hardware-acceleration.js +1 -1
  82. package/dist/options/headless.js +1 -1
  83. package/dist/options/ignore-certificate-errors.js +1 -1
  84. package/dist/options/image-sequence-pattern.d.ts +4 -1
  85. package/dist/options/image-sequence-pattern.js +9 -3
  86. package/dist/options/image-sequence.js +1 -1
  87. package/dist/options/index.d.ts +39 -2
  88. package/dist/options/index.js +4 -0
  89. package/dist/options/interactivity.js +1 -1
  90. package/dist/options/ipv4.js +1 -1
  91. package/dist/options/is-production.js +1 -1
  92. package/dist/options/jpeg-quality.js +5 -2
  93. package/dist/options/keyboard-shortcuts.js +1 -1
  94. package/dist/options/latency-hint.js +1 -1
  95. package/dist/options/license-key.js +1 -1
  96. package/dist/options/log-level.js +1 -1
  97. package/dist/options/metadata.js +1 -1
  98. package/dist/options/mute.js +1 -1
  99. package/dist/options/no-open.js +1 -1
  100. package/dist/options/number-of-gif-loops.js +1 -1
  101. package/dist/options/number-of-shared-audio-tags.js +1 -1
  102. package/dist/options/offthreadvideo-cache-size.js +1 -1
  103. package/dist/options/offthreadvideo-threads.js +1 -1
  104. package/dist/options/on-browser-download.js +1 -1
  105. package/dist/options/options-map.d.ts +52 -1
  106. package/dist/options/options-map.js +4 -0
  107. package/dist/options/out-dir.js +1 -1
  108. package/dist/options/override-duration.js +1 -1
  109. package/dist/options/override-fps.js +1 -1
  110. package/dist/options/override-height.js +1 -1
  111. package/dist/options/override-width.js +1 -1
  112. package/dist/options/overwrite.js +1 -1
  113. package/dist/options/package-manager.js +1 -1
  114. package/dist/options/pixel-format.js +1 -1
  115. package/dist/options/port.js +1 -1
  116. package/dist/options/prefer-lossless.js +1 -1
  117. package/dist/options/preview-sample-rate.js +1 -1
  118. package/dist/options/props.js +1 -1
  119. package/dist/options/prores-profile.js +1 -1
  120. package/dist/options/public-dir.js +1 -1
  121. package/dist/options/public-license-key.js +1 -1
  122. package/dist/options/public-path.js +1 -1
  123. package/dist/options/repro.js +1 -1
  124. package/dist/options/rspack.d.ts +1 -1
  125. package/dist/options/rspack.js +1 -1
  126. package/dist/options/runs.js +1 -1
  127. package/dist/options/sample-rate.js +1 -1
  128. package/dist/options/scale.js +1 -1
  129. package/dist/options/separate-audio.js +1 -1
  130. package/dist/options/skip-skills.js +1 -1
  131. package/dist/options/still-frame.js +1 -1
  132. package/dist/options/still-image-format.js +1 -1
  133. package/dist/options/throw-if-site-exists.js +1 -1
  134. package/dist/options/timeout.js +1 -1
  135. package/dist/options/user-agent.js +1 -1
  136. package/dist/options/version-flag.js +1 -1
  137. package/dist/options/video-bitrate.js +1 -1
  138. package/dist/options/video-cache-size.js +1 -1
  139. package/dist/options/video-codec.js +4 -3
  140. package/dist/options/video-image-format.js +6 -2
  141. package/dist/options/webhook-custom-data.js +1 -1
  142. package/dist/options/webpack-poll.js +1 -1
  143. package/dist/options/x264-preset.js +1 -1
  144. package/dist/prespawn-ffmpeg.d.ts +20 -0
  145. package/dist/prespawn-ffmpeg.js +152 -29
  146. package/dist/probe-shared-memory-capture.d.ts +8 -0
  147. package/dist/probe-shared-memory-capture.js +111 -0
  148. package/dist/puppeteer-screenshot.d.ts +3 -1
  149. package/dist/puppeteer-screenshot.js +1 -0
  150. package/dist/pure.d.ts +1 -1
  151. package/dist/remotion-shared-memory-ffmpeg.d.ts +26 -0
  152. package/dist/remotion-shared-memory-ffmpeg.js +312 -0
  153. package/dist/remotion-shared-memory.d.ts +49 -0
  154. package/dist/remotion-shared-memory.js +359 -0
  155. package/dist/render-frame-and-retry-target-close.d.ts +7 -3
  156. package/dist/render-frame-and-retry-target-close.js +23 -4
  157. package/dist/render-frame-with-option-to-reject.d.ts +6 -2
  158. package/dist/render-frame-with-option-to-reject.js +207 -115
  159. package/dist/render-frame.d.ts +6 -6
  160. package/dist/render-frame.js +4 -1
  161. package/dist/render-frames.d.ts +7 -0
  162. package/dist/render-frames.js +20 -18
  163. package/dist/render-media.d.ts +1 -1
  164. package/dist/render-media.js +131 -46
  165. package/dist/render-still.js +1 -0
  166. package/dist/screenshot-background.d.ts +2 -0
  167. package/dist/screenshot-background.js +20 -0
  168. package/dist/screenshot-task.d.ts +4 -2
  169. package/dist/screenshot-task.js +40 -21
  170. package/dist/seek-to-frame.js +1 -1
  171. package/dist/stitch-frames-to-video.js +71 -10
  172. package/dist/take-frame.d.ts +11 -3
  173. package/dist/take-frame.js +10 -8
  174. package/dist/validate-output-filename.d.ts +1 -1
  175. package/dist/validate-output-filename.js +10 -2
  176. package/package.json +13 -13
@@ -0,0 +1,312 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createRemotionSharedMemoryFfmpegBridge = exports.parseRemotionSharedMemoryAck = exports.serializeRemotionSharedMemoryPoolRetirement = exports.serializeRemotionSharedMemoryFrame = exports.serializeRemotionSharedMemoryPool = void 0;
4
+ const node_readline_1 = require("node:readline");
5
+ const write_with_backpressure_1 = require("./write-with-backpressure");
6
+ const pendingKey = (poolId, slot) => `${poolId}:${slot}`;
7
+ // The optional sixth field names the backend. It is omitted for POSIX shared
8
+ // memory so FFmpeg binaries that predate file-backed pools keep working.
9
+ const serializeRemotionSharedMemoryPool = (frame) => `P\t${frame.poolId}\t${frame.sharedMemoryName}\t${frame.slotCount}\t${frame.slotCapacity}${frame.backend === 'file' ? '\tfile' : ''}\n`;
10
+ exports.serializeRemotionSharedMemoryPool = serializeRemotionSharedMemoryPool;
11
+ const serializeRemotionSharedMemoryFrame = ({ frame, pts, }) => `F\t${frame.poolId}\t${frame.slot}\t${frame.frameId}\t${frame.width}\t${frame.height}\t${frame.stride}\t${frame.byteLength}\t${pts}\n`;
12
+ exports.serializeRemotionSharedMemoryFrame = serializeRemotionSharedMemoryFrame;
13
+ const serializeRemotionSharedMemoryPoolRetirement = (poolId) => `U\t${poolId}\n`;
14
+ exports.serializeRemotionSharedMemoryPoolRetirement = serializeRemotionSharedMemoryPoolRetirement;
15
+ const parseRemotionSharedMemoryAck = (line) => {
16
+ const match = /^(\d+)\t(\d+)\t(\d+)$/.exec(line);
17
+ if (!match) {
18
+ throw new Error(`Invalid Remotion shared-memory ACK: ${line}`);
19
+ }
20
+ const poolId = Number(match[1]);
21
+ const slot = Number(match[2]);
22
+ if (!Number.isSafeInteger(poolId) ||
23
+ poolId < 1 ||
24
+ !Number.isSafeInteger(slot) ||
25
+ slot < 0) {
26
+ throw new Error(`Invalid Remotion shared-memory ACK: ${line}`);
27
+ }
28
+ return { poolId, slot, frameId: match[3] };
29
+ };
30
+ exports.parseRemotionSharedMemoryAck = parseRemotionSharedMemoryAck;
31
+ const createRemotionSharedMemoryFfmpegBridge = ({ control, acknowledgements, }) => {
32
+ const registeredPools = new Map();
33
+ const pending = new Map();
34
+ let fatalError = null;
35
+ let finishing = false;
36
+ let controlEnded = false;
37
+ let controlWrites = Promise.resolve();
38
+ let finishPromise = null;
39
+ const toError = (error) => error instanceof Error ? error : new Error(String(error));
40
+ const releaseIgnoringErrors = async (frame) => {
41
+ try {
42
+ await frame.release();
43
+ }
44
+ catch (_a) {
45
+ // The original bridge error is more useful. release() still abandons the
46
+ // local slot in a finally block if the CDP session is unavailable.
47
+ }
48
+ };
49
+ const settleRegistration = (pool, registered) => {
50
+ if (pool.registrationSettled) {
51
+ return;
52
+ }
53
+ pool.registrationSettled = true;
54
+ pool.registered = registered;
55
+ pool.resolveRegistration(registered);
56
+ };
57
+ const signalPoolDrained = (pool) => {
58
+ if (pool.pendingCount === 0) {
59
+ pool.drainWaiters.splice(0).forEach((waiter) => waiter());
60
+ }
61
+ };
62
+ const removePending = (key, value) => {
63
+ if (pending.get(key) !== value) {
64
+ return false;
65
+ }
66
+ pending.delete(key);
67
+ value.pool.pendingCount--;
68
+ signalPoolDrained(value.pool);
69
+ return true;
70
+ };
71
+ const fail = (error) => {
72
+ if (fatalError) {
73
+ return;
74
+ }
75
+ fatalError = error;
76
+ for (const pool of registeredPools.values()) {
77
+ settleRegistration(pool, false);
78
+ }
79
+ for (const [key, value] of [...pending.entries()]) {
80
+ if (removePending(key, value)) {
81
+ value.reject(error);
82
+ releaseIgnoringErrors(value.frame).catch(() => undefined);
83
+ }
84
+ }
85
+ };
86
+ const enqueueControlWrite = (data) => {
87
+ if (finishing || controlEnded) {
88
+ return Promise.reject(new Error('FFmpeg shared-memory input has already been finished.'));
89
+ }
90
+ const operation = controlWrites.then(async () => {
91
+ if (fatalError) {
92
+ throw fatalError;
93
+ }
94
+ await (0, write_with_backpressure_1.writeWithBackpressure)({
95
+ data: Buffer.from(data),
96
+ writable: control,
97
+ });
98
+ });
99
+ controlWrites = operation;
100
+ return operation;
101
+ };
102
+ const unregisterPool = (pool) => {
103
+ pool.retired = true;
104
+ if (pool.unregistering) {
105
+ return pool.unregistering;
106
+ }
107
+ pool.unregistering = (async () => {
108
+ var _a;
109
+ try {
110
+ const wasRegistered = await pool.registration;
111
+ if (!wasRegistered || fatalError || finishing || controlEnded) {
112
+ return;
113
+ }
114
+ if (pool.pendingCount > 0) {
115
+ await new Promise((resolve) => pool.drainWaiters.push(resolve));
116
+ }
117
+ if (fatalError || finishing || controlEnded) {
118
+ return;
119
+ }
120
+ try {
121
+ await enqueueControlWrite((0, exports.serializeRemotionSharedMemoryPoolRetirement)(pool.poolId));
122
+ }
123
+ catch (error) {
124
+ const normalizedError = toError(error);
125
+ fail(normalizedError);
126
+ throw normalizedError;
127
+ }
128
+ }
129
+ finally {
130
+ (_a = pool.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(pool);
131
+ pool.unsubscribe = null;
132
+ if (registeredPools.get(pool.poolId) === pool) {
133
+ registeredPools.delete(pool.poolId);
134
+ }
135
+ }
136
+ })();
137
+ return pool.unregistering;
138
+ };
139
+ const createRegisteredPool = (frame) => {
140
+ let resolveRegistration;
141
+ const registration = new Promise((resolve) => {
142
+ resolveRegistration = resolve;
143
+ });
144
+ const pool = {
145
+ poolId: frame.poolId,
146
+ sharedMemoryName: frame.sharedMemoryName,
147
+ poolLifetime: frame.poolLifetime,
148
+ registered: false,
149
+ registrationStarted: false,
150
+ registrationSettled: false,
151
+ registration,
152
+ resolveRegistration,
153
+ retired: false,
154
+ pendingCount: 0,
155
+ drainWaiters: [],
156
+ unregistering: null,
157
+ unsubscribe: null,
158
+ };
159
+ const unsubscribe = frame.poolLifetime.onRetired(() => unregisterPool(pool));
160
+ if (!unsubscribe) {
161
+ return null;
162
+ }
163
+ pool.unsubscribe = unsubscribe;
164
+ registeredPools.set(frame.poolId, pool);
165
+ return pool;
166
+ };
167
+ const lines = (0, node_readline_1.createInterface)({ input: acknowledgements });
168
+ lines.on('line', (line) => {
169
+ (async () => {
170
+ const ack = (0, exports.parseRemotionSharedMemoryAck)(line);
171
+ const key = pendingKey(ack.poolId, ack.slot);
172
+ const value = pending.get(key);
173
+ if (!value || value.acknowledged || value.frame.frameId !== ack.frameId) {
174
+ throw new Error(`Unexpected Remotion shared-memory ACK for ${ack.poolId}:${ack.slot}:${ack.frameId}.`);
175
+ }
176
+ // Keep the frame pending until Chromium releases its slot, but stop
177
+ // counting it as a missing ACK if FFmpeg exits during that release.
178
+ value.acknowledged = true;
179
+ try {
180
+ await value.frame.release();
181
+ }
182
+ catch (error) {
183
+ const normalizedError = toError(error);
184
+ if (removePending(key, value)) {
185
+ value.reject(normalizedError);
186
+ fail(normalizedError);
187
+ }
188
+ return;
189
+ }
190
+ if (removePending(key, value)) {
191
+ value.resolve();
192
+ }
193
+ })().catch((error) => fail(toError(error)));
194
+ });
195
+ lines.on('error', (error) => fail(toError(error)));
196
+ const onAcknowledgementsClosed = () => {
197
+ const unacknowledgedFrames = [...pending.values()].filter((frame) => !frame.acknowledged).length;
198
+ if (unacknowledgedFrames > 0 || !finishing) {
199
+ fail(new Error(`FFmpeg closed its Remotion shared-memory ACK pipe${unacknowledgedFrames > 0 ? ` with ${unacknowledgedFrames} frame(s) pending` : ' before input finished'}.`));
200
+ }
201
+ };
202
+ lines.on('close', onAcknowledgementsClosed);
203
+ acknowledgements.on('error', (error) => fail(toError(error)));
204
+ acknowledgements.on('close', onAcknowledgementsClosed);
205
+ control.on('error', (error) => fail(toError(error)));
206
+ return {
207
+ writeFrame: async ({ frame, pts, }) => {
208
+ if (fatalError) {
209
+ await releaseIgnoringErrors(frame);
210
+ throw fatalError;
211
+ }
212
+ if (finishing || controlEnded || frame.poolLifetime.isRetired()) {
213
+ await releaseIgnoringErrors(frame);
214
+ throw new Error(`Target closed: Remotion shared-memory pool ${frame.poolId} has already been retired.`);
215
+ }
216
+ let pool = registeredPools.get(frame.poolId);
217
+ if (!pool) {
218
+ const createdPool = createRegisteredPool(frame);
219
+ if (!createdPool) {
220
+ await releaseIgnoringErrors(frame);
221
+ throw new Error(`Target closed: Remotion shared-memory pool ${frame.poolId} has already been retired.`);
222
+ }
223
+ pool = createdPool;
224
+ }
225
+ else if (pool.sharedMemoryName !== frame.sharedMemoryName ||
226
+ pool.poolLifetime !== frame.poolLifetime) {
227
+ const error = new Error(`Remotion shared-memory pool ${frame.poolId} changed its identity.`);
228
+ await releaseIgnoringErrors(frame);
229
+ fail(error);
230
+ throw error;
231
+ }
232
+ if (pool.retired || frame.poolLifetime.isRetired()) {
233
+ await releaseIgnoringErrors(frame);
234
+ throw new Error(`Target closed: Remotion shared-memory pool ${frame.poolId} has already been retired.`);
235
+ }
236
+ const key = pendingKey(frame.poolId, frame.slot);
237
+ if (pending.has(key)) {
238
+ const error = new Error(`Remotion shared-memory slot ${frame.poolId}:${frame.slot} was reused before its ACK.`);
239
+ await releaseIgnoringErrors(frame);
240
+ fail(error);
241
+ throw error;
242
+ }
243
+ let resolveAck;
244
+ let rejectAck;
245
+ const ack = new Promise((resolve, reject) => {
246
+ resolveAck = resolve;
247
+ rejectAck = reject;
248
+ });
249
+ ack.catch(() => undefined);
250
+ const pendingFrame = {
251
+ frame,
252
+ pool,
253
+ acknowledged: false,
254
+ resolve: resolveAck,
255
+ reject: rejectAck,
256
+ };
257
+ pending.set(key, pendingFrame);
258
+ pool.pendingCount++;
259
+ const registersPool = !pool.registrationStarted;
260
+ if (registersPool) {
261
+ pool.registrationStarted = true;
262
+ }
263
+ const operation = enqueueControlWrite((registersPool ? (0, exports.serializeRemotionSharedMemoryPool)(frame) : '') +
264
+ (0, exports.serializeRemotionSharedMemoryFrame)({ frame, pts }));
265
+ if (registersPool) {
266
+ operation.then(() => settleRegistration(pool, true), () => settleRegistration(pool, false));
267
+ }
268
+ try {
269
+ await operation;
270
+ }
271
+ catch (error) {
272
+ const normalizedError = toError(error);
273
+ fail(normalizedError);
274
+ throw normalizedError;
275
+ }
276
+ return { waitForAck: ack };
277
+ },
278
+ finish: () => {
279
+ if (finishPromise) {
280
+ return finishPromise;
281
+ }
282
+ finishing = true;
283
+ finishPromise = (async () => {
284
+ try {
285
+ await controlWrites;
286
+ if (fatalError) {
287
+ throw fatalError;
288
+ }
289
+ await new Promise((resolve, reject) => {
290
+ control.end((error) => {
291
+ if (error) {
292
+ reject(error);
293
+ }
294
+ else {
295
+ resolve();
296
+ }
297
+ });
298
+ });
299
+ controlEnded = true;
300
+ }
301
+ catch (error) {
302
+ const normalizedError = toError(error);
303
+ fail(normalizedError);
304
+ throw normalizedError;
305
+ }
306
+ })();
307
+ return finishPromise;
308
+ },
309
+ fail,
310
+ };
311
+ };
312
+ exports.createRemotionSharedMemoryFfmpegBridge = createRemotionSharedMemoryFfmpegBridge;
@@ -0,0 +1,49 @@
1
+ import type { Page } from './browser/BrowserPage';
2
+ import type { RemotionRawFrame as CdpRemotionRawFrame, RemotionFramePoolBackend } from './browser/devtools-types';
3
+ import { type StillImageFormat } from './image-format';
4
+ import type { LogLevel } from './log-level';
5
+ import type { PixelFormat } from './pixel-format';
6
+ export declare const getPreferredRemotionSharedMemoryBackend: () => "auto" | RemotionFramePoolBackend;
7
+ export type RemotionSharedMemoryPoolLifetime = {
8
+ isRetired: () => boolean;
9
+ waitForRetirement: () => Promise<void>;
10
+ onRetired: (listener: () => Promise<void>) => (() => void) | null;
11
+ };
12
+ export type RemotionRawFrame = CdpRemotionRawFrame & {
13
+ type: 'remotion-shared-memory';
14
+ poolId: number;
15
+ sharedMemoryName: string;
16
+ backend: RemotionFramePoolBackend;
17
+ slotCount: number;
18
+ slotCapacity: number;
19
+ poolLifetime: RemotionSharedMemoryPoolLifetime;
20
+ release: () => Promise<void>;
21
+ };
22
+ export type CapturedFrame = Buffer | RemotionRawFrame;
23
+ export declare class RemotionSharedMemoryCapture {
24
+ #private;
25
+ constructor(options: {
26
+ width: number;
27
+ height: number;
28
+ indent: boolean;
29
+ logLevel: LogLevel;
30
+ backingDirectory: string | null;
31
+ });
32
+ isSupported(): boolean;
33
+ getImageFormat(imageFormat: StillImageFormat): StillImageFormat;
34
+ setPixelFormat(pixelFormat: PixelFormat): void;
35
+ initializePages(pages: Page[]): Promise<void>;
36
+ ensurePage(page: Page): Promise<void>;
37
+ acquire(page: Page): Promise<{
38
+ slot: number;
39
+ frameId: string;
40
+ fail: () => void;
41
+ discardPublished: () => Promise<void>;
42
+ publish: (metadata: CdpRemotionRawFrame) => Promise<RemotionRawFrame>;
43
+ } | null>;
44
+ destroy(): Promise<void>;
45
+ forgetPage(page: Page): Promise<void>;
46
+ forgetAllPages(): Promise<void>;
47
+ dispose(): Promise<void>;
48
+ }
49
+ export declare const isRemotionRawFrame: (frame: CapturedFrame) => frame is RemotionRawFrame;