Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 34b2d01aae84eaca2ab099ff4d1cc5b6e89a6b69
      
https://github.com/WebKit/WebKit/commit/34b2d01aae84eaca2ab099ff4d1cc5b6e89a6b69
  Author: Jean-Yves Avenard <[email protected]>
  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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to