web-stories-wp icon indicating copy to clipboard operation
web-stories-wp copied to clipboard

Background Blur based on early trim PR

Open merapi opened this issue 2 years ago â€ĸ 2 comments

Summary

This version of Background Blur is based on the latest version of the new Trimming flow PR. The Media Pipe object is very difficult to cooperate and it often throws errors while switching between no effect and blur effect. In this PR I managed to make it work consistently. The recording part is not yet merged into this version (two media recorders one used to get the camera feed, the second for canvas recording when the blur effect is active).

image

Edges are now smooth so it looks a lot better than the first version: image

Relevant Technical Choices

To-do

User-facing changes

Testing Instructions

  • [ ] This is a non-user-facing change and requires no QA

This PR can be tested by following these steps:

Reviews

Does this PR have a security-related impact?

Does this PR change what data or activity we track or use?

Does this PR have a legal-related impact?

Checklist

  • [ ] This PR addresses an existing issue and I have linked this PR to it in ZenHub
  • [ ] I have tested this code to the best of my abilities
  • [ ] I have verified accessibility to the best of my abilities (docs)
  • [ ] I have verified i18n and l10n (translation, right-to-left layout) to the best of my abilities
  • [ ] This code is covered by automated tests (unit, integration, and/or e2e) to verify it works as intended (docs)
  • [ ] I have added documentation where necessary
  • [ ] I have added a matching Type: XYZ label to the PR

Fixes #11909

merapi avatar Aug 08 '22 09:08 merapi

Plugin builds for 5878aaab2cd6cff0003382487bee37a4f26ac765 are ready :bellhop_bell:!

googleforcreators-bot avatar Aug 08 '22 09:08 googleforcreators-bot

#12022 has been merged, so this can be updated to main to better reflect that actual changes.

barklund avatar Aug 08 '22 14:08 barklund

Summary of the latest updates: You will see two useMediaRecorder instances in the code: mediaRecorder and canvasRecorder. When all effects are disabled (default state) we will do the recording in the old way (mediaRecorder will be the currentRecorder) - this is more performant way than always redrawing the camera stream onto the canvas and recording the canvas (with and without effects) - so it will be as snappy as possible on slower devices when you don't use any effects.

I also fixed https://github.com/GoogleForCreators/web-stories-wp/issues/12033

merapi avatar Aug 18 '22 12:08 merapi

Size Change: +15.4 kB (+1%)

Total Size: 2.7 MB

Filename Size Change
assets/js/6660.js 0 B -101 kB (removed) 🏆
assets/js/wp-story-editor.js 1.36 MB +3.15 kB (0%)
assets/js/6753.js 113 kB +113 kB (new file) 🆕
ℹī¸ View Unchanged
Filename Size
assets/css/carousel-view-rtl.css 702 B
assets/css/carousel-view.css 701 B
assets/css/web-stories-block-rtl.css 4.52 kB
assets/css/web-stories-block.css 4.56 kB
assets/css/web-stories-embed-rtl.css 318 B
assets/css/web-stories-embed.css 317 B
assets/css/web-stories-list-styles-rtl.css 2.36 kB
assets/css/web-stories-list-styles.css 2.39 kB
assets/css/web-stories-theme-style-twentyeleven-rtl.css 102 B
assets/css/web-stories-theme-style-twentyeleven.css 102 B
assets/css/web-stories-theme-style-twentyfifteen-rtl.css 251 B
assets/css/web-stories-theme-style-twentyfifteen.css 251 B
assets/css/web-stories-theme-style-twentyfourteen-rtl.css 287 B
assets/css/web-stories-theme-style-twentyfourteen.css 287 B
assets/css/web-stories-theme-style-twentyseventeen-rtl.css 288 B
assets/css/web-stories-theme-style-twentyseventeen.css 288 B
assets/css/web-stories-theme-style-twentysixteen-rtl.css 224 B
assets/css/web-stories-theme-style-twentysixteen.css 224 B
assets/css/web-stories-theme-style-twentyten-rtl.css 143 B
assets/css/web-stories-theme-style-twentyten.css 143 B
assets/css/web-stories-theme-style-twentytwelve-rtl.css 256 B
assets/css/web-stories-theme-style-twentytwelve.css 256 B
assets/css/web-stories-theme-style-twentytwenty-rtl.css 86 B
assets/css/web-stories-theme-style-twentytwenty.css 86 B
assets/css/web-stories-theme-style-twentytwentyone-rtl.css 326 B
assets/css/web-stories-theme-style-twentytwentyone.css 326 B
assets/css/web-stories-widget-rtl.css 482 B
assets/css/web-stories-widget.css 482 B
assets/css/wp-dashboard-rtl.css 657 B
assets/css/wp-dashboard.css 659 B
assets/css/wp-story-editor-rtl.css 737 B
assets/css/wp-story-editor.css 738 B
assets/js/1512.js 6.15 kB
assets/js/1814.js 7.45 kB
assets/js/2090.js 84.6 kB
assets/js/4319.js 34.9 kB
assets/js/4422.js 49.3 kB
assets/js/5051.js 92.1 kB
assets/js/785.js 68.1 kB
assets/js/9796.js 3.71 kB
assets/js/carousel-view.js 3.41 kB
assets/js/chunk-colorthief.js 2.64 kB
assets/js/chunk-ffmpeg.js 5.89 kB
assets/js/chunk-focus-visible.js 1.01 kB
assets/js/chunk-getStoryMarkup.js 12.3 kB
assets/js/chunk-html-to-image.js 4.5 kB
assets/js/chunk-opentype.js 96 B
assets/js/chunk-react-calendar.js 12.5 kB
assets/js/chunk-react-color.js 44.3 kB
assets/js/chunk-web-animations-js.js 14.6 kB
assets/js/chunk-web-stories-template-0-metaData.js 545 B
assets/js/chunk-web-stories-template-0.js 11.4 kB
assets/js/chunk-web-stories-template-1-metaData.js 539 B
assets/js/chunk-web-stories-template-1.js 9.61 kB
assets/js/chunk-web-stories-template-10-metaData.js 533 B
assets/js/chunk-web-stories-template-10.js 7.37 kB
assets/js/chunk-web-stories-template-11-metaData.js 539 B
assets/js/chunk-web-stories-template-11.js 9.09 kB
assets/js/chunk-web-stories-template-12-metaData.js 497 B
assets/js/chunk-web-stories-template-12.js 9.7 kB
assets/js/chunk-web-stories-template-13-metaData.js 525 B
assets/js/chunk-web-stories-template-13.js 7.4 kB
assets/js/chunk-web-stories-template-14-metaData.js 582 B
assets/js/chunk-web-stories-template-14.js 7.37 kB
assets/js/chunk-web-stories-template-15-metaData.js 544 B
assets/js/chunk-web-stories-template-15.js 9 kB
assets/js/chunk-web-stories-template-16-metaData.js 588 B
assets/js/chunk-web-stories-template-16.js 10.9 kB
assets/js/chunk-web-stories-template-17-metaData.js 539 B
assets/js/chunk-web-stories-template-17.js 9.2 kB
assets/js/chunk-web-stories-template-18-metaData.js 585 B
assets/js/chunk-web-stories-template-18.js 9.91 kB
assets/js/chunk-web-stories-template-19-metaData.js 501 B
assets/js/chunk-web-stories-template-19.js 10.8 kB
assets/js/chunk-web-stories-template-2-metaData.js 586 B
assets/js/chunk-web-stories-template-2.js 9.3 kB
assets/js/chunk-web-stories-template-20-metaData.js 548 B
assets/js/chunk-web-stories-template-20.js 9.01 kB
assets/js/chunk-web-stories-template-21-metaData.js 535 B
assets/js/chunk-web-stories-template-21.js 9.85 kB
assets/js/chunk-web-stories-template-22-metaData.js 525 B
assets/js/chunk-web-stories-template-22.js 7.83 kB
assets/js/chunk-web-stories-template-23-metaData.js 605 B
assets/js/chunk-web-stories-template-23.js 7.48 kB
assets/js/chunk-web-stories-template-24-metaData.js 516 B
assets/js/chunk-web-stories-template-24.js 11.7 kB
assets/js/chunk-web-stories-template-25-metaData.js 544 B
assets/js/chunk-web-stories-template-25.js 7.06 kB
assets/js/chunk-web-stories-template-26-metaData.js 601 B
assets/js/chunk-web-stories-template-26.js 7.27 kB
assets/js/chunk-web-stories-template-27-metaData.js 542 B
assets/js/chunk-web-stories-template-27.js 7.82 kB
assets/js/chunk-web-stories-template-28-metaData.js 532 B
assets/js/chunk-web-stories-template-28.js 9.07 kB
assets/js/chunk-web-stories-template-29-metaData.js 562 B
assets/js/chunk-web-stories-template-29.js 9.25 kB
assets/js/chunk-web-stories-template-3-metaData.js 539 B
assets/js/chunk-web-stories-template-3.js 8.42 kB
assets/js/chunk-web-stories-template-30-metaData.js 576 B
assets/js/chunk-web-stories-template-30.js 7.89 kB
assets/js/chunk-web-stories-template-31-metaData.js 502 B
assets/js/chunk-web-stories-template-31.js 10.3 kB
assets/js/chunk-web-stories-template-32-metaData.js 552 B
assets/js/chunk-web-stories-template-32.js 13.3 kB
assets/js/chunk-web-stories-template-33-metaData.js 492 B
assets/js/chunk-web-stories-template-33.js 9.07 kB
assets/js/chunk-web-stories-template-34-metaData.js 571 B
assets/js/chunk-web-stories-template-34.js 7.58 kB
assets/js/chunk-web-stories-template-35-metaData.js 566 B
assets/js/chunk-web-stories-template-35.js 8.91 kB
assets/js/chunk-web-stories-template-36-metaData.js 577 B
assets/js/chunk-web-stories-template-36.js 12.7 kB
assets/js/chunk-web-stories-template-37-metaData.js 528 B
assets/js/chunk-web-stories-template-37.js 6.71 kB
assets/js/chunk-web-stories-template-38-metaData.js 572 B
assets/js/chunk-web-stories-template-38.js 7.94 kB
assets/js/chunk-web-stories-template-39-metaData.js 588 B
assets/js/chunk-web-stories-template-39.js 8.08 kB
assets/js/chunk-web-stories-template-4-metaData.js 564 B
assets/js/chunk-web-stories-template-4.js 12.7 kB
assets/js/chunk-web-stories-template-40-metaData.js 557 B
assets/js/chunk-web-stories-template-40.js 10.2 kB
assets/js/chunk-web-stories-template-41-metaData.js 572 B
assets/js/chunk-web-stories-template-41.js 7.75 kB
assets/js/chunk-web-stories-template-42-metaData.js 521 B
assets/js/chunk-web-stories-template-42.js 7 kB
assets/js/chunk-web-stories-template-43-metaData.js 557 B
assets/js/chunk-web-stories-template-43.js 8.76 kB
assets/js/chunk-web-stories-template-44-metaData.js 584 B
assets/js/chunk-web-stories-template-44.js 11.1 kB
assets/js/chunk-web-stories-template-45-metaData.js 565 B
assets/js/chunk-web-stories-template-45.js 7.52 kB
assets/js/chunk-web-stories-template-46-metaData.js 531 B
assets/js/chunk-web-stories-template-46.js 5.22 kB
assets/js/chunk-web-stories-template-47-metaData.js 592 B
assets/js/chunk-web-stories-template-47.js 9.42 kB
assets/js/chunk-web-stories-template-48-metaData.js 555 B
assets/js/chunk-web-stories-template-48.js 9.09 kB
assets/js/chunk-web-stories-template-49-metaData.js 518 B
assets/js/chunk-web-stories-template-49.js 9.69 kB
assets/js/chunk-web-stories-template-5-metaData.js 556 B
assets/js/chunk-web-stories-template-5.js 9.94 kB
assets/js/chunk-web-stories-template-50-metaData.js 503 B
assets/js/chunk-web-stories-template-50.js 9.15 kB
assets/js/chunk-web-stories-template-51-metaData.js 526 B
assets/js/chunk-web-stories-template-51.js 10.4 kB
assets/js/chunk-web-stories-template-52-metaData.js 602 B
assets/js/chunk-web-stories-template-52.js 10.4 kB
assets/js/chunk-web-stories-template-53-metaData.js 553 B
assets/js/chunk-web-stories-template-53.js 5.78 kB
assets/js/chunk-web-stories-template-54-metaData.js 547 B
assets/js/chunk-web-stories-template-54.js 7.67 kB
assets/js/chunk-web-stories-template-55-metaData.js 573 B
assets/js/chunk-web-stories-template-55.js 7.13 kB
assets/js/chunk-web-stories-template-56-metaData.js 542 B
assets/js/chunk-web-stories-template-56.js 9.87 kB
assets/js/chunk-web-stories-template-57-metaData.js 527 B
assets/js/chunk-web-stories-template-57.js 14.9 kB
assets/js/chunk-web-stories-template-58-metaData.js 555 B
assets/js/chunk-web-stories-template-58.js 5.74 kB
assets/js/chunk-web-stories-template-59-metaData.js 590 B
assets/js/chunk-web-stories-template-59.js 8.96 kB
assets/js/chunk-web-stories-template-6-metaData.js 569 B
assets/js/chunk-web-stories-template-6.js 7.07 kB
assets/js/chunk-web-stories-template-60-metaData.js 510 B
assets/js/chunk-web-stories-template-60.js 9.51 kB
assets/js/chunk-web-stories-template-7-metaData.js 569 B
assets/js/chunk-web-stories-template-7.js 7.46 kB
assets/js/chunk-web-stories-template-8-metaData.js 569 B
assets/js/chunk-web-stories-template-8.js 8.93 kB
assets/js/chunk-web-stories-template-9-metaData.js 581 B
assets/js/chunk-web-stories-template-9.js 8.46 kB
assets/js/chunk-web-stories-templates.js 845 B
assets/js/chunk-web-stories-textset-0.js 5.06 kB
assets/js/chunk-web-stories-textset-1.js 6.65 kB
assets/js/chunk-web-stories-textset-2.js 7.65 kB
assets/js/chunk-web-stories-textset-3.js 15.1 kB
assets/js/chunk-web-stories-textset-4.js 4.15 kB
assets/js/chunk-web-stories-textset-5.js 5.47 kB
assets/js/chunk-web-stories-textset-6.js 5.28 kB
assets/js/chunk-web-stories-textset-7.js 10.2 kB
assets/js/generateBlurhash.worker.worker.js 1.1 kB
assets/js/imgareaselect.js 3.77 kB
assets/js/lightbox.js 550 B
assets/js/tinymce-button.js 2.85 kB
assets/js/web-stories-activation-notice.js 25.4 kB
assets/js/web-stories-block.js 18 kB
assets/js/web-stories-embed.js 20 B
assets/js/web-stories-widget.js 587 B
assets/js/wp-dashboard.js 64.1 kB

compressed-size-action

github-actions[bot] avatar Sep 05 '22 10:09 github-actions[bot]

When switching on/off the blur background on Firefox, the image/video shakes/blinks/presents a weird behavior. Video below:

https://images.zenhubusercontent.com/235435637/dfc6390c-3c79-4894-b438-3c89660bf4f4/2022_09_06_10_58_55.mp4

felipebochehin87 avatar Sep 08 '22 14:09 felipebochehin87

Screenshot 2022-09-12 at 14 32 38 The dialog seems a little confusing. Why don't any of the dropdown have label / legend to explain what these are. Depending on the name of your webcam, it really might not be clear what is happening here.

spacedmonkey avatar Sep 12 '22 13:09 spacedmonkey

Still not seeing this functionality working in safari. https://user-images.githubusercontent.com/237508/189669000-cdc04a62-a3f2-4c80-be5e-f0503eab0748.mov

spacedmonkey avatar Sep 12 '22 13:09 spacedmonkey

Still seeing the permissions popup in firefox.

https://user-images.githubusercontent.com/237508/189669720-7634e4f5-1f6d-46ef-92ed-a7def99ab61e.mov

spacedmonkey avatar Sep 12 '22 13:09 spacedmonkey

Still seeing the permissions popup in firefox.

What happens when you select the first camera again? What happens after you refresh the page and select the first/second camera?

That issue is P3 and won't be done now, but those answers will still be appreciated (here or in the corresponding ticket) since it's not happening for me on two machines ("remember permission" is not enabled).

merapi avatar Sep 12 '22 15:09 merapi

The dialog seems a little confusing. Why don't any of the dropdown have label / legend to explain what these are. Depending on the name of your webcam, it really might not be clear what is happening here.

I guess there was no design/UX on this. I'm also not a fan of inputs without labels (or rather one-time labels, until you select something).

merapi avatar Sep 12 '22 15:09 merapi

Still not seeing this functionality working in safari.

Yep, Safari is tricky (when fetching frames from the canvas), still testing.

merapi avatar Sep 12 '22 15:09 merapi

Noticed another weird issues with the settings dialog. See video.

https://user-images.githubusercontent.com/237508/189875958-87f31562-1bb6-4e20-bd56-6c2afd96c742.mov

spacedmonkey avatar Sep 13 '22 10:09 spacedmonkey

Noticed another weird issues with the settings dialog. See video.

Screen.Recording.2022-09-13.at.11.14.03.mov

What browser is this? any errors in the console?

merapi avatar Sep 13 '22 10:09 merapi

What browser is this? any errors in the console?

Chrome 104. Nope.

spacedmonkey avatar Sep 13 '22 10:09 spacedmonkey

Seeing slow down of image in safari. https://user-images.githubusercontent.com/237508/190190745-4cd586d1-1e16-4403-ad02-b3ae0e38bd96.mov

And other issues in firefox. https://user-images.githubusercontent.com/237508/190190940-63efdbe5-bb73-4582-9cd9-bd60a170b504.mov

spacedmonkey avatar Sep 14 '22 15:09 spacedmonkey

Seeing slow down of image in safari.

That is expected. It will never match the native blur or get close to it, tho it looks better on my Macbook Air.

And other issues in firefox.

~That is only happening on 2+ try in the same session, right?~ Probably fixed? PTAL

merapi avatar Sep 14 '22 15:09 merapi

Not seeing device list issue anymore.

spacedmonkey avatar Sep 14 '22 16:09 spacedmonkey

Safari I am seeing this error when I try active blur background.

Screenshot 2022-09-14 at 17 16 29 Screenshot 2022-09-14 at 17 15 57

spacedmonkey avatar Sep 14 '22 16:09 spacedmonkey

Not seeing firefox issues now. 🎉

spacedmonkey avatar Sep 14 '22 16:09 spacedmonkey

Safari I am seeing this error when I try active blur background.

Yes, it's WASM and some of its memory issues. I added a try/catch there that's the best we can do.

merapi avatar Sep 14 '22 16:09 merapi

Yes, it's WASM and some of its memory issues. I added a try/catch there that's the best we can do.

More testing, I am seeing the slow version in safari. Blur background works but it is very slow in safari.

https://user-images.githubusercontent.com/237508/190210854-10d83e0a-ca09-4916-bff4-c07e94a49a9f.mov

spacedmonkey avatar Sep 14 '22 16:09 spacedmonkey