[webkit-changes] [WebKit/WebKit] 34b2d0: Move MediaRecorderPrivateWriterAVFObjC to GPU process
Jean-Yves Avenard
noreply at github.com
Wed Dec 18 07:31:44 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 34b2d01aae84eaca2ab099ff4d1cc5b6e89a6b69
https://github.com/WebKit/WebKit/commit/34b2d01aae84eaca2ab099ff4d1cc5b6e89a6b69
Author: Jean-Yves Avenard <jya at apple.com>
Date: 2024-12-18 (Wed, 18 Dec 2024)
Changed paths:
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/MediaSample.h
M Source/WebCore/platform/MediaStrategy.cpp
M Source/WebCore/platform/MediaStrategy.h
M Source/WebCore/platform/mediarecorder/MediaRecorderPrivateWriter.cpp
M Source/WebKit/CMakeLists.txt
M Source/WebKit/DerivedSources-input.xcfilelist
M Source/WebKit/DerivedSources-output.xcfilelist
M Source/WebKit/DerivedSources.make
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
M Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
A Source/WebKit/GPUProcess/media/RemoteMediaRecorderPrivateWriterManager.cpp
A Source/WebKit/GPUProcess/media/RemoteMediaRecorderPrivateWriterManager.h
A Source/WebKit/GPUProcess/media/RemoteMediaRecorderPrivateWriterManager.messages.in
A Source/WebKit/GPUProcess/media/RemoteTrackInfo.h
A Source/WebKit/GPUProcess/media/RemoteTrackInfo.serialization.in
M Source/WebKit/Scripts/webkit/messages.py
M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp
M Source/WebKit/Shared/WTFArgumentCoders.serialization.in
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
A Source/WebKit/WebProcess/GPU/media/RemoteMediaRecorderPrivateWriter.cpp
A Source/WebKit/WebProcess/GPU/media/RemoteMediaRecorderPrivateWriter.h
A Source/WebKit/WebProcess/GPU/media/RemoteMediaRecorderPrivateWriterIdentifier.h
M Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp
M Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.h
Log Message:
-----------
Move MediaRecorderPrivateWriterAVFObjC to GPU process
https://bugs.webkit.org/show_bug.cgi?id=284705
rdar://141503370
Reviewed by Youenn Fablet.
On iOS, the AVAssetWriter can't run in the Web Process as it is blocked by the sandbox.
We need to move it to the more priviledged GPU process.
We add a MediaStrategy createMediaRecorderPrivateWriter which will return a
RemoteMediaRecorderPrivateWriter.
MediaRecorderPrivateWriter requests will be handled by the RemoteMediaRecorderPrivateWriterManager
which keeps a map of RemoteMediaRecorderPrivateWriterProxy the communictates with their
MediaRecorderPrivateWriterAVFObjC.
The muxed data is then returned to the content proceess's MediaRecorder object.
Communication between the RemoteMediaRecorderPrivateWriter and its RemoteMediaRecorderPrivateWriterProxy
is asynchronous except on setup where we use a sync call to create the tracks.
No change in observable behaviours. Covered by existing tests.
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/MediaSample.h:
* Source/WebCore/platform/MediaStrategy.cpp:
(WebCore::MediaStrategy::createMediaRecorderPrivateWriter const):
* Source/WebCore/platform/MediaStrategy.h:
* Source/WebCore/platform/mediarecorder/MediaRecorderPrivateWriter.cpp:
(WebCore::MediaRecorderPrivateWriter::create):
* Source/WebKit/CMakeLists.txt:
* Source/WebKit/DerivedSources-input.xcfilelist:
* Source/WebKit/DerivedSources-output.xcfilelist:
* Source/WebKit/DerivedSources.make:
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp:
(WebKit::GPUConnectionToWebProcess::allowsExitUnderMemoryPressure const):
(WebKit::GPUConnectionToWebProcess::remoteMediaRecorderPrivateWriterManager):
(WebKit::GPUConnectionToWebProcess::protectedRemoteMediaRecorderPrivateWriterManager):
(WebKit::GPUConnectionToWebProcess::dispatchMessage):
(WebKit::GPUConnectionToWebProcess::dispatchSyncMessage):
* Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h:
* Source/WebKit/GPUProcess/media/RemoteMediaRecorderPrivateWriterManager.cpp: Added.
(WebKit::RemoteMediaRecorderPrivateWriterProxy::create):
(WebKit::RemoteMediaRecorderPrivateWriterProxy::addAudioTrack):
(WebKit::RemoteMediaRecorderPrivateWriterProxy::addVideoTrack):
(WebKit::RemoteMediaRecorderPrivateWriterProxy::allTracksAdded):
(WebKit::RemoteMediaRecorderPrivateWriterProxy::writeFrames):
(WebKit::RemoteMediaRecorderPrivateWriterProxy::close):
(WebKit::RemoteMediaRecorderPrivateWriterProxy::takeData):
(WebKit::RemoteMediaRecorderPrivateWriterProxy::RemoteMediaRecorderPrivateWriterProxy):
(WebKit::RemoteMediaRecorderPrivateWriterManager::RemoteMediaRecorderPrivateWriterManager):
(WebKit::RemoteMediaRecorderPrivateWriterManager::ref const):
(WebKit::RemoteMediaRecorderPrivateWriterManager::deref const):
(WebKit::RemoteMediaRecorderPrivateWriterManager::create):
(WebKit::RemoteMediaRecorderPrivateWriterManager::addAudioTrack):
(WebKit::RemoteMediaRecorderPrivateWriterManager::addVideoTrack):
(WebKit::RemoteMediaRecorderPrivateWriterManager::allTracksAdded):
(WebKit::RemoteMediaRecorderPrivateWriterManager::writeFrames):
(WebKit::RemoteMediaRecorderPrivateWriterManager::close):
(WebKit::RemoteMediaRecorderPrivateWriterManager::sharedPreferencesForWebProcess const):
* Source/WebKit/GPUProcess/media/RemoteMediaRecorderPrivateWriterManager.h: Added.
(WebKit::RemoteMediaRecorderPrivateWriterManager::allowsExitUnderMemoryPressure):
* Source/WebKit/GPUProcess/media/RemoteMediaRecorderPrivateWriterManager.messages.in: Added.
* Source/WebKit/GPUProcess/media/RemoteTrackInfo.h: Added.
(WebKit::RemoteAudioInfo::RemoteAudioInfo):
(WebKit::RemoteAudioInfo::toAudioInfo const):
(WebKit::RemoteVideoInfo::RemoteVideoInfo):
(WebKit::RemoteVideoInfo::toVideoInfo const):
* Source/WebKit/GPUProcess/media/RemoteTrackInfo.serialization.in: Added.
* Source/WebKit/Scripts/webkit/messages.py:
(serialized_identifiers):
(conditions_for_header):
(headers_for_type):
* Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp:
(IPC::serializedIdentifiers):
* Source/WebKit/Shared/WTFArgumentCoders.serialization.in:
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/media/RemoteMediaRecorderPrivateWriter.cpp: Added.
(WebKit::RemoteMediaRecorderPrivateWriter::create):
(WebKit::RemoteMediaRecorderPrivateWriter::RemoteMediaRecorderPrivateWriter):
(WebKit::RemoteMediaRecorderPrivateWriter::addAudioTrack):
(WebKit::RemoteMediaRecorderPrivateWriter::addVideoTrack):
(WebKit::RemoteMediaRecorderPrivateWriter::allTracksAdded):
(WebKit::RemoteMediaRecorderPrivateWriter::writeFrames):
(WebKit::RemoteMediaRecorderPrivateWriter::writeFrame):
(WebKit::RemoteMediaRecorderPrivateWriter::close):
* Source/WebKit/WebProcess/GPU/media/RemoteMediaRecorderPrivateWriter.h: Added.
* Source/WebKit/WebProcess/GPU/media/RemoteMediaRecorderPrivateWriterIdentifier.h: Copied from Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.h.
* Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.cpp:
(WebKit::WebMediaStrategy::createMediaRecorderPrivateWriter const):
* Source/WebKit/WebProcess/GPU/media/WebMediaStrategy.h:
Canonical link: https://commits.webkit.org/288007@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list