Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(525)

Issue 1467103003: Basic use implementation for MediaStream from Canvas: captureStream() (Closed)

Created:
5 years, 1 month ago by emircan
Modified:
5 years ago
CC:
abarth-chromium, ajuma+watch-canvas_chromium.org, blink-reviews, blink-reviews-html_chromium.org, Rik, chromium-reviews, dglazkov+blink, dshwang, tommyw+watchlist_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Basic use implementation for MediaStream from Canvas: captureStream() This CL handles captureStream() case where frame rate is omitted and "the user agent should capture new frames each time that the content of the canvas changes". HTMLCanvasElement "pushes" new frames to AutoCanvasDrawListener when it is ready. Please look at the detailed updated design doc here: https://goo.gl/BFJY52 BUG=254990 TEST=Ran the demos listed in [0] with MediaCaptureFromElement flag enabled. [0] https://docs.google.com/document/d/1JmWfOtUP6ZqsYJ--U8y0OtHkBt-VyjX4N-JqIjb1t78/edit#heading=h.gee451fatrq7 Committed: https://crrev.com/15d1bb360b49621c833febd823b68954de99802b Cr-Commit-Position: refs/heads/master@{#363451}

Patch Set 1 : #

Total comments: 27

Patch Set 2 : peria@ comments. #

Patch Set 3 : Rebase #

Total comments: 8

Patch Set 4 : junov@ comments. #

Patch Set 5 : Rebase #

Total comments: 16

Patch Set 6 : perkj@ comments. #

Total comments: 34

Patch Set 7 : perkj@ comments. #

Patch Set 8 : esprehn@ comments. #

Patch Set 9 : esprehn@ and haraken@ comments. #

Patch Set 10 : Adding LayoutTests. #

Total comments: 3

Patch Set 11 : Updated LayoutTests. #

Total comments: 28

Patch Set 12 : Rebase perkj@ comments. #

Total comments: 2

Patch Set 13 : nits and updated layouttests. #

Total comments: 4

Patch Set 14 : haraken@ comments. #

Total comments: 8

Patch Set 15 : junov@ nits. #

Patch Set 16 : Handle !webrtc platforms. #

Patch Set 17 : Added new interface to LayoutTests. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+872 lines, -5 lines) Patch
M content/content_renderer.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +2 lines, -0 lines 0 comments Download
A content/renderer/media/canvas_capture_handler.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +76 lines, -0 lines 0 comments Download
A content/renderer/media/canvas_capture_handler.cc View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +178 lines, -0 lines 0 comments Download
M content/renderer/renderer_blink_platform_impl.h View 1 2 3 4 5 6 7 8 9 10 11 2 chunks +6 lines, -0 lines 0 comments Download
M content/renderer/renderer_blink_platform_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 4 chunks +17 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html View 1 2 3 4 5 6 7 8 9 10 1 chunk +19 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +70 lines, -0 lines 0 comments Download
A third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +16 lines, -0 lines 0 comments Download
M third_party/WebKit/LayoutTests/webexposed/element-instance-property-listing-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/LayoutTests/webexposed/global-interface-listing-expected.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 chunks +5 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/core.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 3 chunks +2 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/html/HTMLCanvasElement.h View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +9 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 14 4 chunks +42 lines, -1 line 0 comments Download
A third_party/WebKit/Source/core/html/canvas/CanvasDrawListener.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +24 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/AutoCanvasDrawListener.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +31 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/AutoCanvasDrawListener.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +33 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +37 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.cpp View 1 2 3 1 chunk +58 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.idl View 1 chunk +11 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/DEPS View 1 chunk +9 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.h View 1 2 3 4 5 6 7 8 1 chunk +25 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.cpp View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +43 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.idl View 1 2 3 1 chunk +10 lines, -0 lines 0 comments Download
A third_party/WebKit/Source/modules/mediacapturefromelement/OWNERS View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 chunk +2 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/modules/mediastream/MediaStream.h View 2 chunks +3 lines, -1 line 0 comments Download
M third_party/WebKit/Source/modules/modules.gypi View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +8 lines, -0 lines 0 comments Download
M third_party/WebKit/Source/platform/RuntimeEnabledFeatures.in View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +1 line, -0 lines 0 comments Download
M third_party/WebKit/Source/platform/blink_platform.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +2 lines, -0 lines 0 comments Download
A + third_party/WebKit/Source/platform/exported/WebCanvasCaptureHandler.cpp View 1 2 3 1 chunk +2 lines, -2 lines 0 comments Download
A third_party/WebKit/Source/platform/exported/WebSkImage.cpp View 1 chunk +56 lines, -0 lines 0 comments Download
M third_party/WebKit/public/blink_headers.gypi View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +2 lines, -0 lines 0 comments Download
M third_party/WebKit/public/platform/Platform.h View 1 2 3 4 5 6 7 8 9 10 11 3 chunks +4 lines, -0 lines 0 comments Download
A third_party/WebKit/public/platform/WebCanvasCaptureHandler.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +25 lines, -0 lines 0 comments Download
A third_party/WebKit/public/platform/WebSkImage.h View 1 2 3 4 5 6 7 8 9 10 11 12 1 chunk +43 lines, -0 lines 0 comments Download

Messages

Total messages: 75 (34 generated)
emircan
Please take a look.
5 years ago (2015-11-24 03:14:59 UTC) #10
peria
I put some comments around Oilpan infrastructure. To learn about Oilpan, please read this presentation ...
5 years ago (2015-11-24 05:50:22 UTC) #12
emircan
Thanks peria@. I wrongly assumed CanvasDrawListener* would be WillBe* as it is following HTMLCanvasElement, but ...
5 years ago (2015-11-24 22:16:52 UTC) #14
esprehn
Non const refs are fine in blink code, they make it clear you don't expect ...
5 years ago (2015-11-24 22:24:19 UTC) #15
esprehn
Non const refs are fine in blink code, they make it clear you don't expect ...
5 years ago (2015-11-24 22:24:19 UTC) #16
Justin Novosad
Needs layout tests. https://codereview.chromium.org/1467103003/diff/140001/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp File third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp (right): https://codereview.chromium.org/1467103003/diff/140001/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp#newcode408 third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp:408: ASSERT(status == NormalSourceImageStatus); Are you sure ...
5 years ago (2015-11-25 02:38:05 UTC) #17
emircan
I am starting to work on layout tests. https://codereview.chromium.org/1467103003/diff/140001/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp File third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp (right): https://codereview.chromium.org/1467103003/diff/140001/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp#newcode408 third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp:408: ASSERT(status ...
5 years ago (2015-11-26 01:03:52 UTC) #19
perkj_chrome
Nice. Sorry I have not looked at this in a while. I focused on the ...
5 years ago (2015-11-26 18:52:14 UTC) #20
Justin Novosad
On 2015/11/26 01:03:52, emircan wrote: > On 2015/11/25 02:38:05, Justin Novosad wrote: > > This ...
5 years ago (2015-11-27 01:38:12 UTC) #21
emircan
https://codereview.chromium.org/1467103003/diff/200001/content/renderer/media/canvas_capture_handler.cc File content/renderer/media/canvas_capture_handler.cc (right): https://codereview.chromium.org/1467103003/diff/200001/content/renderer/media/canvas_capture_handler.cc#newcode23 content/renderer/media/canvas_capture_handler.cc:23: canvas_handler) On 2015/11/26 18:52:14, perkj wrote: > Have you ...
5 years ago (2015-12-01 00:25:45 UTC) #22
emircan
On 2015/11/27 01:38:12, Justin Novosad wrote: > On 2015/11/26 01:03:52, emircan wrote: > > > ...
5 years ago (2015-12-01 00:28:31 UTC) #23
perkj_chrome
Keep up the good work!, Changing w3c specs and the world is not easy. Again, ...
5 years ago (2015-12-01 19:26:35 UTC) #26
esprehn
This is looking pretty good. https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.cc File content/renderer/media/canvas_capture_handler.cc (right): https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.cc#newcode169 content/renderer/media/canvas_capture_handler.cc:169: if (!delegate_) how do ...
5 years ago (2015-12-01 20:04:27 UTC) #28
emircan
https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.cc File content/renderer/media/canvas_capture_handler.cc (right): https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.cc#newcode47 content/renderer/media/canvas_capture_handler.cc:47: void CanvasCaptureHandler::VideoCapturerSource::GetCurrentSupportedFormats( On 2015/12/01 19:26:34, perkj wrote: > nit: ...
5 years ago (2015-12-01 21:07:34 UTC) #30
esprehn
haraken@ I thought partial interfaces could be implemented using static methods? I don't think we ...
5 years ago (2015-12-01 23:50:29 UTC) #32
esprehn
Looking at other partial interfaces they're all static methods, are you sure you need to ...
5 years ago (2015-12-01 23:53:53 UTC) #33
haraken
On 2015/12/01 23:53:53, esprehn wrote: > Looking at other partial interfaces they're all static methods, ...
5 years ago (2015-12-02 00:02:21 UTC) #34
emircan
Thanks for the help. I changed it to STATIC_ONLY class and it is still fine ...
5 years ago (2015-12-02 00:20:47 UTC) #35
Justin Novosad
https://codereview.chromium.org/1467103003/diff/420001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-output.html File third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-output.html (right): https://codereview.chromium.org/1467103003/diff/420001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-output.html#newcode31 third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-output.html:31: for (i = 0; i < 10; i++) { ...
5 years ago (2015-12-02 21:08:16 UTC) #39
emircan
Thanks for the review junov@. My goal in that test was to compare the output ...
5 years ago (2015-12-03 10:58:21 UTC) #40
perkj_chrome
content/renderer/media looks good to me with the following nits. https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.h File content/renderer/media/canvas_capture_handler.h (right): https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.h#newcode29 content/renderer/media/canvas_capture_handler.h:29: ...
5 years ago (2015-12-03 13:40:21 UTC) #41
Justin Novosad
https://codereview.chromium.org/1467103003/diff/440001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html File third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html (right): https://codereview.chromium.org/1467103003/diff/440001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html#newcode1 third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-creation.html:1: <!DOCTYPE html> Missing -expected.txt for this test https://codereview.chromium.org/1467103003/diff/440001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html File ...
5 years ago (2015-12-03 15:44:37 UTC) #42
emircan
Thanks perkj@. I responded to the nits below. https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.h File content/renderer/media/canvas_capture_handler.h (right): https://codereview.chromium.org/1467103003/diff/240001/content/renderer/media/canvas_capture_handler.h#newcode29 content/renderer/media/canvas_capture_handler.h:29: blink::WebMediaStream* ...
5 years ago (2015-12-03 18:43:52 UTC) #43
esprehn
lgtm for the C++ in modules/ with the nits fixed, please fix the layout tests ...
5 years ago (2015-12-03 18:47:35 UTC) #44
perkj_chrome
content/renderer/media lgtm with a nit. https://codereview.chromium.org/1467103003/diff/460001/content/renderer/media/canvas_capture_handler.cc File content/renderer/media/canvas_capture_handler.cc (right): https://codereview.chromium.org/1467103003/diff/460001/content/renderer/media/canvas_capture_handler.cc#newcode91 content/renderer/media/canvas_capture_handler.cc:91: new CanvasCaptureHandler::VideoCapturerSource(this)); just inject ...
5 years ago (2015-12-03 19:15:58 UTC) #45
emircan
Thanks for the comments. I addressed your nits below. I rewrote CanvasCaptureMediaStream-events-and-exceptions.html test based on ...
5 years ago (2015-12-04 03:23:25 UTC) #47
emircan
sievers@chromium.org: Please review changes in content/renderer/renderer_blink_platform_impl.* haraken@chromium.org: Please review changes in third_party/WebKit/Source/modules/*
5 years ago (2015-12-04 03:28:46 UTC) #49
haraken
modules/ LGTM https://codereview.chromium.org/1467103003/diff/500001/third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h File third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h (right): https://codereview.chromium.org/1467103003/diff/500001/third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h#newcode19 third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h:19: USING_GARBAGE_COLLECTED_MIXIN(CanvasCaptureMediaStream); Remove this. https://codereview.chromium.org/1467103003/diff/500001/third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.cpp File third_party/WebKit/Source/modules/mediacapturefromelement/HTMLCanvasElementCapture.cpp (right): ...
5 years ago (2015-12-04 03:55:07 UTC) #51
emircan
https://codereview.chromium.org/1467103003/diff/500001/third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h File third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h (right): https://codereview.chromium.org/1467103003/diff/500001/third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h#newcode19 third_party/WebKit/Source/modules/mediacapturefromelement/CanvasCaptureMediaStream.h:19: USING_GARBAGE_COLLECTED_MIXIN(CanvasCaptureMediaStream); On 2015/12/04 03:55:07, haraken wrote: > > Remove ...
5 years ago (2015-12-04 04:46:15 UTC) #52
Justin Novosad
LayoutTests lgtm with minor corrections. https://codereview.chromium.org/1467103003/diff/520001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html File third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html (right): https://codereview.chromium.org/1467103003/diff/520001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html#newcode11 third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html:11: description("Exercises the potential events ...
5 years ago (2015-12-04 14:45:29 UTC) #53
Justin Novosad
https://codereview.chromium.org/1467103003/diff/520001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html File third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html (right): https://codereview.chromium.org/1467103003/diff/520001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html#newcode60 third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html:60: finishJSTest(); On 2015/12/04 14:45:29, Justin Novosad wrote: > Here ...
5 years ago (2015-12-04 14:49:24 UTC) #54
no sievers
content/renderer/renderer_blink_platform_impl.* and gyp lgtm
5 years ago (2015-12-04 18:11:00 UTC) #55
emircan
Thanks. https://codereview.chromium.org/1467103003/diff/520001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html File third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html (right): https://codereview.chromium.org/1467103003/diff/520001/third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html#newcode60 third_party/WebKit/LayoutTests/fast/mediacapturefromelement/CanvasCaptureMediaStream-events-and-exceptions.html:60: finishJSTest(); On 2015/12/04 14:49:24, Justin Novosad wrote: > ...
5 years ago (2015-12-04 18:49:37 UTC) #56
Rick Byers
Source/modules/mediacapturefromelement/DEPS LGTM (presubmit seems over-concerned about this - crbug.com/545323?)
5 years ago (2015-12-04 19:48:33 UTC) #60
cpu_(ooo_6.6-7.5)
rubberstamp lgtm given https://code.google.com/p/chromium/issues/detail?id=545323
5 years ago (2015-12-04 20:04:25 UTC) #62
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1467103003/670001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1467103003/670001
5 years ago (2015-12-07 10:59:28 UTC) #68
commit-bot: I haz the power
Committed patchset #17 (id:670001)
5 years ago (2015-12-07 11:27:03 UTC) #70
commit-bot: I haz the power
Patchset 17 (id:??) landed as https://crrev.com/15d1bb360b49621c833febd823b68954de99802b Cr-Commit-Position: refs/heads/master@{#363451}
5 years ago (2015-12-07 11:27:38 UTC) #72
Peter Mayo
On 2015/12/07 11:27:38, commit-bot: I haz the power wrote: > Patchset 17 (id:??) landed as ...
5 years ago (2015-12-07 16:20:52 UTC) #73
pdr.
On 2015/12/07 at 16:20:52, petermayo wrote: > On 2015/12/07 11:27:38, commit-bot: I haz the power ...
5 years ago (2015-12-07 18:11:41 UTC) #74
emircan
5 years ago (2015-12-07 18:44:47 UTC) #75
Message was sent while issue was closed.
On 2015/12/07 18:11:41, pdr wrote:
> On 2015/12/07 at 16:20:52, petermayo wrote:
> > On 2015/12/07 11:27:38, commit-bot: I haz the power wrote:
> > > Patchset 17 (id:??) landed as
> > > https://crrev.com/15d1bb360b49621c833febd823b68954de99802b
> > > Cr-Commit-Position: refs/heads/master@{#363451}
> > 
> > I get 
> > In file included from
> ../../content/renderer/renderer_blink_platform_impl.cc:61:
> > ../../content/renderer/media/canvas_capture_handler.h:44:34: error:
> [chromium-style] Overriding method must be marked with 'override' or 'final'.
> >   virtual ~CanvasCaptureHandler();
> > 
> > 
> > Anyone else see something like that?
> 
> This is now happening on the asan bots, see:
>
https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Linux%20ASAN/b...

I applied  a fix on: https://codereview.chromium.org/1510593002/

Powered by Google App Engine
This is Rietveld 408576698