RESOLVED FIXED218912
[Media In GPU Process][MSE] Add infrastructure needed to run MediaPlayerPrivateMediaSourceAVFObjC in the GPU process
https://bugs.webkit.org/show_bug.cgi?id=218912
Summary [Media In GPU Process][MSE] Add infrastructure needed to run MediaPlayerPriva...
Peng Liu
Reported 2020-11-13 10:08:09 PST
We need to add MediaSourcePrivateRemote/RemoteMediaSourceProxy and SourceBufferPrivateRemote/RemoteSourceBufferProxy and setup the IPC messages.
Attachments
WIP patch (123.30 KB, patch)
2020-11-16 08:57 PST, Peng Liu
no flags
Rebased WIP patch (122.35 KB, patch)
2020-11-16 10:07 PST, Peng Liu
ews-feeder: commit-queue-
WIP patch: enable unified build (124.80 KB, patch)
2020-11-16 10:41 PST, Peng Liu
ews-feeder: commit-queue-
WIP patch: fix WPE build failures (128.92 KB, patch)
2020-11-16 10:52 PST, Peng Liu
ews-feeder: commit-queue-
WIP patch: fix WPE build failures again (128.91 KB, patch)
2020-11-16 11:04 PST, Peng Liu
ews-feeder: commit-queue-
WIP patch: fix build failures (126.85 KB, patch)
2020-11-16 12:11 PST, Peng Liu
no flags
WIP patch: fix build failures on WPE and GTK ports (126.90 KB, patch)
2020-11-16 14:04 PST, Peng Liu
no flags
WIP patch: fix build failures on WPE and GTK ports (again) (127.30 KB, patch)
2020-11-16 14:18 PST, Peng Liu
no flags
WIP patch: fix build failures on WPE and GTK ports (127.13 KB, patch)
2020-11-16 14:45 PST, Peng Liu
ews-feeder: commit-queue-
WIP patch: fix build failures on WPE and GTK ports (update WebKit_MESSAGES_IN_FILES in CMakeLists.txt) (130.13 KB, patch)
2020-11-16 15:31 PST, Peng Liu
no flags
Patch (131.10 KB, patch)
2020-11-16 16:04 PST, Peng Liu
eric.carlson: review+
Patch for landing (129.80 KB, patch)
2020-11-16 20:46 PST, Peng Liu
no flags
Peng Liu
Comment 1 2020-11-16 08:57:48 PST Comment hidden (obsolete)
Peng Liu
Comment 2 2020-11-16 09:26:19 PST Comment hidden (obsolete)
Peng Liu
Comment 3 2020-11-16 10:07:11 PST Comment hidden (obsolete)
Peng Liu
Comment 4 2020-11-16 10:41:26 PST Comment hidden (obsolete)
Peng Liu
Comment 5 2020-11-16 10:52:04 PST Comment hidden (obsolete)
Peng Liu
Comment 6 2020-11-16 11:04:10 PST Comment hidden (obsolete)
Peng Liu
Comment 7 2020-11-16 12:11:38 PST Comment hidden (obsolete)
Peng Liu
Comment 8 2020-11-16 14:04:39 PST Comment hidden (obsolete)
Peng Liu
Comment 9 2020-11-16 14:18:00 PST Comment hidden (obsolete)
Peng Liu
Comment 10 2020-11-16 14:45:47 PST Comment hidden (obsolete)
Peng Liu
Comment 11 2020-11-16 15:31:10 PST Comment hidden (obsolete)
Peng Liu
Comment 12 2020-11-16 16:04:59 PST
Eric Carlson
Comment 13 2020-11-16 17:00:41 PST
Comment on attachment 414286 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=414286&action=review > Source/WebCore/platform/graphics/MediaPlayer.cpp:-480 > - m_contentType = contentType; Is this really not needed if we end up in `nextBestMediaEngine`? > Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp:61 > + return { }; You could call `notImplemented()` from all of these stub methods. > Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:62 > +} Ditto > Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:637 > + if (m_remoteEngineIdentifier == MediaPlayerEnums::MediaEngineIdentifier::AVFoundationMSE) { > + auto identifier = RemoteMediaSourceIdentifier::generate(); > + connection().send(Messages::RemoteMediaPlayerProxy::LoadMediaSource(url, identifier), m_id); > + m_mediaSourcePrivate = MediaSourcePrivateRemote::create(m_manager.gpuProcessConnection(), identifier, m_manager.typeCache(m_remoteEngineIdentifier), *this, client); > + } else { You could use an early return here instead of the `else` > Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:107 > +} notImplemented() > Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:85 > +} Ditto
Peng Liu
Comment 14 2020-11-16 20:46:52 PST
Created attachment 414304 [details] Patch for landing
Peng Liu
Comment 15 2020-11-16 20:48:59 PST
Comment on attachment 414286 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=414286&action=review >> Source/WebCore/platform/graphics/MediaPlayer.cpp:-480 >> - m_contentType = contentType; > > Is this really not needed if we end up in `nextBestMediaEngine`? Hmm, we may need it in that case. To be safe, I added the parameter back and changed MediaPlayerPrivate::load() accordingly. >> Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp:61 >> + return { }; > > You could call `notImplemented()` from all of these stub methods. Fixed. >> Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:62 >> +} > > Ditto Fixed. >> Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:637 >> + } else { > > You could use an early return here instead of the `else` Right! Fixed. >> Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:107 >> +} > > notImplemented() Fixed. >> Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:85 >> +} > > Ditto Fixed.
EWS
Comment 16 2020-11-17 09:25:51 PST
Committed r269907: <https://trac.webkit.org/changeset/269907> All reviewed patches have been landed. Closing bug and clearing flags on attachment 414304 [details].
Radar WebKit Bug Importer
Comment 17 2020-11-17 09:26:17 PST
Note You need to log in before you can comment on or make changes to this bug.