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.

Reply via email to