react-native-skia-webgpu-video 0.1.0-beta.4 → 0.1.0

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 (46) hide show
  1. package/README.md +21 -23
  2. package/android/BUILD_VALIDATION.md +1 -1
  3. package/docs/FRAME_PIXEL_FORMAT.md +16 -1
  4. package/docs/UPSTREAM_NOTES.md +28 -1
  5. package/ios/RNSVColorSpace.h +8 -3
  6. package/lib/module/exportFrames.js +2 -2
  7. package/lib/module/exportFrames.js.map +1 -1
  8. package/lib/module/exportVideoComposition.js +25 -23
  9. package/lib/module/exportVideoComposition.js.map +1 -1
  10. package/lib/module/frameInterop.js +314 -70
  11. package/lib/module/frameInterop.js.map +1 -1
  12. package/lib/module/gpu.js +1 -1
  13. package/lib/module/gpu.js.map +1 -1
  14. package/lib/module/memory.js +7 -0
  15. package/lib/module/memory.js.map +1 -1
  16. package/lib/module/previewLifecycle.js +2 -0
  17. package/lib/module/previewLifecycle.js.map +1 -1
  18. package/lib/module/videoCompositionPlayer.js +65 -14
  19. package/lib/module/videoCompositionPlayer.js.map +1 -1
  20. package/lib/module/videoFrameImage.js +1 -1
  21. package/lib/module/yuvBlit.js +3 -3
  22. package/lib/typescript/src/exportVideoComposition.d.ts.map +1 -1
  23. package/lib/typescript/src/frameInterop.d.ts +16 -5
  24. package/lib/typescript/src/frameInterop.d.ts.map +1 -1
  25. package/lib/typescript/src/memory.d.ts +2 -0
  26. package/lib/typescript/src/memory.d.ts.map +1 -1
  27. package/lib/typescript/src/previewLifecycle.d.ts +2 -0
  28. package/lib/typescript/src/previewLifecycle.d.ts.map +1 -1
  29. package/lib/typescript/src/types.d.ts +8 -7
  30. package/lib/typescript/src/types.d.ts.map +1 -1
  31. package/lib/typescript/src/videoCompositionPlayer.d.ts +4 -5
  32. package/lib/typescript/src/videoCompositionPlayer.d.ts.map +1 -1
  33. package/lib/typescript/src/videoFrameImage.d.ts +1 -1
  34. package/package.json +6 -6
  35. package/patches/{react-native-skia+3.7.4.patch → react-native-skia+3.10.0.patch} +7 -3
  36. package/scripts/skia-canvas-patch.json +6 -6
  37. package/src/exportFrames.ts +2 -2
  38. package/src/exportVideoComposition.ts +43 -59
  39. package/src/frameInterop.ts +380 -85
  40. package/src/gpu.ts +1 -1
  41. package/src/memory.ts +6 -0
  42. package/src/previewLifecycle.ts +4 -0
  43. package/src/types.ts +8 -7
  44. package/src/videoCompositionPlayer.ts +76 -23
  45. package/src/videoFrameImage.ts +1 -1
  46. package/src/yuvBlit.ts +3 -3
@@ -4,8 +4,34 @@ import { getVideoCanvas } from "./canvas.js";
4
4
  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
- import { frameByteSize, releaseVideoMemory, reserveVideoMemory } from "./memory.js";
7
+ import { frameByteSize, releaseVideoMemory, reserveVideoMemory, videoMemoryBudget } from "./memory.js";
8
8
  import { blitNv12Frame, blitYuvFrame, releaseYuvImports, yuvFrameRegion } from "./yuvBlit.js";
9
+
10
+ /** A decoder buffer an import's GPU copy still reads. */
11
+
12
+ /** A texture frames are converted into, and that their images wrap. */
13
+
14
+ /** The textures of a producer: its frames go into them in turn, so that the
15
+ * image of the previous frame stays whole while the next is written. One
16
+ * texture only, written in place, when the memory budget is short. */
17
+
18
+ // Imports whose GPU copy may still be running, their decoder buffers out. Kept
19
+ // below the YUV imports cached per producer (yuvBlit.ts), so that the one it
20
+ // evicts, the least recently drawn, is never still being read.
21
+ const maxInFlightImports = 2;
22
+
23
+ /** Whether the memory budget affords keeping a decoder buffer of `bytes` out
24
+ * until the GPU is done with it: a buffer within a sixteenth of the budget
25
+ * (two out stay within an eighth), and room left for the decoder's next two
26
+ * frames, which it reserves ahead. With the default 256 MB, a 4K BGRA frame
27
+ * (33 MB) is waited for; two 4K NV12 ones (12 MB each) are not. */
28
+ const affordsInFlight = bytes => {
29
+ "worklet";
30
+
31
+ const budget = videoMemoryBudget();
32
+ return !!budget && bytes <= budget.maxBytes / 16 && budget.maxBytes - budget.currentBytes >= 2 * bytes;
33
+ };
34
+
9
35
  // Capture a scalar on the RN runtime instead of importing Platform inside a
10
36
  // worklet. iOS keeps its existing native-buffer and RGBA compatibility paths.
11
37
  const uploadAndroidRgba = Platform.OS === "android";
@@ -18,16 +44,16 @@ const getCache = () => {
18
44
  images: new Map(),
19
45
  stage: null,
20
46
  canvas: null,
21
- width: 0,
22
- height: 0,
23
- format: null,
24
47
  uploadTexture: null,
25
- uploadReservation: 0,
48
+ targets: new Map(),
49
+ freeTextures: [],
26
50
  cpuPixels: null,
27
51
  cpuReservation: 0,
28
52
  cpuBytesPerRow: 0,
29
53
  pendingSources: [],
30
- yuvImports: new Map()
54
+ yuvImports: new Map(),
55
+ checkedWaits: 0,
56
+ inFlight: []
31
57
  };
32
58
  }
33
59
  return runtime.__rnskwgpuFrames;
@@ -53,6 +79,170 @@ const clearSurfaceView = cache => {
53
79
  cache.stage?.dispose();
54
80
  cache.stage = null;
55
81
  };
82
+
83
+ /** Waits for all the GPU work submitted so far, on the shared context. */
84
+ const waitForGpu = cache => {
85
+ "worklet";
86
+
87
+ if (cache.stage) cache.stage.flush(true);else {
88
+ let texture = cache.uploadTexture ?? cache.freeTextures[0]?.texture;
89
+ if (!texture) {
90
+ for (const target of cache.targets.values()) {
91
+ texture = target.textures[0]?.texture;
92
+ if (texture) break;
93
+ }
94
+ }
95
+ // A released producer's textures may all be gone (too big to keep free)
96
+ // while its imports are still in flight: any Graphite surface's checked
97
+ // flush waits on the shared context just the same.
98
+ const view = texture ? Skia.Surface.MakeFromGPUTexture(texture) : Skia.Surface.MakeOffscreen(1, 1);
99
+ if (!view) throw new Error("Video import drain surface is unavailable");
100
+ try {
101
+ view.flush(true);
102
+ } finally {
103
+ view.dispose();
104
+ }
105
+ }
106
+ cache.checkedWaits++;
107
+ };
108
+
109
+ /** Hands the decoder buffers of the first `count` imports in flight back,
110
+ * once the GPU is done with them: because the GPU reported the last of these
111
+ * imports done (in order: the work before it is done too), or after a wait
112
+ * for it, made here when `count` is all of them and nobody `waited`. */
113
+ const settleInFlightImports = (cache, count, waited = false) => {
114
+ "worklet";
115
+
116
+ if (!count) return;
117
+ if (count === cache.inFlight.length && !waited) waitForGpu(cache);
118
+ for (let i = 0; i < count; i++) {
119
+ const entry = cache.inFlight.shift();
120
+ try {
121
+ entry.nativeSource?.release();
122
+ entry.nativeSource = null;
123
+ entry.frame.dispose?.();
124
+ } catch (error) {
125
+ // Like a failed release at import: only the final drain retries it.
126
+ cache.pendingSources.push({
127
+ nativeSource: entry.nativeSource,
128
+ owned: null,
129
+ reservation: 0,
130
+ frame: entry.frame,
131
+ needsDrain: false,
132
+ sourceReleased: false
133
+ });
134
+ throw error;
135
+ }
136
+ }
137
+ };
138
+
139
+ // Free textures kept for the next producer, when they are small enough.
140
+ const maxFreeImportTextures = 2;
141
+
142
+ /** Work already submitted still completes on a destroyed texture; a caller
143
+ * that cannot tell whether everything reading it was submitted waits first. */
144
+ const destroyImportTexture = (cache, entry) => {
145
+ "worklet";
146
+
147
+ if (cache.uploadTexture === entry.texture) {
148
+ clearSurfaceView(cache);
149
+ cache.uploadTexture = null;
150
+ }
151
+ entry.texture.destroy();
152
+ releaseVideoMemory(entry.reservation);
153
+ entry.reservation = 0;
154
+ };
155
+
156
+ // A texture leaves its list only once destroyed: a failed teardown is
157
+ // retried by the next one, its memory still accounted.
158
+ const releaseFreeImportTextures = cache => {
159
+ "worklet";
160
+
161
+ while (cache.freeTextures.length) {
162
+ destroyImportTexture(cache, cache.freeTextures[cache.freeTextures.length - 1]);
163
+ cache.freeTextures.pop();
164
+ }
165
+ };
166
+
167
+ /** Gives up the textures of a producer whose image is disposed. Small ones
168
+ * are kept for the next producer of that size (a montage goes from clip to
169
+ * clip), within the budget's sixteenth each, as for imports in flight. */
170
+ const releaseImportTarget = (cache, producer, keep = true) => {
171
+ "worklet";
172
+
173
+ const target = cache.targets.get(producer);
174
+ if (!target) return;
175
+ const budget = videoMemoryBudget();
176
+ while (target.textures.length) {
177
+ const entry = target.textures[target.textures.length - 1];
178
+ if (keep && cache.freeTextures.length < maxFreeImportTextures && !!budget && frameByteSize(entry.width, entry.height) <= budget.maxBytes / 16) cache.freeTextures.push(entry);else destroyImportTexture(cache, entry);
179
+ target.textures.pop();
180
+ }
181
+ cache.targets.delete(producer);
182
+ };
183
+
184
+ /** The texture the next frame of `producer` goes into: one that its current
185
+ * image does not wrap, when the producer has or can afford a second one. */
186
+ const acquireImportTexture = (cache, device, producer, width, height, format, usage, label) => {
187
+ "worklet";
188
+
189
+ let target = cache.targets.get(producer);
190
+ if (target && target.textures.some(entry => entry.width !== width || entry.height !== height || entry.format !== format)) {
191
+ // The producer changed size: its image wraps a texture given up here.
192
+ clearEntry(cache, producer);
193
+ releaseImportTarget(cache, producer, false);
194
+ target = undefined;
195
+ }
196
+ if (!target) {
197
+ target = {
198
+ textures: []
199
+ };
200
+ cache.targets.set(producer, target);
201
+ }
202
+ const shown = cache.images.get(producer);
203
+ const live = shown?.image ? target.textures.findIndex(entry => entry.texture === shown.texture) : -1;
204
+ let index = target.textures.findIndex((_, i) => i !== live);
205
+ if (index < 0) {
206
+ const free = cache.freeTextures.findIndex(entry => entry.width === width && entry.height === height && entry.format === format);
207
+ const bytes = frameByteSize(width, height);
208
+ const budget = videoMemoryBudget();
209
+ if (free >= 0) {
210
+ target.textures.push(cache.freeTextures.splice(free, 1)[0]);
211
+ index = target.textures.length - 1;
212
+ } else if (!target.textures.length || !budget || budget.maxBytes - budget.currentBytes >= 3 * bytes) {
213
+ // Free textures of another size only hold memory back from here on.
214
+ releaseFreeImportTextures(cache);
215
+ const reservation = reserveVideoMemory(bytes, label);
216
+ let texture;
217
+ try {
218
+ texture = device.createTexture({
219
+ size: {
220
+ width,
221
+ height
222
+ },
223
+ format,
224
+ usage,
225
+ label
226
+ });
227
+ } catch (error) {
228
+ releaseVideoMemory(reservation);
229
+ throw error;
230
+ }
231
+ target.textures.push({
232
+ texture,
233
+ width,
234
+ height,
235
+ format,
236
+ reservation
237
+ });
238
+ index = target.textures.length - 1;
239
+ } else {
240
+ // No room for a second texture: write over the current frame.
241
+ index = live;
242
+ }
243
+ }
244
+ return target.textures[index].texture;
245
+ };
56
246
  const clearCpuPixels = cache => {
57
247
  "worklet";
58
248
 
@@ -64,35 +254,45 @@ const clearCpuPixels = cache => {
64
254
  const clearStagingSurface = cache => {
65
255
  "worklet";
66
256
 
257
+ settleInFlightImports(cache, cache.inFlight.length);
67
258
  cache.stage?.flush(true);
68
259
  clearSurfaceView(cache);
69
- cache.uploadTexture?.destroy();
260
+ for (const producer of [...cache.targets.keys()]) releaseImportTarget(cache, producer, false);
261
+ releaseFreeImportTextures(cache);
70
262
  cache.uploadTexture = null;
71
- releaseVideoMemory(cache.uploadReservation);
72
- cache.uploadReservation = 0;
73
263
  clearCpuPixels(cache);
74
- cache.width = cache.height = 0;
75
- cache.format = null;
76
264
  };
77
265
 
78
266
  /** Record explicit recovery work after a possibly submitted external copy.
79
- * Clearing scratch cannot modify an already owned snapshot. The checked fence
80
- * must succeed before either native lease or the texture can be released. */
267
+ * It clears the texture of the import that failed, whose image is dropped;
268
+ * with two textures, the producer's previous image is in the other one. The
269
+ * checked fence must succeed before either native lease or the texture can be released. */
81
270
  const drainNativeCopies = cache => {
82
271
  "worklet";
83
272
 
84
273
  if (!cache.stage || !cache.canvas) throw new Error("Video import drain surface is unavailable");
85
274
  cache.canvas.drawColor(Skia.Color("#00000000"), BlendMode.Clear);
86
275
  cache.stage.flush(true);
276
+ cache.checkedWaits++;
277
+ };
278
+
279
+ /** The checked GPU waits this runtime's imports have made so far, and the
280
+ * completions the GPU reported for them. Each one covers all the GPU work
281
+ * submitted before it, on the shared context. */
282
+ export const videoFrameImportWaits = () => {
283
+ "worklet";
284
+
285
+ return getCache().checkedWaits;
87
286
  };
88
287
 
89
288
  /** Clear a runtime's imported images after ending all its producers.
90
289
  * Do not clear a paused producer's current frame: its native source has
91
- * already been released, and the owned snapshot is its remaining pixels. */
290
+ * already been released, and its image's texture is its remaining pixels. */
92
291
  export const clearVideoFrameImages = (releaseStagingSurface = false) => {
93
292
  "worklet";
94
293
 
95
294
  const cache = getCache();
295
+ settleInFlightImports(cache, cache.inFlight.length);
96
296
  if (cache.pendingSources.length) {
97
297
  // A failed drain retains leases; only a successful fence can release them.
98
298
  if (cache.pendingSources.some(source => source.needsDrain)) {
@@ -132,17 +332,30 @@ export const releaseVideoFrameImage = frame => {
132
332
  const producer = frame.producerId ?? frame.id ?? -1;
133
333
  const cache = getCache();
134
334
  const entry = cache.images.get(producer);
135
- if (entry && entry.id === (frame.id ?? -1)) clearEntry(cache, producer);
136
- // Each import ends with a checked flush; after a failed one, only the
137
- // drain in clearVideoFrameImages may release the decoder buffers.
138
- if (!cache.pendingSources.length) releaseYuvImports(cache.yuvImports, producer);
335
+ if (entry && entry.id === (frame.id ?? -1)) {
336
+ clearEntry(cache, producer);
337
+ releaseImportTarget(cache, producer);
338
+ }
339
+ // Every import is done once the GPU is; after a failed one, only the drain
340
+ // in clearVideoFrameImages may release the decoder buffers.
341
+ if (!cache.pendingSources.length && cache.yuvImports.has(producer)) {
342
+ settleInFlightImports(cache, cache.inFlight.length);
343
+ releaseYuvImports(cache.yuvImports, producer);
344
+ }
139
345
  if (cache.images.size === 0) clearVideoFrameImages(true);
140
346
  };
141
347
 
142
- /** Returns immutable, owned pixels. WebGPU uploads Android RGBA pixels or blits
143
- * native buffers into one reusable texture, then snapshots a fresh Skia view.
144
- * Graphite-backed snapshots bypass the raster ImageProvider's image-count LRU.
145
- * Wait for completion before releasing sources or rewriting the scratch texture. */
348
+ /** Returns owned pixels. WebGPU uploads Android RGBA pixels or blits native
349
+ * buffers into a texture of the frame's producer, which the image wraps: no
350
+ * copy into a snapshot, and no entry in the raster ImageProvider's LRU.
351
+ * Sources go back once the GPU is done with them.
352
+ *
353
+ * The image is the producer's until its next frame is imported, which
354
+ * disposes it. A producer has two textures and writes its frames into them in
355
+ * turn, so the texture of an image is only written again by the import after
356
+ * the one that disposed it; with a memory budget too short for a second
357
+ * texture, the next frame is written over it, in queue order after the draws
358
+ * already submitted. */
146
359
  export const imageFromVideoFrame = frame => {
147
360
  "worklet";
148
361
 
@@ -152,7 +365,7 @@ export const imageFromVideoFrame = frame => {
152
365
  const existing = cache.images.get(producer);
153
366
  if (existing?.id === frame.id && existing.image) {
154
367
  // Android can issue a fresh lease for the same paused picture. The
155
- // snapshot already owns its pixels, so close that unused native lease.
368
+ // image already owns its pixels, so close that unused native lease.
156
369
  // Weak tracking avoids retaining raw buffers or closing one wrapper twice.
157
370
  if (!existing.releasedSources.has(frame)) {
158
371
  frame.dispose?.();
@@ -167,6 +380,9 @@ export const imageFromVideoFrame = frame => {
167
380
  let ownsSurfaceView = false;
168
381
  let nativeSource = null;
169
382
  let sourceDrained = false;
383
+ let completion = null;
384
+ let sourceBytes = 0;
385
+ let importTexture = null;
170
386
  let releaseSource = true;
171
387
  let importFailed = false;
172
388
  try {
@@ -214,7 +430,7 @@ export const imageFromVideoFrame = frame => {
214
430
  reservation = reserveVideoMemory(pixels.byteLength, "owned video image");
215
431
  const data = Skia.Data.fromBytes(pixels);
216
432
  try {
217
- image = Skia.Image.MakeRasterImage({
433
+ image = Skia.Image.MakeRaster({
218
434
  width: frame.width,
219
435
  height: frame.height,
220
436
  colorType: ColorType.RGBA_8888,
@@ -234,37 +450,14 @@ export const imageFromVideoFrame = frame => {
234
450
  if (!Number.isSafeInteger(extentLimit) || extentLimit <= 0 || frame.width > extentLimit || frame.height > extentLimit) throw new Error("Video frame exceeds the WebGPU texture extent limit");
235
451
  }
236
452
  const format = uploadRgba || uploadAndroidRgba ? "rgba8unorm" : "bgra8unorm";
237
- reservation = reserveVideoMemory(bytes, "owned video image");
238
- if (!cache.uploadTexture || cache.width !== frame.width || cache.height !== frame.height || cache.format !== format) {
239
- clearStagingSurface(cache);
240
- cache.uploadReservation = reserveVideoMemory(bytes, uploadRgba ? "RGBA frame WebGPU upload texture" : "native frame WebGPU upload texture");
241
- try {
242
- // One scratch texture per runtime. COPY_SRC lets Graphite snapshot
243
- // it with a GPU blit rather than draw into another staging target.
244
- cache.uploadTexture = device.createTexture({
245
- size: {
246
- width: frame.width,
247
- height: frame.height
248
- },
249
- format,
250
- // Android AHB and CPU frames share the RGBA scratch. Include
251
- // COPY_DST even for a first AHB frame, so a later CPU fallback
252
- // cannot reuse a texture that forbids writeTexture.
253
- usage: uploadRgba || uploadAndroidRgba ? rgbaVideoTextureUsage : nativeVideoTextureUsage,
254
- label: uploadRgba ? "video RGBA frame upload" : "video native frame upload"
255
- });
256
- cache.width = frame.width;
257
- cache.height = frame.height;
258
- cache.format = format;
259
- } catch (error) {
260
- try {
261
- clearStagingSurface(cache);
262
- } catch {
263
- /* unfinished cleanup/accounting stays reachable */
264
- }
265
- throw error;
266
- }
267
- }
453
+ // The frame is converted straight into a texture of its producer, which
454
+ // the image wraps: no copy into a snapshot. Android AHB and CPU frames
455
+ // share RGBA textures, COPY_DST included even for a first AHB frame, so
456
+ // that a later CPU fallback can write into them.
457
+ clearSurfaceView(cache);
458
+ cache.uploadTexture = null;
459
+ cache.uploadTexture = acquireImportTexture(cache, device, key, frame.width, frame.height, format, uploadRgba || uploadAndroidRgba ? rgbaVideoTextureUsage : nativeVideoTextureUsage, uploadRgba ? "video RGBA frame" : "video native frame");
460
+ importTexture = cache.uploadTexture;
268
461
  if (copyRgbaPixels && texture.kind === "rgba") {
269
462
  if (!cache.cpuPixels || cache.cpuPixels.byteLength !== requiredRgbaBytes || cache.cpuBytesPerRow !== texture.bytesPerRow) {
270
463
  clearCpuPixels(cache);
@@ -292,9 +485,8 @@ export const imageFromVideoFrame = frame => {
292
485
  clearCpuPixels(cache);
293
486
  }
294
487
  clearSurfaceView(cache);
295
- // WebGPU writes do not invalidate SkSurface's cached snapshot. A fresh
296
- // surface wrapper for every frame prevents stale pixels without another
297
- // GPU allocation or a write through Skia that would overwrite the input.
488
+ // The surface only carries the checked submissions and waits of this
489
+ // import, and its recovery drain; the image wraps the texture itself.
298
490
  cache.stage = Skia.Surface.MakeFromGPUTexture(cache.uploadTexture);
299
491
  if (!cache.stage) throw new Error("Cannot wrap video upload texture");
300
492
  ownsSurfaceView = true;
@@ -365,27 +557,79 @@ export const imageFromVideoFrame = frame => {
365
557
  }
366
558
  // Snapshot records an independent texture copy and submits it after
367
559
  // the external blit on the shared queue. The wrapper never draws.
368
- image = cache.stage.makeImageSnapshot();
369
- cache.stage.flush(true);
370
- sourceDrained = true;
560
+ image = Skia.Image.MakeFromGPUTexture(cache.uploadTexture);
561
+ // Submitted without waiting for the GPU, which held the UI thread for
562
+ // the work of every Skia view on the shared context: the decoder buffer
563
+ // is handed back once the GPU reports the copy done. A wait still
564
+ // bounds the buffers out, and stands in where nothing can report.
565
+ // NV12 and Android's YUV buffers take a byte and a half per pixel.
566
+ sourceBytes = texture.kind === "native-buffer" && (texture.region || texture.format === "nv12") ? Math.ceil(bytes * 0.375) : bytes;
567
+ const wait = typeof device.queue.onSubmittedWorkDone !== "function" || cache.inFlight.length >= maxInFlightImports || !affordsInFlight(sourceBytes);
568
+ cache.stage.flush(wait);
569
+ if (!wait) {
570
+ try {
571
+ completion = device.queue.onSubmittedWorkDone();
572
+ } catch {
573
+ // A runtime WebGPU cannot settle promises on.
574
+ completion = null;
575
+ }
576
+ }
577
+ if (wait || !completion) {
578
+ if (!wait) cache.stage.flush(true);
579
+ cache.checkedWaits++;
580
+ // Every import before this one is done too.
581
+ settleInFlightImports(cache, cache.inFlight.length, true);
582
+ completion = null;
583
+ sourceDrained = true;
584
+ }
371
585
  }
372
586
  if (!image) throw new Error("Cannot create a video frame image");
373
- // Complete the native handoff before replacing published pixels. A failed
374
- // source close must not evict a paused image or leave an unpublished cache
375
- // entry behind when the caller receives an import error.
376
- if (ownsSurfaceView) {
377
- clearSurfaceView(cache);
587
+ if (completion) {
588
+ // The GPU copy may still read the decoder buffer: it goes back once the
589
+ // GPU reports the copy done, or after a wait (settleInFlightImports).
590
+ // The view stays for that wait.
591
+ const entry = {
592
+ frame,
593
+ nativeSource,
594
+ bytes: sourceBytes
595
+ };
596
+ cache.inFlight.push(entry);
597
+ nativeSource = null;
598
+ releaseSource = false;
378
599
  ownsSurfaceView = false;
600
+ completion.then(() => {
601
+ const settled = cache.inFlight.indexOf(entry) + 1;
602
+ // Zero: a wait handed it back already.
603
+ if (!settled) return;
604
+ cache.checkedWaits++;
605
+ try {
606
+ settleInFlightImports(cache, settled, true);
607
+ } catch (error) {
608
+ console.warn("Video frame release failed", error);
609
+ }
610
+ },
611
+ // Handed back by the next wait instead.
612
+ () => undefined);
613
+ } else {
614
+ // Complete the native handoff before replacing published pixels. A
615
+ // failed source close must not evict a paused image or leave an
616
+ // unpublished cache entry behind when the caller receives an import
617
+ // error.
618
+ if (ownsSurfaceView) {
619
+ clearSurfaceView(cache);
620
+ ownsSurfaceView = false;
621
+ }
622
+ nativeSource?.release();
623
+ nativeSource = null;
624
+ frame.dispose?.();
625
+ releaseSource = false;
379
626
  }
380
- nativeSource?.release();
381
- nativeSource = null;
382
- frame.dispose?.();
383
- releaseSource = false;
384
627
  clearEntry(cache, key);
385
628
  cache.images.set(key, {
386
629
  id: frame.id ?? -1,
387
630
  image,
388
631
  reservation,
632
+ texture: importTexture,
389
633
  releasedSources: new WeakSet([frame])
390
634
  });
391
635
  return image;
@@ -1 +1 @@
1
- {"version":3,"names":["getVideoCanvas","Platform","AlphaType","BlendMode","ColorType","Skia","getVideoGpuDevice","createNativeVideoGpuFrame","nativeVideoTextureUsage","rgbaVideoTextureUsage","frameByteSize","releaseVideoMemory","reserveVideoMemory","blitNv12Frame","blitYuvFrame","releaseYuvImports","yuvFrameRegion","uploadAndroidRgba","OS","getCache","runtime","globalThis","__rnskwgpuFrames","images","Map","stage","canvas","width","height","format","uploadTexture","uploadReservation","cpuPixels","cpuReservation","cpuBytesPerRow","pendingSources","yuvImports","clearEntry","cache","producer","entry","get","image","dispose","reservation","delete","clearSurfaceView","clearCpuPixels","clearStagingSurface","flush","destroy","drainNativeCopies","Error","drawColor","Color","Clear","clearVideoFrameImages","releaseStagingSurface","length","some","source","needsDrain","owned","nativeSource","release","sourceReleased","frame","shift","keys","releaseVideoFrameImage","producerId","undefined","id","texture","kind","size","imageFromVideoFrame","existing","releasedSources","has","add","copyPending","ownsSurfaceView","sourceDrained","releaseSource","importFailed","bytes","key","rgbaPixels","requiredRgbaBytes","copyRgbaPixels","required","bytesPerRow","Number","isSafeInteger","copyPixelsTo","pixels","Uint8Array","data","byteLength","Data","fromBytes","Image","MakeRasterImage","colorType","RGBA_8888","alphaType","Opaque","device","uploadRgba","extentLimit","limits","maxTextureDimension2D","createTexture","usage","label","error","ArrayBuffer","buffer","Surface","MakeFromGPUTexture","queue","writeTexture","offset","rowsPerImage","depthOrArrayLayers","nativeBuffer","region","rotation","nv12","upright","pixelFormat","copyExternalImageToTexture","mirrored","flipY","premultipliedAlpha","makeImageSnapshot","set","WeakSet","push","ownVideoFrames","frames","visited","Set","failed","value","producers","Object","values","previous","entries","crop","pending"],"sourceRoot":"../../src","sources":["frameInterop.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getVideoCanvas","Platform","AlphaType","BlendMode","ColorType","Skia","getVideoGpuDevice","createNativeVideoGpuFrame","nativeVideoTextureUsage","rgbaVideoTextureUsage","frameByteSize","releaseVideoMemory","reserveVideoMemory","videoMemoryBudget","blitNv12Frame","blitYuvFrame","releaseYuvImports","yuvFrameRegion","maxInFlightImports","affordsInFlight","bytes","budget","maxBytes","currentBytes","uploadAndroidRgba","OS","getCache","runtime","globalThis","__rnskwgpuFrames","images","Map","stage","canvas","uploadTexture","targets","freeTextures","cpuPixels","cpuReservation","cpuBytesPerRow","pendingSources","yuvImports","checkedWaits","inFlight","clearEntry","cache","producer","entry","get","image","dispose","reservation","delete","clearSurfaceView","waitForGpu","flush","texture","target","values","textures","view","Surface","MakeFromGPUTexture","MakeOffscreen","Error","settleInFlightImports","count","waited","length","i","shift","nativeSource","release","frame","error","push","owned","needsDrain","sourceReleased","maxFreeImportTextures","destroyImportTexture","destroy","releaseFreeImportTextures","pop","releaseImportTarget","keep","width","height","acquireImportTexture","device","format","usage","label","some","undefined","set","shown","live","findIndex","index","_","free","splice","createTexture","size","clearCpuPixels","clearStagingSurface","keys","drainNativeCopies","drawColor","Color","Clear","videoFrameImportWaits","clearVideoFrameImages","releaseStagingSurface","source","releaseVideoFrameImage","producerId","id","kind","has","imageFromVideoFrame","existing","releasedSources","add","copyPending","ownsSurfaceView","sourceDrained","completion","sourceBytes","importTexture","releaseSource","importFailed","key","rgbaPixels","requiredRgbaBytes","copyRgbaPixels","required","bytesPerRow","Number","isSafeInteger","copyPixelsTo","pixels","Uint8Array","data","byteLength","Data","fromBytes","Image","MakeRaster","colorType","RGBA_8888","alphaType","Opaque","uploadRgba","extentLimit","limits","maxTextureDimension2D","ArrayBuffer","buffer","queue","writeTexture","offset","rowsPerImage","depthOrArrayLayers","nativeBuffer","region","rotation","nv12","upright","pixelFormat","copyExternalImageToTexture","mirrored","flipY","premultipliedAlpha","Math","ceil","wait","onSubmittedWorkDone","then","settled","indexOf","console","warn","WeakSet","ownVideoFrames","frames","visited","Set","failed","value","producers","Object","previous","entries","crop","pending"],"sourceRoot":"../../src","sources":["frameInterop.ts"],"mappings":"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","ignoreList":[]}
package/lib/module/gpu.js CHANGED
@@ -89,7 +89,7 @@ export const createVideoGpuScope = options => {
89
89
  resource.surface = Skia.Surface.MakeFromGPUTexture(resource.texture);
90
90
  resource.canvas = getVideoCanvas(resource.surface);
91
91
  } else if (skia === "image") {
92
- resource.image = Skia.Image.MakeImageFromGPUTexture(resource.texture);
92
+ resource.image = Skia.Image.MakeFromGPUTexture(resource.texture);
93
93
  }
94
94
  resources.push(resource);
95
95
  return {