LGTM2 On Mon, Jun 19, 2023 at 12:28 PM 'François Beaufort' via blink-dev < blink-dev@chromium.org> wrote:
> Thank you Alex. > > WebGPU can use VideoFrames in any worker so as long as they can be produced > off-main thread > <https://www.w3.org/TR/webcodecs/#best-practices-developers> then it > shouldn't block. > VideoFrames are also possible to postMessage between workers > <https://www.w3.org/TR/webcodecs/#videoframe-transfer-serialization> if > needed. > > > On Fri, Jun 16, 2023 at 10:21 PM Alex Russell <slightly...@chromium.org> > wrote: > >> LGTM1, but does this need to bounce through main thread video decode for >> every frame sampled? Is it not possible to target a WebGPU texture with the >> decoded buffer contents without needing to lean on the main thread's >> `requestVideoFrameCallback()`? >> >> On Friday, June 16, 2023 at 1:20:31 AM UTC-7 fbea...@google.com wrote: >> >>> Contact emails >>> >>> cwal...@google.com, kain...@google.com, bajo...@google.com >>> >>> Explainer >>> >>> >>> https://developer.chrome.com/blog/new-in-webgpu-113/#use-webcodecs-videoframe-source-in-importexternaltexture >>> >>> https://github.com/gpuweb/gpuweb/issues/1380 >>> >>> https://github.com/gpuweb/gpuweb/issues/4165 >>> >>> https://gpuweb.github.io/gpuweb/explainer/#image-input >>> >>> Specification >>> >>> https://gpuweb.github.io/gpuweb/#gpuexternaltexture >>> >>> Design docs >>> >>> https://github.com/gpuweb/gpuweb/issues/1380 >>> >>> Summary >>> >>> WebGPU exposes an API to create opaque "external texture" objects from >>> HTMLVideoElement. These object can be used to sample the video frames >>> efficiently, potentially in a zero-copy way directly from the source YUV >>> data. However the WebGPU specification for the first version of WebGPU does >>> not allow creating GPUExternalTextures from WebCodecs VideoFrame objects. >>> This capability is important for advanced video processing applications >>> that are already using WebCodecs and would like to integrate WebGPU in the >>> video processing pipeline. This feature adds support for using a VideoFrame >>> as the source for a GPUExternalTexture and a copyExternalImageToTexture >>> call. >>> >>> Blink component >>> >>> Blink>WebGPU >>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EWebGPU> >>> >>> TAG review >>> >>> A new TAG review is not needed in this case as WebGPU had one recently >>> already: https://github.com/w3ctag/design-reviews/issues/626 >>> >>> This small but important addition is about adding VideoFrame support on >>> top of HTMLVideoElement support to GPUExternalTextures and >>> copyExternalImageToTexture call. >>> >>> TAG review status >>> >>> Not applicable >>> >>> Risks >>> Interoperability and Compatibility >>> >>> Gecko: Positive ( >>> https://github.com/gpuweb/gpuweb/wiki/Minutes-2023-04-19#investigation-import-videoframe-from-webcodec-to-webgpu-1380:~:text=KG%3A%20the%20proposal%20above%20makes%20sense) >>> WebCodecs is listed as "worth prototyping" which likely means this >>> intergration is the same. >>> >>> WebKit: In development (https://github.com/WebKit/WebKit/pull/14055) >>> >>> Web developers: Positive >>> >>> Other signals: >>> >>> Ergonomics >>> >>> No ergonomic risk. This API would be used at the intersection of WebGPU >>> and WebCodec. It is designed to keep performance as high as possible by >>> allowing zero-copy sampling of YUV frame data. >>> >>> >>> Security >>> >>> The lifetime management of VideoFrame was taken into account of this >>> feature. No other security considerations. >>> >>> >>> WebView application risks >>> >>> N/A >>> >>> >>> Debuggability >>> >>> No support. >>> >>> Will this feature be supported on all six Blink platforms (Windows, Mac, >>> Linux, Chrome OS, Android, and Android WebView)? >>> >>> Yes >>> >>> It will be supported where WebGPU is supported. For now, it is only >>> ChromeOS, macOS, and Windows. >>> >>> Is this feature fully tested by web-platform-tests >>> <https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md> >>> ? >>> >>> Yes >>> >>> DevTrial instructions >>> >>> https://github.com/gpuweb/gpuweb/issues/1380 >>> >>> Requires code in //chrome? >>> >>> False >>> >>> Tracking bug >>> >>> https://bugs.chromium.org/p/chromium/issues/detail?id=1455083 >>> >>> Availability expectation >>> >>> This feature will be part of the WebGPU API in all browsers when they >>> ship it. >>> >>> Sample links >>> >>> https://webgpu.github.io/webgpu-samples/samples/videoUploadingWebCodecs >>> >>> Link to entry on the Chrome Platform Status >>> >>> https://chromestatus.com/feature/5078348864159744 >>> >>> Links to previous Intent discussions >>> >>> Intent to Experiment: >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAGdfWNPH6Jk-g%2B3Nkx0F_rmn05kWcWU%3Dd3cOJNpjfZ3nAWjXcQ%40mail.gmail.com >>> >>> >>> This intent message was generated by Chrome Platform Status >>> <https://chromestatus.com/>. >>> >>> -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion on the web visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5Kb%3DNMqiZURzoUK%2BJ45Au2P_rY7yAzK8-OeCZ-g3%2Bo98g%40mail.gmail.com > <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5Kb%3DNMqiZURzoUK%2BJ45Au2P_rY7yAzK8-OeCZ-g3%2Bo98g%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfXecSRht7k4wzc22bBF-GtX9nWSko3nPpTB4j9d-s%3DDmw%40mail.gmail.com.