react-native-skia-webgpu-video 0.1.0-beta.3 → 0.1.0-beta.4
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/README.md +39 -32
- package/android/BUILD_VALIDATION.md +1 -1
- package/android/CMakeLists.txt +3 -2
- package/android/cpp/ExportHintSession.cpp +114 -0
- package/android/cpp/ExportHintSession.h +35 -0
- package/android/cpp/VideoEncoderHostObject.cpp +76 -101
- package/android/cpp/VideoEncoderHostObject.h +14 -9
- package/android/cpp/VideoFrame.cpp +3 -5
- package/android/cpp/cpp-adapter.cpp +7 -4
- package/android/src/main/java/com/azzapp/rnskv/GLFrameExtractor.java +3 -9
- package/android/src/main/java/com/azzapp/rnskv/VideoCompositionDecoder.java +8 -11
- package/android/src/main/java/com/azzapp/rnskv/VideoEncoder.java +68 -28
- package/docs/FRAME_PIXEL_FORMAT.md +1 -1
- package/docs/MIGRATION.md +1 -1
- package/docs/UPSTREAM_NOTES.md +15 -2
- package/lib/module/canvas.js +3 -5
- package/lib/module/canvas.js.map +1 -1
- package/lib/module/exportFrames.js +6 -8
- package/lib/module/exportFrames.js.map +1 -1
- package/lib/module/exportTarget.js +183 -40
- package/lib/module/exportTarget.js.map +1 -1
- package/lib/module/exportVideoComposition.js +53 -12
- package/lib/module/exportVideoComposition.js.map +1 -1
- package/lib/module/frameInterop.js +9 -12
- package/lib/module/frameInterop.js.map +1 -1
- package/lib/module/gpu.js +0 -2
- package/lib/module/gpu.js.map +1 -1
- package/lib/module/gpuDevice.js +12 -0
- package/lib/module/gpuDevice.js.map +1 -1
- package/lib/module/previewLifecycle.js +0 -1
- package/lib/module/previewLifecycle.js.map +1 -1
- package/lib/module/yuvBlit.js +28 -21
- package/lib/module/yuvBlit.js.map +1 -1
- package/lib/typescript/src/canvas.d.ts.map +1 -1
- package/lib/typescript/src/exportFrames.d.ts +3 -2
- package/lib/typescript/src/exportFrames.d.ts.map +1 -1
- package/lib/typescript/src/exportTarget.d.ts +53 -14
- package/lib/typescript/src/exportTarget.d.ts.map +1 -1
- package/lib/typescript/src/exportVideoComposition.d.ts +2 -1
- package/lib/typescript/src/exportVideoComposition.d.ts.map +1 -1
- package/lib/typescript/src/frameInterop.d.ts.map +1 -1
- package/lib/typescript/src/gpu.d.ts.map +1 -1
- package/lib/typescript/src/gpuDevice.d.ts +5 -1
- package/lib/typescript/src/gpuDevice.d.ts.map +1 -1
- package/lib/typescript/src/previewLifecycle.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +10 -5
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/yuvBlit.d.ts +16 -14
- package/lib/typescript/src/yuvBlit.d.ts.map +1 -1
- package/package.json +6 -6
- package/patches/react-native-skia+3.7.4.patch +146 -0
- package/scripts/skia-canvas-patch.json +22 -258
- package/src/canvas.ts +3 -7
- package/src/exportFrames.ts +8 -9
- package/src/exportTarget.ts +217 -56
- package/src/exportVideoComposition.ts +87 -26
- package/src/frameInterop.ts +9 -11
- package/src/gpu.ts +0 -2
- package/src/gpuDevice.ts +26 -1
- package/src/previewLifecycle.ts +0 -1
- package/src/types.ts +10 -5
- package/src/yuvBlit.ts +43 -28
- package/android/cpp/EncoderTargets.cpp +0 -226
- package/android/cpp/EncoderTargets.h +0 -70
- package/patches/react-native-skia+3.7.1.patch +0 -502
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
/// <reference types="@webgpu/types" />
|
|
4
|
-
import { Platform } from "react-native";
|
|
5
4
|
import { BlendMode, Skia } from "react-native-skia";
|
|
6
5
|
import { getVideoCanvas } from "./canvas.js";
|
|
7
|
-
import { createNativeVideoGpuFrame, getVideoGpuDevice } from "./gpuDevice.js";
|
|
6
|
+
import { createNativeVideoGpuFrame, createNativeWindowGpuContext, encoderWindowTextureUsage, getVideoGpuDevice, nativeVideoTextureUsage } from "./gpuDevice.js";
|
|
7
|
+
import { frameByteSize, releaseVideoMemory, reserveVideoMemory } from "./memory.js";
|
|
8
8
|
|
|
9
|
-
/**
|
|
9
|
+
/** A texture Skia draws an exported frame into through WebGPU: a lent
|
|
10
|
+
* encoder pool buffer on iOS, one of the encoder window's own textures on
|
|
11
|
+
* Android. */
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
/** Android: a canvas context presenting to the codec's input Surface. Skia
|
|
14
|
+
* draws each frame into one of two textures of our own, which a GPU copy then
|
|
15
|
+
* puts into the window's texture. The window's textures are the codec's
|
|
16
|
+
* input buffers: the copy waits on the GPU for the codec to hand one back,
|
|
17
|
+
* while the export goes on with the next frame, rather than the frame's
|
|
18
|
+
* checked wait. */
|
|
19
|
+
|
|
20
|
+
const windowSlots = 2;
|
|
14
21
|
export const supportsEncoderTargets = encoder => {
|
|
15
22
|
"worklet";
|
|
16
23
|
|
|
@@ -18,35 +25,20 @@ export const supportsEncoderTargets = encoder => {
|
|
|
18
25
|
};
|
|
19
26
|
|
|
20
27
|
// Declared before its callers: worklets capture their closure on creation.
|
|
21
|
-
/**
|
|
22
|
-
* release. Call only after a checked flush(true) of its surface.
|
|
23
|
-
|
|
24
|
-
* encoder, which owns and closes them: ending an AHB access submits a
|
|
25
|
-
* release that flush(true) has not waited for. */
|
|
26
|
-
export const closeEncoderTarget = (target, encoding = false) => {
|
|
28
|
+
/** iOS: ends GPU access; the lent buffer stays with the caller, to encode or
|
|
29
|
+
* release. Call only after a checked flush(true) of its surface. */
|
|
30
|
+
export const closeEncoderTarget = target => {
|
|
27
31
|
"worklet";
|
|
28
32
|
|
|
29
|
-
|
|
33
|
+
// Disposing the surface detaches its canvas.
|
|
30
34
|
target.canvas = null;
|
|
31
35
|
target.surface?.dispose();
|
|
32
36
|
target.surface = null;
|
|
33
37
|
if (target.accessing && target.memory && target.texture) {
|
|
34
38
|
const ended = target.memory.endAccess(target.texture);
|
|
35
39
|
target.accessing = false;
|
|
36
|
-
for
|
|
37
|
-
|
|
38
|
-
if (encoding && !lendsPixelBuffers) {
|
|
39
|
-
const exported = state.fence.export();
|
|
40
|
-
// Unreachable when negotiated: AHB interop requires the device's
|
|
41
|
-
// only shared-fence feature to be sync-fd (see gpuDevice.ts).
|
|
42
|
-
if (exported.type !== "sync-fd") throw new Error("GPU export needs sync-fd fences");
|
|
43
|
-
target.fences.push(exported.handle);
|
|
44
|
-
}
|
|
45
|
-
} finally {
|
|
46
|
-
// iOS: already waited for. The wrapper is released either way.
|
|
47
|
-
state.fence.destroy();
|
|
48
|
-
}
|
|
49
|
-
}
|
|
40
|
+
// Already waited for. The wrappers are released either way.
|
|
41
|
+
for (const state of ended?.fences ?? []) state.fence.destroy();
|
|
50
42
|
}
|
|
51
43
|
target.accessing = false;
|
|
52
44
|
target.texture?.destroy();
|
|
@@ -60,13 +52,12 @@ export const closeEncoderTarget = (target, encoding = false) => {
|
|
|
60
52
|
target.frame = null;
|
|
61
53
|
};
|
|
62
54
|
|
|
63
|
-
/**
|
|
55
|
+
/** iOS: lends the next pool buffer and wraps it as a Skia surface. */
|
|
64
56
|
export const acquireEncoderTarget = (encoder, width, height) => {
|
|
65
57
|
"worklet";
|
|
66
58
|
|
|
67
59
|
const target = {
|
|
68
60
|
pointer: encoder.acquireFrameBuffer(),
|
|
69
|
-
fences: [],
|
|
70
61
|
frame: null,
|
|
71
62
|
memory: null,
|
|
72
63
|
texture: null,
|
|
@@ -75,24 +66,19 @@ export const acquireEncoderTarget = (encoder, width, height) => {
|
|
|
75
66
|
canvas: null
|
|
76
67
|
};
|
|
77
68
|
try {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
throw new Error("Encoder buffer dimensions or BGRA layout mismatch");
|
|
82
|
-
}
|
|
69
|
+
target.frame = createNativeVideoGpuFrame(target.pointer);
|
|
70
|
+
if (target.frame.width !== width || target.frame.height !== height || target.frame.pixelFormat !== "bgra8") {
|
|
71
|
+
throw new Error("Encoder buffer dimensions or BGRA layout mismatch");
|
|
83
72
|
}
|
|
84
73
|
const device = getVideoGpuDevice();
|
|
85
74
|
if (typeof device.importSharedTextureMemory !== "function") {
|
|
86
75
|
throw new Error("WebGPU shared texture memory is unavailable");
|
|
87
76
|
}
|
|
88
77
|
target.memory = device.importSharedTextureMemory({
|
|
89
|
-
handle: target.frame
|
|
78
|
+
handle: target.frame.handle,
|
|
90
79
|
label: "video export frame"
|
|
91
80
|
});
|
|
92
81
|
target.texture = target.memory.createTexture();
|
|
93
|
-
if (!lendsPixelBuffers && (target.texture.width !== width || target.texture.height !== height || target.texture.format !== "rgba8unorm")) {
|
|
94
|
-
throw new Error("Encoder buffer dimensions or RGBA layout mismatch");
|
|
95
|
-
}
|
|
96
82
|
// Uninitialized: every frame starts with a full clear.
|
|
97
83
|
target.memory.beginAccess(target.texture, false);
|
|
98
84
|
target.accessing = true;
|
|
@@ -111,8 +97,9 @@ export const acquireEncoderTarget = (encoder, width, height) => {
|
|
|
111
97
|
}
|
|
112
98
|
};
|
|
113
99
|
|
|
114
|
-
/**
|
|
115
|
-
* failure, or null when this device can export through encoder
|
|
100
|
+
/** iOS: clears one lent buffer on the GPU, then returns it unencoded.
|
|
101
|
+
* Returns the failure, or null when this device can export through encoder
|
|
102
|
+
* targets. */
|
|
116
103
|
export const probeEncoderTarget = (encoder, width, height) => {
|
|
117
104
|
"worklet";
|
|
118
105
|
|
|
@@ -134,4 +121,160 @@ export const probeEncoderTarget = (encoder, width, height) => {
|
|
|
134
121
|
encoder.releaseFrameBuffer();
|
|
135
122
|
return failure;
|
|
136
123
|
};
|
|
124
|
+
|
|
125
|
+
/** Android: the window's next texture, checked against the export size. */
|
|
126
|
+
const windowTexture = (window, width, height) => {
|
|
127
|
+
"worklet";
|
|
128
|
+
|
|
129
|
+
const texture = window.pending ?? window.context.getCurrentTexture();
|
|
130
|
+
window.pending = null;
|
|
131
|
+
if (texture.width !== width || texture.height !== height || texture.format !== "rgba8unorm") {
|
|
132
|
+
throw new Error("Encoder window dimensions or RGBA layout mismatch");
|
|
133
|
+
}
|
|
134
|
+
return texture;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/** Android: the slot the next frame draws into. Its previous copy completed:
|
|
138
|
+
* the checked wait the export makes before each frame's import covers the
|
|
139
|
+
* queue before it. */
|
|
140
|
+
export const acquireWindowTarget = window => {
|
|
141
|
+
"worklet";
|
|
142
|
+
|
|
143
|
+
return window.slots[window.next];
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
/** Android: copies the slot Skia drew into to the window's next texture and
|
|
147
|
+
* hands it to the encoder, with its time. Call once the slot's surface was
|
|
148
|
+
* flushed: the copy follows the drawing on the same queue. */
|
|
149
|
+
export const presentWindowTarget = (encoder, window, target, time) => {
|
|
150
|
+
"worklet";
|
|
151
|
+
|
|
152
|
+
const source = target.texture;
|
|
153
|
+
const destination = windowTexture(window, source.width, source.height);
|
|
154
|
+
const commands = window.device.createCommandEncoder({
|
|
155
|
+
label: "video export window copy"
|
|
156
|
+
});
|
|
157
|
+
commands.copyTextureToTexture({
|
|
158
|
+
texture: source
|
|
159
|
+
}, {
|
|
160
|
+
texture: destination
|
|
161
|
+
}, {
|
|
162
|
+
width: source.width,
|
|
163
|
+
height: source.height
|
|
164
|
+
});
|
|
165
|
+
window.device.queue.submit([commands.finish()]);
|
|
166
|
+
window.next = (window.next + 1) % window.slots.length;
|
|
167
|
+
// The encoder sets the frame's time on the window, then presents.
|
|
168
|
+
encoder.encodeFrame({
|
|
169
|
+
kind: "window",
|
|
170
|
+
present: () => window.context.present()
|
|
171
|
+
}, time);
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
/** Android: the swapchain gives the codec its buffers back at once, rather
|
|
175
|
+
* than once the context is collected. Call before disposing the encoder. */
|
|
176
|
+
export const closeEncoderWindow = window => {
|
|
177
|
+
"worklet";
|
|
178
|
+
|
|
179
|
+
window.pending = null;
|
|
180
|
+
if (!window.configured) return;
|
|
181
|
+
window.context.unconfigure();
|
|
182
|
+
window.configured = false;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
/** Android: frees the window's own textures. Call once their last recording
|
|
186
|
+
* was submitted: a copy still in flight keeps its source alive. */
|
|
187
|
+
export const releaseEncoderWindow = window => {
|
|
188
|
+
"worklet";
|
|
189
|
+
|
|
190
|
+
while (window.slots.length) {
|
|
191
|
+
const slot = window.slots[window.slots.length - 1];
|
|
192
|
+
// Disposing the surface detaches its canvas.
|
|
193
|
+
slot.canvas = null;
|
|
194
|
+
slot.surface?.dispose();
|
|
195
|
+
slot.surface = null;
|
|
196
|
+
slot.texture?.destroy();
|
|
197
|
+
slot.texture = null;
|
|
198
|
+
window.slots.pop();
|
|
199
|
+
}
|
|
200
|
+
while (window.reservations.length) {
|
|
201
|
+
releaseVideoMemory(window.reservations[window.reservations.length - 1]);
|
|
202
|
+
window.reservations.pop();
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
/** Android: opens a canvas context on the encoder's input window with its
|
|
207
|
+
* slots, acquires the window's first texture and draws a clear into the
|
|
208
|
+
* first slot: nothing reaches the encoder. Returns the window, or the
|
|
209
|
+
* failure, after which the window is closed and the export can fall back to
|
|
210
|
+
* readback. */
|
|
211
|
+
export const probeEncoderWindow = (encoder, width, height) => {
|
|
212
|
+
"worklet";
|
|
213
|
+
|
|
214
|
+
let window = null;
|
|
215
|
+
let failure = null;
|
|
216
|
+
try {
|
|
217
|
+
if (typeof encoder.acquireInputWindow !== "function") throw new Error("Encoder cannot present through its input window");
|
|
218
|
+
const device = getVideoGpuDevice();
|
|
219
|
+
window = {
|
|
220
|
+
context: createNativeWindowGpuContext(encoder.acquireInputWindow(), width, height),
|
|
221
|
+
device,
|
|
222
|
+
configured: false,
|
|
223
|
+
slots: [],
|
|
224
|
+
next: 0,
|
|
225
|
+
reservations: [],
|
|
226
|
+
pending: null
|
|
227
|
+
};
|
|
228
|
+
// Presented in FIFO order, opaque: every frame reaches the codec.
|
|
229
|
+
window.context.configure({
|
|
230
|
+
device,
|
|
231
|
+
format: "rgba8unorm",
|
|
232
|
+
usage: encoderWindowTextureUsage
|
|
233
|
+
});
|
|
234
|
+
window.configured = true;
|
|
235
|
+
for (let i = 0; i < windowSlots; i++) {
|
|
236
|
+
window.reservations.push(reserveVideoMemory(frameByteSize(width, height), "export window slot"));
|
|
237
|
+
const slot = {
|
|
238
|
+
pointer: null,
|
|
239
|
+
frame: null,
|
|
240
|
+
memory: null,
|
|
241
|
+
texture: device.createTexture({
|
|
242
|
+
label: "video export window slot",
|
|
243
|
+
size: {
|
|
244
|
+
width,
|
|
245
|
+
height
|
|
246
|
+
},
|
|
247
|
+
format: "rgba8unorm",
|
|
248
|
+
usage: nativeVideoTextureUsage
|
|
249
|
+
}),
|
|
250
|
+
accessing: false,
|
|
251
|
+
surface: null,
|
|
252
|
+
canvas: null
|
|
253
|
+
};
|
|
254
|
+
window.slots.push(slot);
|
|
255
|
+
slot.surface = Skia.Surface.MakeFromGPUTexture(slot.texture);
|
|
256
|
+
if (!slot.surface) throw new Error("Cannot wrap the export frame");
|
|
257
|
+
slot.canvas = getVideoCanvas(slot.surface);
|
|
258
|
+
}
|
|
259
|
+
window.pending = windowTexture(window, width, height);
|
|
260
|
+
const target = acquireWindowTarget(window);
|
|
261
|
+
target.canvas.drawColor(Skia.Color("#00000000"), BlendMode.Clear);
|
|
262
|
+
target.surface.flush(true);
|
|
263
|
+
} catch (error) {
|
|
264
|
+
failure = error ?? new Error("GPU export probe failed");
|
|
265
|
+
}
|
|
266
|
+
if (failure === null) return {
|
|
267
|
+
window,
|
|
268
|
+
failure
|
|
269
|
+
};
|
|
270
|
+
if (window) {
|
|
271
|
+
// Not caught: a window still drawn by WebGPU cannot fall back to EGL.
|
|
272
|
+
closeEncoderWindow(window);
|
|
273
|
+
releaseEncoderWindow(window);
|
|
274
|
+
}
|
|
275
|
+
return {
|
|
276
|
+
window: null,
|
|
277
|
+
failure
|
|
278
|
+
};
|
|
279
|
+
};
|
|
137
280
|
//# sourceMappingURL=exportTarget.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["BlendMode","Skia","getVideoCanvas","createNativeVideoGpuFrame","createNativeWindowGpuContext","encoderWindowTextureUsage","getVideoGpuDevice","nativeVideoTextureUsage","frameByteSize","releaseVideoMemory","reserveVideoMemory","windowSlots","supportsEncoderTargets","encoder","acquireFrameBuffer","releaseFrameBuffer","closeEncoderTarget","target","canvas","surface","dispose","accessing","memory","texture","ended","endAccess","state","fences","fence","destroy","frame","release","acquireEncoderTarget","width","height","pointer","pixelFormat","Error","device","importSharedTextureMemory","handle","label","createTexture","beginAccess","Surface","MakeFromGPUTexture","error","probeEncoderTarget","failure","drawColor","Color","Clear","flush","windowTexture","window","pending","context","getCurrentTexture","format","acquireWindowTarget","slots","next","presentWindowTarget","time","source","destination","commands","createCommandEncoder","copyTextureToTexture","queue","submit","finish","length","encodeFrame","kind","present","closeEncoderWindow","configured","unconfigure","releaseEncoderWindow","slot","pop","reservations","probeEncoderWindow","acquireInputWindow","configure","usage","i","push","size"],"sourceRoot":"../../src","sources":["exportTarget.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@ import RNSkiaVideoModule from "./RNSkiaVideoModule.js";
|
|
|
9
9
|
import { clearVideoFrameImages, ownVideoFrames, releaseVideoFrameImage } from "./frameInterop.js";
|
|
10
10
|
import { frameByteSize, releaseVideoMemory, reserveVideoMemory } from "./memory.js";
|
|
11
11
|
import { enqueueExport, exportAbortError } from "./exportQueue.js";
|
|
12
|
-
import { acquireEncoderTarget, closeEncoderTarget, probeEncoderTarget, supportsEncoderTargets } from "./exportTarget.js";
|
|
12
|
+
import { acquireEncoderTarget, acquireWindowTarget, closeEncoderTarget, closeEncoderWindow, presentWindowTarget, probeEncoderTarget, probeEncoderWindow, releaseEncoderWindow, supportsEncoderTargets } from "./exportTarget.js";
|
|
13
13
|
import { yieldToRuntime } from "./runtimeYield.js";
|
|
14
14
|
import { createExportFrameImports, ownExportFrames, releaseExportFrames } from "./exportFrames.js";
|
|
15
15
|
|
|
@@ -142,6 +142,17 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
142
142
|
if (clock.last >= 0) profile[stage] += now - clock.last;
|
|
143
143
|
clock.last = now;
|
|
144
144
|
};
|
|
145
|
+
/** Android window: the checked GPU wait the last frame left for later,
|
|
146
|
+
* so that the GPU converted and drew it while the CPU presented it and
|
|
147
|
+
* decoded the next one. An empty recording: Graphite still waits for
|
|
148
|
+
* every command submitted so far. */
|
|
149
|
+
const checkWindowFrame = () => {
|
|
150
|
+
"worklet";
|
|
151
|
+
|
|
152
|
+
if (!state.unchecked) return;
|
|
153
|
+
state.window.slots[state.window.next].surface.flush(true);
|
|
154
|
+
state.unchecked = false;
|
|
155
|
+
};
|
|
145
156
|
const finish = async (error, aborted = false, failed = false) => {
|
|
146
157
|
"worklet";
|
|
147
158
|
|
|
@@ -167,6 +178,7 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
167
178
|
};
|
|
168
179
|
// Submit any recording left by a drawing exception before an
|
|
169
180
|
// adapter is allowed to destroy textures referenced by that canvas.
|
|
181
|
+
clean(checkWindowFrame);
|
|
170
182
|
clean(() => state.surface?.flush(true));
|
|
171
183
|
clean(() => state.target?.surface?.flush(true));
|
|
172
184
|
if (cleanup.safeToRelease && state.pendingAfterDraw) {
|
|
@@ -183,6 +195,10 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
183
195
|
}
|
|
184
196
|
}
|
|
185
197
|
if (clean(() => state.extractor?.dispose())) state.extractor = null;
|
|
198
|
+
// Android: the window's swapchain lets go of the codec's buffers
|
|
199
|
+
// before the encoder goes. Its own textures are freed further down.
|
|
200
|
+
const window = state.window;
|
|
201
|
+
if (window) clean(() => closeEncoderWindow(window));
|
|
186
202
|
if (clean(() => state.encoder?.dispose())) state.encoder = null;
|
|
187
203
|
if (cleanup.safeToRelease) {
|
|
188
204
|
clean(() => state.surface?.flush(true));
|
|
@@ -193,8 +209,16 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
193
209
|
if (imports && clean(() => releaseExportFrames(imports))) state.imports = null;
|
|
194
210
|
clean(() => clearVideoFrameImages(true));
|
|
195
211
|
}
|
|
196
|
-
|
|
197
|
-
if (cleanup.safeToRelease && clean(() => state.surface?.dispose()))
|
|
212
|
+
// Disposing the surface detaches its canvas.
|
|
213
|
+
if (cleanup.safeToRelease && clean(() => state.surface?.dispose())) {
|
|
214
|
+
state.surface = null;
|
|
215
|
+
state.canvas = null;
|
|
216
|
+
}
|
|
217
|
+
// The target, if any, is one of the window's slots.
|
|
218
|
+
if (cleanup.safeToRelease && window && clean(() => releaseEncoderWindow(window))) {
|
|
219
|
+
state.window = null;
|
|
220
|
+
state.target = null;
|
|
221
|
+
}
|
|
198
222
|
const target = state.target;
|
|
199
223
|
if (cleanup.safeToRelease && target) {
|
|
200
224
|
if (clean(() => closeEncoderTarget(target))) state.target = null;
|
|
@@ -239,6 +263,8 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
239
263
|
const owned = runWithVideoAutoreleasePool(() => {
|
|
240
264
|
const decoded = state.extractor.decodeCompositionFrames(time);
|
|
241
265
|
lap("decodeMs");
|
|
266
|
+
checkWindowFrame();
|
|
267
|
+
lap("gpuMs");
|
|
242
268
|
const imports = state.imports;
|
|
243
269
|
// In place, a producer's frame is released by its next import.
|
|
244
270
|
const imported = imports ? ownExportFrames(imports, decoded, ownVideoFrames) : ownVideoFrames(decoded);
|
|
@@ -266,7 +292,7 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
266
292
|
const draw = () => {
|
|
267
293
|
"worklet";
|
|
268
294
|
|
|
269
|
-
if (state.gpu) state.target = acquireEncoderTarget(state.encoder, options.width, options.height);
|
|
295
|
+
if (state.gpu) state.target = state.window ? acquireWindowTarget(state.window) : acquireEncoderTarget(state.encoder, options.width, options.height);
|
|
270
296
|
lap("targetMs");
|
|
271
297
|
const target = state.target;
|
|
272
298
|
const surface = target ? target.surface : state.surface;
|
|
@@ -289,16 +315,22 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
289
315
|
height: options.height
|
|
290
316
|
});
|
|
291
317
|
lap("drawMs");
|
|
292
|
-
|
|
318
|
+
// Android window, no context to release: the next frame waits
|
|
319
|
+
// for this one (see checkWindowFrame).
|
|
320
|
+
const unchecked = !!state.window && !!target && !afterDrawFrame && !state.processor;
|
|
321
|
+
surface.flush(!unchecked);
|
|
322
|
+
state.unchecked = unchecked;
|
|
293
323
|
drawn.drained = true;
|
|
294
324
|
lap("gpuMs");
|
|
295
|
-
if (target) {
|
|
296
|
-
|
|
325
|
+
if (target && state.window) {
|
|
326
|
+
state.target = null;
|
|
327
|
+
presentWindowTarget(state.encoder, state.window, target, time);
|
|
328
|
+
} else if (target) {
|
|
329
|
+
closeEncoderTarget(target);
|
|
297
330
|
state.target = null;
|
|
298
331
|
state.encoder.encodeFrame({
|
|
299
332
|
kind: "native-buffer",
|
|
300
|
-
nativeBuffer: target.pointer
|
|
301
|
-
fences: target.fences
|
|
333
|
+
nativeBuffer: target.pointer
|
|
302
334
|
}, time);
|
|
303
335
|
} else {
|
|
304
336
|
const readbackCanvas = canvas;
|
|
@@ -413,6 +445,7 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
413
445
|
readback: null,
|
|
414
446
|
gpu: false,
|
|
415
447
|
target: null,
|
|
448
|
+
window: null,
|
|
416
449
|
imports: null,
|
|
417
450
|
frames: {},
|
|
418
451
|
processor: null,
|
|
@@ -451,10 +484,18 @@ const executeExport = args => new Promise((resolve, reject) => {
|
|
|
451
484
|
}, videoComposition);
|
|
452
485
|
state.encoder.prepare();
|
|
453
486
|
if (gpuExport) {
|
|
454
|
-
// Skia draws straight into the encoder's buffers
|
|
455
|
-
//
|
|
487
|
+
// Skia draws straight into the encoder's buffers: lent pool
|
|
488
|
+
// buffers on iOS, the input window on Android. The probe keeps
|
|
489
|
+
// devices where that fails on the readback path.
|
|
456
490
|
state.hasRecorder = true;
|
|
457
|
-
|
|
491
|
+
let failure;
|
|
492
|
+
if (bgra) {
|
|
493
|
+
failure = supportsEncoderTargets(state.encoder) ? probeEncoderTarget(state.encoder, options.width, options.height) : new Error("Encoder cannot lend frame buffers");
|
|
494
|
+
} else {
|
|
495
|
+
const probe = probeEncoderWindow(state.encoder, options.width, options.height);
|
|
496
|
+
state.window = probe.window;
|
|
497
|
+
failure = probe.failure;
|
|
498
|
+
}
|
|
458
499
|
state.gpu = failure === null;
|
|
459
500
|
// Decoded frames are sampled in place too: on iOS through the
|
|
460
501
|
// same IOSurface import, on Android once converted from YUV.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["assertExportRecorderCacheSupport","trimExportRecorderCache","getVideoCanvas","createWorkletRuntime","createSynchronizable","runOnRuntime","scheduleOnRN","AlphaType","BlendMode","ColorType","Skia","Platform","RNSkiaVideoModule","clearVideoFrameImages","ownVideoFrames","releaseVideoFrameImage","frameByteSize","releaseVideoMemory","reserveVideoMemory","enqueueExport","exportAbortError","acquireEncoderTarget","closeEncoderTarget","probeEncoderTarget","supportsEncoderTargets","yieldToRuntime","createExportFrameImports","ownExportFrames","releaseExportFrames","exportRuntime","getExportRuntime","name","runWithVideoAutoreleasePool","fn","runWithAutoreleasePool","body","exportVideoComposition","args","executeExport","abortSignal","Promise","resolve","reject","videoComposition","drawFrame","beforeDrawFrame","afterDrawFrame","onProgress","createFrameProcessor","onProfile","options","aborted","bytes","nbFrames","width","height","Number","isFinite","frameRate","duration","bitRate","outPath","Error","Math","ceil","isSafeInteger","error","cancelled","onAbort","setBlocking","addEventListener","settle","failed","removeEventListener","runtime","getBlocking","bgra","OS","gpuExport","getBackendInfo","gpuDirectExport","step","frameWorklet","storage","globalThis","state","__rnskwgpuExport","isCancelled","profile","frames","totalMs","decodeMs","importMs","prepareMs","targetMs","drawMs","gpuMs","encodeMs","yieldMs","clock","last","lap","stage","now","performance","finish","cleanup","failure","safeToRelease","clean","e","surface","flush","target","pendingAfterDraw","processor","dispose","extractor","encoder","frame","Object","values","imports","canvas","hasRecorder","i","reservations","length","splice","readback","poisoned","setupError","work","time","index","owned","decoded","decodeCompositionFrames","imported","key","previous","entries","producers","has","producerId","prepareFrame","currentTime","draw","gpu","drawColor","Color","Clear","context","drawn","undefined","drained","encodeFrame","kind","nativeBuffer","pointer","fences","readbackCanvas","pixels","readPixels","colorType","BGRA_8888","RGBA_8888","alphaType","Premul","Uint8Array","byteLength","byteOffset","buffer","slice","data","bytesPerRow","releaseContext","framesCompleted","finishWriting","run","setup","allocateReadback","push","Surface","MakeOffscreen","createVideoEncoder","audioBitRate","audioSampleRate","audioChannelCount","prepare","console","warn","String","createVideoCompositionFramesExtractorSync","start"],"sourceRoot":"../../src","sources":["exportVideoComposition.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["assertExportRecorderCacheSupport","trimExportRecorderCache","getVideoCanvas","createWorkletRuntime","createSynchronizable","runOnRuntime","scheduleOnRN","AlphaType","BlendMode","ColorType","Skia","Platform","RNSkiaVideoModule","clearVideoFrameImages","ownVideoFrames","releaseVideoFrameImage","frameByteSize","releaseVideoMemory","reserveVideoMemory","enqueueExport","exportAbortError","acquireEncoderTarget","acquireWindowTarget","closeEncoderTarget","closeEncoderWindow","presentWindowTarget","probeEncoderTarget","probeEncoderWindow","releaseEncoderWindow","supportsEncoderTargets","yieldToRuntime","createExportFrameImports","ownExportFrames","releaseExportFrames","exportRuntime","getExportRuntime","name","runWithVideoAutoreleasePool","fn","runWithAutoreleasePool","body","exportVideoComposition","args","executeExport","abortSignal","Promise","resolve","reject","videoComposition","drawFrame","beforeDrawFrame","afterDrawFrame","onProgress","createFrameProcessor","onProfile","options","aborted","bytes","nbFrames","width","height","Number","isFinite","frameRate","duration","bitRate","outPath","Error","Math","ceil","isSafeInteger","error","cancelled","onAbort","setBlocking","addEventListener","settle","failed","removeEventListener","runtime","getBlocking","bgra","OS","gpuExport","getBackendInfo","gpuDirectExport","step","frameWorklet","storage","globalThis","state","__rnskwgpuExport","isCancelled","profile","frames","totalMs","decodeMs","importMs","prepareMs","targetMs","drawMs","gpuMs","encodeMs","yieldMs","clock","last","lap","stage","now","performance","checkWindowFrame","unchecked","window","slots","next","surface","flush","finish","cleanup","failure","safeToRelease","clean","e","target","pendingAfterDraw","processor","dispose","extractor","encoder","frame","Object","values","imports","canvas","hasRecorder","i","reservations","length","splice","readback","poisoned","setupError","work","time","index","owned","decoded","decodeCompositionFrames","imported","key","previous","entries","producers","has","producerId","prepareFrame","currentTime","draw","gpu","drawColor","Color","Clear","context","drawn","undefined","drained","encodeFrame","kind","nativeBuffer","pointer","readbackCanvas","pixels","readPixels","colorType","BGRA_8888","RGBA_8888","alphaType","Premul","Uint8Array","byteLength","byteOffset","buffer","slice","data","bytesPerRow","releaseContext","framesCompleted","finishWriting","run","setup","allocateReadback","push","Surface","MakeOffscreen","createVideoEncoder","audioBitRate","audioSampleRate","audioChannelCount","prepare","probe","console","warn","String","createVideoCompositionFramesExtractorSync","start"],"sourceRoot":"../../src","sources":["exportVideoComposition.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ import { Platform } from "react-native";
|
|
|
5
5
|
import { AlphaType, BlendMode, ColorType, Skia } from "react-native-skia";
|
|
6
6
|
import { getVideoGpuDevice, createNativeVideoGpuFrame, nativeVideoTextureUsage, rgbaVideoTextureUsage } from "./gpuDevice.js";
|
|
7
7
|
import { frameByteSize, releaseVideoMemory, reserveVideoMemory } from "./memory.js";
|
|
8
|
-
import { blitNv12Frame, blitYuvFrame, releaseYuvImports,
|
|
8
|
+
import { blitNv12Frame, blitYuvFrame, releaseYuvImports, yuvFrameRegion } from "./yuvBlit.js";
|
|
9
9
|
// Capture a scalar on the RN runtime instead of importing Platform inside a
|
|
10
10
|
// worklet. iOS keeps its existing native-buffer and RGBA compatibility paths.
|
|
11
11
|
const uploadAndroidRgba = Platform.OS === "android";
|
|
@@ -49,7 +49,6 @@ const clearEntry = (cache, producer) => {
|
|
|
49
49
|
const clearSurfaceView = cache => {
|
|
50
50
|
"worklet";
|
|
51
51
|
|
|
52
|
-
cache.canvas?.dispose();
|
|
53
52
|
cache.canvas = null;
|
|
54
53
|
cache.stage?.dispose();
|
|
55
54
|
cache.stage = null;
|
|
@@ -320,17 +319,15 @@ export const imageFromVideoFrame = frame => {
|
|
|
320
319
|
const region = texture.region;
|
|
321
320
|
const rotation = texture.rotation ?? 0;
|
|
322
321
|
const nv12 = !region && texture.format === "nv12";
|
|
323
|
-
let
|
|
324
|
-
x: 0,
|
|
325
|
-
y: 0
|
|
326
|
-
};
|
|
322
|
+
let upright = null;
|
|
327
323
|
if (region) {
|
|
328
324
|
// An Android codec buffer: padded, YUV, in encoded orientation. The
|
|
329
|
-
// blit converts, crops and
|
|
330
|
-
// as the GL path's SurfaceTexture transform did. RN WebGPU
|
|
331
|
-
// driver-defined YUV formats "bgra8", yet Dawn imports them
|
|
332
|
-
// the native side checked the format, so the label is not
|
|
333
|
-
|
|
325
|
+
// blit converts, crops, turns and scales it into the frame-sized
|
|
326
|
+
// scratch, as the GL path's SurfaceTexture transform did. RN WebGPU
|
|
327
|
+
// labels driver-defined YUV formats "bgra8", yet Dawn imports them
|
|
328
|
+
// as YUV: the native side checked the format, so the label is not
|
|
329
|
+
// read.
|
|
330
|
+
upright = yuvFrameRegion(region, rotation, nativeSource);
|
|
334
331
|
} else if (nv12) {
|
|
335
332
|
if (nativeSource.width !== frame.width || nativeSource.height !== frame.height) throw new Error("Native video buffer dimensions mismatch");
|
|
336
333
|
} else if (
|
|
@@ -346,7 +343,7 @@ export const imageFromVideoFrame = frame => {
|
|
|
346
343
|
if (region) {
|
|
347
344
|
// copyExternalImageToTexture would also convert the video's
|
|
348
345
|
// transfer function and primaries to sRGB (see yuvBlit.ts).
|
|
349
|
-
blitYuvFrame(device, cache.yuvImports, key, nativeSource, rotation,
|
|
346
|
+
blitYuvFrame(device, cache.yuvImports, key, nativeSource, rotation, upright, cache.uploadTexture);
|
|
350
347
|
} else if (nv12) {
|
|
351
348
|
// Decoded orientation, as below: drawVideoFrame applies rotation.
|
|
352
349
|
blitNv12Frame(device, nativeSource, cache.uploadTexture);
|