[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