Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 7f582bce96ed45d1a34d2061696482b8bcf2fd8d
https://github.com/WebKit/WebKit/commit/7f582bce96ed45d1a34d2061696482b8bcf2fd8d
Author: Jean-Yves Avenard <[email protected]>
Date: 2025-12-16 (Tue, 16 Dec 2025)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/platform/MediaSamplesBlock.cpp
M Source/WebCore/platform/MediaSamplesBlock.h
A Source/WebCore/platform/graphics/MediaSampleConverter.cpp
A Source/WebCore/platform/graphics/MediaSampleConverter.h
M Source/WebCore/platform/graphics/cocoa/CMUtilities.mm
M Source/WebKit/GPUProcess/media/RemoteAudioVideoRendererProxyManager.cpp
M Source/WebKit/GPUProcess/media/RemoteAudioVideoRendererProxyManager.h
M
Source/WebKit/GPUProcess/media/RemoteAudioVideoRendererProxyManager.messages.in
M Source/WebKit/WebProcess/GPU/media/AudioVideoRendererRemote.cpp
M Source/WebKit/WebProcess/GPU/media/AudioVideoRendererRemote.h
Log Message:
-----------
AudioVideoRendererRemote should only serialise TrackInfo if it changes
https://bugs.webkit.org/show_bug.cgi?id=303433
rdar://165725525
Reviewed by Youenn Fablet.
The MediaSamplesBlock's TrackInfo object was fully serialised/deserialised
when sent over IPC, even when it didn't change.
This conversion was one of the top CPU's ms/cpu usage in the web content process
and caused unnecessary elevated power usage.
We add a new MediaSampleConverter utility class that will track if the metadata
(init segment)
of a MediaSample has changed, and if not will re-use the previously converted
TrackInfo instead.
A new IPC newTrackInfoForTrack to RemoteAudioVideoRendererProxyManager is added
so that we can
send separately the TrackInfo object when it has changed.
MediaSamplesBlock will have their TrackInfo set to null before being set to
the GPU process so that upon receiving we can re-use the existing, previously
received,
TrackInfo.
No change in observable behaviour, covered by existing tests.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/MediaSamplesBlock.cpp:
(WebCore::MediaSamplesBlock::toMediaSample const):
* Source/WebCore/platform/MediaSamplesBlock.h:
* Source/WebCore/platform/graphics/MediaSampleConverter.cpp: Added.
(WebCore::hasSameInitSegment):
(WebCore::MediaSampleConverter::convert):
(WebCore::MediaSampleConverter::hasFormatChanged):
(WebCore::MediaSampleConverter::currentTrackInfo const):
* Source/WebCore/platform/graphics/MediaSampleConverter.h:
* Source/WebCore/platform/graphics/cocoa/CMUtilities.mm:
(WebCore::samplesBlockFromCMSampleBuffer):
* Source/WebKit/GPUProcess/media/RemoteAudioVideoRendererProxyManager.cpp:
(WebKit::RemoteAudioVideoRendererProxyManager::converterContextFor):
(WebKit::RemoteAudioVideoRendererProxyManager::newTrackInfoForTrack):
(WebKit::RemoteAudioVideoRendererProxyManager::enqueueSample):
* Source/WebKit/GPUProcess/media/RemoteAudioVideoRendererProxyManager.h:
*
Source/WebKit/GPUProcess/media/RemoteAudioVideoRendererProxyManager.messages.in:
* Source/WebKit/WebProcess/GPU/media/AudioVideoRendererRemote.cpp:
(WebKit::AudioVideoRendererRemote::enqueueSample):
* Source/WebKit/WebProcess/GPU/media/AudioVideoRendererRemote.h:
Canonical link: https://commits.webkit.org/304579@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications